post-bridge について
post-bridgeは、Post Bridge APIとコマンドラインでソーシャルメディア投稿を管理するスキルです。下書き、予約投稿、メディア管理、投稿状況、分析に対応し、ネイティブMCPサーバーにも接続できます。
主な機能
- 01接続済みアカウントへの投稿・予約
- 02下書き保存と予約投稿の編集
- 03メディアファイルのアップロード・管理
- 04プラットフォーム別の投稿結果確認
- 05投稿分析の閲覧と同期
活用シーン
- 01複数の接続済みアカウントへの投稿予約
- 02公開前に確認する下書きの作成
- 03プラットフォーム別の投稿失敗の確認
- 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 |
| Cursor | GitHub からリモートルールが自動同期されます |
| 手動 | リポジトリから最新版を取得するか、skills/post-bridge/ を再コピーします |
セットアップ
- post-bridge.com で Post Bridge アカウントを作成します
- ソーシャルアカウント(TikTok、Instagram、YouTube、Twitter など)を接続します
- API アクセスを有効にします(Settings > API)
- ワークスペースの
.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
設定の優先順位(高い順):
POST_BRIDGE_API_KEY環境変数./.post-bridge/config.json(プロジェクトローカル)~/.config/post-bridge/config.json(ユーザー全体)
「API key not found」エラーへの対処
CLI から「API key not found」エラーが返された場合:
- セットアップコマンドを実行するようユーザーに伝えてください — セットアップにはユーザーの入力が必要なため、ユーザーに代わって実行することはできません:
npx postbridge-cli setup --key pb_live_xxxxx - 停止して待機してください — タスクを続行しないでください。有効な API キーがなければ、投稿の作成や API 操作はできません。
- 環境変数ファイル、キーチェーン、その他の場所から 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、instagramtimeframe(任意):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_post | ID を指定して投稿の詳細をすべて取得します |
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>' を指定する、プラットフォームごとの任意のオーバーライドです。ここは最も間違いやすい箇所なので、よく読んでください。
ルール
- プラットフォーム名をキーにします。 すべてのオーバーライドは、プラットフォームのキーの下に配置します。
pinterest、instagram、tiktok、twitter、youtube、facebook、linkedin、bluesky、threads、google_businessが対象です。フィールドを誤った階層やプラットフォームの下に配置すると、警告なしで無視されます。 - 実際に投稿するプラットフォームのみを含めます。
social_accountsに TikTok アカウントがない場合は、tiktokブロックを追加しないでください。 - オーバーライドするフィールドのみを含めます。 省略した項目はすべて、トップレベルの
caption/mediaにフォールバックします。captionとmediaはすべてのプラットフォームキーの下で使用できます。それ以外のフィールドはプラットフォーム固有で、以下に記載されています。 - 受け付けられる値を正確に指定します。 列挙値(
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 文字以下) | 動画タイトルを上書きします。 |
tags | string[] | 動画ごとに設定する動画タグ(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_type | BOOK | ORDER | SHOP | LEARN_MORE | SIGN_UP | CALL | CTA ボタン。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ではユーザーのマシンを操作するため、同意があるものと決めつけず、実行前にそれぞれ確認してください。
- 動画をローカルフォルダーに保存します
- (ローカルコマンドを実行します) ffmpegでフレームを抽出し、テキストのオーバーレイがあれば読み取ります。実行する内容と対象ファイルをユーザーに伝えてください:
ffmpegが利用できない場合や、ユーザーが動画の内容を説明するほうを希望する場合は、この手順を省略してください。ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y - 動画の内容とハッシュタグに基づいてキャプションを作成します
- アップロードして投稿を作成し、予約投稿または即時投稿を行います
- (ローカルファイルを変更します) 重複を避けるため、投稿済みの動画を任意で
posted/サブフォルダーに移動します。移動元と移動先の正確なパスを示し、事前に同意を得てください。削除は絶対にしないでください。 - (バックグラウンドジョブを作成します) 予約時刻の5分後に投稿ステータスを確認するcronを任意で設定します。追加する前に、crontabの正確な行と削除方法をユーザーに提示してください。求められていないのに追加してはいけません。
- 投稿結果または分析情報を確認して、パフォーマンスを追跡します
自動化のガイドライン
アカウントを良好な状態に保つため、自動投稿では次のルールに従ってください。
- 複数アカウント間で同一コンテンツを投稿しない
- 求められていない自動返信をしない — オリジナルコンテンツのみを投稿するか、明示的に依頼された場合に限って投稿します
- トレンドを操作しない — トレンドの話題について、複数のアカウントから大量に投稿してはいけません
- 偽のエンゲージメントを作らない — いいね、フォロー、コメントを自動化してはいけません
- レート制限を守る — APIにはレート制限があります。リクエストを大量に送信してはいけません
- 確認には下書きモードを使う — 迷った場合は、
is_draft: trueまたはTikTokのdraft: trueを使い、公開前にユーザーが確認できるようにします
公開の確認: ユーザーから「今すぐ投稿」または「すぐに公開」と明示的に依頼されない限り、投稿前に必ず確認してください。下書きの作成は安全ですが、投稿は取り消せず、即座に公開されます。
プラットフォーム名
プラットフォームのフィルタリングと設定には、次の正確な名前を使用してください。
instagram— Instagram(Reels、Stories、Feed)tiktok— TikTokyoutube— YouTube(Shorts)twitter— X(旧Twitter)linkedin— LinkedInfacebook— Facebookpinterest— Pinterestthreads— Threadsbluesky— Bluesky
ヒント
- 複数のアカウント ID を指定すると、複数のプラットフォームに同時に投稿できます
- より多くのユーザーに届けるには、1 日の中で時間をずらして投稿します(例:午前 9 時と午後 3 時)
scheduled_atを使って投稿をまとめて事前予約すると、Post Bridge が投稿時刻を管理しますuse_queue: trueを使うと、保存済みのタイムゾーンに基づいて、ユーザーが次に利用可能なキューの枠に投稿が自動で予約されます。時刻を手動で選ぶ必要はありません- TikTok の下書きモードでは、公開前にトレンドのサウンドを手動で追加できます
- エンゲージメントを高めるには、1 投稿あたりのハッシュタグを 4~5 個に抑えます
- 投稿後に
resultsを確認すると、プラットフォームごとの成功・失敗を確認できます - 分析を確認する前に
analytics:syncを使ってデータを更新します - 効果のある内容を把握し、キャプションや形式を改善していきます
- テスト時は
--draftフラグを使い、誤って公開されるのを防ぎます - 文字数制限はプラットフォームによって異なります。X ではキャプションを簡潔に保ちます(280 文字)