linkedctl について
linkedctl は LinkedIn API を操作するコマンドラインツール兼 MCP サーバーです。個人や組織の投稿、交流、分析に対応し、OAuth またはトークン認証と複数プロファイルを備えています。
主な機能
- 01テキスト、メディア、投票、記事の投稿
- 02コメントとリアクションの管理
- 03組織としての投稿と交流
- 04投稿・組織の分析情報の確認
- 05OAuth またはアクセストークン認証
- 06複数の設定プロファイルの管理
活用シーン
- 01LinkedIn に下書きやメディア付き投稿を公開
- 02投稿のエンゲージメント統計を確認
- 03組織の投稿やコメントを管理
- 04スクリプトから LinkedIn 操作を自動化
MCP 対応
MCP サーバーは、LinkedIn の認証、投稿、コメント、リアクション、組織、分析、メディア操作を AI アシスタント向けツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
22掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| profile | string | いいえ | 設定ファイルから使用するプロフィール名 |
詳細

LinkedIn API 用の OAuth2 CLI と MCP サーバーです。
できること
- コンテンツの投稿 — テキスト、画像、動画、ドキュメント、記事、複数画像カルーセル、アンケート
- コメントとリアクション — 投稿へのコメントやリアクションを作成、一覧表示、削除
- 組織のサポート — 組織として投稿、コメント、リアクション、分析データの表示
- 分析 — 投稿、メンバー、組織ごとの統計情報
- メディアのアップロード — LinkedIn への画像、動画、ドキュメントのアップロード
- 下書き投稿 — 公開前に投稿を下書きとして保存
- 独自の LinkedIn アプリを使った OAuth 2.0 認証
- 他のアプリケーションで取得したトークンを 直接渡す
- AI アシスタント連携用の MCP サーバー(Claude、Cursor など)
- スクリプトから LinkedIn を操作できる CLI
前提条件
- Node.js >= 24
- 適切な権限を持つ LinkedIn Developer App
インストール
npm install -g linkedctl
または、直接実行します。
npx linkedctl --help
クイックスタート
- linkedin.com/developers で LinkedIn アプリを作成します
- OAuth 2.0 の認証情報を設定します
- 認証します。
linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET - 使用を開始します。
linkedctl post "Hello from LinkedCtl!"
詳しい手順については、OAuth セットアップガイドを参照してください。
MCP 連携
MCP クライアントの設定
Claude Desktop
Claude Desktop の設定(claude_desktop_config.json)に追加します。
{
"mcpServers": {
"linkedctl": {
"command": "npx",
"args": ["linkedctl", "mcp"]
}
}
}
Claude Code
claude mcp add linkedctl -- npx linkedctl mcp
Cursor
プロジェクトのルートにある .cursor/mcp.json に追加します。
{
"mcpServers": {
"linkedctl": {
"command": "npx",
"args": ["linkedctl", "mcp"]
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json に追加します。
{
"mcpServers": {
"linkedctl": {
"command": "npx",
"args": ["linkedctl", "mcp"]
}
}
}
利用可能なツール
すべてのツールで、設定プロファイルを選択するための省略可能な profile パラメーターを使用できます。
認証
| ツール | 説明 |
|---|---|
whoami | 現在のユーザーの名前、メールアドレス、プロフィール画像の URL を表示 |
auth_status | プロファイルの認証状態を表示 |
auth_revoke | サーバー側のアクセストークンを失効させ、ローカルの認証情報を消去 |
投稿
| ツール | 説明 |
|---|---|
post_create | メディア、アンケート、記事の添付を指定して、LinkedIn に投稿を作成します |
post_get | URN を指定して単一の投稿を取得します |
post_list | ページネーションを使って投稿を一覧表示します(組織の投稿には as_org を指定できます) |
post_update | 既存の投稿のコメントテキストを更新します |
post_delete | URN を指定して投稿を削除します |
post_create はリッチコンテンツの種類に対応しています。
| パラメーター | 説明 |
|---|---|
text | 投稿のテキスト内容(必須) |
visibility | PUBLIC または CONNECTIONS(デフォルトは PUBLIC) |
draft | 公開せずに下書きとして保存します |
image / image_file | 画像を 1 枚添付します(URN またはローカルファイルパス) |
video / video_file | 動画を添付します(URN またはローカルファイルパス) |
document / document_file | ドキュメントを添付します(URN またはローカルファイルパス) |
images / image_files | 画像を複数枚添付します(最低 2 枚) |
article_url | 記事へのリンクを添付します |
poll | アンケートの質問テキスト |
poll_options | アンケートの回答選択肢(poll を設定する場合、2~4 個が必須) |
poll_duration | ONE_DAY、THREE_DAYS、ONE_WEEK、または TWO_WEEKS |
as_org | 組織として投稿します(数値 ID) |
コメント
| ツール | 説明 |
|---|---|
comment_create | 投稿にコメントを作成します(as_org を指定できます) |
comment_list | 投稿のコメントを一覧表示します |
comment_get | URN を指定して特定のコメントを取得します |
comment_delete | URN を指定してコメントを削除します |
リアクション
| ツール | 説明 |
|---|---|
reaction_create | 投稿にリアクションを追加します(as_org を指定できます)。種類:LIKE、PRAISE、EMPATHY、INTEREST、APPRECIATION、ENTERTAINMENT |
reaction_list | 投稿へのリアクションを一覧表示します |
reaction_delete | 投稿からリアクションを削除します(as_org を指定できます) |
組織
| ツール | 説明 |
|---|---|
org_list | 認証済みユーザーが管理する組織を一覧表示します |
org_get | ID を指定して単一の組織を取得します |
org_followers | 組織のフォロワー数を取得します |
アナリティクス
| ツール | 説明 |
|---|---|
stats_post | 1 件の投稿のアナリティクスを取得します(インプレッション、リーチ、リアクション、コメント、再シェア) |
stats_me | すべての投稿の集計アナリティクスを取得します |
stats_org | 組織のシェア統計を取得します(全期間または期間ごと) |
メディア
| ツール | 説明 |
|---|---|
document_upload | LinkedIn にドキュメントをアップロードします(PDF、DOCX、PPTX、DOC、PPT、最大 100 MB) |
設定
設定ファイルの形式
LinkedCtl は YAML ファイルに設定を保存します。各ファイルは 1 つのプロファイルを表します。
api-version: "202601"
oauth:
client-id: "YOUR_CLIENT_ID"
client-secret: "YOUR_CLIENT_SECRET"
access-token: "YOUR_ACCESS_TOKEN"
refresh-token: "YOUR_REFRESH_TOKEN"
token-expires-at: "2026-05-03T12:00:00.000Z"
利用可能なキー:
| キー | 説明 |
|---|---|
api-version | LinkedIn API のバージョン(例:202601) |
oauth.client-id | OAuth 2.0 クライアント ID |
oauth.client-secret | OAuth 2.0 クライアントシークレット |
oauth.access-token | OAuth 2.0 アクセストークン |
oauth.refresh-token | OAuth 2.0 リフレッシュトークン |
oauth.token-expires-at | トークンの有効期限のタイムスタンプ(ISO 8601) |
設定ファイルの権限は 0600(所有者のみ読み取り/書き込み可能)で設定されます。
ファイルの場所と優先順位
プロファイルを指定しない場合、LinkedCtl は次の順序で設定ファイルを検索します。
- 現在の作業ディレクトリにある
.linkedctl.yaml - ホームディレクトリにある
~/.linkedctl.yaml
最初に見つかったファイルが使用されます。書き込み時(例:auth login の後)は、CWD にファイルが存在すればそのファイルに書き込み、存在しない場合はホームディレクトリのファイルに書き込みます。
プロファイル
プロファイルを使うと、複数の LinkedIn アカウントや設定を管理できます。各プロファイルは ~/.linkedctl/ の下に別々の YAML ファイルとして保存されます。
| プロファイル | 設定ファイルのパス |
|---|---|
| (デフォルト) | ~/.linkedctl.yaml |
work | ~/.linkedctl/work.yaml |
personal | ~/.linkedctl/personal.yaml |
任意のコマンドで --profile フラグを使用します。
linkedctl --profile work auth login --client-id ID --client-secret SECRET
linkedctl --profile work post "Hello from my work account!"
profile コマンドでプロファイルを管理します。
linkedctl profile create work --access-token YOUR_TOKEN --api-version 202601
linkedctl profile list
linkedctl profile show work
linkedctl profile delete work
認証方法
OAuth 2.0(推奨)
LinkedCtl は、独自の LinkedIn Developer App を使った OAuth 2.0 に対応しています。
linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
直接トークン
別のアプリケーションから取得したアクセストークンをすでにお持ちの場合:
linkedctl auth token --access-token YOUR_TOKEN
環境変数
| 変数 | 説明 |
|---|---|
LINKEDCTL_CLIENT_ID | LinkedIn OAuth 2.0 クライアント ID |
LINKEDCTL_CLIENT_SECRET | LinkedIn OAuth 2.0 クライアントシークレット |
LINKEDCTL_ACCESS_TOKEN | 直接指定するアクセストークン(OAuth フローを経由しません) |
LINKEDCTL_API_VERSION | LinkedIn API のバージョン文字列(例:202601) 必須 |
環境変数は設定ファイルの値より優先されます。
プロファイル接頭辞付き環境変数
名前付きプロファイルを使用する場合、LinkedCtl はプロファイル接頭辞付きの環境変数も読み取ります。プロファイル名は大文字に変換され、ハイフンはアンダースコアに置き換えられます。
| プロファイル | 変数 |
|---|---|
| (デフォルト) | LINKEDCTL_ACCESS_TOKEN |
work | LINKEDCTL_WORK_ACCESS_TOKEN |
my-brand | LINKEDCTL_MY_BRAND_ACCESS_TOKEN |
同じパターンが CLIENT_ID、CLIENT_SECRET、API_VERSION にも適用されます。
優先順位
設定値は、次の順序(優先度の高い順)で解決されます。
- 環境変数(プロファイルが有効な場合は、プロファイル名が先頭に付加されます)
- 設定ファイル(プロファイル固有のファイル、または CWD/ホームディレクトリのフォールバック)
CLI リファレンス
グローバルオプション
| オプション | 説明 |
|---|---|
--profile <name> | 特定の設定プロファイルを使用します |
--json | JSON 出力を強制します |
-q, --quiet | 情報出力を抑制します |
--no-color | 色付き出力を無効にします |
auth — 認証の管理
| コマンド | 説明 |
|---|---|
auth setup | OAuth クライアント認証情報を対話形式で設定します |
auth login | OAuth 2.0 で認証します(ブラウザーが開きます) |
auth token | 直接アクセストークンを保存します |
auth status | 認証状態とトークンの有効期限を表示します |
auth logout | アクティブなプロファイルから保存済みの認証情報を削除します |
auth refresh | 保存済みのリフレッシュトークンを使用してアクセストークンを更新します |
auth revoke | サーバー側でアクセストークンを失効させ、ローカルトークンを削除します |
auth login のオプション:
| オプション | 説明 | デフォルト |
|---|---|---|
--client-id <id> | OAuth 2.0 クライアント ID | 設定ファイルから |
--client-secret <secret> | OAuth 2.0 クライアントシークレット | 設定ファイルから |
--scope <scopes> | OAuth 2.0 スコープ(スペース区切り) | openid profile w_member_social |
auth token のオプション:
| オプション | 説明 |
|---|---|
--access-token <token> | 保存するアクセストークン(必須) |
post — LinkedIn の投稿を管理する
# Shorthand: pass text as an argument
linkedctl post "Hello from LinkedCtl!"
# Explicit subcommand
linkedctl post create --text "Hello from LinkedCtl!"
# Pipe content from stdin
echo "Hello from LinkedCtl!" | linkedctl post create
| コマンド | 説明 |
|---|---|
post create | LinkedIn に投稿を作成する |
post get <urn> | URN で投稿を取得する |
post list | ページネーションで投稿を一覧表示する |
post update <urn> | 投稿のコメント文を更新する |
post delete <urn> | 投稿を削除する(確認あり) |
post create のオプション:
| オプション | 説明 | デフォルト |
|---|---|---|
--text <text> | テキストコンテンツ(--text-file、位置引数、または標準入力も使用できます) | |
--visibility <visibility> | PUBLIC または CONNECTIONS | PUBLIC |
--draft | 公開せずに下書きとして保存する | |
--image <urn> | 添付する画像の URN | |
--image-file <path> | アップロードして添付するローカル画像ファイル | |
--video <urn> | 添付する動画の URN | |
--video-file <path> | アップロードして添付するローカル動画ファイル | |
--document <urn> | 添付するドキュメントの URN | |
--document-file <path> | アップロードして添付するローカルドキュメントファイル | |
--images <urns> | 複数の画像 URN(カンマ区切り、最低 2 件) | |
--image-files <paths> | 複数のローカル画像ファイル(カンマ区切り、最低 2 件) | |
--article-url <url> | 添付する記事の URL | |
--poll <question> | 投票の質問文 | |
--option <text> | 投票の選択肢(2~4 回指定) | |
--poll-duration <duration> | ONE_DAY、THREE_DAYS、ONE_WEEK、または TWO_WEEKS | THREE_DAYS |
--as-org <id> | 組織として投稿する(数値 ID) | |
--format <format> | 出力形式(json、table) | 自動 |
post list のオプション:
| オプション | 説明 | デフォルト |
|---|---|---|
--count <n> | 返す投稿の数(最大 100 件) | 10 |
--start <n> | ページネーションの開始インデックス | 0 |
--as-org <id> | 組織の投稿を一覧表示する(数値 ID) |
comment — コメントを管理する
| コマンド | 説明 |
|---|---|
comment create <post-urn> | 投稿にコメントを作成する |
comment list <post-urn> | 投稿のコメントを一覧表示する |
comment get <comment-urn> | URN で特定のコメントを取得する |
comment delete <comment-urn> | コメントを削除する(確認あり) |
comment create のオプション:
| オプション | 説明 |
|---|---|
--text <text> | コメントのテキスト(必須) |
--as-org <id> | 組織としてコメントする(数値 ID) |
reaction — リアクションを管理する
| コマンド | 説明 |
|---|---|
reaction create <urn> | 投稿にリアクションを追加する |
reaction list <urn> | 投稿へのリアクションを一覧表示する |
reaction delete <urn> | 投稿からリアクションを削除する |
reaction create のオプション:
| オプション | 説明 |
|---|---|
--type <type> | LIKE、PRAISE、EMPATHY、INTEREST、APPRECIATION、または ENTERTAINMENT(デフォルトは LIKE) |
--as-org <id> | 組織としてリアクションする(数値 ID) |
org — 組織を管理する
| コマンド | 説明 |
|---|---|
org list | 認証済みユーザーが管理する組織を一覧表示する |
org get <id> | 組織の詳細を取得する |
org followers <id> | 組織のフォロワー数を取得する |
media — メディアをアップロードする
| コマンド | 説明 |
|---|---|
media upload-image <file> | 画像(JPG、PNG、GIF)をアップロードする |
media upload-video <file> | 動画をアップロードする |
media upload-document <file> | ドキュメント(PDF、DOCX、PPTX、DOC、PPT、最大 100 MB)をアップロードする |
すべてのメディアコマンドで --as-org <id> と --format json|table を指定できます。
stats — アナリティクスを表示する
| コマンド | 説明 |
|---|---|
stats post <urn> | 投稿のアナリティクス(インプレッション、リーチ、エンゲージメント)を取得する |
stats me | 自分のすべての投稿の集計アナリティクスを取得する |
stats org <id> | 組織のシェア統計を取得する |
共通オプション:
| オプション | 説明 |
|---|---|
--from <date> / --start <date> | 日付範囲の開始(YYYY-MM-DD) |
--to <date> / --end <date> | 日付範囲の終了(YYYY-MM-DD) |
--time-granularity <granularity> | DAY または MONTH(組織の統計のみ) |
profile — 設定プロファイルを管理する
| コマンド | 説明 |
|---|---|
profile create <name> | 新しいプロファイルを作成する |
profile list | すべてのプロファイルを一覧表示する |
profile show [<name>] | プロファイルの詳細を表示する(機密情報は伏せられます) |
profile delete <name> | プロファイルを削除する(確認が必要) |
profile create のオプション:
| オプション | 説明 |
|---|---|
--access-token <token> | OAuth 2.0 アクセストークン(必須) |
--api-version <version> | LinkedIn API のバージョン。例:202601(必須) |
whoami — 現在のユーザーを表示する
linkedctl whoami
linkedctl whoami --format json
| オプション | 説明 | デフォルト |
|---|---|---|
--format <format> | 出力形式(json、table) | 自動 |
completion — シェル補完
linkedctl completion bash
linkedctl completion zsh
セキュリティ
- Dependabot が自動プルリクエストにより依存関係を最新の状態に保ちます
- CodeQL による分析がすべてのプッシュとプルリクエストで実行され、脆弱性を自動的に検出します
- プロファイル名の パストラバーサル検証 により、ディレクトリ外へのアクセス攻撃を防ぎます
- すべての MCP ツールで 認証エラー処理を統一 し、一貫した認証失敗メッセージを提供します
- 破壊的な操作(投稿の削除、コメントの削除、プロファイルの削除)では、
--forceが指定されていない限り、対話形式での確認が必要です
免責事項
これは独立したプロジェクトであり、LinkedIn Corporation との提携、承認、関連はありません。LinkedIn は LinkedIn Corporation の商標です。
ライセンス
CLI ツールまたは MCP サーバーとして LinkedCtl を使用する場合:ライセンス上の義務はなく、自由に使用できます。
プロジェクトでライブラリとして @linkedctl/core を使用する場合:結合作品には AGPL-3.0(または互換性のあるライセンス)を適用する必要があります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。