n8nでInstagramに投稿するワークフロー構築

30-45分⭐⭐☆☆☆

このモジュールで学ぶこと

  • n8nでワークフローを作成する方法
  • HTTP Requestノードを使ったAPI呼び出し
  • Instagram Graph APIを使った投稿の仕組み
  • メディアコンテナ作成と公開の2ステップ投稿

学習目標

このモジュールを終えると、以下のことができるようになります:

  • n8nで新しいワークフローを作成できる
  • HTTP Requestノードを設定してAPIを呼び出せる
  • Instagram Graph APIを使って画像を投稿できる
  • ワークフローを保存して再利用できる

目次


事前準備

必要なもの

  • n8nが起動している状態(Module 01で構築済み)
  • Instagramアクセストークン(Module 02で取得済み)
  • 公開サーバー上の画像URL(テスト用フリー画像でも可)

推奨環境

  • PC(Windows/Mac/Linux)
  • ブラウザ(Chrome推奨)

事前確認

  • Dockerデスクトップでn8nコンテナが起動している
  • Module 02で取得したアクセストークンを手元に用意している

Instagram投稿の仕組み

n8nにはInstagram専用ノードがないため、Instagram Graph APIを使って投稿します。

2ステップ投稿プロセス

Instagram Graph APIでは、投稿は以下の2ステップで行います:

ステップ内容APIエンドポイント
Step 1メディアコンテナ作成/{user-id}/media
Step 2メディア公開/{user-id}/media_publish

今回作成するワークフロー

[Manual Trigger] → [HTTP Request] → [Edit Fields] → [HTTP Request] → [HTTP Request]
  (実行開始)        (User ID取得)     (投稿設定)      (コンテナ作成)    (公開)

セクション1: n8nでワークフローを作成

n8nを開く

  1. Dockerデスクトップを起動
  2. n8nコンテナが「Running」になっていることを確認
  3. ブラウザで http://localhost:5678 にアクセス

ダッシュボード画面

n8nダッシュボード

n8nのホーム画面が表示されます。

新しいワークフローを作成

  1. 「Start from scratch」 をクリック

トリガーの選択

トリガー選択パネル

ワークフロー編集画面が開き、トリガー選択パネルが表示されます。

  1. 「Trigger manually」 をクリック

Manual Triggerが追加される

Manual Trigger追加後

「When clicking 'Execute workflow'」というノードが追加されます。これで手動でワークフローを実行できるようになりました。

チェックポイント

  • n8nダッシュボードが表示された
  • 新しいワークフローを作成した
  • Manual Triggerノードが追加された

セクション2: Instagram User IDの取得

投稿するには、自分のInstagram User IDが必要です。最初のHTTP Requestノードでこれを取得します。

HTTP Requestノードを追加

  1. Manual Triggerノードの右側にある 「+」ボタン をクリック

ノード検索パネル

  1. 検索窓に 「HTTP」 と入力
  2. 「HTTP Request」 をクリック

HTTP Request設定画面

HTTP Request設定画面

HTTP Requestノードの設定パネルが開きます。

URLを設定

HTTP Request URL設定

以下の設定を行います:

項目設定値
MethodGET(デフォルトのまま)
URLhttps://graph.instagram.com/v20.0/me?fields=user_id,username

URLフィールドに以下をコピーして貼り付けてください:

https://graph.instagram.com/v20.0/me?fields=user_id,username

Query Parametersを設定

Query Parameters ON

  1. 「Send Query Parameters」 のトグルを ON にする
  2. 以下を入力:
NameValue
access_tokenModule 02で取得したアクセストークン

実行してUser IDを取得

  1. 右上の 「Execute step」(オレンジ色のボタン)をクリック

User ID取得結果

成功すると、OUTPUTに以下のような結果が表示されます:

フィールド
user_idあなたのInstagram User ID(数字)
usernameあなたのInstagramユーザー名

重要: このuser_idが投稿に必要なIDです。

キャンバスに戻る

  1. 「Back to canvas」 をクリック

キャンバス表示

ワークフローキャンバスに戻ります。ノードが緑色のチェックマークで表示されていれば成功です。

チェックポイント

  • HTTP Requestノードを追加した
  • URLを正しく設定した
  • アクセストークンをQuery Parametersに設定した
  • Execute stepで実行してuser_idを取得できた

セクション3: 投稿内容の設定

次に、投稿に必要な情報(画像URL、キャプション、アクセストークン)を設定するノードを追加します。

Edit Fieldsノードを追加

  1. HTTP Requestノードの右側にある 「+」ボタン をクリック

Edit Fields選択

  1. 「Edit Fields (Set)」 をクリック

Edit Fields設定画面

Edit Fields設定画面

Edit Fieldsノードの設定パネルが開きます。左側に前のノードからのデータ(user_id, username)が表示されています。

Include Other Input Fieldsを有効にする

Include Other Input ON

  1. 画面下部の 「Include Other Input Fields」 のトグルを ON にする

これで前のノードからのuser_idが引き継がれます。

フィールドを追加

「Add Field」 をクリックして、以下の3つのフィールドを追加します:

フィールド1: image_url

項目
Nameimage_url
Value公開サーバー上の画像URL

テスト用に以下のフリー画像URLを使用できます:

https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1080

フィールド2: caption

項目
Namecaption
Value投稿のキャプション(例: n8n test post)

フィールド3: access_token

項目
Nameaccess_token
ValueModule 02で取得したアクセストークン

設定完了後の画面

Edit Fields完了

3つのフィールドが追加され、前のノードからのuser_idも引き継がれています。

実行して確認

  1. 「Execute step」 をクリック
  2. OUTPUTに4つのフィールド(user_id, image_url, caption, access_token)が表示されることを確認
  3. 「Back to canvas」 をクリック

ワークフロー実行成功

すべてのノードが緑色のチェックマークで表示されます。

チェックポイント

  • Edit Fieldsノードを追加した
  • Include Other Input FieldsをONにした
  • image_url、caption、access_tokenの3つのフィールドを追加した
  • Execute stepで実行して4つのフィールドが確認できた

セクション4: メディアコンテナの作成

Instagram Graph APIの最初のステップとして、メディアコンテナを作成します。

HTTP Requestノードを追加

  1. Edit Fieldsノードの右側にある 「+」ボタン をクリック
  2. 「HTTP Request」 を検索して追加

メディアコンテナ作成の設定

メディアコンテナ作成設定

以下の設定を行います:

Method

項目設定値
MethodPOST(ドロップダウンから選択)

URL

https://graph.instagram.com/v20.0/{{ $json.user_id }}/media

ポイント: {{ $json.user_id }} は前のノードからのデータを参照する式です。

Query Parameters

「Send Query Parameters」 をONにして、以下の3つを追加:

NameValue
image_url{{ $json.image_url }}
caption{{ $json.caption }}
access_token{{ $json.access_token }}

実行してコンテナIDを取得

  1. 「Execute step」 をクリック

コンテナID取得結果

成功すると、OUTPUTに id(コンテナID)が表示されます。

{
  "id": "17846059578619138"
}

重要: このコンテナIDを次のステップで使用します。

  1. 「Back to canvas」 をクリック

コンテナ作成後のキャンバス

チェックポイント

  • HTTP Requestノードを追加した
  • MethodをPOSTに変更した
  • URLにuser_idを含む式を設定した
  • 3つのQuery Parametersを設定した
  • Execute stepでコンテナIDを取得できた

セクション5: メディアの公開

最後のステップとして、作成したメディアコンテナを公開します。

HTTP Requestノードを追加

  1. 前のHTTP Requestノード(コンテナ作成)の右側にある 「+」ボタン をクリック
  2. 「HTTP Request」 を検索して追加

メディア公開の設定

メディア公開設定

以下の設定を行います:

Method

項目設定値
MethodPOST

URL

https://graph.instagram.com/v20.0/{{ $('Edit Fields').item.json.user_id }}/media_publish

ポイント: $('Edit Fields') は「Edit Fields」という名前のノードを参照する式です。直前のノードではなく、Edit Fieldsノードからuser_idを取得します。

Query Parameters

「Send Query Parameters」 をONにして、以下の2つを追加:

NameValue
creation_id{{ $json.id }}
access_token{{ $('Edit Fields').item.json.access_token }}

ポイント:

  • creation_id は直前のノード(コンテナ作成)から取得したコンテナID
  • access_token はEdit Fieldsノードから参照

実行して投稿を公開

  1. 「Execute step」 をクリック

投稿ID取得結果

成功すると、OUTPUTに投稿ID(id)が表示されます。

{
  "id": "18079484714149424"
}

これでInstagramへの投稿が完了しました。

チェックポイント

  • HTTP Requestノードを追加した
  • MethodをPOSTに変更した
  • URLにmedia_publishエンドポイントを設定した
  • creation_idとaccess_tokenを設定した
  • Execute stepで投稿IDを取得できた

セクション6: 投稿の確認とワークフローの保存

Instagramで投稿を確認

Instagramアプリまたはウェブサイトを開いて、投稿が公開されていることを確認します。

Instagramプロフィール

プロフィール画面に新しい投稿が表示されます。

Instagram投稿詳細

投稿をタップすると、設定したキャプションと画像が表示されます。

ワークフローを保存

  1. 画面左上の 「My workflow」 をクリック
  2. ワークフロー名を 「Instagram Post」 などに変更
  3. 「Save」 ボタンをクリック(または Ctrl+S / Cmd+S)

完成したワークフロー

完成したワークフロー

完成したワークフローは以下の5つのノードで構成されています:

ノード役割
When clicking 'Execute workflow'手動実行トリガー
HTTP RequestInstagram User IDの取得
Edit Fields投稿内容の設定
HTTP Request1メディアコンテナの作成
HTTP Request2メディアの公開

チェックポイント

  • Instagramで投稿が表示された
  • ワークフローに名前を付けた
  • ワークフローを保存した

トラブルシューティング

Invalid OAuth access token エラー

症状: 「Invalid OAuth access token - Cannot parse access token」というエラーが表示される

原因: アクセストークンが正しくない、または期限切れ

解決方法:

  1. Module 02の手順でアクセストークンを再生成
  2. 新しいトークンをEdit Fieldsノードに設定

画像がアップロードできない

症状: メディアコンテナ作成でエラーが発生する

原因: 画像URLが以下の要件を満たしていない可能性

要件:

  • 公開サーバー上にある(ローカルファイル不可)
  • JPEG形式
  • HTTPSでアクセス可能

解決方法:

  • テスト用にUnsplashなどのフリー画像URLを使用
  • 画像をImgurやGoogle Driveにアップロードして公開URLを取得

graph.facebook.com と graph.instagram.com の違い

症状: URLをどちらにすべきか迷う

解決方法:

  • トークンが IG で始まる場合 → graph.instagram.com を使用
  • トークンが EAA で始まる場合 → graph.facebook.com を使用

本モジュールではInstagram Login APIトークン(IGで始まる)を使用しているため、graph.instagram.comを使用しています。


まとめ

このモジュールで学んだこと

  • n8nでワークフローを新規作成する方法
  • HTTP Requestノードを使ったAPI呼び出し
  • Instagram Graph APIの2ステップ投稿プロセス
    • Step 1: メディアコンテナ作成
    • Step 2: メディア公開
  • n8nの式 {{ $json.xxx }} を使ったデータ参照

次のステップ

このワークフローを拡張して、以下のような自動化が可能です:

  • スケジュール投稿(Scheduleトリガーを使用)
  • AIによるキャプション自動生成
  • Google Sheetsから投稿内容を読み込み
  • 複数画像のカルーセル投稿

参考資料


よくある質問

Q: 画像はどこにアップロードすればいいですか? A: Instagram Graph APIでは、公開サーバー上にある画像URLが必要です。以下のサービスが使用できます:

  • Imgur(無料)
  • Google Drive(共有リンクを公開設定に)
  • AWS S3やCloudflare R2などのオブジェクトストレージ
  • 自分のWebサーバー

Q: 動画は投稿できますか? A: はい、可能です。ただし、動画の場合はコンテナ作成後にステータスがFINISHEDになるまで待機する必要があります。Waitノードを追加して処理を待つワークフローに修正が必要です。

Q: ハッシュタグはどう入れますか? A: captionフィールドに直接ハッシュタグを含めることができます。ただし、#はURLエンコードが必要な場合があるため、%23に置き換えるか、n8nの式で処理することを推奨します。

Q: 1日に何回投稿できますか? A: Instagram Graph APIには投稿制限があります。24時間で25〜50投稿が目安です。過度な投稿はアカウント制限の原因になる可能性があります。

Q: アクセストークンの有効期限はありますか? A: Instagram Login APIで取得したトークンは約60日間有効です。期限が近づいたら再生成するか、長期トークンに交換することを推奨します。

運営: ゆめスタ