Instagram の自動投稿を AI エージェントに任せる(パスワードを渡さず Meta API トークンを OAuth 1 回で受け取る)
Instagram の ID/パスワードを AI に渡さず、Meta の長期アクセストークンだけを渡す手順。デスクトップの .cmd が通常ブラウザで Meta App Dashboard を開き、貼られたトークンを .env に保存して /me で即検証する。公開URL必須・JPEGのみ・24h 100件・削除不可・60日更新などの制約と、自動化ブラウザ認証でアカウント停止に至った実害も記載。
約5.5万トークンの節約 (API料金換算で約83円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「Instagram の自動投稿を AI エージェントに任せる(パスワードを渡さず Meta API トークンを OAuth 1 回で受け取る)」は、SNS運用カテゴリのAI指示書(MDファイル)です。Instagram の ID/パスワードを AI に渡さず、Meta の長期アクセストークンだけを渡す手順。デスクトップの .cmd が通常ブラウザで Meta App Dashboard を開き、貼られたトークンを .env に保存して /me で即検証する。公開URL必須・JPEGのみ・24h 100件・削除不可・60日更新などの制約と、自動化ブラウザ認証でアカウント停止に至った実害も記載。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約5.5万トークン(API料金換算で約83円)・92%のトークンを節約できます。
- カテゴリ
- SNS運用
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約6万トークン
- この巻物使用時
- 約5,000トークン
- 節約量
- 約5.5万トークン (約83円)
- 更新日
- 2026-10-09
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/instagram-ai-meta-api-oauth-1/raw を読み込んで、この指示書どおりに実装して"
中身
Instagram の自動投稿を AI エージェントに任せる手順(パスワードを渡さず、Meta API トークンを OAuth 1 回で受け取る)
この指示書が解く問題
「Instagram の ID とパスワードをもらった。AI エージェント(Claude Code 等)に自動投稿させたい。どう渡せばいい?」に対する答え。 結論は パスワードは渡さない。渡すのは Meta が発行する Instagram API with Instagram Login の長期アクセストークン(60 日) だけ。 人がやるのは「ダブルクリック 1 回 → ブラウザで OAuth 同意 → トークンを貼る」だけで、以後は無人で投稿・更新できる。
なぜパスワードを渡してはいけないか(実害ベース)
- 自動化ブラウザ(Playwright/CDP/Chrome for Testing、特に
--disable-blink-features=AutomationControlled付き)でログインすると、サイト側の端末指紋検知が「セキュリティ上の理由」でアカウントを無効化する。宿泊 OTA で実際に起きた(月数十万円規模の売上窓口が丸ごと閉じた)。Instagram は同種の検知がさらに厳しい。 - 「通常ブラウザでログインして Cookie を自動化プロファイルに移す」案は、Chrome v127 以降の App-Bound Encryption で Chrome 本体以外が Cookie を復号できず、実装できない。
- instagrapi 等の非公式ライブラリは利用規約違反で、同じく停止リスク。
- 残る安全な経路は公式 Graph API だけ。トークンは失効・取り消しができ、権限も絞れる。
事前に公開ページだけで確認できること
- アカウントがプロアカウント(ビジネス/クリエイター)か。公開プロフィール
https://www.instagram.com/<ユーザー名>/にカテゴリ(「ホテル」「レストラン」等)が出ていればプロアカウント化済み。出ていなければ Instagram アプリの設定でプロアカウントに切り替える(人の操作)。 - 公式サイトのフッター等から正しいユーザー名を特定する(似た名前の偽アカウントを掴まないため)。
公式ドキュメントで確認した前提(2026-10 時点)
- トークン発行場所: Meta App Dashboard の「Instagram > API setup with Instagram business login」→「Generate token」。アプリ種類は Business。Dashboard で発行されるトークンは長期(60 日)。
- 投稿の流れ:
POST /{ig-user-id}/media(image_urlまたはvideo_urlとcaption)→POST /{ig-user-id}/media_publish。 - メディアは 公開 HTTPS URL 上に置く必要がある(ローカルファイルの直送は不可)。画像は JPEG のみ。動画/リールは MP4。カルーセルは 10 枚まで。ストーリーズ可。
- API 経由の投稿は 1 アカウント 24 時間で 100 件まで。
- 必要権限: 投稿は
instagram_business_basic+instagram_business_content_publish。コメントはinstagram_business_manage_comments、DM はinstagram_business_manage_messages(Webhook の公開エンドポイントが別途要る)。 - Instagram API には投稿の削除が無い。テスト投稿は本番として出せる内容か、24 時間で消えるストーリーズで行う。
- 出典: developers.facebook.com の「Instagram API with Instagram Login > Get started」と「Content publishing」。
AI エージェント側が先に用意するもの
1. .gitignore(トークンをコミットさせない)
.env
.env.*
!.env.example
.env.example しか追跡していないリポジトリでも .env 自体が除外されていないことがある。git check-ignore -v .env で exit 0 になるまで確認する。
2. デスクトップの .cmd(人の操作を 1 回に畳む)
ファイル名例: Instagramトークン登録(ダブルクリック).cmd。中身は ASCII のみ(cmd のコードページ事故を避ける)。__REPO__ をリポジトリの絶対パス、__IG_USERNAME__ を対象アカウントのユーザー名に置き換える。
デスクトップの実パスは PowerShell の [Environment]::GetFolderPath('Desktop') で取る(OneDrive リダイレクト対策)。
@echo off
setlocal EnableExtensions
rem Instagram: guide the one-time Meta setup, save the access token into
rem the project .env and verify it. ASCII only.
set "ENV=__REPO__\.env"
set "TMP_ENV=%ENV%.tmp"
echo.
echo STEP 1 Opening the Meta App Dashboard in your normal browser...
start "" "https://developers.facebook.com/apps/"
echo.
echo a) Log in with the operator's own Facebook account.
echo b) Create app -^> type: Business -^> add product: Instagram
echo c) Left menu: Instagram ^> API setup with Instagram business login
echo d) Click "Generate token", log in as __IG_USERNAME__, allow, copy the token.
echo.
echo STEP 2 Paste the token below and press Enter (nothing is shown while pasting).
echo.
set "TOKEN="
set /p "TOKEN=> "
if not defined TOKEN (
echo No token entered. Nothing was changed.
pause
exit /b 1
)
echo STEP 3 Saving to %ENV%
if exist "%ENV%" (
findstr /v /b /c:"INSTAGRAM_ACCESS_TOKEN=" "%ENV%" > "%TMP_ENV%"
move /y "%TMP_ENV%" "%ENV%" > nul
)
>> "%ENV%" echo INSTAGRAM_ACCESS_TOKEN=%TOKEN%
echo STEP 4 Verifying with Meta Graph API (/me)...
echo SUCCESS looks like: {"user_id":"...","username":"__IG_USERNAME__"}
echo.
curl.exe -s "https://graph.instagram.com/v21.0/me?fields=user_id,username&access_token=%TOKEN%"
echo.
echo.
echo If the line above contains "__IG_USERNAME__" -^> DONE. Close this window.
echo If it contains "error" -^> take a screenshot of this window and send it to the AI.
echo.
pause
endlocal
ポイント:
start ""で 通常ブラウザ を開く。自動化ブラウザを前面に出して「ここに入力して」と促さない。set /pの貼り付け中は何も表示されないので、その旨を先に出す(「壊れた」と思われない)。- 既存の
INSTAGRAM_ACCESS_TOKEN=行はfindstr /vで消してから追記し、重複行を作らない。 - その場で
/meを叩いて成否を画面に出す。成功判定は「応答にユーザー名が含まれる」。失敗は"error"を含む JSON。
3. 人への依頼文(1 文で済ませる)
デスクトップの「Instagramトークン登録(ダブルクリック).cmd」を 1 回ダブルクリックし、開いたブラウザの案内に従ってトークンを貼ってください。黒い窓に
<ユーザー名>が出れば完了です。error が出たらその窓のスクショを 1 枚ください。
受領後に AI エージェントが実装するもの
tools/instagram/post.mjs:--image <公開URL>または--video <公開URL>、--caption。コンテナ作成 → 動画はstatus_codeがFINISHEDになるまでポーリング →media_publish。応答の media id をログに残す。tools/instagram/refresh-token.mjs:GET https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=<現トークン>。毎日の夜間ジョブで実行し、残り 10 日を切ったら更新して.envを書き換える。トークンは発行から 24 時間経たないと更新できない。更新失敗が続いたら人に通知して打ち切る(無人処理には試行上限を付ける)。- メディアの置き場: 公開 HTTPS URL が要る。静的ホスティング(Vercel 等)、公開リポジトリの raw、オブジェクトストレージのいずれか 1 つに決める。
- 検証: テスト投稿後に 必ず公開プロフィールをブラウザで開いて実表示を読み戻す。API の成功応答だけで「出た」と言わない。
踏みやすい失敗
| 失敗 | 何が起きるか | 回避 |
|---|---|---|
| パスワードを自動化ブラウザに打つ | アカウント無効化。復旧は本人確認待ち | 本指示書の方式。パスワードは OAuth 画面で人が 1 回打つだけ |
.env が gitignore されていない | トークンがコミット候補に出る | 先に git check-ignore -v .env を確認 |
| トークンをチャットに貼らせる | 会話ログに平文で残る | .cmd でファイルに直接入れる |
| 投稿を削除しようとする | API に削除が無い | テストはストーリーズか本番で出せる内容 |
Webhook を GAS の /exec で受ける | 302 リダイレクトで Meta の配信に耐えるか未確認 | サーバレス関数(Vercel 等)で受ける |
| 画面を見ずに手順を書く | ラベル名が実画面と違い手戻り | 公式ドキュメント由来のラベルは「未確認」と明記し、違ったらスクショ 1 枚をもらって直す |
よくある質問
+「Instagram の自動投稿を AI エージェントに任せる(パスワードを渡さず Meta API トークンを OAuth 1 回で受け取る)」とは何ですか?
Instagram の ID/パスワードを AI に渡さず、Meta の長期アクセストークンだけを渡す手順。デスクトップの .cmd が通常ブラウザで Meta App Dashboard を開き、貼られたトークンを .env に保存して /me で即検証する。公開URL必須・JPEGのみ・24h 100件・削除不可・60日更新などの制約と、自動化ブラウザ認証でアカウント停止に至った実害も記載。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約6万トークンかかりますが、この巻物を使えば約5,000トークンで済みます。差し引き約5.5万トークン(API料金換算で約83円)・92%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
X(Twitter) 予約投稿Bot 開発指示書
スプレッドシートに書いた投稿文を指定時刻に X へ自動ポストする Bot を AI に作らせる MD。API v2 の無料枠制限・画像添付・スレッド投稿の対応込み。
X(旧Twitter)自動投稿を従量課金時代に立ち上げる手順書
無料枠廃止後のX APIでGitHub Actions定期投稿を構築する。403を生む権限変更とトークン再生成の順番、リンク有無で13倍変わる単価の正しい見積り方、鍵を人に中継させない投入スクリプト、送信前ガードまで。
従量課金 SNS API の送信前ガードを実装する手順(X/Twitter 例・誤検知の教訓付き)
1投稿ごとに課金される X API で、壊れた本文(空文・280字超・プレースホルダ・文字化け)を送信直前に止めるガードの実装・テスト・CI・本番確認の全手順。裸の TODO が本文の普通語を誤検知した実測と回避策、委譲時に防護解除を禁止する1行を含む
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア