Instagram APIで画像3枚を投稿する

見出し画像

画像を3枚用意して、AIに「Instagramへ出して」と頼みたい。でも、その前に何をつなげればよいのでしょうか。

ぼくは2026年10月6日、自分の発信用アカウントで接続から1本目の投稿まで進めました。そのときの画面と、つまずいたところを残します。

アカウントを特定できる情報は、本文では伏せ、スクリーンショットでは不透明に隠しています。操作の説明や赤枠は残しています。

目次

🙋 こんな人に向けた記事です

サボテン先生の図解:こんな人に向けた記事です

自分のInstagramに、AIや自分のプログラムから自動で投稿したい人へ向けて書きます。Meta(Instagramの会社)の開発者ページで迷っている人や、投稿用の鍵を安全に扱いたい人にも、作業の流れを見てもらえる記事です。

🎯 この記事を読むと、できるようになること

サボテン先生の図解:この記事を読むと、できるようになること

Meta の開発者のページでアプリを作り、自分の Instagram で「許可」を出す流れを、実画面で追えます。

後半は、ぼくが専用プログラムで画像3枚を1つにまとめた投稿(カルーセル)を出した記録です。

記事のコマンドだけを貼れば、誰でも投稿できるわけではありません。 投稿用プログラムそのものの配布記事ではないため、自分のAIに作ってもらうなど、別途準備が必要です。

※用語の補足①「API」=アプリ同士がやり取りする窓口です。画面を手で押す代わりに、プログラムがこの窓口へ投稿を頼みます。

2026年10月6日に、せどりの発信用アカウント([アカウント名は非掲載])で実際に行った手順です

Facebook ページは使っていません(Instagram のログインだけで使う方式です)

✅ 完成したときの状態

サボテン先生の図解:完成したときの状態

プログラムから出した投稿が、ほかのアカウントから見ても、画像3枚とキャプションがそろって見えている状態です。

ほかのアカウントから見た投稿の1枚目。プライスターの設定額よりAmazon価格が安い?の画像とキャプション

*別のアカウントで開いた、完成した投稿(1枚目)*

🧰 始める前に用意するもの

サボテン先生の図解:始める前に用意するもの

まず、Instagramのプロアカウント(ビジネスかクリエイター)と、Metaの開発者アカウントを用意します。ぼくはクリエイター(MEDIA_CREATOR)を使い、開発者アカウントは作成済みでした。

投稿の素材は、JPEG画像1080×1350を3枚と、キャプションです。画像を一時的にネットへ置く場所にはVercel(バーセル)を使い、投稿後に置き場を消す作りにしました。

さらに、Pythonで専用に作った投稿プログラムを使っています。パソコンに最初から入っているものではなく、別途準備する道具です。

💡 Instagram の API は、画像をネット上のアドレスからしか受け取りません。パソコンの中の画像を直接は送れないので、「一時的に置く場所」が要ります。


🪜 手順

サボテン先生の図解:手順

手順1:Meta の開発者のページで、アプリを作る

Meta for Developers の「マイアプリ」から「アプリを作成」に進み、名前とユースケース(使い道)を選んでいきます。最後の「概要」の画面です。

アプリ作成の概要の画面。①ユースケース「Instagramでメッセージとコンテンツを管理」、②アプリを作成ボタンに赤枠

*①ユースケースが「Instagramでメッセージとコンテンツを管理」になっているのを確かめて、②「アプリを作成」を押します。メールアドレスは隠しています*

① ユースケースは「Instagramでメッセージとコンテンツを管理」を選びます。

② 内容を確かめて「アプリを作成」を押します。

手順2:自分の Instagram を「テスター」に追加する

今回は、アプリが「開発中」の状態で、自分をテスターに追加しました。アプリの「アプリの役割」で「メンバーを追加」を押します。

※用語の補足②「テスター」=そのアプリを試す人です。追加だけで終わらず、Instagram側でも招待を受けます。

アプリに人を追加の画面。①Instagramテスター、②アカウント名の入力欄、③追加ボタンに赤枠

*①「Instagramテスター」を選び、②投稿したいアカウント名を入れて、③「追加」*

手順3:Instagram の側で、招待を「承認する」

追加しただけでは、まだ使えません。投稿したいアカウントで Instagram にログインして、招待を受けます。

Instagram の「設定」→「アプリとウェブサイト」を開きます。

Instagramの設定のアプリとウェブサイト。①テスターへのご招待タブ、②承認するボタンに赤枠

*①「テスターへのご招待」を開き、作ったアプリ(今回は [アカウント名は非掲載])の②「承認する」を押します*

手順4:Instagram でログインして、「許可」を出す

開発者のページのアプリに戻り、「Instagramログインによる API 設定」から、投稿したいアカウントでログインします。

Instagramのログイン画面。ログインボタンに赤枠。パスワード欄は隠している

*ログインは本人がします(パスワードは画面に出さないよう、この画像では隠しています)*

ログインすると、「何を許可するか」の画面が出ます。最初は「コンテンツへのアクセスと公開」だけがオンでした。

許可の画面の最初の状態。コンテンツへのアクセスと公開だけがオン。上にオレンジ色の注意

*最初の状態。「コンテンツへのアクセスと公開」がオン。上には「メッセージへのアクセスを許可するには、この設定をオンにする必要があります。」と出ています*

今回は、あとでコメントへの返事などにも使う予定だったので、全部オンにしました。

許可の画面で、すべての項目をオンにした状態。①オンの列、②許可ボタンに赤枠

*①今回は将来の返信にも使うため全部オンにし、②「許可」を押しました。投稿だけのために全部オンをすすめる画面ではありません*

投稿だけが目的なら、全部オンにする必要があるかは、この記事では確かめていません

手順5:鍵(アクセストークン)を、チャットに貼らずに保存する

「許可」のあと、開発者のページでアクセストークンを作ります。

※用語の補足③「アクセストークン」=許可された操作をするための鍵です。パスワードと同じように、他人へ渡さずに扱います。

この画面は鍵がそのまま写るため、この記事には載せていません

鍵はチャットやメモに貼らず、コピーしたものをプログラムが直接ファイルにしまうやり方にしました

以下は、専用の `save_instagram_from_clipboard.py` を用意した作業フォルダで動かしたコマンドです。このファイルや `.venv` は、読者のパソコンに最初からあるものではありません。コマンドに鍵の文字は書きません。

.venv/bin/python -B save_instagram_from_clipboard.py

画面に出るのは「保存できた/できなかった」だけです。保存できたら、クリップボードは空になります

⚠️ コピー履歴を残すアプリを使っている場合は、そのアプリに鍵が残ります。その1件だけを手で消します

手順6:鍵が使えるか、Meta 公式の道具で確かめる

Meta の「アクセストークンデバッガー」で、保存した鍵を確かめます。

アクセストークンデバッガーの結果。有効期限・有効True・スコープの3行に赤枠。番号は隠している

*「有効」が True か、期限が切れていないか、許可した中身が目的に合っているかを確かめます。今回5つ並んでいたことは、全員が5つ必要という意味ではありません*

今回の有効期限は 2026年12月5日でした。期限の前に延ばす必要があります

手順7:投稿したいアカウントと、ちゃんとつながっているか確かめる

ここからはターミナル(文字で命令する画面)での作業です。`sedo.py` も今回専用に作ったプログラムです。そのプログラムで、まず「読むだけ」の確認をしました(投稿はしません)。

.venv/bin/python -B sedo.py check-connection --media Instagram

出てきた結果(番号は伏せています):

{"media": "Instagram", "account_id": "(投稿用のID)", "identity_verified": true, "read_only": true, "publishing_verified": false, ...}

`identity_verified: true` は「つながった先が、投稿したいアカウント本人だった」という意味です

手順8:本番と同じ指定で「試運転」する

投稿の命令に `--dry-run`(試運転)を付けて動かします。画像は置かず、投稿もしません。

.venv/bin/python -B sedo.py publish --media Instagram --approval approvals/(この作品の許可ファイル).json --dry-run
"checks": {
  "作品の版と画像の指紋": "OK",
  "公開の許可(設定のスイッチ・許可ファイル)": "OK",
  "専用の鍵ファイル(600・期限)": "OK",
  "Vercel(コマンドとログイン)": "OK",
  "二重送信の記録": "OK"
},
"ready_to_publish": true

全部 OK になるまで、本番には進みません

「公開の許可」は、持ち主が「出していい」と言った作品だけ、許可のファイルと設定のスイッチで OK になる作りにしました(勝手に投稿しないため)

手順9:本番の1本を出す

同じ命令から `--dry-run` を外して動かします。

.venv/bin/python -B sedo.py publish --media Instagram --approval approvals/(この作品の許可ファイル).json

プログラムの中では、次の順に進みます。

1.画像3枚を Vercel に一時的に置き、外から同じ画像が読めるまで待つ

2.Instagram に画像を1枚ずつ渡し、3枚をまとめた「入れ物」を作る

3.公開して、投稿の中身とアカウントを読み返して確かめる

4.Vercel の一時的な置き場を消す(成功しても失敗しても)

結果:

"result": "api_verified_public_view_pending",
"url": "[公開先URLは非掲載]",
"image_host_removed": true

`api_verified_public_view_pending` は「API での確かめは済み。ほかの人からの見え方は、まだ人の目で見ていない」という意味です


🔍 ほかの人から見えるかを確かめる

サボテン先生の図解:ほかの人から見えるかを確かめる

別のアカウントで投稿のページを開き、画像を1枚ずつ送って確かめました。

ほかのアカウントから見た投稿の2枚目。今回は割引表示が見つかりました。

*2枚目も見えています*

ほかのアカウントから見た投稿の3枚目。確認する順番はこれ。

*3枚目と、右側のキャプションも見えています*

ログインしていない状態での見え方は、この記事では確かめていません

🧗 今回、実際につまずいたところ

サボテン先生の図解:今回、実際につまずいたところ

つまずき1:ID が2種類あって、同じではなかった

確かめの途中で、Instagram の「投稿用のID」と、デバッガーに出る「App-Scoped User ID(アプリの中だけのID)」がちがう番号でした。

対処:この2つはもともと別の種類の番号です。同じでなくても問題ありません。投稿には「投稿用のID」を使います。

つまずき2:権限を調べる窓口がエラーでも、鍵は使えた

権限の一覧を調べる窓口がエラー(HTTP 400・401)を返しました。

対処:鍵が切れたと決めつけず、「自分のアカウントを読む」窓口(成功した)と、Meta 公式のデバッガーの画面で確かめました。鍵は有効でした。

つまずき3:いつもの Python では、プログラムが動かなかった

このMacにもともと入っていた Python には、通信に使う部品(requests)が入っていませんでした。

対処:この作業専用の Python の部屋(`.venv`)を作り、そこに入れました。以後のコマンドは、すべて `.venv/bin/python` で動かしています。

⚠️ 気をつけること

サボテン先生の図解:気をつけること

鍵(アクセストークン)は、チャット・メモ・スクリーンショットに出さない。期限(今回は2026年12月5日)の前に延ばす

Vercel の無料プランは「個人の非商用向け」とされています。お仕事で使うときは、規約に合うかを確かめてください

一度送った作品は記録され、同じ作品を二重に送らないようになっています。結果が分からないときも、勝手に送り直しません

今回は、1本出したあとに設定のスイッチをオフに戻しました。次の作品も、1本ずつ「出していい」をもらってから出します

📝 まとめ

サボテン先生の図解:まとめ

ぼくは、最初の1本が見えたところで、投稿のスイッチをオフに戻しました。

次の作品も、画像と文章を見て「これを出す」と決めてから進めます。AIに任せることと、公開する作品を自分で決めることは、両立できます。

Xの接続だけを先に進めた記録もあります。SNSによって、許可を出す画面は違いました。

https://note.com/murabito_s/n/n8d84ca758610

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

🌵 AIで手が止まったら、次に試す1つが見つかる。
📝 コピペで使える、AIへの頼み方
🖥️ 画面を見ながら追える、操作の手順
💰 料金と使いどころがわかる、比較と実例