AIエージェントメッセンジャー

上級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、34個のノードを含みます。主にSet, Code, Switch, Webhook, Functionなどのノードを使用。 GPT-4を使ったFacebook Messengerボット:テキスト、画像、音声をサポート

前提条件
  • HTTP Webhookエンドポイント(n8nが自動生成)
  • ターゲットAPIの認証情報が必要な場合あり
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "bBJOoh6tRVSg50K5",
  "meta": {
    "instanceId": "4373d1c98d837a02928f24e76c24879728ab83407616320d7d7808e429ea0a4e",
    "templateCredsSetupCompleted": true
  },
  "name": "Agent IA Messenger",
  "tags": [],
  "nodes": [
    {
      "id": "2ccd1577-6b09-4dba-a008-382833689fab",
      "name": "OpenAI チャットモデル",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2016,
        704
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "jl5FyiQarFxAvt8F",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d588ba3b-d9db-481a-bfdb-dea8a0d0f275",
      "name": "シンプルメモリ",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        2192,
        704
      ],
      "parameters": {
        "sessionKey": "={{ $('Webhook1').item.json.body.entry[0].messaging[0].sender.id }}",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "e97f4fe7-b9fd-465b-8229-9a117ce46b81",
      "name": "計算機",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        2352,
        704
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6a045e89-c2c1-4bef-b8bd-35eb6d524ee1",
      "name": "ウィキペディア",
      "type": "@n8n/n8n-nodes-langchain.toolWikipedia",
      "position": [
        2512,
        704
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d7cb9060-af1b-4006-814f-d13d00406bd6",
      "name": "Download Audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        448
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "facebookGraphApi"
      },
      "credentials": {
        "facebookGraphApi": {
          "id": "WIGwSMnkKuDXE3cY",
          "name": "Facebook Graph account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "43dc357f-2e94-4ca4-87dd-bc26c5ca516c",
      "name": "Audio Transcriber",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1248,
        448
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "id": "jl5FyiQarFxAvt8F",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "e891d603-5258-47b5-a4de-834a21145aef",
      "name": "Identify and ReRoute Message Types",
      "type": "n8n-nodes-base.switch",
      "position": [
        368,
        432
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "=Image Message",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "b12ff3af-0aae-4874-9c16-37f0337bf214",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.type === \"image\" }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Audio Message",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "584171c6-5842-41a4-ae70-b901457d1b43",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.type === \"audio\" }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Text Message",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c1d29099-8a6f-4944-ad5c-a60926aabbd1",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json.type === \"text\" }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "18493f65-52e0-4438-afba-daaac6f8fabe",
      "name": "Download Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        112
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "facebookGraphApi"
      },
      "credentials": {
        "facebookGraphApi": {
          "id": "WIGwSMnkKuDXE3cY",
          "name": "Facebook Graph account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "908a01ea-04ba-4711-8aeb-0326abb7b512",
      "name": "Identify Message Type",
      "type": "n8n-nodes-base.function",
      "position": [
        0,
        448
      ],
      "parameters": {
        "functionCode": "// ─── 0. Récupère la racine utile (body si présent) ─────────────────────\nconst root = $json.body ?? $json;   // ← marche avec ou sans \"body\"\n\n// ─── 1. Cherche l'objet \"message\", quel que soit le chemin ─────────────\nlet msg;\n\nif (root.message) {\n  // cas où un Set/Split l’a déjà extrait\n  msg = root.message;\n} else if (root.entry?.[0]?.messaging?.[0]?.message) {\n  // structure brute Facebook\n  msg = root.entry[0].messaging[0].message;\n} else {\n  throw new Error('Impossible de localiser le champ \"message\"');\n}\n\n// ─── 2. Prépare la sortie standardisée ─────────────────────────────────\nlet result;\n\nif (msg.attachments?.[0]) {\n  const att = msg.attachments[0];\n  if (att.type === 'image') {\n    result = { type: 'image', url: att.payload?.url };\n  } else if (att.type === 'audio') {\n    result = { type: 'audio', url: att.payload?.url };\n  } else {\n    result = { type: att.type || 'attachment', url: att.payload?.url };\n  }\n} else if (msg.text) {\n  result = { type: 'text', text: msg.text };\n} else {\n  result = { type: 'unknown' };\n}\n\n// ─── 3. Retourne l'objet pour les nœuds suivants ───────────────────────\nreturn [ result ];"
      },
      "typeVersion": 1
    },
    {
      "id": "4c783fcc-48ab-4381-ba12-d730d7837c30",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        1248,
        784
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5a5d4ec5-61d5-471c-bab7-135528008e6c",
              "name": "user_prompt",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "752e4920-7677-4e78-bef9-1ee55478b33a",
      "name": "Edit Fields2",
      "type": "n8n-nodes-base.set",
      "position": [
        1632,
        448
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5a5d4ec5-61d5-471c-bab7-135528008e6c",
              "name": "user_prompt",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "391e29fb-4b60-407e-a1f1-db0740fddf14",
      "name": "Edit Fields3",
      "type": "n8n-nodes-base.set",
      "position": [
        1632,
        112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5a5d4ec5-61d5-471c-bab7-135528008e6c",
              "name": "user_prompt",
              "type": "string",
              "value": "={{ $json.content }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "66394ce4-5a3d-45a8-8929-a5fe5d8399be",
      "name": "コード1",
      "type": "n8n-nodes-base.code",
      "position": [
        3152,
        448
      ],
      "parameters": {
        "jsCode": "// -------- Build Messenger Payload ----------\n// 1) Récupère le PSID directement depuis ton webhook “Webhook1”\nconst psid = ($node[\"Webhook1\"].json.body?.entry ?? $node[\"Webhook1\"].json.entry)[0]\n               .messaging[0].sender.id;   // ID du client\n\nconst reply = $json.output || 'Réponse vide';   // texte déjà nettoyé par le 1er Code\n\nreturn [{\n  json: {\n    messaging_type: 'RESPONSE',\n    recipient: { id: String(psid) },      //  ← chaîne obligatoire\n    message:   { text: reply }\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "5536e5a6-5b84-4a37-bdd4-a4fa01dc4e2c",
      "name": "コード",
      "type": "n8n-nodes-base.code",
      "position": [
        2784,
        448
      ],
      "parameters": {
        "jsCode": "/**\n * n8n – Code node\n * Mode : Run Once for All Items\n * Objectif :\n *   1. Repère **gras** ou *gras*\n *   2. Convertit le contenu en lettres \"Unicode Bold\"\n *   3. Supprime tous les astérisques\n */\n\nconst FIELD = 'output'; // ← mets ici le nom exact du champ texte\n\n// --- petite fonction de conversion ASCII → Unicode gras\nfunction toUnicodeBold(str) {\n  const upperOffset = 0x1D400 - 0x41;      // A → 𝐀\n  const lowerOffset = 0x1D41A - 0x61;      // a → 𝐚\n  const digitOffset = 0x1D7CE - 0x30;      // 0 → 𝟎\n\n  return str.split('').map(ch => {\n    const code = ch.charCodeAt(0);\n    if (code >= 0x41 && code <= 0x5A) return String.fromCodePoint(code + upperOffset); // A-Z\n    if (code >= 0x61 && code <= 0x7A) return String.fromCodePoint(code + lowerOffset); // a-z\n    if (code >= 0x30 && code <= 0x39) return String.fromCodePoint(code + digitOffset); // 0-9\n    return ch; // ponctuation, espaces…\n  }).join('');\n}\n\nfor (const item of $input.all()) {\n  if (item.json[FIELD]) {\n    item.json[FIELD] = item.json[FIELD]\n      // ► 1. **…**  ou *…*  → conversion + suppression d’astérisques\n      .replace(/\\*{1,2}([^*]+?)\\*{1,2}/gs, (_, txt) => toUnicodeBold(txt))\n\n      // ► 2. S’il reste des astérisques isolés → on les retire\n      .replace(/\\*/g, '');\n  }\n}\n\nreturn $input.all();"
      },
      "typeVersion": 2
    },
    {
      "id": "8e37259a-0d7f-40e6-87a5-d7eafe6c4913",
      "name": "Send Response",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3520,
        448
      ],
      "parameters": {
        "url": "https://graph.facebook.com/v17.0/me/messages?access_token=",
        "body": "={{ JSON.stringify($json, null, 0) }}",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "raw",
        "sendHeaders": true,
        "rawContentType": "application/json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "85bc2e7b-83d3-4481-948b-4e0444d52246",
      "name": "AI エージェント Messenger",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2160,
        448
      ],
      "parameters": {
        "text": "={{ $json.user_prompt }}",
        "options": {
          "systemMessage": "Tu es un assistant spécialisé.\n- Si la demande nécessite uniquement des calculs mathématiques, financiers ou statistiques : utilise toujours l’outil Calculatrice.\n- Si la demande nécessite une recherche d’information externe (histoire, biographie, faits généraux) : utilise l’outil Wikipédia.\n- Ne mélange pas les deux outils sauf si c’est absolument nécessaire.\n- Lorsque la question contient un montant, un pourcentage, un taux ou une durée : c’est un calcul → utilise uniquement l’outil Calculatrice."
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "a09429dd-8e6c-4c85-94c3-c73c8385a6c0",
      "name": "Analyze image",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1248,
        112
      ],
      "parameters": {
        "text": "Describe this image.",
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "resource": "image",
        "inputType": "base64",
        "operation": "analyze"
      },
      "credentials": {
        "openAiApi": {
          "id": "jl5FyiQarFxAvt8F",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "b838533f-1f70-45a1-9785-ea28aacc0822",
      "name": "Webhook トリガー1",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -368,
        448
      ],
      "webhookId": "50f8576e-a334-40ae-af63-0cc4fecff1d0",
      "parameters": {
        "path": "Messenger",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "bd67326b-ef8e-48fc-a9da-4c917ad88594",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        256
      ],
      "parameters": {
        "width": 336,
        "height": 384,
        "content": "## Webhook1 (Messenger Entry)\n\nReceives Messenger events and starts the processing. Reply “Immediately” to acknowledge fast, then let the flow continue."
      },
      "typeVersion": 1
    },
    {
      "id": "5fd271ca-be10-4830-bc24-7994b9cb74a8",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        256
      ],
      "parameters": {
        "width": 336,
        "height": 384,
        "content": "## Identify Message Type (Code)\n\nConverts the Messenger payload into a simple shape: text, image, audio, or unknown. This makes the rest of the flow predictable."
      },
      "typeVersion": 1
    },
    {
      "id": "a44151ae-4d95-47bb-8f9d-2ba746cfd1dd",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        256,
        256
      ],
      "parameters": {
        "width": 368,
        "height": 384,
        "content": "## Identify and ReRoute Message Types  (Router / Rules)\n\nSends each message down the right lane (image/audio/text). Add a default route for unsupported formats."
      },
      "typeVersion": 1
    },
    {
      "id": "0b132eb3-09ff-4fcf-a11b-4655128298a9",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        -48
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 320,
        "content": "## Download Image\n\nDownloads the image from the provided URL. If Facebook blocks it, add the Page Token as query or Bearer header."
      },
      "typeVersion": 1
    },
    {
      "id": "3ed9947b-4940-4d4e-a51e-826d4cdb3041",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        -48
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 320,
        "content": "## Analyze image  (Vision)\n\nUses a vision model to describe the image and produce useful text. "
      },
      "typeVersion": 1
    },
    {
      "id": "8521e4c9-92ac-4e9f-beb0-150a84301a72",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        -48
      ],
      "parameters": {
        "color": 5,
        "width": 368,
        "height": 320,
        "content": "## Edit Fields3  (image → prompt)\n\nCopies the image description into user_prompt. Make sure other fields stay available if you need them."
      },
      "typeVersion": 1
    },
    {
      "id": "ef459985-d05b-41ed-b540-166ddfd8320c",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        304
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 304,
        "content": "## Download Audio\n\nDownloads the audio file from the URL. As with images, add the Page Token if needed."
      },
      "typeVersion": 1
    },
    {
      "id": "b9482f90-0981-46b9-b07f-a95569ee6399",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        304
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 304,
        "content": "## Audio Transcriber\n\nTranscribes the voice note into clean text. Let auto language detection work when possible."
      },
      "typeVersion": 1
    },
    {
      "id": "59be867f-e5f4-4252-a251-7f20c0654003",
      "name": "付箋9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        304
      ],
      "parameters": {
        "color": 5,
        "width": 368,
        "height": 304,
        "content": "## Edit Fields2  (audio → prompt)\n\nPuts the audio transcript into user_prompt. You can also trim extra whitespace here."
      },
      "typeVersion": 1
    },
    {
      "id": "26565c46-d336-4a12-a83d-fd06461edacb",
      "name": "付箋10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        640
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "height": 304,
        "content": "## Edit Fields1  (text → prompt)\n\nMaps the user’s text into user_prompt. Optional: truncate overly long messages."
      },
      "typeVersion": 1
    },
    {
      "id": "338acd3a-73e1-479f-85a6-809daa4bca01",
      "name": "付箋11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2672,
        240
      ],
      "parameters": {
        "width": 336,
        "height": 368,
        "content": "## Code  (post-process bold)\n\nConverts ** … **/ * … * to Unicode bold in output and strips leftover asterisks. Use bold only for headings or key points to keep the message readable."
      },
      "typeVersion": 1
    },
    {
      "id": "4aa7b210-b885-407a-93cc-3c8ec9c1a150",
      "name": "付箋12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3040,
        240
      ],
      "parameters": {
        "width": 336,
        "height": 368,
        "content": "## Code1  (build Messenger payload)\n\nBuilds the Graph object with recipient.id = <PSID> and message.text = output (messaging_type: \"RESPONSE\"). Ensure the ID is a string and gracefully truncate if the text is too long."
      },
      "typeVersion": 1
    },
    {
      "id": "4d639833-bb9d-447a-9331-f44d20446864",
      "name": "付箋13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3408,
        240
      ],
      "parameters": {
        "color": 4,
        "width": 352,
        "height": 368,
        "content": "## Send Response  (HTTP → Graph API)\n\nPosts the JSON to /v17.0/me/messages?access_token=PAGE_TOKEN with Content-Type: application/json. On errors (401/403/429), check token/permissions and inspect the node logs."
      },
      "typeVersion": 1
    },
    {
      "id": "5a7944b5-13d4-4fc5-9c68-2430516912dd",
      "name": "付箋14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1952,
        240
      ],
      "parameters": {
        "color": 3,
        "width": 688,
        "height": 624,
        "content": "## AI Agent + Chat Model + Memory + Tools\n\nThe agent reads user_prompt, applies your System Message, queries the chat model (pick the model and tune temperature / max tokens), and optionally calls Calculator/Wikipedia to produce output. Enable per-user memory (PSID) with sessionId = sender.id to keep context across turns."
      },
      "typeVersion": 1
    },
    {
      "id": "38a8016e-1df7-4337-a8a0-5db52b8e144d",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -976,
        -96
      ],
      "parameters": {
        "width": 416,
        "height": 1008,
        "content": "# Automate Messenger in 6 Steps ✨\n\nBuild your first Messenger AI agent !\nIt reads text, photos, and voice notes, then answers like a pro.\n\n### 1) Connect credentials\nAdd your OpenAI API key and Facebook Page Access Token in n8n Credentials (keep them secret).\n\n### 2) Plug the webhook\nCopy the Webhook1 Test URL (POST /messenger) → paste it in Meta › Messenger › Webhooks, verify, and subscribe to messages. Send a test message to your Page.\n\n### 3) Personalize the agent\nIn the AI Agent, write a clear System Message (tone & guardrails), pick the chat model, and tune temperature / max tokens.\n\n### 4) Keep context & add tools\nEnable per-user memory using the PSID so chats persist, and switch on tools like Calculator or Wikipedia if needed.\n\n### 5) Style the replies\nUse asterisks for bold (the post-processor formats it). Keep answers crisp; if media won’t download, ensure the request includes your Page token.\n\n### 6) Ship it\nTest text, photo, and voice note; switch to the Production URL and watch logs/permissions.\n\n## Need help customizing?\n\n👉 [Get in touch](https://www.linkedin.com/in/st%C3%A9phane-bordas-3439b4179/)\n### Launch your first AI agent on Messenger today ! 🚀"
      },
      "typeVersion": 1
    },
    {
      "id": "778d262f-5dfe-4986-9eb0-a94a46a3f771",
      "name": "付箋15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3136,
        -192
      ],
      "parameters": {
        "width": 608,
        "height": 384,
        "content": "## [Video Tutorial](https://youtu.be/yHNPBDNgk88)  \n@[youtube](yHNPBDNgk88)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5b201e08-f698-418e-ad26-df60f327cd8a",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "8e37259a-0d7f-40e6-87a5-d7eafe6c4913",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook1": {
      "main": [
        [
          {
            "node": "908a01ea-04ba-4711-8aeb-0326abb7b512",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wikipedia": {
      "ai_tool": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "4c783fcc-48ab-4381-ba12-d730d7837c30": {
      "main": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "752e4920-7677-4e78-bef9-1ee55478b33a": {
      "main": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "391e29fb-4b60-407e-a1f1-db0740fddf14": {
      "main": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a09429dd-8e6c-4c85-94c3-c73c8385a6c0": {
      "main": [
        [
          {
            "node": "391e29fb-4b60-407e-a1f1-db0740fddf14",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "d7cb9060-af1b-4006-814f-d13d00406bd6": {
      "main": [
        [
          {
            "node": "43dc357f-2e94-4ca4-87dd-bc26c5ca516c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "18493f65-52e0-4438-afba-daaac6f8fabe": {
      "main": [
        [
          {
            "node": "a09429dd-8e6c-4c85-94c3-c73c8385a6c0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "43dc357f-2e94-4ca4-87dd-bc26c5ca516c": {
      "main": [
        [
          {
            "node": "752e4920-7677-4e78-bef9-1ee55478b33a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent Messenger",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent Messenger": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "908a01ea-04ba-4711-8aeb-0326abb7b512": {
      "main": [
        [
          {
            "node": "e891d603-5258-47b5-a4de-834a21145aef",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e891d603-5258-47b5-a4de-834a21145aef": {
      "main": [
        [
          {
            "node": "18493f65-52e0-4438-afba-daaac6f8fabe",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "d7cb9060-af1b-4006-814f-d13d00406bd6",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "4c783fcc-48ab-4381-ba12-d730d7837c30",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - コンテンツ作成, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数34
カテゴリー2
ノードタイプ13
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34