mcpField
P
post-bridge

post-bridge

github.com/post-bridge-hqマーケティング・グロース17108 回インストール2 日前に更新
リポジトリ

post-bridge について

post-bridgeは、Post Bridge APIとコマンドラインでソーシャルメディア投稿を管理するスキルです。下書き、予約投稿、メディア管理、投稿状況、分析に対応し、ネイティブMCPサーバーにも接続できます。

主な機能

  1. 01接続済みアカウントへの投稿・予約
  2. 02下書き保存と予約投稿の編集
  3. 03メディアファイルのアップロード・管理
  4. 04プラットフォーム別の投稿結果確認
  5. 05投稿分析の閲覧と同期

活用シーン

  1. 01複数の接続済みアカウントへの投稿予約
  2. 02公開前に確認する下書きの作成
  3. 03プラットフォーム別の投稿失敗の確認
  4. 04公開済み投稿のエンゲージメント指標の追跡

MCP 対応

Post Bridgeは https://mcp.post-bridge.com/mcp でネイティブMCPサーバーを提供します。MCPクライアントからアカウント、投稿、メディア、結果、分析を操作でき、公開URLでメディアを渡すこともできます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/post-bridge-hq/agent-mode --skill post-bridge

インストール後、Claude Code で/post-bridgeを入力して読み込まれたか確認します。

同梱ファイルscripts/post-bridge.js

詳細

Post Bridge ソーシャルメディアスキル

このスキルがシステムとアカウントに及ぼす影響。 インストールする前にお読みください。

  • 実際のソーシャルアカウントに投稿します。 投稿した内容はすべて公開されます。ユーザーが明示的に不要だと言っていない限り、投稿の作成や予約の前に確認を求め、意図が不明な場合は draft: true を優先してください。
  • メディアとキャプションを第三者に送信します。 ファイル、キャプション、アカウント ID、予約のメタデータは、API キーを使って api.post-bridge.com に送信されます。
  • API キーを使用します。 POST_BRIDGE_API_KEY、./.post-bridge/config.json、または ~/.config/post-bridge/config.json から読み込みます。エージェントによる投稿に使用されても問題のないキーのみ使用してください。
  • ローカルコマンドを実行します。 以下の任意の動画ワークフローに従う場合、ファイルに対して ffmpeg などを実行します。
  • 任意の posted/ 規約に従う場合は、ローカルファイルを移動することがあります。また、任意の cron 手順に従う場合は、予約ジョブを作成することがあります。どちらも必須ではなく、依頼がない限り実行されません。

Post Bridge API を介して、ソーシャルメディアへの投稿を自律的に管理します。1 つのコマンドまたは API 呼び出しから 9 つのプラットフォームに投稿できます。

CLI は npm で postbridge-cli として公開されています。npx postbridge-cli <command> で実行できます(インストールは不要です。初回使用時に npx が取得します)。Node.js 18 以降が必要です。何らかの理由で npx postbridge-cli を使用できない場合は、同じコマンドとフラグを使える同梱スクリプト <skill-path>/scripts/post-bridge.js を代わりに使用してください。

最新状況の確認:上記の last-updated 日付から 30 日以上経過している場合、このスキルが古くなっている可能性があることをユーザーに伝え、以下の更新方法を案内してください。

このスキルを最新の状態に保つ

ソース:github.com/post-bridge-hq/agent-mode API ドキュメント:api.post-bridge.com/reference

インストール方法に応じた更新方法:

インストール方法更新方法
CLI(npx skills)npx skills update
Claude Code プラグイン/plugin marketplace update
CursorGitHub からリモートルールが自動同期されます
手動リポジトリから最新版を取得するか、skills/post-bridge/ を再コピーします

セットアップ

  1. post-bridge.com で Post Bridge アカウントを作成します
  2. ソーシャルアカウント(TikTok、Instagram、YouTube、Twitter など)を接続します
  3. API アクセスを有効にします(Settings > API)
  4. ワークスペースの .env に API キーを保存します:
    POST_BRIDGE_API_KEY=pb_live_xxxxx
    

または、セットアップコマンドを実行します:

npx postbridge-cli setup --key pb_live_xxxxx

認証

すべてのリクエストで Bearer トークンを使用します:

Authorization: Bearer <POST_BRIDGE_API_KEY>

ベース URL:https://api.post-bridge.com

設定の優先順位(高い順):

  1. POST_BRIDGE_API_KEY 環境変数
  2. ./.post-bridge/config.json(プロジェクトローカル)
  3. ~/.config/post-bridge/config.json(ユーザー全体)
「API key not found」エラーへの対処

CLI から「API key not found」エラーが返された場合:

  1. セットアップコマンドを実行するようユーザーに伝えてください — セットアップにはユーザーの入力が必要なため、ユーザーに代わって実行することはできません:
    npx postbridge-cli setup --key pb_live_xxxxx
    
  2. 停止して待機してください — タスクを続行しないでください。有効な API キーがなければ、投稿の作成や API 操作はできません。
  3. 環境変数ファイル、キーチェーン、その他の場所から API キーを検索しないでください。

API キーはこちらから取得できます:https://www.post-bridge.com/dashboard/api-keys

エージェントへの注意:公開されている npm CLI の npx postbridge-cli を優先してください。スキルがローカルにインストールされていて、同梱版を実行する場合は、スクリプトは <skill-path>/scripts/post-bridge.js にあります。同じコマンドとフラグを使用できます。

CLI コマンド

コマンド説明
npx postbridge-cli setup --key <key>API キーを設定
npx postbridge-cli accounts接続済みのソーシャルアカウントを一覧表示
npx postbridge-cli post --caption "..." --accounts 1,2,3投稿を作成
npx postbridge-cli post --caption "..." --accounts 1,2,3 --schedule "2026-06-20T09:00:00Z"指定した時刻(UTC)に投稿を予約
npx postbridge-cli post --caption "..." --accounts 1,2 --use-queue次のキュー枠に自動で予約(保存済みのタイムゾーンを使用)
npx postbridge-cli post --caption "..." --accounts 1,2 --use-queue --queue-timezone "America/New_York"指定したタイムゾーンの次のキュー枠に自動で予約
npx postbridge-cli post --caption "..." --accounts 1,2 --draft公開せずに下書きとして保存
npx postbridge-cli post --caption "..." --accounts 1,2 --platform-config '{"tiktok":{"draft":true}}'プラットフォームごとのオプションを指定して投稿
npx postbridge-cli post --caption "..." --accounts 1,2 --media mid_x --platform-config '{"youtube":{"title":"...","tags":["a","b"]}}'YouTube のタイトルと動画ごとのタグを指定
npx postbridge-cli upload-linkユーザーのデバイス上のファイル用の24時間有効なアップロードページ。その後、media(新しい順)で media_id を取得
npx postbridge-cli upload --file ./image.jpgメディアをアップロードし、media_id を返す
npx postbridge-cli post --caption "..." --accounts 1,2,3 --media mid_xxxアップロード済みメディアを使って投稿
npx postbridge-cli posts最近の投稿を一覧表示(フィルター:--status、--platform、--limit、--offset)
npx postbridge-cli posts:get --id <post_id>投稿の詳細とステータスを取得
npx postbridge-cli posts:update --id <post_id> --caption "..."予約済み/下書きの投稿を更新(キャプション、予約日時、アカウント、メディア、下書き)
npx postbridge-cli posts:delete --id <post_id>予約済み/下書きの投稿を削除
npx postbridge-cli analytics分析データを表示(フィルター:--platform、--timeframe 7d|30d|90d|all)
npx postbridge-cli analytics:daily --id <analytics_id>1件の投稿の日ごとのスナップショットと変化量を表示(ID は analytics から取得)
npx postbridge-cli analytics:sync分析データを更新(--platform tiktok|youtube|instagram は任意)
npx postbridge-cli helpすべてのコマンド、フラグ、platform-config キーを JSON 形式で表示
npx postbridge-cli results --post-id <post_id>プラットフォームごとの投稿結果を確認
npx postbridge-cli mediaアップロード済みメディアを一覧表示
npx postbridge-cli media:delete --id <media_id>アップロード済みメディアを削除

API リファレンス

CLI ではなく API を直接呼び出す場合は、以下のエンドポイントを使用してください。

ソーシャルアカウント
GET /v1/social-accounts

接続済みアカウントの id、platform、username を含む配列を返します。これらの ID は、すべての投稿で必要になるため保存してください。

メディアをアップロード
POST /v1/media/create-upload-url
Body: { "mime_type": "video/mp4", "size_bytes": <int>, "name": "video.mp4" }

media_id と upload_url を返します。その後:

PUT <upload_url>
Content-Type: video/mp4
Body: <binary file>
アップロードリンク(ファイルがユーザーのデバイス上にあり、公開 URL がない場合)

エージェントがファイル自体を読み取れない場合(ユーザーのスマートフォンや ノート PC 上にある場合、またはエージェントが転送できるサイズを超える場合)は、ドロップリンクを作成して ユーザーに渡します:

POST /v1/media/upload-link

{ "url": "https://www.post-bridge.com/u/<token>", "expires_at": ... } を返します。 ユーザーがリンクを開いてファイル(最大500MB、画像/動画/PDF)をドロップすると、 メディアライブラリに追加されます。その後、GET /v1/media(新しい順)で media_id を取得し、投稿の作成時に渡します。リンクの有効期間は24時間で、複数の ファイルをアップロードできます。

メディアを一覧表示:

GET /v1/media?limit=50&offset=0

メディアを削除:

DELETE /v1/media/<media_id>
投稿を作成
POST /v1/posts
Body: {
  "caption": "your caption here #hashtags",
  "media": ["<media_id>"],
  "social_accounts": [<account_id_1>, <account_id_2>],
  "scheduled_at": "2026-01-01T14:00:00Z",  // omit for instant post
  "is_draft": false,  // true to save as draft
  "use_queue": true,  // optional, auto-schedule to next queue slot (uses saved timezone)
  "platform_configurations": { ... },  // optional, see below
  "account_configurations": {  // optional, per-account overrides
    "account_configurations": [
      { "account_id": 1, "caption": "override for this account" }
    ]
  }
}

キューのスケジュール設定(use_queue):

  • true を渡すと、ダッシュボードの設定に保存されたユーザーのタイムゾーンを使用して自動でスケジュールを設定します
  • { "timezone": "America/New_York" } を渡すと、特定の IANA タイムゾーンで上書きします
  • scheduled_at と同時には使用できません。どちらか一方を選択してください
  • タイムゾーンの優先順位:明示的に指定したタイムゾーン > 保存済みのプロフィール/ワークスペースのタイムゾーン > UTC
  • キューの枠は、選択したソーシャルアカウントのワークスペースごとに設定されます
  • キューのスケジュールは、ユーザーが Post Bridge ダッシュボードで設定します
  • randomize_queue_time が有効な場合、より自然な投稿パターンになるよう、枠の時刻が最大 ±10 分ずれます
  • キューのスケジュールが設定されていない場合、または今後 90 日以内に利用可能な枠がない場合は、エラーを返します
投稿一覧
GET /v1/posts?limit=50&offset=0&status=scheduled&platform=instagram

パラメーター:limit、offset、status(scheduled/published/failed/draft)、platform。

投稿を取得
GET /v1/posts/<post_id>

ステータス(processing、scheduled、posted、failed)を含む投稿の詳細をすべて返します。

投稿を更新
PATCH /v1/posts/<post_id>
Body: { "caption": "new caption", "scheduled_at": "...", "social_accounts": [...] }

キャプション、スケジュール、アカウント、メディア、プラットフォーム設定、または下書きステータスを更新できます。スケジュール済みまたは下書きの投稿にのみ適用されます。

投稿を削除
DELETE /v1/posts/<post_id>

スケジュール済みまたは下書きの投稿にのみ適用されます(公開済みの投稿は削除できません)。

投稿結果
GET /v1/post-results?post_id=<post_id>&limit=50&offset=0

プラットフォームごとに投稿が成功したか失敗したかを、エラーの詳細とともに返します。

アナリティクス

アナリティクス一覧 — 投稿ごとの閲覧数、いいね数、コメント数、シェア数:

GET /v1/analytics?platform=tiktok&limit=50&offset=0&timeframe=30d

パラメーター:

  • platform(任意):tiktok、youtube、instagram
  • timeframe(任意):7d、30d、90d、all(デフォルト:all)
  • ページネーション用の limit、offset

戻り値:

{
  "data": [
    {
      "id": "...",
      "post_result_id": "...",
      "platform": "tiktok",
      "platform_post_id": "...",
      "view_count": 4062,
      "like_count": 120,
      "comment_count": 15,
      "share_count": 8,
      "cover_image_url": "https://...",
      "share_url": "https://...",
      "video_description": "...",
      "duration": 30,
      "platform_created_at": "2026-03-01T09:00:00Z",
      "last_synced_at": "2026-03-03T12:00:00Z",
      "match_confidence": "exact"
    }
  ],
  "count": 42,
  "limit": 50,
  "offset": 0
}

アナリティクスを同期 — 接続済みのプラットフォームからデータを更新します:

POST /v1/analytics/sync?platform=tiktok

アナリティクスデータのバックグラウンド同期を開始します。TikTok、YouTube、Instagram の追跡対象プラットフォームすべてに対応しています。

パラメーター:

  • platform(任意):tiktok、youtube、または instagram — 1 つのプラットフォームのみを同期します。省略するとすべてを同期します。

戻り値:

{
  "triggered": [
    { "platform": "tiktok", "runId": "run_..." },
    { "platform": "youtube", "runId": "run_..." },
    { "platform": "instagram", "runId": "run_..." }
  ]
}

単一のアナリティクスレコードを取得:

GET /v1/analytics/<analytics_id>

MCP 連携

Post Bridge にはネイティブの MCP(Model Context Protocol)サーバーがあります。Claude Desktop、ChatGPT、Cursor、その他の MCP 対応クライアントを使用している場合は、このスキルを使わずに直接接続できます。

Claude Desktop:post-bridge.com/mcp からワンクリックで接続できます

Claude Code / Cursor / その他の MCP クライアント — MCP 設定に追加します:

{
  "mcpServers": {
    "post-bridge": {
      "type": "streamable-http",
      "url": "https://mcp.post-bridge.com/mcp"
    }
  }
}

利用可能な MCP ツール(11 個):

ツール説明
list_social_accounts接続済みアカウントを、ID、プラットフォーム、ユーザー名、needs_reconnect とともに一覧表示します(true = 無効なトークンでの失敗が繰り返されたため、そのアカウントへの投稿が一時停止されています。そのアカウントはスキップし、ダッシュボードで再接続するようユーザーに伝えてください。再接続すると一時停止は自動的に解除されます)
create_post投稿を作成/スケジュールします。キャプション、アカウント、media_urls、スケジュール、use_queue(true または {timezone})、プラットフォーム設定を受け付けます
list_postsフィルター(platform、status、limit、offset)を指定して投稿を一覧表示します
get_postID を指定して投稿の詳細をすべて取得します
update_postスケジュール済みまたは下書きの投稿のキャプション、スケジュール、アカウント、またはメディアを更新します
delete_postスケジュール済みまたは下書きの投稿を削除します
list_analyticsプラットフォーム/期間のフィルターを指定して、アナリティクス(閲覧数、いいね数、コメント数、シェア数)を取得します
sync_analyticsアナリティクスデータのバックグラウンド更新を開始します。特定のプラットフォーム(tiktok/youtube/instagram)を同期する場合は、任意の platform パラメーターを指定します
list_post_resultsプラットフォームごとの投稿結果(成功/失敗とエラーの詳細)を確認します
list_mediaアップロード済みメディアファイルを、ID と URL とともに一覧表示します
delete_mediaアップロード済みのメディアファイルを削除します

MCP ツールは media_urls(公開 URL)を受け付けます。サーバーが自動的にダウンロードしてアップロードするため、MCP を使用する場合、メディアを手動でアップロードする必要はありません。

プラットフォーム設定

投稿の作成/更新時に platform_configurations オブジェクト内で渡すか、CLI で --platform-config '<json>' を指定する、プラットフォームごとの任意のオーバーライドです。ここは最も間違いやすい箇所なので、よく読んでください。

ルール

  1. プラットフォーム名をキーにします。 すべてのオーバーライドは、プラットフォームのキーの下に配置します。pinterest、instagram、tiktok、twitter、youtube、facebook、linkedin、bluesky、threads、google_business が対象です。フィールドを誤った階層やプラットフォームの下に配置すると、警告なしで無視されます。
  2. 実際に投稿するプラットフォームのみを含めます。 social_accounts に TikTok アカウントがない場合は、tiktok ブロックを追加しないでください。
  3. オーバーライドするフィールドのみを含めます。 省略した項目はすべて、トップレベルの caption/media にフォールバックします。caption と media はすべてのプラットフォームキーの下で使用できます。それ以外のフィールドはプラットフォーム固有で、以下に記載されています。
  4. 受け付けられる値を正確に指定します。 列挙値(placement、trial_graduation、cta_action_type、location など)には、表示されている値のみを指定できます。それ以外はエラーになるか、破棄されます。

すべてのプラットフォームで使用できる項目:

  • caption(文字列)— そのプラットフォームのみで使用するキャプションのオーバーライド
  • media(メディア ID の配列)— そのプラットフォームのみで使用するメディアのオーバーライド

プラットフォーム固有のフィールド:

プラットフォーム(key)フィールド型/受け付ける値機能
Pinterest(pinterest)board_ids文字列 ID の配列ピンを投稿するボード(名前ではなく ID)。省略すると、アカウントのデフォルトボードが使われます。
link文字列(完全な URL)ピンのリンク先 URL。
title文字列(100 文字以下)キャプションの上に表示されるピンのタイトル。
video_cover_timestamp_ms数値(ミリ秒)動画のカバー画像のフレーム。例:3000 は 3 秒の位置です。
Instagram(instagram)placement"story"ストーリーズとして投稿します(画像/動画 1 点、キャプション/カルーセル/カバー/トライアルなし)。省略すると、リール/フィードになります。
video_cover_timestamp_ms数値(ミリ秒)リール/動画のカバーフレーム。cover_image が設定されている場合は無視されます。
cover_image文字列(メディア ID)リールのカバーに使うアップロード済み画像。先にアップロードし、その ID を渡してください。
is_trial_reel真偽値トライアルリール(まずフォロワー以外に表示)。プロ/クリエイターアカウント、フォロワー 1,000 人以上、公開プロフィールが必要です。1 日最大 5 件です。placement:"story" とは併用できません。
trial_graduation"MANUAL" | "SS_PERFORMANCE"トライアルリールの通常公開への切り替え。MANUAL(デフォルト)=手動で決定します。SS_PERFORMANCE = 72 時間以内のパフォーマンスに応じて自動で通常公開に切り替えます。
user_tagsユーザー名の配列人物のアカウントをタグ付けします(相手に通知されます)。@ は省略可能です。フィード/カルーセル/リールのみ。ストーリーズでは無視されます。最大 20 件です。
collaboratorsユーザー名の配列共著者を招待します。投稿は相手のプロフィールにも表示され、いいねやコメントも共有されます。@ は省略可能です。公開アカウントのみ最大 3 件 — 非公開アカウントや誤ったユーザー名を指定すると、投稿に失敗します。フィード/カルーセル/リールのみ。ストーリーズでは無視されます。すぐに投稿され、相手が承認すると相手のプロフィールに表示されます。
first_comment文字列(2,200 文字以下)投稿の公開直後に投稿するコメント。リンクやハッシュタグを載せるのに適しています。ストーリーズでは無視されます。コメントに失敗しても投稿は失敗しません。
TikTok(tiktok)title文字列投稿のタイトルを上書きします。
video_cover_timestamp_ms数値(ミリ秒)カバーフレーム。例:3000 は 3 秒の位置です。
draft真偽値TikTok のネイティブな下書きとして送信します(アプリで手動で仕上げて公開します。例:トレンドのサウンドを追加する場合)。トップレベルの is_draft とは異なります(こちらは Post Bridge に保存するだけです)。
is_aigc真偽値AI 生成コンテンツとしてラベルを付けます。
privacy_status"public" | "private"private にすると、自分にのみ表示される状態で公開されます。デフォルトは公開です。
auto_add_music真偽値写真の投稿のみ — 動画では無視されます。 TikTok がカルーセルにサウンドトラックを選びます。デフォルトは true です。無音で公開するには false を設定します。
allow_comment真偽値コメントを許可します。デフォルトは true です。
allow_duet真偽値デュエットを許可します。デフォルトは true です。動画の投稿のみです。
allow_stitch真偽値スティッチを許可します。デフォルトは true です。動画の投稿のみです。
disclose_branded_content真偽値有料パートナーシップ/ブランドコンテンツとして開示します。デフォルトは false です。
disclose_your_brand真偽値自分のブランドの宣伝として開示します。デフォルトは false です。
Twitter/X(twitter)first_comment文字列(280 文字以下、プレミアムは 2,200 文字)ツイートの直後に投稿する返信。リンクはこちらに記載してください — メインのツイートでは、X の追加料金を避けるため URL が削除されます。返信に失敗しても投稿は失敗しません。
YouTube(youtube)title文字列(100 文字以下)動画タイトルを上書きします。
tagsstring[]動画ごとに設定する動画タグ(YouTube の snippet.tags)。合計で 500 文字までです。超過分は削除されますが、投稿は公開されます。
contains_synthetic_media真偽値現実的な改変コンテンツ/AI コンテンツを開示します(「改変または合成されたコンテンツ」ラベル)。
thumbnail文字列(メディア ID)カスタムサムネイル。長尺動画のみ — Shorts では無視されます。チャンネルの確認が必要です。JPEG/PNG、1280×720、2MB 未満。
Facebook(facebook)placement"story"ページストーリーズとして投稿します(画像/動画 1 点、キャプション/カルーセルなし)。省略すると、フィード投稿になります。
first_comment文字列(2,200 文字以下)投稿の公開直後に投稿するコメント。リンクや CTA を載せるのに適しています。ストーリーズでは無視されます。コメントに失敗しても投稿は失敗しません。
LinkedIn(linkedin)document_title文字列PDF(ドキュメント/カルーセル)投稿のタイトル。メディアが PDF の場合にのみ適用されます。デフォルトはファイル名です。
first_comment文字列(1,250 文字以下)同じプロフィールまたはページから、投稿の公開直後に投稿するコメント。リンクを載せるのに適しています。コメントに失敗しても投稿は失敗しません。
Bluesky(bluesky)——caption/media の上書きのみです。
Threads(threads)location"timeline" | "reels"表示先。timeline(デフォルト)または reels(動画のみ)です。
first_comment文字列(500 文字以下)スレッドの公開直後に投稿する返信。リンクを載せるのに適しています。返信に失敗しても投稿は失敗しません。
Google Business(google_business)media配列(画像 1 点)画像は 1 点のみ — GMB では追加の画像は削除されます(他のプラットフォームではすべて保持されます)。動画には対応していません。
cta_action_typeBOOK | ORDER | SHOP | LEARN_MORE | SIGN_UP | CALLCTA ボタン。cta_url と組み合わせます(CALL は店舗の電話番号を使用します)。
cta_url文字列(完全な URL)CTA のリンク先。cta_action_type が設定されている場合に必須です(CALL を除く)。
language_code文字列(BCP-47)例:"en-US"、"es"、"fr-CA"。デフォルトは "en-US" です。
例 — 正しい複数プラットフォーム設定(CLI)

1つのコンテンツを TikTok + Instagram + X + Google Business に投稿し、プラットフォームごとに調整する例:

npx postbridge-cli post --caption "New drop is live 🎉" --accounts 44029,44030,44031,44032 \
  --platform-config '{
    "tiktok":   { "draft": true, "is_aigc": false },
    "instagram": { "caption": "New drop is live 🎉 tap the link in bio", "video_cover_timestamp_ms": 2000 },
    "twitter":  { "first_comment": "Grab it here: https://example.com/drop" },
    "google_business": { "cta_action_type": "SHOP", "cta_url": "https://example.com/drop" }
  }'

X のリンクはキャプションではなく twitter.first_comment に設定し、TikTok ではネイティブの下書きを使い、投稿先の4つのプラットフォームだけをキーとして指定している点に注目してください。

プラットフォームごとの注意点(エージェントにとって重要)

見落としやすく、気づかないうちに、または分かりにくい形で失敗する動作があります。投稿する前に考慮してください。

  • メディアが必須のプラットフォームもあれば、テキストのみを受け付けるプラットフォームもあります。 メディアがない投稿は、次のプラットフォームでは失敗します:youtube(動画がちょうど1本)、tiktok(動画1本、または写真投稿の場合は画像1枚以上)、instagram(画像または動画が1~10点。ストーリーはちょうど1点。PDF は除外されます)、pinterest(画像1~5点 — 2点以上の場合はカルーセルピンとして公開され、すべての画像で幅と高さの比率が同じでないと Pinterest に拒否されます — または動画1本)。次のプラットフォームはテキストのみの投稿を受け付けます:twitter/X(画像は最大4点、または動画1本)、facebook、linkedin(画像は最大20点、または動画1本、または PDF ドキュメント1点)、threads(画像または動画は最大20点)、bluesky(画像は最大4点、または動画1本)、google_business(テキストまたは画像1点。動画は不可)。メディアなしで投稿を作成し、後から posts:update でメディアを追加できますが、メディア必須のプラットフォームでは、メディアが追加されるまで公開されません。複数のプラットフォームを対象にした投稿では、各プラットフォームは対応しているものを使い、対応していないものはスキップします(例:動画は YouTube に使用され、X でも使用されます)。
  • X(Twitter)はキャプションから URL を削除します。 投稿前に、X のキャプションからリンク(http://、https://、www.)が削除されます。これは意図的な仕様です(X のリンク投稿は1件あたり約13倍の費用がかかります)。X でリンクが不可欠な場合は、キャプションではなく twitter.first_comment に記載してください(リンクはここでは使用でき、ツイートの直後に返信として投稿されます)。また、リンクは X の投稿自体には表示されないことをユーザーに伝えてください。
  • メディアは、URL をそのまま貼り付けるのではなく、アップロードする必要があります。 Google Drive、Dropbox、その他の外部 URL を media に指定しないでください。media フィールドが受け取るのは、Post Bridge の media_id のみです。先にファイルを upload する(CLI/API)か、media_urls(CLI の --media-urls、または MCP の media_urls フィールド)に、サーバーがダウンロードできる、直接アクセス可能な公開ファイル URL を指定してください。直接アクセスできない共有リンクを使うと、一般的なエラーが発生し、プラットフォームごとの結果は返されません。
  • 非常に大きな動画(約300MB以上)では、YouTube、LinkedIn、X への投稿が気づかないうちに失敗することがあります。 これら3つのプラットフォームではサーバー側でファイル全体をバッファーするため、巨大なファイルをアップロードするとタイムアウトや OOM が発生し、Instagram/TikTok/Facebook/Threads は成功する一方で、これらのプラットフォームの結果行が返されない場合があります。results のプラットフォーム数が投稿先より少ない場合は、ファイルサイズを疑ってください。より小さく、または短くなるように再エンコードしてください。動画は適切なサイズに保ってください。
  • 各プラットフォームへの投稿は独立して処理されます。 1つのプラットフォームで失敗しても、ほかのプラットフォームの処理は停止しません。公開後は必ず results --post-id <id> を確認し、各プラットフォームでの成功状況とエラーの詳細を確認してください。
  • TikTok と Instagram では、キャプションとサウンドの制限が異なります。 キャプションは簡潔にしてください。トレンドサウンドを使うワークフローでは、TikTok の draft: true を設定し、ユーザーがサウンドを追加して手動で公開できるようにしてください。

実際に発生する失敗の内容。2026-08-31 までの30日間に、7,158アカウントからの302,000件の投稿を測定した結果です。 各プラットフォームでは、特定の失敗原因が最も多く、その対処法はプラットフォームごとに異なります。

  • TikTok:失敗の75%はスパム制限です。 投稿頻度が高すぎたことで、そのアカウントに対してプラットフォームが課した制限です。24~48時間で自動的に解除されます。再接続しても効果はありません。待っても解除されない場合は、数日間、そのアカウントからスマートフォンで手動投稿するようユーザーに案内してください。
  • YouTube:84%は1日あたりのアップロード上限です。 チャンネルごとに設定されており、新しいチャンネルでは上限が低くなります。アップロードを複数のチャンネルや日に分散してください。
  • X:92%は403スパムブロックです。 投稿が速すぎる、内容が同じものばかり、またはリンクを含んでいる場合に発生します。
  • Instagram:50%は無効なトークン、41%は一時的なMeta 500エラーです。 500エラーは失敗と報告されても投稿されていることが多いため、再投稿する前に確認してください。確認しないと二重投稿になります。
  • ThreadsとLinkedIn:ほぼすべてが無効なトークンです。 再接続してください。
  • Pinterest:46%は有効なメディアが添付されていないことが原因です。
  • Bluesky:レート制限、削除措置、メール未確認が原因です。 これらは動画のアップロードを通知なしでブロックします。

期待される成功率。成功率は100%ではなく、各プラットフォームの基準に照らしてアカウントを評価してください:LinkedIn 97%、X 88%、YouTube 88%、Instagram 87%、Facebook 84%、TikTok 82%、Threads 81%、Pinterest 76%、Bluesky 71%。

重要な違い: プラットフォームによる制限は、誰にも修正できず、時間が経てば自動的に解除されます。一方、無効なトークンやメディアの不足には対処できます。アカウントが単に制限されているだけなのに、ユーザーに再接続するよう伝えると、何日も無駄にしてしまいます。

動画コンテンツの推奨ワークフロー

任意です。ステップ2、5、6ではユーザーのマシンを操作するため、同意があるものと決めつけず、実行前にそれぞれ確認してください。

  1. 動画をローカルフォルダーに保存します
  2. (ローカルコマンドを実行します) ffmpegでフレームを抽出し、テキストのオーバーレイがあれば読み取ります。実行する内容と対象ファイルをユーザーに伝えてください:
    ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y
    
    ffmpegが利用できない場合や、ユーザーが動画の内容を説明するほうを希望する場合は、この手順を省略してください。
  3. 動画の内容とハッシュタグに基づいてキャプションを作成します
  4. アップロードして投稿を作成し、予約投稿または即時投稿を行います
  5. (ローカルファイルを変更します) 重複を避けるため、投稿済みの動画を任意でposted/サブフォルダーに移動します。移動元と移動先の正確なパスを示し、事前に同意を得てください。削除は絶対にしないでください。
  6. (バックグラウンドジョブを作成します) 予約時刻の5分後に投稿ステータスを確認するcronを任意で設定します。追加する前に、crontabの正確な行と削除方法をユーザーに提示してください。求められていないのに追加してはいけません。
  7. 投稿結果または分析情報を確認して、パフォーマンスを追跡します

自動化のガイドライン

アカウントを良好な状態に保つため、自動投稿では次のルールに従ってください。

  • 複数アカウント間で同一コンテンツを投稿しない
  • 求められていない自動返信をしない — オリジナルコンテンツのみを投稿するか、明示的に依頼された場合に限って投稿します
  • トレンドを操作しない — トレンドの話題について、複数のアカウントから大量に投稿してはいけません
  • 偽のエンゲージメントを作らない — いいね、フォロー、コメントを自動化してはいけません
  • レート制限を守る — APIにはレート制限があります。リクエストを大量に送信してはいけません
  • 確認には下書きモードを使う — 迷った場合は、is_draft: trueまたはTikTokのdraft: trueを使い、公開前にユーザーが確認できるようにします

公開の確認: ユーザーから「今すぐ投稿」または「すぐに公開」と明示的に依頼されない限り、投稿前に必ず確認してください。下書きの作成は安全ですが、投稿は取り消せず、即座に公開されます。

プラットフォーム名

プラットフォームのフィルタリングと設定には、次の正確な名前を使用してください。

  • instagram — Instagram(Reels、Stories、Feed)
  • tiktok — TikTok
  • youtube — YouTube(Shorts)
  • twitter — X(旧Twitter)
  • linkedin — LinkedIn
  • facebook — Facebook
  • pinterest — Pinterest
  • threads — Threads
  • bluesky — Bluesky

ヒント

  • 複数のアカウント ID を指定すると、複数のプラットフォームに同時に投稿できます
  • より多くのユーザーに届けるには、1 日の中で時間をずらして投稿します(例:午前 9 時と午後 3 時)
  • scheduled_at を使って投稿をまとめて事前予約すると、Post Bridge が投稿時刻を管理します
  • use_queue: true を使うと、保存済みのタイムゾーンに基づいて、ユーザーが次に利用可能なキューの枠に投稿が自動で予約されます。時刻を手動で選ぶ必要はありません
  • TikTok の下書きモードでは、公開前にトレンドのサウンドを手動で追加できます
  • エンゲージメントを高めるには、1 投稿あたりのハッシュタグを 4~5 個に抑えます
  • 投稿後に results を確認すると、プラットフォームごとの成功・失敗を確認できます
  • 分析を確認する前に analytics:sync を使ってデータを更新します
  • 効果のある内容を把握し、キャプションや形式を改善していきます
  • テスト時は --draft フラグを使い、誤って公開されるのを防ぎます
  • 文字数制限はプラットフォームによって異なります。X ではキャプションを簡潔に保ちます(280 文字)

コメント