ブログを主体に、X、Instagram、Facebook、Threads を連携させました。
正直、難しすぎて、私には何が何だか分かりませんでした。スクリーンショットを Claude Code デスクトップに共有しながら、3時間ほどかけて、なんとか完遂しました。手順を私が理解して進めたというより、画面のスクショを Claude に見せ続けて、その都度「次はどこを押せばいい?」と聞きながら、言われた通りに進めた、という感じです。
その一部始終を、参考になるかもしれないので共有いたします。技術記事というより「やってみた記録」だと思って読んでいただけると嬉しいです。
更新履歴
第1稿 公開 2026年5月23日 03時00分
第2稿 更新 2026年5月23日 06時44分
第3稿 更新 2026年5月23日 14時20分
0. やりたかったこと
私のブログ nkzw.jp は最近、利尻・礼文の旅行記、ICANN の新 gTLD 動向、Claude Code 連携の自動化記事と、ジャンルがどんどん広がっています。そのぶん SNS 側の運用が追いつかなくなっていました。
1つの記事を Instagram・X・Threads・Facebook の4つに手で投稿していくと、毎回20分くらいかかります。これを コマンド1発で完了 にできたら、書く方に時間を使えるな、と。
ただ、私自身は Meta の開発者ダッシュボードも、Graph API も、OAuth も、全部「名前は知ってる」程度。やったことはありません。
そこで Claude Code デスクトップ を相棒に、スクショを共有しながら、聞かれたことに答えて、指示通りにクリックして、を3時間繰り返してきました。
1. 結論を先に書きます
最終的に到達した状態がこちらです。
| プラットフォーム | 自動化方式 | 結論 |
|---|---|---|
| Graph API | 完全自動 | |
| Threads | Threads Graph API | 完全自動 |
| X | Claude in Chrome(ブラウザ操作) | 半自動 |
| Facebook 個人プロフィール | API 投稿不可(Meta の仕様) | 不可 |
| Facebook Page | 新規作成したが App Review が必要 | 開発モードでは到達不能 |
Instagram と Threads は API で完全自動化できました。X はブラウザを Claude Code が制御して半自動。Facebook はそもそも個人プロフィールに API で投稿できないという仕様で、ここで初めて知りました。
3時間かけて分かった一番の発見は次の点です。
Instagram のアカウントセンターで「Instagramからの投稿を Facebook と Threads に自動シェア」設定を ON にしていても、Graph API 経由の投稿には適用されない。
Meta の公式ドキュメントには書いてありません。私もスクリプトで2記事投稿した後、Facebook タイムラインに何も流れていないのを見て初めて気づきました。
2. Instagram の Graph API を通すまで(約45分)
2-1. アカウントをプロフェッショナルに切り替え
Claude に「まずは Instagram アカウントをプロフェッショナル(クリエイター)に切り替えて」と言われ、スマホで作業しました。
Instagram アプリ → プロフィール → ☰ → 設定とプライバシー → アカウントの種類とツール → プロフェッショナルアカウントに切り替える
カテゴリーは「個人ブログ」、種類は「クリエイター」を選びました。Facebook ページ連携を求められましたが、ここはスキップでOK、と Claude に教わりました。
2-2. Meta の開発者ダッシュボードでアプリ作成
developers.facebook.com/apps/ を開いて、「アプリを作成」。
- ユースケース: その他
- アプリタイプ: ビジネス
- アプリ名:
ClaudeCodeデスクトップ
ここで取得した App ID: 1342831751067436、App Secret: ★マスク★
App Secret は秘密情報なので公開してはいけない、と Claude に念を押されました。私はうっかりチャットに貼ってしまったので、後で Meta 側でローテーションする必要があります(記事公開後に対応予定)。
2-3. ユースケース「Instagramでメッセージとコンテンツを管理」を追加
ここで一度詰まりました。
Claude に「Add Product から Instagram を選んで」と言われたのですが、Meta の管理画面が2024年に大改修されていて、「Products」じゃなくて「Use Cases」になっていたんです。Claude にスクショを送ったら、「Use Case 経由に切り替わってますね、左フィルターのコンテンツ管理から探してください」と即座に対応してくれました。
14.ユースケース追加モーダル
![]()
ユースケース追加モーダルの「おすすめ」タブには Instagram 関連のものは見当たらず、左フィルターを「コンテンツ管理」に切り替えて探しました。「Threads APIにアクセス」も同じ画面で選べるので、後で Threads を追加したときも同じ画面に戻りました。
選んだのは 「Instagramでメッセージとコンテンツを管理」。これで Instagram 専用のサブアプリ ID(1424722989459606)が発行されました。
02.ユースケース追加直後のダッシュボード
![]()
2-4. アクセス権限を追加
ユースケース内の 「アクセス許可と機能」 から、instagram_business_content_publish(投稿の作成・公開に必須)を追加。
権限一覧の中から該当のものを Ctrl+F で探す、というシンプルな話でしたが、当初は何を追加すればいいのか全然分からず、Claude に「必要な権限はこれです」とリストをもらってその通りに追加しました。
03.アクセス許可一覧
![]()
権限が数十個並んでいて、どれが投稿に必要かはこの画面からは判断できません。「Business Asset User Profile Access」「Human Agent」「Instagram Public Content Access」など名前から想像のつかないものも多いです。Claude が要件に対して必要な権限を教えてくれて、私は Ctrl+F で名前を引いて「追加」ボタンを押すだけでした。
2-5. Instagram テスターを登録 → Instagram 側で承認
開発モードのアプリでは、対象 Instagram アカウントを「テスター」として登録しないと OAuth 認可が通らない、ということを学びました。これも私一人だったら数時間悩んでいたところです。
最初、テスター登録をせずに アカウントを追加 → OAuth 認可 を叩いてしまい、こんなエラーが出ました。
15.OAuth開発者役割不足エラー
![]()
ポップアップがinstagram.com/oauth/authorize/third_party/error/?message=開発者の役割が不十分... という URL でエラーを返してきます。私はこれを見て「あれ、私 Meta の開発者だよね?」と一瞬パニックになりました。Claude にスクショを送ったら「Instagramテスター登録が必要です」と即答。「開発者の役割」とは Meta 側の話ではなく、Instagram テスター登録のことだった、という命名がややこしい挙動でした。
アプリの役割 → 役割 → Instagramテスターを追加 で nkzwyk を入力して送信。
19.アプリ役割管理者とIGテスター
![]()
これを Instagram 側で承認する必要があります。Claude が最初に提示してくれた URL https://www.instagram.com/accounts/manage_access/tester_invites/ を開いたら、こんな画面でした。
16.テスター招待URLの404画面
![]()
「このページはご利用いただけません」。Meta が URL を変えたか、tester_invites サブパスがもう存在しないかのどちらかだと思います。Claude にスクショを返したら「現行 UI は manage_access/ 配下の別タブです」と修正指示をくれて、https://www.instagram.com/accounts/manage_access/ を開いたら「テスター招待」タブに招待が表示されていました。「同意する」を押下。
04.Instagramテスター承認画面
![]()
2-6. アクセストークンを生成
承認後、ユースケース → 「アクセストークンを生成する」セクション → 「アカウントを追加」 → nkzwyk を選択 → 権限を許可 → 「トークンを生成」 をクリック。
17.IGアカウント追加完了
![]()
nkzwyk(IG ID 17841412826369905)が登録されて、Webhook サブスクリプションも自動でオンになりました。
IGAA... で始まる長い文字列が表示されました。「これは一度しか表示されません」 という警告がそこに出ています。
このトークンは60日有効で、ig_refresh_token を毎月叩けば期限を延ばせる、と Claude に教わりました。
05.アクセストークン生成完了モーダル
![]()
3. ig_post.py を Claude が書いてくれた
トークン取得が終わったところで、Claude に「投稿スクリプトを作って」とお願いしました。出てきたのが ig_post.py という Python スクリプト。約530行あります。
私は Python は読めますが、自分でゼロから書くのは厳しい。これを Claude が書いてくれて、実行コマンドも整理してくれました。
python ig_post.py status # トークン情報と直近投稿の確認
python ig_post.py refresh-token # 60日トークンの延命
python ig_post.py post <post_id> # CSV内の指定 post_id を実投稿
python ig_post.py dry-run <post_id> # 投稿せずペイロードをプレビュー
最初のテスト投稿(2件目の記事「ICANN の 2nd ラウンドの新 gTLD の申し込み費用」)を流したところ、3つの壁にぶつかりました。
壁その1:アイキャッチが SVG だった
私は記事のアイキャッチを SVG でアップロードしています。SEO 観点で軽量・高解像度に強い、という方針です。
しかし Instagram の API は SVG を受け付けません。エラー:
Only photo or video can be accepted as media type.
Claude は私のローカルの W:\ブログ、SNS\ に PNG バックアップを残しているのを知っていたので、「ローカル PNG を WordPress に再アップロードして、その URL を IG API に渡しましょう」と提案してきました。スクリプトに自動でその処理を入れてくれました。
壁その2:URL に日本語が含まれていた
旅行記の写真は ASCII のファイル名でも、それを置いているパスに日本語が入っています。
https://nkzw.jp/wp-content/uploads/2026/05/20260510_ノシャップ岬、稚内灯台...A7C03460.jpg
これは普通のブラウザでは開けますが、Instagram のクローラーは非ASCII URL を解釈できません。エラー文言はちょっと違いますが、結果は同じ「メディアを取得できませんでした」。
Claude が、画像を一旦ダウンロードして ASCII ファイル名(ig_eyecatch_{post_id}_{hash}.png のような形)で WordPress に再アップロードして、その URL を使う処理に書き換えてくれました。
壁その3:アスペクト比
Instagram の許容アスペクト比は 0.8(4:5)〜 1.91:1。私の SVG → PNG 変換結果は 1920×960(2:1)が標準。これは制限を超えます。
エラー:
The aspect ratio is not supported.
これも Claude が PIL(Python の画像処理ライブラリ)で白背景パディング処理を入れて解決。1920×960 → 1920×1005 にリサイズ。これで通りました。
06.ig_post実行成功ターミナル
![]()
実投稿の流れは:
[1/3] メディアコンテナ作成中...
creation_id: 18165420022427546
[2/3] 処理完了待ち...
status: FINISHED
[3/3] 公開中...
✅ 投稿完了: https://www.instagram.com/p/DYpTozQEs9S/
CSV 台帳更新: W:\ブログ、SNS\_meta\sns_schedule.csv
10秒くらいで終わります。
4. Threads API も同じパターンで追加(約30分)
Instagram が通ったら、Threads は同じ手順で進めるだけ、と Claude に言われました。
1. ユースケース「Threads APIにアクセス」を追加
2. 権限 threads_basic + threads_content_publish を有効化
3. アプリの役割 → Threadsテスター に nkzwyk を登録
4. Threads 側 https://www.threads.com/settings/account の「ウェブサイトのアクセス許可」で招待を承認
5. THAA... 形式のトークン取得
07.Threadsユースケース追加後
![]()
ここで、また一つハマりました。Threadsユースケースを追加した直後、ベーシック設定の 保存する を押そうとしたら、こんなエラーが画面の左上に出ました。
20.Threadsアプリベーシック送信不能エラー
![]()
「現在送信できません 以下のデータが入力されていません: アプリアイコン(1024 x 1024) / プライバシーポリシーのURL / カテゴリ」。Threads は Instagram より要件が厳しく、ベーシック設定が完全に埋まらないと先に進めません。アプリアイコンは Claude が手元の SVG から1024×1024 PNG を生成してくれて、プライバシーポリシーは nkzw.jp/privacy/ を即席で作成、カテゴリは「ビジネスとページ」で通しました。
Threadsテスター登録後、Threads 側で同意します。
21.Threadsウェブサイト承認画面
![]()
「Meta のプラットフォーム利用規約および開発者ポリシーに同意するものとします」。Instagram のテスター承認とまったく違う UI なので、Claude にスクショを送って「ここを押せばいい?」と確認してから「同意する」を押しました。
Threads には Instagram にない制約があります。
- 文字数制限 500字(IG は2200字、X は280字)
- ハッシュタグは自動リンク化されない場合がある
- URL がクリック可能(IG はキャプション内 URL をリンク化しない)
私の threads_post.py ではこれを踏まえて、Threads 用キャプションを「本文 + 記事URL + ハッシュタグ」の順で組み立て、500字を超える場合はハッシュタグを優先で残して本文を「…」で省略するようにしました。これも Claude が書いてくれました。
実投稿:
$ python threads_post.py post 241631
[1/3] メディアコンテナ作成中...
[2/3] 処理完了待ち...
status: FINISHED
[3/3] 公開中...
✅ Threads 投稿完了: https://www.threads.com/@nkzwyk/post/DYpZirIEtd7
08.Threadsトークン生成画面
![]()
ここまでで Instagram と Threads は完全自動化達成。記事1件あたりコマンド2発で投稿完了の状態に。
5. X は Claude in Chrome で半自動化(約20分)
X(旧 Twitter)の API は無料プランもありますが、X Developer Portal の申請プロセスがやや重いので、今回はブラウザ操作で対応しました。
Claude Code の Claude in Chrome 拡張 が使えるので、これで X.com を操作してもらいました。
私がやったのは「この記事を X に投稿して」と頼んだだけ。Claude は次のことをしてくれました:
1. x.com/compose/post を開く
2. 用意してあったキャプション(CSV に保存してあるもの)を貼り付け
3. ハッシュタグ追記
4. プレビュー確認
5. 「投稿前に確認してください」と私に提示
6. 私が「OK」と返事
7. ポストするボタンをクリック
09.X投稿成功画面
![]()
この過程で2点、X 特有の罠に当たりました。
X の罠1:漢字の文字化け
Claude が日本語を入力すると、まれに特定の漢字が別の字に化けます。私が遭遇したのは:
- 「中澤祐樹」が「中澍祐樹」に
- 「現地滞在中」が「現地滑在中」に
- 「桃台猫台」が「桅台猫台」に
自分の名前が「澍」に化けるのは死活問題なので、Claude が JavaScript で直接書き換える処理を入れて修正してくれました。Unicode コードポイントで直接指定することで安定するそうです。
X の罠2:投稿ボタンが灰色のまま
テキストを入れたのに「ポストする」ボタンが押せない状態が何度かありました。X の React state がペースト入力をキャプチャできていない、というのが原因らしく、Claude が「スペース1文字打ってバックスペースで消す」という対処で state を強制更新してくれました。
これも Claude が問題を発見して対処してくれたので、私は何もしていません。
6. Facebook という壁(約1時間半)
ここからが、今回最も時間がかかったところです。
6-1. 最初の発見:API 投稿はクロスポストを発火しない
Instagram で API 投稿した最初の記事の後、Facebook タイムラインを見たら、何も反映されていませんでした。
私の Instagram は「Account Center → プロフィール間のシェア」で 「Instagramからの投稿を Facebook(中澤祐樹)にシェア」が ON になっています。Web/モバイルアプリから投稿したときは、これが効いて Facebook 個人プロフィールに自動で流れます。
ところが Graph API 経由の投稿には、この設定が 適用されません。Meta の公式ドキュメントには書いていない挙動で、Claude も「これは公式未記載の重要な発見ですね」と整理してくれました。
10.AccountCenterクロスポスト設定
![]()
「コネクテッドエクスペリエンス」配下に「プロフィール間のシェア」「FacebookデートとInstagram」「Instagramデバイスのメディア」が並んでいて、自動シェアの実体は「プロフィール間のシェア」の中にあります。
18.プロフィール間シェア詳細
![]()
シェア元 nkzwyk Instagram → シェア先 中澤 祐樹 Facebook。「自動的にシェア → Instagram投稿 / Instagramストーリーズ」がいずれも ON です。web/モバイルアプリからの投稿だとこれが効くのですが、Graph API 経由の投稿だと無視されます。web UI で投稿したのか、API で投稿したのかを、Meta 側が裏で識別しているとしか思えません。
6-2. 個人プロフィールには API で投稿できない
ならば Facebook Graph API を別途使えば良いのでは、と思ったところで Claude から 「Facebook の Graph API は個人プロフィールへの投稿を一切サポートしません」 という事実を突きつけられました。
Meta の仕様で、Graph API で投稿できるのは Page(ビジネス/クリエイター/個人ブログなどのページ)のみ。「中澤 祐樹」という個人プロフィールには、いかなる API でも書き込みできません。
6-3. Facebook Page を新設
Claude の提案で、Facebook Page を新規作成しました。
- Page 名:
中澤祐樹ブログ - カテゴリ: 個人ブログ
- bio: 「20年のドメインプロフェッショナル、中澤祐樹のIT・旅・暮らしブログ。nkzw.jp」
5分くらいで作成完了。Page ID は 1164013216791458。
11.中澤祐樹ブログPage作成完了
![]()
26.中澤祐樹ブログFBPage管理画面
![]()
ページの管理画面はこんな感じ。フォロワー0、フォロー中0からスタート。bio に nkzw.jp を書いたら、Facebook が自動でクリック可能なリンクに変換してくれました。あとは API でここに投稿できれば完成、というところまで来たのですが…。
6-4. しかし pages_manage_posts が認可されない
Claude の指示通り、Meta アプリにユースケース「ページのすべてを管理」を追加。これで3つのユースケースが揃いました。
22.ダッシュボード3ユースケース完成
![]()
「Instagramでメッセージとコンテンツを管理」「Threads APIにアクセス」「ページのすべてを管理」がすべて緑のチェックでカスタマイズ済み。一見すると順調に見えます。
ところが、ユースケース内のアクセス許可一覧を開くと、ここで決定的な問題に遭遇しました。
23.pagesmanagepostsが追加ボタンのまま
![]()
注目してほしいのは pages_manage_posts の行。他の権限は「ユースケース2件で見つかりました」「テスト準備完了」と表示されているのに、pages_manage_posts だけは「+ 追加」のボタンのまま で、押しても応答しません。pages_manage_metadata も同じ症状。
これらは2022年以降に「Advanced Access」扱いに変わった権限で、開発モードのアプリでは追加自体が拒否されるようになっていました。画面の見た目は完全に普通の「+ 追加」ボタンだけど、内部的にはロックされている、という挙動が一番分かりにくい部分です。
Graph API Explorer でトークンを取得。
https://developers.facebook.com/tools/explorer/
何度試しても pages_manage_posts(投稿に必須の権限)が OAuth で付与されません。
/me/permissions で確認すると:
- ✅ pages_show_list
- ✅ pages_read_engagement
- ✅ public_profile
- ❌ pages_manage_posts(無い)
- ❌ pages_manage_metadata(無い)
- ❌ business_management(無い)
Facebook 認証ダイアログで権限を全部チェックしても、auth_type=rerequest で強制再認証を試みても、結果は同じ。
しかも Graph API Explorer 上で /me を叩くだけでもエラーが出る、という症状もありました。
24.GraphAPI活性トークンエラー
![]()
{"error": {
"message": "An active access token must be used to query information about the current u...",
"type": "OAuthException",
"code": 2500
}}
アクセストークンを取得した直後なのに「active access token を使ってください」と返ってくる、これも一見意味不明でした。Claude が「ユーザートークンとページトークンが混在しているとこの症状が出ます。/{page_id}?fields=access_token でページ専用トークンを取り直してください」と教えてくれて解決。
次に追加権限のリクエストで pages_read_user_content を試したら、こんなエラー。
25.GraphAPIInvalidScopesエラー
![]()
「Invalid Scopes: pages_read_user_content. This message is only shown to developers. Users of your app will ignore these permissions if present.」
つまり「開発者向けにはエラーを出すけど、実ユーザーには黙って権限を無視します」という Meta の親切設計。この権限はもう存在しないか、別名に変わっています。 Claude にスクショを送ったら「2024年に pages_read_user_engagement 系に再編されました」と教えてくれて、即修正。
実際に Page Token で /{page_id}/feed に POST すると:
{"error":{
"message":"(#200) If posting to a page, requires both pages_read_engagement
and pages_manage_posts as an admin with sufficient administrative permission"
}}
12.GraphAPIExplorer権限確認
![]()
6-5. App Review が必要、と判明
Claude の調査によると、pages_manage_posts は2022年以降「Advanced Access」扱いの権限で、Meta App Review を通過しないと取得できない仕様になっているそうです。
App Review はアプリのレビュー申請で、通常 1〜2週間。私のアプリは「未公開」「アプリアイコン未設定」「プライバシーポリシーURL 未設定」と最低要件すら満たしていない状態。今回のスコープでは到達不能と Claude と話し合って結論しました。
7. Playwright で迂回しようとして失敗(約30分)
Facebook 個人プロフィールへの自動投稿が API で無理なら、ブラウザ自動操作で Instagram の web UI からクロスポスト機能を発火させればよいのでは、という案を Claude が出してきました。
Python の Playwright ライブラリで Chromium を制御する browser_post.py を書いて、永続コンテキスト(Cookie 保存)で初回のみ手動ログイン、以降は自動という設計。
python -m pip install playwright
python -m playwright install chromium
python browser_post.py login # 初回ログイン
python browser_post.py post 241229 # 投稿実行
私が browser_post.py login を実行して、開いた Chromium ブラウザで Instagram と X にそれぞれログインして Enter を押したのですが、その後 status を確認すると Instagram もログアウトされていました。
Claude いわく、Meta(IG)も X も Playwright Chromium を「未知のデバイス」として検出してセッションを自動無効化している、と。--disable-blink-features=AutomationControlled のような自動化フラグ除去オプションも効きません。
これは anti-bot 対策が日々進化していて、playwright-stealth のような迂回ライブラリと組み合わせても安定性は保証されない、ということで、ここで撤退しました。
8. 今回の到達と未到達
3時間後の手元に残ったものを整理します。
投稿実績
| 記事ID | タイトル | IG | X | Threads | FB |
|---|---|---|---|---|---|
| 240160 | AIで利尻・礼文の旅行記を圧縮 | ✅手動投稿 | ✅Claude in Chrome | ✅IG連動 | ✅IG連動 |
| 238791 | ICANN 2nd ラウンドの新gTLD費用 | ✅ig_post.py |
– | – | ❌ |
| 241631 | ノシャップ岬・稚内灯台・北川神社 | ✅ig_post.py |
✅Claude in Chrome | ✅threads_post.py |
❌ |
| 241511 | 桃台猫台・浜勇知園地 | ✅ig_post.py |
✅Claude in Chrome | ✅threads_post.py |
❌ |
240160(最初の記事)だけ Facebook と Threads にも流れているのは、これだけ私が Instagram の web UI から手動投稿 したからです。クロスポストトグル ON のおかげで自動転送されました。残り3件は API 経由なので、Facebook には行っていません。
13.FB個人プロフィール反映
![]()
完成したスクリプト
W:\ブログ、SNS\_meta\ に Claude が書いてくれたものが揃いました。
ig_post.py— Instagram Graph API 経由の投稿スクリプト(約530行)threads_post.py— Threads Graph API 経由の投稿スクリプトgenerate_sns_schedule.py— 投稿スケジュール CSV ジェネレータbrowser_post.py— Playwright ブラウザ自動化(未完成、anti-bot で詰まり中).env— 資格情報(コミット禁止)
9. 月次運用の流れ
完成した自動化パイプラインで、私が毎月やることは下記だけです。
# 毎月1日(30日経過したら)
python ig_post.py refresh-token
python threads_post.py refresh-token
これで IG / Threads のアクセストークンが60日先まで延長されます。期限14日未満になると status コマンドが警告してくれます。
$ python ig_post.py status
=== Account ===
{"id": "27531502349789738", "username": "nkzwyk",
"account_type": "MEDIA_CREATOR", "media_count": 36, "followers_count": 536}
=== Token ===
Expires: 2026-07-21 (残り 59 日)
新規記事を SNS に展開するときは:
python ig_post.py post <post_id> # IGに投稿
python threads_post.py post <post_id> # Threadsに投稿
これだけ。あとは X を Claude in Chrome で半手動で投稿、Facebook 個人プロフィールには Instagram web から手動で投稿(クロスポストトグル ON で同時に Threads も再投稿される)。
20分かかっていた手作業が、コマンド2発と Claude との会話3〜4ターン、合計2分くらいで終わるようになりました。
10. 「Claude Code に投げて良かった」と感じたところ
3時間で全部やってもらって、特に助かったポイントをまとめます。
10-1. Meta 開発者ダッシュボードの UI 変更に即座に追随
私がスクショを撮って送ると、Claude は「2024年の Use Case 構造に変わってますね、左フィルターのコンテンツ管理から探してください」のような提案を即座にくれました。Meta のドキュメントは更新が遅いことが多いので、これは大きな助けでした。
10-2. エラーメッセージの即時解読
(#200) If posting to a page, requires both pages_read_engagement and pages_manage_posts... のような Graph API のエラーが出るたびに、Claude が「これは Advanced Access 権限が App Review を通っていないせいです」と解説してくれました。私一人だと公式ドキュメントを30分は読まないと判断つかない内容です。
10-3. 「諦める判断」をしてくれた
Facebook の pages_manage_posts がいくら試しても付与されない状況で、Claude は「これは App Review が必要なので、開発モードのアプリでは到達不能です。今回はここで撤退して、IG/X/Threads の3プラットフォーム自動化で記事にまとめましょう」と提案してくれました。
放っておくと延々と試行錯誤を続けてしまう私には、こういう「ここまで」のラインを引いてくれる相棒は大きい。
10-4. スクリプトを書いてくれた
これは私自身では到底書けない量のコードです。ig_post.py だけで530行。エラーハンドリング、リトライ、CSV 連携、ローカル画像探索、PIL での画像変換、WordPress REST API でのアップロード、Meta Graph API の3段階フロー(コンテナ作成 → 処理完了待ち → 公開)。全部 Claude が書いてくれて、エラーが出るたびに修正してくれました。
11. これから
未到達の項目について、自分メモも兼ねて。
Facebook: 中期的には Meta App Review を申請するか、IG web からの手動投稿で当面しのぐ。プライバシーポリシー、アプリアイコン、本番カテゴリを整備すれば申請可能。
X: 現状の Claude in Chrome 運用を継続。Playwright-stealth で再構築するか、X Developer Portal で API アクセスを申請するか、後で考える。
Instagram + Threads: 現行スクリプトで充分。月次でトークン延命。Reels / Carousel 対応は要望が出たら追加する。
12. おわりに
「ブログ記事を4プラットフォームに自動展開する」というシンプルなお題が、Meta の API 仕様、ドキュメント未記載の挙動、ブラウザの anti-bot 検出など、思った以上にハードルが高い世界でした。
私一人だったら絶対に途中で投げ出していたと思います。
3時間で:
- ✅ Instagram + Threads の完全自動投稿パイプライン構築
- ✅ 「Account Center のクロスポスト設定は API 投稿には効かない」という公式未記載の知見
- ⚠️ Facebook 自動投稿は Meta App Review が必要、と仕様判明
- ⚠️ X は当面ブラウザ操作運用
実用的にはこれで十分です。1記事を IG + Threads に流すのに10秒ちょっと。残りの FB と X は手動・半手動で2分弱、合わせて2分10秒。手動で20分かかっていた頃から見ると劇的に短縮できました。
同じことをやろうとしている方の参考になれば。
Claude Code、本当に助かりました。
撮影機材
なし(本記事はソフトウェア検証記録のため)。

