ホームページ > ウェブフロントエンド > jsチュートリアル > ソーシャルメディア自動化の構築: サーバーレス機能を備えた LinkedIn 共有

ソーシャルメディア自動化の構築: サーバーレス機能を備えた LinkedIn 共有

Barbara Streisand
リリース: 2025-01-08 16:33:49
オリジナル
939 人が閲覧しました

新しい記事やブログ投稿を公開した後、ソーシャルメディアでそれを宣伝する必要が生じます。投稿を手動で共有すると時間がかかり、非効率的になる可能性があります。この記事では、JavaScript API クライアントと Netlify サーバーレス関数を使用して、LinkedIn で記事の URL を共有するサーバーレス関数を構築する方法を検討します。これは、ソーシャル メディア プロモーションのための自動ワークフロー構築の一部です。

目次

  • 目次
  • 前提条件
  • はじめる
    • 権限の設定
    • OAuth 2.0 設定の構成
  • LinkedIn API JS クライアントを使用して URL を含む投稿を共有する
    • ユーザーの一意の ID を取得する
    • 投稿 URL を共有する
  • Netlify サーバーレス関数として公開
  • 機能のテスト
  • Netlify を使用したデプロイ
  • 概要

前提条件

このチュートリアルを進めるには、次のものが必要です:

  • LinkedIn アカウント
  • Node.js と Netlify CLI がインストールされています。
  • サーバーレス機能をデプロイするために作成された Netlify アカウントとサイト。
  • JavaScript と TypeScript の基本的な知識。

はじめる

LinkedIn API の使用を開始するには、次の手順を実行する必要があります:

  1. LinkedIn アカウントを使用して LinkedIn 開発者コンソールにアクセスします。
  2. 「アプリの作成」ボタンをクリックして、新しいアプリを作成します。 Building Social Media Automation: LinkedIn Sharing with Serverless Function
  3. アプリ名 (ソーシャル メディア テスター など) やアプリのロゴ画像などの詳細を入力します。
  4. 作成中のアプリに関連付けるには、LinkedIn 会社ページにアクセスする必要があります (後で接続を確認するには、管理者アクセス権を持つ任意のページ)。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

完了すると、ポータルはアプリのダッシュボードにリダイレクトされ、アプリに必要な権限と API 製品の構成を開始できます。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

権限の設定

アプリのダッシュボードで、製品 タブをクリックし、OpenID Connect 製品を使用して LinkedIn で共有および LinkedIn でサインインへのアクセスをリクエストします。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

OAuth 2.0設定の構成

これらの権限が付与されると、OAuth 2.0 トークン生成ツールにアクセスして、アプリのアクセス トークンを生成できます。トークンには次のスコープが含まれている必要があります: ユーザーに代わって投稿するための w_member_social、ユーザー認証とプロフィール情報のための profile と openid。

Building Social Media Automation: LinkedIn Sharing with Serverless Function

このアクセス トークンは 3-legged OAuth トークンであり、ユーザーがアプリケーションがユーザーの代わりに動作することを明示的に承認していることを保証します。トークンを生成した後、それを使用して認証を行い、LinkedIn API へのリクエストを安全に行うことができます。さらに、アプリのダッシュボードの 認証 タブで、アプリに付与された権限とスコープを確認できます。

すごいですね!アクセス トークンとアプリのセットアップが完了したので、ユーザー (この場合は私たち) に代わって LinkedIn に投稿する自動化の構築を開始できます。

LinkedIn API JS クライアントを使用して URL を含む投稿を共有する

プログラムで投稿の共有を開始するには、Node.js 用の公式 LinkedIn API JavaScript クライアントをプロジェクトの依存関係としてインストールして使用できます。

npm install linkedin-api-js-client

# or with yarn
yarn add linkedin-api-js-client
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

このライブラリは、内部で Axios と TypeScript を活用して、LinkedIn API エンドポイントと対話する簡単で軽量な方法を提供します。

次に、新しいファイル linkedin.ts を作成して、LinkedIn で投稿を共有するためのロジックをカプセル化しましょう。以下に示すように、API と対話するためにクライアント インスタンスを初期化することから始めます。

// linkedin.ts
import { RestliClient } from 'linkedin-api-js-client';

const client = new RestliClient();
ログイン後にコピー
ログイン後にコピー

ユーザーの一意の ID を取得する

ユーザーに代わって投稿するには、まずユーザーの一意の ID (ユーザーの LinkedIn ハンドルとは異なります) を取得する必要があります。これは、前に生成したアクセス トークンで /userinfo エンドポイントを使用することで実行できます:

// linkedin.ts
const getUserId = async (accessToken: string) => {
  const userResponse = await client.get({
    resourcePath: "/userinfo",
    accessToken
  });

  return userResponse.data?.sub;
};
ログイン後にコピー
ログイン後にコピー

一意の ID は、応答データのサブフィールドにあります。この値は、次のステップであるユーザーに代わって投稿を共有するために必要です。

投稿URLを共有する

linkedin.ts 内で、次のように投稿の URL を共有する関数を定義します。

type SharePostArgs = {
  url: string;
  text: string;
};

export const sharePost = async (token: string, content: SharePostArgs) => {
  //logic
};
ログイン後にコピー
ログイン後にコピー

sharePost 関数は、アクセス トークンと、投稿に付随する URL とテキストを含む共有するコンテンツを受け取ります。次に、以下に示すように、/ugcPosts エンドポイントを使用して、ユーザー生成コンテンツ リソースに新しい投稿エンティティを作成します。

export const sharePost = async (token: string, content: SharePostArgs) => {
  const response = await client.create({
    resourcePath: '/ugcPosts',
    accessToken: token,
    entity: {
      //entity payload
    }
  });
};
ログイン後にコピー
ログイン後にコピー

エンティティ ペイロードは、以前に取得したユーザーの一意の ID を作成者として含めるように構成されています。著者フィールドは urn:li:person:${userId} の形式に従います。さらに、以下を指定します:

  • ライフサイクル状態は「公開済み」です。
  • 可視性が「PUBLIC」なので、投稿は LinkedIn ネットワークに表示されます。

更新された実装は次のとおりです:

npm install linkedin-api-js-client

# or with yarn
yarn add linkedin-api-js-client
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、エンティティ オブジェクトの specificContent フィールド内で共有コンテンツを定義します。このシナリオでは、 specificContent フィールドには、次のプロパティを持つ com.linkedin.ugc.ShareContent オブジェクトが含まれます:

  • shareCommentary: content.text を表示するメイン テキスト コンテンツとして受け入れます。
  • shareMediaCategory: 投稿で共有されるメディアのタイプを指定します (「ARTICLE」として設定)。
  • media: 「ARTICLE」カテゴリのメディア資産の配列。各項目には、共有する URL と READY ステータスが含まれます。

以下は更新されたコードです:

// linkedin.ts
import { RestliClient } from 'linkedin-api-js-client';

const client = new RestliClient();
ログイン後にコピー
ログイン後にコピー

リクエストが正常に完了すると、レスポンスには作成されたエンティティの一意の ID を表す createdEntityId が含まれます。さらに参照するために、この値を呼び出し元に返すことができます:

// linkedin.ts
const getUserId = async (accessToken: string) => {
  const userResponse = await client.get({
    resourcePath: "/userinfo",
    accessToken
  });

  return userResponse.data?.sub;
};
ログイン後にコピー
ログイン後にコピー

それで終わりです! LinkedIn API を利用してユーザーに代わって投稿 URL を共有する関数を作成しました。次のステップでは、Netlify を使用してこの機能をサーバーレス エンドポイントとして公開し、ソーシャル メディアで記事を共有するプロセスの完全自動化に近づけます。

Netlify サーバーレス機能として公開する

CLI コマンド netlify function:create を実行し、プロンプトに従って、share-on-linkedin という名前の新しい Netlify サーバーレス関数をスキャフォールディングします。 Netlify CLI は、次の初期コードを使用して関数ディレクトリに関数を生成します:

type SharePostArgs = {
  url: string;
  text: string;
};

export const sharePost = async (token: string, content: SharePostArgs) => {
  //logic
};
ログイン後にコピー
ログイン後にコピー

この上記のコードでは、TypeScript を使用し、関数を async として定義して、LinkedIn API 呼び出しの非同期の性質を処理します。

次に、次のアクションを実行するためにサーバーレス関数を更新します。

  • リクエスト本文を解析して、共有するコンテンツを抽出します。
  • 環境変数からアクセス トークンを取得します (プロジェクト ルートの .env ファイルで設定できます)、
  • 抽出したパラメーターを使用して sharePost 関数 ( linkedin.ts で前に定義したもの) を呼び出します。
  • 作成したエンティティIDをレスポンスとして返します。
export const sharePost = async (token: string, content: SharePostArgs) => {
  const response = await client.create({
    resourcePath: '/ugcPosts',
    accessToken: token,
    entity: {
      //entity payload
    }
  });
};
ログイン後にコピー
ログイン後にコピー

この時点で、サーバーレス機能の準備が整いました。これを Netlify にデプロイし、エンドポイントに POST リクエストを行うことでその機能をテストできます。

機能のテスト

サーバーレス機能をテストするには、CLI コマンド netlify dev を使用してローカル サーバーを起動します。次に、Postman や Insomnia などのツールを使用して、次の JSON ペイロードを含む POST リクエストをサーバー エンドポイントに送信します。

export const sharePost = async (token: string, content: SharePostArgs) => {
  //Get user's unique id
  const userId = await getUserId(token);

  const response = await client.create({
    resourcePath: '/ugcPosts',
    accessToken: token,
    entity: {
      author: `urn:li:person:${userId}`,
      lifecycleState: "PUBLISHED",      
      visibility: {
        "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
      }
    }
  });
};
ログイン後にコピー

あるいは、サーバーレス関数 API と対話するための単純なフォーム UI を作成し、投稿が LinkedIn で正常に共有されていることを確認することもできます。

関数が期待どおりに動作したら、Netlify にデプロイして使用できるようにしましょう。

Netlify を使用したデプロイ

関数を Netlify にデプロイするには、次のコマンドを実行します:

npm install linkedin-api-js-client

# or with yarn
yarn add linkedin-api-js-client
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

CLI は、関数を Netlify 運用環境にデプロイします。その後、Netlify ダッシュボードで関数エンドポイントを見つけることができます。

重要: ダッシュボードで LINKEDIN_ACCESS_TOKEN 環境変数を必ず設定してください。この手順は、関数が認証され、正しく動作するために不可欠です。

Building Social Media Automation: LinkedIn Sharing with Serverless Function


まとめ

私たちは、LinkedIn API JavaScript クライアントと Netlify サーバーレス機能を活用して、ユーザーに代わって LinkedIn で記事の URL を共有するサーバーレス API の構築に成功しました。これは、ブログ投稿のソーシャル メディア共有プロセスの自動化に向けた重要な一歩となります。

ここから、自動化ワークフローを拡張して、他のソーシャル メディア プラットフォームやスケジュールされたタスクを含めることができます。たとえば、X (旧 Twitter)、Facebook、BlueSky などのプラットフォームを統合し、投稿のタイミングとコンテンツをカスタマイズして、視聴者のエンゲージメントとリーチを最大化できます。

ということで、このシリーズのさらなる最新情報を楽しみにしていてください!

? 私の新しい本『Learning Vue』で Vue 3 と TypeScript について学びましょう!

? 私をサポートしませんか?コーヒーを買ってきてください。

この投稿が好きですか、それとも役に立ちますか?共有しますか?

以上がソーシャルメディア自動化の構築: サーバーレス機能を備えた LinkedIn 共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート