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

新しい記事やブログ投稿を公開した後、ソーシャルメディアでそれを宣伝する必要が生じます。投稿を手動で共有すると時間がかかり、非効率的になる可能性があります。この記事では、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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptをインストールするにはどうすればよいですか?JavaScriptをインストールするにはどうすればよいですか?Apr 05, 2025 am 12:16 AM

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

クォーツでタスクが開始される前に通知を送信する方法は?クォーツでタスクが開始される前に通知を送信する方法は?Apr 04, 2025 pm 09:24 PM

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?JavaScriptでは、コンストラクターのプロトタイプチェーンで関数のパラメーターを取得する方法は?Apr 04, 2025 pm 09:21 PM

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?WeChat MiniプログラムWebViewでVUE.JSダイナミックスタイルの変位が失敗した理由は何ですか?Apr 04, 2025 pm 09:18 PM

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?TamperMonkeyで複数のリンクの同時GETリクエストを実装し、順番に戻る結果を決定する方法は?Apr 04, 2025 pm 09:15 PM

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。