このドキュメントでは、公式の Instagram Graph API を使用して、プログラム(PythonやcURLなど)から自動的に写真を投稿するための正規の手順と要件を解説します。
[!NOTE]
この方法は公式APIを使用するため、アカウント凍結のリスクは低いですが、**「Instagramプロアカウント」と「Facebookページ」**が必須となります。個人のプライベートアカウントでは実行できません。
1. 必須要件 (Prerequisites)
APIを使用するには、以下の条件をすべて満たす必要があります。
- Instagramアカウントの種類: プロアカウント(ビジネス または クリエイター)であること。
- Facebookページ: InstagramアカウントがFacebookページとリンクされていること。
- Meta Developer App: Facebook Developersでアプリを作成し、適切な権限を持っていること。
- 画像の公開URL: APIに渡す写真は、インターネット上の公開サーバー(AWS S3, Google Driveの公開リンクなど)にある必要があります。ローカルファイルパス(C:...)は指定できません。
2. セットアップ手順
Step 1: Facebook Developersでの準備
- Meta for Developers にアクセスし、アプリを作成します(タイプ: "Business" など)。
- 「製品」から Instagram Graph API を追加します。
-
グラフAPIエクスプローラなどを使い、アクセストークンを取得します。
-
必要な権限 (Permissions):
instagram_basic-
instagram_content_publish(投稿に必須) pages_show_listpages_read_engagement
-
必要な権限 (Permissions):
Step 2: Instagram Business Account ID の取得
APIリクエストには、あなたのアカウントの IG Business ID が必要です。
GET /me/accounts?fields=instagram_business_account
レスポンス内の instagram_business_account.id をメモしてください。
3. 投稿実行フロー (2段階プロセス)
Instagram APIでの投稿は、「① メディアコンテナの作成」 → 「② コンテナの公開」 という2ステップで行います。
Step 1: メディアコンテナの作成 (Create Container)
写真をアップロード状態にする(コンテナを作る)ステップです。
-
Endpoint:
POST /{ig-user-id}/media -
Parameters:
-
image_url: 写真の公開URL (必須, JPEGのみ) -
caption: 投稿のキャプション(ハッシュタグ含む)
-
cURL例:
curl -X POST "https://graph.facebook.com/v21.0/{ig-user-id}/media" \
-d "image_url=https://www.example.com/images/kobe.jpg" \
-d "caption=APIからのテスト投稿 #instagramapi" \
-d "access_token={access-token}"
成功レスポンス:
{
"id": "1788945556..." // コンテナID
}
Step 2: コンテナの公開 (Publish Container)
作成したコンテナIDを指定して、実際にフィードに公開します。
-
Endpoint:
POST /{ig-user-id}/media_publish -
Parameters:
-
creation_id: Step 1で取得したコンテナID
-
cURL例:
curl -X POST "https://graph.facebook.com/v21.0/{ig-user-id}/media_publish" \
-d "creation_id={container-id}" \
-d "access_token={access-token}"
成功レスポンス:
{
"id": "17918..." // 投稿のメディアID
}
4. 制限事項と注意点
- 画像フォーマット: JPEGのみサポート(PNG不可)。アスペクト比は 4:5 ~ 1.91:1 の範囲内である必要があります。
-
API制限 (Rate Limit):
- 1日あたり約25投稿(Basic)〜 100投稿まで(以前の制限。現在は変動あり)。
- 短時間に大量のリクエストを送るとAPI制限がかかります。
-
カルーセル投稿:
media_type=CAROUSELを指定し、各画像をchildrenとして紐付ける複雑なステップが必要です。 - ローカル画像の扱い: ローカルPCにある画像を投稿したい場合、一度imgurやS3などのクラウドストレージにアップロードしてURL化するか、ngrokなどでローカルホストを公開URLにする必要があります。
5. Antigravityで実行する場合の準備
私がこのAPIを実行するように依頼する場合、以下の情報を提供してください。
IG Business ID- 有効な
Access Token - 投稿したい画像の
Web公開URL
※ アクセストークンなどの機密情報は、チャット欄に直接貼らず、環境変数や別ファイルで渡すことを推奨します。