Automatisation des réactions aux publications de canaux Telegram avec des robots

Avancé

Ceci est unSocial Media, AI Summarizationworkflow d'automatisation du domainecontenant 18 nœuds.Utilise principalement des nœuds comme Code, Wait, Limit, Telegram, HttpRequest. Automatiser les réactions aux publications de canaux Telegram avec des robots de rotation et GPT-5-mini

Prérequis
  • Token Bot Telegram
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "RsybQdZr1cZ42ZUS",
  "meta": {
    "instanceId": "cefd6d3f9b3c9061f776a00a00144ec1f1ee1977ad3cb7e49aee2e6213fb1e99"
  },
  "name": "Automate reactions for Telegram Channel Posts using bots",
  "tags": [],
  "nodes": [
    {
      "id": "34abb54f-61b7-49b9-b310-e344412e7bfa",
      "name": "Note adhésive - Telegram",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -992,
        256
      ],
      "parameters": {
        "color": 4,
        "width": 284,
        "height": 708,
        "content": "## 📱 Telegram Trigger\n\n**Purpose:** Entry point for the workflow\n\n**What it does:**\n- Listens for incoming Telegram messages\n- Captures user requests like:\n  - \"Give me 5 fire reactions\"\n  - \"https://t.me/channel/123 needs 10 reactions\"\n\n**Outputs:** Message object with text, chat ID, and user info"
      },
      "typeVersion": 1
    },
    {
      "id": "d837ab73-8310-4a77-a223-a1d6e5026f55",
      "name": "Note adhésive - IA",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -688,
        256
      ],
      "parameters": {
        "color": 5,
        "width": 300,
        "height": 704,
        "content": "## 🤖 AI Analysis\n\n**Purpose:** Intelligently parse user requests\n\n**What it does:**\n- Analyzes the user's message\n- Extracts:\n  - Number of reactions requested\n  - Specific emoji types (fire, heart, thumbs up, etc.)\n  - Handles natural language (\"5 fire\" → [\"🔥\",\"🔥\",\"🔥\",\"🔥\",\"🔥\"])\n\n**AI Model:** GPT-5-MINI\n\n**Output:** JSON array of emojis based on request"
      },
      "typeVersion": 1
    },
    {
      "id": "85bedd07-591e-4980-9cee-19b2bb90684b",
      "name": "Note adhésive - Traitement",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        256
      ],
      "parameters": {
        "color": 6,
        "width": 444,
        "height": 712,
        "content": "## 🔧 Data Processing\n\n**Purpose:** Transform AI output into API-ready format\n\n**What it does:**\n1. Extracts message ID from Telegram link\n2. Validates emojis against Telegram's allowed list\n3. Handles duplicates intelligently:\n   - Allows duplicates if ≤3 unique emojis requested\n   - Replaces invalid emojis with random valid ones\n4. Assigns bot tokens (rotates through n number of your bots based on the tokens that you provide)\n5. Creates array of reaction objects\n\n**Output Format:**\n```json\n{\n  \"emoji\": \"🔥\",\n  \"botToken\": \"...\",\n  \"chatId\": \"-1003154563293\",\n  \"messageId\": 123\n}\n```\nNOTE:\nReplace lines 15 and 33 of the code prep node with your own channel ID and Bot tokens"
      },
      "typeVersion": 1
    },
    {
      "id": "1372c0e3-7635-475f-a122-43875c00b931",
      "name": "Note adhésive - Débogage",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        992
      ],
      "parameters": {
        "color": 3,
        "width": 444,
        "height": 360,
        "content": "## 🔍 Debug Logger\n\n**Purpose:** Monitoring and troubleshooting\n\n**What it does:**\n- Logs total items being processed\n- Shows each reaction's details:\n  - Emoji being sent\n  - Target chat/message IDs\n  - Bot token (partially hidden)\n\n**Useful for:** Debugging failed reactions"
      },
      "typeVersion": 1
    },
    {
      "id": "5a9b74b8-4163-4fb0-8897-bf5174414542",
      "name": "Note adhésive - Boucle",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        96,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 260,
        "height": 712,
        "content": "## 🔄 Batch Processor\n\n**Purpose:** Send reactions one at a time\n\n**What it does:**\n- Takes array of reaction objects\n- Loops through each item\n- Sends one reaction per iteration\n- Prevents rate limiting by processing sequentially\n\n**Why needed:** Telegram API requires individual requests per reaction"
      },
      "typeVersion": 1
    },
    {
      "id": "40ead69f-71b1-4d77-8529-33366d97eb79",
      "name": "Note adhésive - HTTP",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        672
      ],
      "parameters": {
        "color": 2,
        "width": 408,
        "height": 552,
        "content": "## 🚀 Send Reaction\n\n**Purpose:** Execute Telegram API call\n\n**What it does:**\n- Calls Telegram's `setMessageReaction` endpoint\n- Sends:\n  - Bot token (for authentication)\n  - Chat ID (target channel)\n  - Message ID (specific post)\n  - Emoji (reaction to add)\n\n**API Endpoint:**\n`https://api.telegram.org/bot{token}/setMessageReaction`\n\n**Result:** Reaction appears on the message"
      },
      "typeVersion": 1
    },
    {
      "id": "d7eca245-b056-4319-b54f-dae533dc2c63",
      "name": "Note adhésive - Limite de débit",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        144
      ],
      "parameters": {
        "width": 408,
        "height": 520,
        "content": "## ⏱️ Rate Limiting\n\n**Purpose:** Prevent API throttling\n\n**What it does:**\n- Limits execution rate\n- Adds wait time between batches\n- Ensures workflow doesn't hit Telegram's rate limits\n\n**Components:**\n1. **Limit Node** - Controls flow rate\n2. **Wait Node** - Adds delay between operations"
      },
      "typeVersion": 1
    },
    {
      "id": "b785f071-8a2a-46a7-88de-67e61b94b1e4",
      "name": "Note adhésive - Achèvement",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        144
      ],
      "parameters": {
        "color": 4,
        "width": 324,
        "height": 528,
        "content": "## ✅ Completion\n\n**Purpose:** User confirmation\n\n**What it does:**\n- Sends \"All done!\" message back to user\n- Confirms all reactions were added\n- Uses original chat ID from trigger\n\n**User Experience:** User gets immediate feedback that their request completed successfully"
      },
      "typeVersion": 1
    },
    {
      "id": "4d93e8bb-273f-4540-9f5c-67acaf4b5164",
      "name": "Note adhésive - Vue d'ensemble",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1552,
        256
      ],
      "parameters": {
        "color": 5,
        "width": 464,
        "height": 864,
        "content": "## 📋 WORKFLOW OVERVIEW\n\n**Telegram Multiple Reactions Army Bot** - Automated Telegram reaction system\n\n**Flow:**\n1. User sends message to bot\n2. AI parses request (emoji type & quantity)\n3. Code processes and validates data\n4. Loop sends reactions one by one\n5. User receives confirmation\n\n**Key Features:**\n- Natural language processing\n- Reiterates through bot token rotation\n- Duplicate emoji handling\n- Rate limit protection\n- Error handling with helpful messages\n\n1st add the bots to the channel that you would want them to react posts to and allow it to manage messages\n\nCredentials needed are:\nTarget Channel ID, Bot tokens, Bot Receiver token\n\n**Example Usage:**\n- \"https://t.me/channel/123 needs 10 hearts and 10 fire reactions\n\n\nPS: To get the ID of a channel in TG\n\nThere are a few ways to find the chat/channel ID of a Telegram channel (public or private). Here are common methods:\n\n✅ Method 1: Use a bot\n1. Add a bot like @userinfobot or @getmy_idbot to your channel (or forward a message from the channel to the bot).\n2. The bot will reply with the channel’s numeric ID (for example: -1001234567890) for private channels.\n3. Make sure forwarding is allowed if the channel blocks forwarding."
      },
      "typeVersion": 1
    },
    {
      "id": "5592fc81-7eb0-49a1-bcad-db982a1c403a",
      "name": "Requête HTTP",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        608,
        1072
      ],
      "parameters": {
        "url": "=https://api.telegram.org/bot{{ $json.botToken }}/setMessageReaction",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"chat_id\": \"{{ $json.chatId }}\",\n  \"message_id\": {{ $json.messageId }},\n  \"reaction\": [\n    {\n      \"type\": \"emoji\",\n      \"emoji\": \"{{ $json.emoji }}\"\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "de82667b-a207-4325-8db6-4b04d44ddaa9",
      "name": "Boucler sur les éléments",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        176,
        672
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "260abb47-d3da-4115-b585-9e66c743f9d3",
      "name": "Limite",
      "type": "n8n-nodes-base.limit",
      "position": [
        528,
        480
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "195cbb5d-2262-487c-b5e1-aa2591bad249",
      "name": "Attente",
      "type": "n8n-nodes-base.wait",
      "position": [
        688,
        480
      ],
      "webhookId": "f333b15c-cfcd-4fdd-b0ca-13862c0617ba",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "1a067cb4-5370-4d0d-b961-35658fa32176",
      "name": "Déclencheur de chat Telegram",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -912,
        672
      ],
      "webhookId": "1f47b780-9aa6-4a3e-8373-ede6782af16d",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "4pXtgu0iWtP3aT8Y",
          "name": "n8ntesterbot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "21d9e004-8b32-428f-ad10-a9486bda6652",
      "name": "Répondre message « terminé »",
      "type": "n8n-nodes-base.telegram",
      "position": [
        992,
        480
      ],
      "webhookId": "b0818ee4-1727-4954-a8bc-7677800f4400",
      "parameters": {
        "text": "All done!",
        "chatId": "={{ $('Telegram Chat Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "4pXtgu0iWtdemo",
          "name": "n8ntestbot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fef6fa46-d0a0-4767-a092-594afd468205",
      "name": "Envoyer un message à un modèle",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -656,
        672
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini-2025-08-07",
          "cachedResultName": "GPT-5-MINI-2025-08-07"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "={{ $json.message.text }}"
            },
            {
              "role": "system",
              "content": "=You are a Telegram Reaction Army AI assistant. Your job is to analyze incoming Telegram messages and extract reaction requests.\n\nThe user will provide:\n1. A Telegram message link (e.g., https://t.me/channelname/123)\n2. The number and type of reactions they want\n\nTASK:\n1. Read the user's message carefully\n2. Extract the NUMBER of reactions requested\n3. Check if the user specified PARTICULAR emojis or types\n4. Generate the exact emojis based on their request\n\nAVAILABLE EMOJIS:\n👍, 👎, ❤️, 🔥, 🥰, 👏, 😁, 🤔, 🤯, 😱, 🤬, 😢, 🎉, 🤩, 🤮, 💩, 🙏, 👌, 🕊, 🤡, 🥱, 🥴, 😍, 🐳, ❤️‍🔥, 🌚, 🌭, 💯, 🤣, ⚡️, 🍌, 🏆, 💔, 🤨, 😐, 🍓, 🍾, 💋, 🖕, 😈, 😴, 😭, 🤓, 👻, 👨‍💻, 👀, 🎃, 🙈, 😇, 😨, 🤝, ✍️, 🤗, 🫡, 🎅, 🎄, ☃️, 💅, 🤪, 🗿, 🆒, 💘, 🙉, 🦄, 😘, 💊, 🙊, 😎, 👾, 🤷‍♂️, 🤷, 🤷‍♀️, 😡\n\nEMOJI ALIASES (understand these as the emojis):\n- \"fire\" = 🔥\n- \"heart\" or \"love\" = ❤️\n- \"thumbs up\" or \"like\" = 👍\n- \"party\" or \"celebrate\" = 🎉\n- \"clap\" or \"applause\" = 👏\n- \"thinking\" = 🤔\n- \"crying\" or \"sad\" = 😢\n- \"100\" or \"hundred\" = 💯\n- \"rocket\" or \"lightning\" = ⚡️\n- \"trophy\" or \"winner\" = 🏆\n- \"pray\" or \"please\" = 🙏\n- \"poop\" or \"shit\" = 💩\n- \"angry\" or \"mad\" = 😡\n- \"cool\" or \"sunglasses\" = 😎\n- \"shocked\" or \"mind blown\" = 🤯\n- \"laugh\" or \"laughing\" = 🤣\n\nSPECIFIC REQUEST HANDLING:\n- If user requests specific emojis (e.g., \"5 fire emojis\", \"give me 3 hearts\"), use ONLY that emoji repeated\n- If user mentions multiple specific emojis (e.g., \"2 fire and 3 hearts\"), give exactly what they asked\n- If user says \"random\" or doesn't specify, give random different emojis\n- If the requested emoji is not in the available list, use the closest match or random emojis\n\nOUTPUT FORMAT (CRITICAL):\nYou MUST respond with ONLY a valid JSON array of emoji strings. Nothing else.\n\nExample inputs and outputs:\n\nInput: \"hey reaction army AI i need 5 reactions for my most recent post\"\nOutput: [\"🔥\", \"❤️\", \"😂\", \"👍\", \"🎉\"]\n\nInput: \"give me 5 fire emojis\"\nOutput: [\"🔥\", \"🔥\", \"🔥\", \"🔥\", \"🔥\"]\n\nInput: \"please give me 3 hearts and 2 fire\"\nOutput: [\"❤️\", \"❤️\", \"❤️\", \"🔥\", \"🔥\"]\n\nInput: \"i need 7 thumbs up reactions\"\nOutput: [\"👍\", \"👍\", \"👍\", \"👍\", \"👍\", \"👍\", \"👍\"]\n\nInput: \"reaction army! give me 4 party emojis and 2 claps\"\nOutput: [\"🎉\", \"🎉\", \"🎉\", \"🎉\", \"👏\", \"👏\"]\n\nInput: \"10 random reactions please\"\nOutput: [\"🔥\", \"❤️\", \"😎\", \"🏆\", \"💯\", \"🤯\", \"👍\", \"🎉\", \"😁\", \"⚡️\"]\n\nInput: \"5 fire and 5 hearts\"\nOutput: [\"🔥\", \"🔥\", \"🔥\", \"🔥\", \"🔥\", \"❤️\", \"❤️\", \"❤️\", \"❤️\", \"❤️\"]\n\nRULES:\n- Always output valid JSON array format\n- Each emoji must be a separate string in the array\n- For specific emoji requests, repeat the SAME emoji the requested number of times\n- For mixed requests, follow the exact quantities specified\n- Randomly select emojis ONLY when user doesn't specify which ones\n- If the number cannot be determined, default to 5 reactions\n- Output ONLY the JSON array, no explanations or additional text\n- When repeating emojis, it's OK to have duplicates if that's what the user requested"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "RuZBazyPEFrpp0nP",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "547b3785-236b-4bf9-9cce-8cbe796ea5ba",
      "name": "Préparation du code",
      "type": "n8n-nodes-base.code",
      "position": [
        -304,
        832
      ],
      "parameters": {
        "jsCode": "// Get the AI response\nconst aiResponse = $input.first().json;\n\n\n// Try to get Telegram input (handle if not executed yet)\nlet telegramInput;\ntry {\n  telegramInput = $('Telegram Chat Trigger').first().json;\n} catch (e) {\n  throw new Error(\"Please trigger the workflow by sending a message to the Telegram bot first!\");\n}\n\nlet emojis = [];\nlet messageId = null;\nlet chatId = \"-1006781233333\"; // Your public channel ID\n\n// Valid Telegram reaction emojis\nconst validEmojis = [\n  \"👍\", \"👎\", \"❤️\", \"🔥\", \"🥰\", \"👏\", \"😁\", \"🤔\", \n  \"🤯\", \"😱\", \"🤬\", \"😢\", \"🎉\", \"🤩\", \"🤮\", \"💩\",\n  \"🙏\", \"👌\", \"🕊\", \"🤡\", \"🥱\", \"🥴\", \"😍\", \"🐳\",\n  \"❤️‍🔥\", \"🌚\", \"🌭\", \"💯\", \"🤣\", \"⚡️\", \"🍌\", \"🏆\",\n  \"💔\", \"🤨\", \"😐\", \"🍓\", \"🍾\", \"💋\", \"🖕\", \"😈\",\n  \"😴\", \"😭\", \"🤓\", \"👻\", \"👨‍💻\", \"👀\", \"🎃\", \"🙈\",\n  \"😇\", \"😨\", \"🤝\", \"✍️\", \"🤗\", \"🫡\", \"🎅\", \"🎄\",\n  \"☃️\", \"💅\", \"🤪\", \"🗿\", \"🆒\", \"💘\", \"🙉\", \"🦄\",\n  \"😘\", \"💊\", \"🙊\", \"😎\", \"👾\", \"🤷‍♂️\", \"🤷\", \"🤷‍♀️\",\n  \"😡\"\n];\n\n// ADD YOUR BOT TOKENS HERE\nconst botTokens = [\n  \"8241237833:AAEbJbNx4-9rTAHJZ_yaShzbqCRwUoD-I3U\",  // replace with your own token\n  \"8339530330:AAG8EYMN1lLKK2yhmxl2fkFlQlKbc-lkuY\",   // replace with your own token\n  \"8333742303:AA1kuLLW1x3WTN2i-9v8xXfjXZ2TSB_i1j\"    // replace with your own token\n];\n\n// Get the original message text from user\nconst userMessage = telegramInput.message?.text || \"\";\n\n// Extract message ID from Telegram link\nconst telegramLinkMatch = userMessage.match(/t\\.me\\/[^\\/]+\\/(\\d+)/i);\nconst messageNumberMatch = userMessage.match(/message\\s+(\\d+)|post\\s+(\\d+)/i);\n\nif (telegramLinkMatch) {\n  messageId = parseInt(telegramLinkMatch[1]);\n} else if (messageNumberMatch) {\n  messageId = parseInt(messageNumberMatch[1] || messageNumberMatch[2]);\n}\n\n// Extract emojis from AI response\nfunction extractArray(str) {\n  if (typeof str !== 'string') return null;\n  const match = str.match(/\\[[\\s\\S]*?\\]/);\n  if (match) {\n    try {\n      return JSON.parse(match[0]);\n    } catch (e) {\n      return null;\n    }\n  }\n  return null;\n}\n\nif (aiResponse.message && aiResponse.message.content) {\n  const content = aiResponse.message.content;\n  emojis = extractArray(content);\n}\nelse if (aiResponse.message && typeof aiResponse.message === 'string') {\n  emojis = extractArray(aiResponse.message);\n}\nelse if (aiResponse.output) {\n  if (typeof aiResponse.output === 'string') {\n    emojis = extractArray(aiResponse.output);\n  } else if (Array.isArray(aiResponse.output)) {\n    emojis = aiResponse.output;\n  }\n}\nelse if (Array.isArray(aiResponse)) {\n  emojis = aiResponse;\n}\nelse if (aiResponse.choices && aiResponse.choices[0]?.message?.content) {\n  const content = aiResponse.choices[0].message.content;\n  emojis = extractArray(content);\n}\n\nif (!Array.isArray(emojis) || emojis.length === 0) {\n  emojis = [\"👍\", \"❤️\", \"🔥\"];\n}\n\n// If no message ID found, throw helpful error\nif (!messageId) {\n  throw new Error(\"❌ Please provide a Telegram message link!\\n\\nExample:\\nhttps://t.me/n8nTesterChannel/62 needs 5 reactions please\");\n}\n\n// Validate emojis\nfunction getRandomValidEmoji(exclude = []) {\n  const available = validEmojis.filter(e => !exclude.includes(e));\n  return available[Math.floor(Math.random() * available.length)];\n}\n\nconst uniqueEmojis = [...new Set(emojis)];\nconst allowDuplicates = uniqueEmojis.length <= 3;\n\nconst requestedCount = emojis.length;\nconst validatedEmojis = [];\nconst usedEmojis = new Set();\n\nfor (let emoji of emojis) {\n  const cleaned = emoji.trim();\n  \n  if (validEmojis.includes(cleaned)) {\n    if (allowDuplicates) {\n      validatedEmojis.push(cleaned);\n    } \n    else if (!usedEmojis.has(cleaned)) {\n      validatedEmojis.push(cleaned);\n      usedEmojis.add(cleaned);\n    } else {\n      let replacement = getRandomValidEmoji([...usedEmojis]);\n      validatedEmojis.push(replacement);\n      usedEmojis.add(replacement);\n    }\n  } else {\n    let replacement = getRandomValidEmoji([...usedEmojis]);\n    validatedEmojis.push(replacement);\n    if (!allowDuplicates) {\n      usedEmojis.add(replacement);\n    }\n  }\n}\n\nwhile (validatedEmojis.length < requestedCount) {\n  let newEmoji = getRandomValidEmoji([...usedEmojis]);\n  validatedEmojis.push(newEmoji);\n  usedEmojis.add(newEmoji);\n}\n\n// Output with message ID and chat ID\nconst output = validatedEmojis.map((emoji, index) => ({\n  emoji: emoji,\n  botToken: botTokens[index % botTokens.length],\n  chatId: chatId,\n  messageId: messageId\n}));\n\nreturn output;"
      },
      "typeVersion": 2
    },
    {
      "id": "cd448fc1-a9da-4119-b9bd-812cd7d6e521",
      "name": "Débogage",
      "type": "n8n-nodes-base.code",
      "position": [
        -96,
        832
      ],
      "parameters": {
        "jsCode": "// Debug - check what we're sending\nconst items = $input.all();\n\nconsole.log(\"Total items:\", items.length);\nitems.forEach((item, index) => {\n  console.log(`Item ${index}:`, {\n    emoji: item.json.emoji,\n    chatId: item.json.chatId,\n    messageId: item.json.messageId,\n    botToken: item.json.botToken.substring(0, 20) + \"...\" // Don't log full token\n  });\n});\n\nreturn items;"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "18398cb2-0854-4f07-be6c-d78ee911d8c8",
  "connections": {
    "195cbb5d-2262-487c-b5e1-aa2591bad249": {
      "main": [
        [
          {
            "node": "21d9e004-8b32-428f-ad10-a9486bda6652",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "260abb47-d3da-4115-b585-9e66c743f9d3": {
      "main": [
        [
          {
            "node": "195cbb5d-2262-487c-b5e1-aa2591bad249",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "547b3785-236b-4bf9-9cce-8cbe796ea5ba": {
      "main": [
        [
          {
            "node": "cd448fc1-a9da-4119-b9bd-812cd7d6e521",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cd448fc1-a9da-4119-b9bd-812cd7d6e521": {
      "main": [
        [
          {
            "node": "de82667b-a207-4325-8db6-4b04d44ddaa9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5592fc81-7eb0-49a1-bcad-db982a1c403a": {
      "main": [
        [
          {
            "node": "de82667b-a207-4325-8db6-4b04d44ddaa9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "de82667b-a207-4325-8db6-4b04d44ddaa9": {
      "main": [
        [
          {
            "node": "260abb47-d3da-4115-b585-9e66c743f9d3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5592fc81-7eb0-49a1-bcad-db982a1c403a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fef6fa46-d0a0-4767-a092-594afd468205": {
      "main": [
        [
          {
            "node": "547b3785-236b-4bf9-9cce-8cbe796ea5ba",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1a067cb4-5370-4d0d-b961-35658fa32176": {
      "main": [
        [
          {
            "node": "fef6fa46-d0a0-4767-a092-594afd468205",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Réseaux sociaux, Résumé IA

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds18
Catégorie2
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34