{
  "workflow": {
    "id": 11734,
    "name": "Generate complete social media campaigns with DALL·E, GPT-4o and Slack approval",
    "views": 108,
    "recentViews": 1,
    "totalViews": 108,
    "createdAt": "2025-12-12T10:42:10.631Z",
    "description": "## 📘 Description\nThis workflow turns raw product inputs into a complete, launch-ready AI-generated social media campaign package. It accepts product details via webhook, sanitizes messy fields, generates a strategic campaign blueprint, produces Instagram captions, creates discovery-optimized hashtags, generates photorealistic commercial images, computes optimal posting times, assembles all outputs into a unified JSON package, and finally delivers the entire campaign to Slack.\nMultiple AI agents work in sequence to generate structured outputs — each parsed and validated using strict JSON schemas. Images produced by DALL·E 3 are uploaded to Cloudinary for hosting. A post-processing module then merges captions, images, hashtags, and schedules into a final payload. A robust error handler ensures every failure is captured and sent to Slack with diagnostic information.\nThis workflow replaces an entire marketing team’s creative production pipeline, producing consistent, multi-asset campaign kits in minutes.\n\n## ⚙️ What This Workflow Does (Step-by-Step)\n\n🟢 Receive Product Details via Webhook\n Captures incoming product data including name, description, benefits, audience, and brand voice.\n\n🧹 Clean & Normalize Product Input Fields\n Sanitizes escaped characters, trims whitespace, and prepares stable fields for AI consumption.\n\n🧠 Generate Campaign Blueprint Using AI\n Creates a full strategic blueprint in structured JSON:\n • Article summary\n • Insights\n • Tone and target audience mapping\n • Platform-specific post objects\n\n🧠 LLM Engine + Structured Parser for Blueprint\n Ensures blueprint output is clean, validated JSON aligned with schema.\n\n✍️ Generate Instagram Captions Using AI\n Produces five short, conversion-ready captions + CTAs, based on blueprint insights.\n\n🧠 Caption LLM + Structured Parser\n Validates caption schema for downstream use.\n\n#️⃣ Generate Hashtag Set Using AI\n Creates 12–18 optimized hashtags using discovery strategy (broad, mid, niche).\n\n🧠 Hashtag LLM + Parser\n Validates and ensures hashtags follow correct JSON structure.\n\n🎨 Split Campaign Posts for Image Generation\n Breaks out each post’s image prompt for independent asset creation.\n\n🖼️ Generate Social Media Image Using AI\n Uses DALL·E 3 to create ultra-realistic, 8K-style commercial visuals tailored to the campaign.\n\n☁️ Upload Generated Image to Cloudinary\n Uploads rendered images and retrieves secure public URLs.\n\n🕒 Generate Optimal Posting Schedule Using AI\n Recommends best posting time per platform (Asia/Kolkata timezone) + reasoning.\n\n🧠 Schedule LLM + Parser\n Ensures a structured schedule schema with platform, time, and rationale.\n\n🔀 Combine All Campaign Assets\n Merges:\n • Cloudinary image URLs\n • Captions + CTAs\n • Hashtag set\n • Posting schedule\n into one final dataset.\n\n🧩 Prepare Final Campaign Package JSON\n Constructs production-ready unified JSON: images, captions, hashtags, schedule.\n\n💬 Send Final Campaign Package to Slack\n Delivers formatted campaign output with:\n • Image URLs\n • Captions + CTAs\n • Hashtags\n • Posting times\n for immediate creative review.\n\n🚨 Error Handler Trigger → Slack Alert\n Captures workflow failures and sends structured debugging info to Slack.\n\n\n## 🧩 Prerequisites\n • OpenAI API (GPT-4o + DALL·E 3)\n • Cloudinary account (image hosting)\n • Slack bot token\n • Valid webhook endpoint\n • Clean product input JSON\n\n## 💡 Key Benefits\n ✔ Full AI-generated multi-asset campaign in minutes\n ✔ Eliminates manual copywriting, design, and planning\n ✔ Ensures structured, reliable JSON at every stage\n ✔ Creates polished commercial visuals instantly\n ✔ Produces posting strategy tailored to audience behavior\n ✔ Unified campaign delivery straight to Slack\n\n## 👥 Perfect For\n-  Consumer brands launching fast cycles\n-  Agencies needing rapid campaign generation\n-  Teams without in-house designers/copywriters\n-  Influencers or D2C founders wanting automated content production ",
    "workflow": {
      "id": "tKu7HzCQdvpzOn29",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177"
      },
      "name": "AI-Powered Social Media Campaign Generator (End-to-End Workflow)",
      "tags": [],
      "nodes": [
        {
          "id": "6876d436-ca2d-4a21-8622-b853be706781",
          "name": "Receive Product Details via Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            -1024,
            -96
          ],
          "webhookId": "691cefdb-6770-40db-9b6a-1da2350088fe",
          "parameters": {
            "path": "691cefdb-6770-40db-9b6a-1da2350088fe",
            "options": {},
            "httpMethod": "POST"
          },
          "typeVersion": 2.1
        },
        {
          "id": "938a9a28-e3fb-4ae7-84d1-2a85d56a35a8",
          "name": "Clean & Normalize Product Input Fields",
          "type": "n8n-nodes-base.set",
          "position": [
            -720,
            -96
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "996fa0d7-7b74-4476-ace5-afe9b7775372",
                  "name": "body.product_name",
                  "type": "string",
                  "value": "={{ $json.body.product_name.replace(/\\\\\"/g, \"\").replace(/\"$/, \"\").trim() }}\n"
                },
                {
                  "id": "5963aff9-38b7-42cd-bbd7-6b7a1cffd2ea",
                  "name": "body.product_description",
                  "type": "string",
                  "value": "={{ $json.body.product_description.replace(/\\\\\\\"$/, \"\").trim() }}\n"
                },
                {
                  "id": "e94b719b-9c41-42fb-92ad-f8471714b3cd",
                  "name": "body.target_audience",
                  "type": "string",
                  "value": "={{ $json.body.target_audience.replace(/\\\\\\\"$/, \"\").replace(/,$/, \"\").trim() }}\n"
                },
                {
                  "id": "336ade46-4639-418e-af0f-41e3f6adb2d1",
                  "name": "body.brand_voice",
                  "type": "string",
                  "value": "={{ $json.body.brand_voice.trim() }}\n"
                },
                {
                  "id": "7042d1af-e503-4efb-ab09-6875410f70e4",
                  "name": "body.benefits",
                  "type": "string",
                  "value": "={{ $json.body.benefits.replace(/\\\\\\\"$/, \"\").trim() }}\n"
                },
                {
                  "id": "9d163f49-e7b0-447c-a5e3-5a0cdd3f9414",
                  "name": "body.reference_image",
                  "type": "string",
                  "value": "={{ $json.body.reference_image }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "ed341bd1-ba0d-4903-acc5-7747ffe2e826",
          "name": "Generate Campaign Blueprint Using AI",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            -336,
            -96
          ],
          "parameters": {
            "text": "=You are a senior marketing strategist and JSON-only generator.\n\nYou MUST return output ONLY in valid JSON that EXACTLY matches the schema provided by the Structured Output Parser.\nNo explanations.  \nNo markdown.  \nNo text before or after JSON.  \nNo comments.  \nIf any field does not have a value, return an empty string.\n\n---------------------\nINPUT PRODUCT DETAILS\n---------------------\nProduct Name: {{ $json.body.product_name }}\nDescription: {{ $json.body.product_description }}\nTarget Audience: {{ $json.body.target_audience }}\nBrand Voice: {{ $json.body.brand_voice }}\nKey Benefits: {{ $json.body.benefits }}\n\n---------------------\nYOUR TASK\n---------------------\nGenerate a JSON object containing:\n\n{\n  \"article_summary\": {\n    \"title\": \"string\",\n    \"url\": \"string\",\n    \"author\": \"string\",\n    \"target_audience\": \"string\",\n    \"tone_of_voice\": \"string\",\n    \"insights\": [\n      \"string\",\n      \"string\",\n      \"string\"\n    ]\n  },\n  \"posts\": [\n    {\n      \"platform\": \"string\",\n      \"post_text\": \"string\",\n      \"image_prompt\": \"string\",\n      \"cta\": \"string\",\n      \"suggested_delay_minutes\": 0\n    }\n  ]\n}\n\nReturn ONLY valid JSON. Do not wrap it in text or code blocks.\nDo not output anything else.\n",
            "options": {
              "systemMessage": "=You are a senior marketing strategist and social media campaign expert. \nYour task is to analyze the provided product details and create a complete \ncampaign blueprint that will later be used to generate captions, hashtags, \nimage prompts, and scheduling.\n\nRules:\n- Read the product details carefully.\n- Understand the core value proposition.\n- Identify the strongest marketing angle.\n- Keep the writing style clean, modern, and conversion-focused.\n- Do not invent benefits that were not mentioned.\n- Keep output structured, simple, and JSON-valid.\n"
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2
        },
        {
          "id": "3eb10add-58cb-4e90-9622-871b5cf85339",
          "name": "Parse Campaign Blueprint JSON",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            -128,
            128
          ],
          "parameters": {
            "jsonSchemaExample": "{\n  \"article_summary\": {\n    \"title\": \"string\",\n    \"url\": \"string\",\n    \"author\": \"string\",\n    \"target_audience\": \"string\",\n    \"tone_of_voice\": \"string\",\n    \"insights\": [\n      \"string\",\n      \"string\",\n      \"string\"\n    ]\n  },\n  \"posts\": [\n    {\n      \"platform\": \"LinkedIn | Instagram | X\",\n      \"post_text\": \"string\",\n      \"image_prompt\": \"string\",\n      \"cta\": \"string\",\n      \"suggested_delay_minutes\": 0\n    }\n  ]\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "3a015119-8d21-4e17-b1cd-eb034194f65b",
          "name": "LLM Engine for Campaign Blueprint",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            -368,
            128
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o",
              "cachedResultName": "gpt-4o"
            },
            "options": {},
            "responsesApiEnabled": false
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "dd55d843-764a-439f-9b4d-5b779894f135",
          "name": "Generate Instagram Captions Using AI",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            432,
            48
          ],
          "parameters": {
            "text": "=Generate 5 unique Instagram-ready captions based on the campaign blueprint and product details below.\n\nEach caption must:\n- Be 2–3 lines maximum.\n- Include 0–2 emojis.\n- Start with a strong hook.\n- Clearly highlight the product benefit.\n- Include a CTA in a separate field at the end.\n- NOT include hashtags.\n\nCampaign Blueprint:\n{{ JSON.stringify($json.output.article_summary) }}\n\nReturn ONLY valid JSON in this format:\n\n{\n  \"captions\": [\n    {\n      \"caption\": \"string\",\n      \"cta\": \"string\"\n    },\n    {\n      \"caption\": \"string\",\n      \"cta\": \"string\"\n    },\n    {\n      \"caption\": \"string\",\n      \"cta\": \"string\"\n    },\n    {\n      \"caption\": \"string\",\n      \"cta\": \"string\"\n    },\n    {\n      \"caption\": \"string\",\n      \"cta\": \"string\"\n    }\n  ]\n}\n\nDo NOT return markdown. Do NOT wrap in ```json```. Only return pure JSON.\n",
            "options": {
              "systemMessage": "=You are a senior social media copywriter who specializes in writing high-converting, modern Instagram captions.\n\nYour goals:\n- Understand the brand voice and campaign blueprint.\n- Write short, punchy captions that hook the viewer in 1–2 seconds.\n- Keep captions concise, emotionally engaging, and benefit-driven.\n- Use emojis sparingly (0–2 per caption).\n- Include a strong CTA at the end of each caption.\n- Do NOT include hashtags. They will be generated separately.\n- Do NOT repeat insights verbatim—reinterpret them creatively.\n- Return ONLY valid JSON matching the required schema.\n"
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2
        },
        {
          "id": "cbd8f6f3-e966-4507-b41c-8b0977698ae0",
          "name": "LLM Engine for Caption Writing",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            368,
            304
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o",
              "cachedResultName": "gpt-4o"
            },
            "options": {},
            "responsesApiEnabled": false
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "62d66694-7170-4d60-9cfd-51eed3891857",
          "name": "Parse Caption Output JSON",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            640,
            336
          ],
          "parameters": {
            "jsonSchemaExample": "{\n  \"captions\": [\n    {\n      \"caption\": \"string\",\n      \"cta\": \"string\"\n    }\n  ]\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "6e1709f9-b31d-434b-965a-0633b51a04a6",
          "name": "Generate Hashtag Set Using AI",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            1120,
            432
          ],
          "parameters": {
            "text": "=Generate a set of high-performing Instagram hashtags based on the campaign blueprint and product insights below.\n\nCampaign Blueprint:\n{{ JSON.stringify($(\"Generate Campaign Blueprint Using AI\").first().json.output.article_summary) }}\n\n\nCaptions:\n{{ JSON.stringify($json.output.captions) }}\n\nRequirements:\n- Return 12 to 18 hashtags\n- Mix of large, medium, and niche tags\n- No banned or spammy tags\n- No duplicates\n- Only lowercase (Instagram best practice)\n- No spaces, only underscores if needed\n- Do NOT include explanations\n\nReturn the result in this exact JSON format:\n\n{\n  \"hashtags\": [\"string\", \"string\", \"string\"]\n}\n",
            "options": {
              "systemMessage": "=You are a social media growth strategist who specializes in Instagram hashtag optimization.\n\nYour goal is to generate a high-performing set of hashtags that:\n- Improve reach, discovery, and engagement\n- Combine high-volume, mid-volume, and niche hashtags\n- Are relevant to the product and campaign blueprint\n- Avoid banned, spammy, or ultra-generic hashtags\n- Do NOT repeat words unnecessarily\n- Stay readable and brand-safe\n- Return only JSON\n"
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2
        },
        {
          "id": "e31af71d-6a17-4926-81c4-053730af405b",
          "name": "LLM Engine for Hashtag Generation",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            1056,
            704
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o",
              "cachedResultName": "gpt-4o"
            },
            "options": {},
            "responsesApiEnabled": false
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "2c187067-dac4-4278-9965-7a70afac1314",
          "name": "Parse Hashtag Output JSON",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            1296,
            688
          ],
          "parameters": {
            "jsonSchemaExample": "{\n  \"hashtags\": [\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\",\n    \"string\"\n  ]\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "a31dc9b4-7b47-4415-8d6a-ee43da395dcb",
          "name": "Split Campaign Posts for Image Generation",
          "type": "n8n-nodes-base.splitOut",
          "position": [
            560,
            -624
          ],
          "parameters": {
            "options": {},
            "fieldToSplitOut": "output.posts"
          },
          "typeVersion": 1
        },
        {
          "id": "1c026a9d-62fc-4091-9f05-1ad5a3ae6f60",
          "name": "Generate Social Media Image Using AI",
          "type": "n8n-nodes-base.openAi",
          "position": [
            896,
            -624
          ],
          "parameters": {
            "model": "dall-e-3",
            "prompt": "=Generate ONE high-quality commercial social media image for the brand, following the exact image description below.\n\nOnly generate a visual scene.  \nDo NOT add text.  \nDo NOT rewrite the caption.  \nDo NOT include logos or watermarks.\n\n====================\nIMAGE INPUT\n====================\n\nPlatform: {{ $json.platform }}\nBrand Theme: {{ $('Generate Campaign Blueprint Using AI').item.json.output.article_summary.title }}\nAudience: {{ $('Generate Campaign Blueprint Using AI').item.json.output.article_summary.target_audience }}\nTone: {{ $('Generate Campaign Blueprint Using AI').item.json.output.article_summary.tone_of_voice }}\n\nImage Concept: {{ $json.image_prompt }}\n\n====================\nSTYLE REQUIREMENTS\n====================\n\n- Ultra-realistic photography  \n- Clean lighting, cinematic shadows  \n- Professional commercial quality  \n- Sharp details, natural colors  \n- Modern lifestyle / product aesthetic  \n- 8K look, crisp textures  \n\nReturn ONLY the final visual image description. No explanation.\n",
            "options": {
              "n": 1,
              "size": "1792x1024",
              "style": "vivid",
              "quality": "hd"
            },
            "resource": "image",
            "requestOptions": {}
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "08230b5d-9034-4f06-a7b6-133a545600de",
          "name": "Upload Generated Image to Cloudinary",
          "type": "n8n-nodes-base.httpRequest",
          "maxTries": 5,
          "position": [
            1200,
            -624
          ],
          "parameters": {
            "url": "https://api.cloudinary.com/v1_1/dpuvigpmt/image/upload",
            "method": "POST",
            "options": {},
            "sendBody": true,
            "contentType": "multipart-form-data",
            "authentication": "genericCredentialType",
            "bodyParameters": {
              "parameters": [
                {
                  "name": "file",
                  "parameterType": "formBinaryData",
                  "inputDataFieldName": "data"
                },
                {
                  "name": "upload_preset",
                  "value": "upload"
                }
              ]
            },
            "genericAuthType": "httpBasicAuth"
          },
          "credentials": {
            "httpBasicAuth": {
              "id": "credential-id",
              "name": "httpBasicAuth Credential"
            }
          },
          "retryOnFail": true,
          "typeVersion": 4.2
        },
        {
          "id": "fad9fad1-d74c-4083-b140-fa3c7ff14d28",
          "name": "Generate Optimal Posting Schedule Using AI",
          "type": "@n8n/n8n-nodes-langchain.agent",
          "position": [
            1744,
            416
          ],
          "parameters": {
            "text": "=Generate an optimal posting schedule for the campaign.\n\nHere is the campaign blueprint and post data:\n\nTarget Audience:\n{{ $('Generate Campaign Blueprint Using AI').item.json.output.article_summary.target_audience }}\n{{ JSON.stringify($('Generate Campaign Blueprint Using AI').item.json.output.posts, null, 2) }}\n\n\nYour task:\n- Recommend the BEST single posting time for each platform.\n- Use timezone: Asia/Kolkata.\n- Use audience behavior patterns (millennials, gym-goers, working professionals).\n- Give a short reasoning for each posting time.\n- Do NOT repeat any captions or CTAs — only scheduling.\n\nReturn the output ONLY in valid JSON following the schema.\n",
            "options": {
              "systemMessage": "=You are a senior social media strategist specializing in growth campaigns.\nYour job is to generate the BEST posting schedule for each platform based on:\n\n- Target audience behavior\n- Platform engagement trends\n- Product category (energy drink, fitness lifestyle, wellness)\n- Tone of voice and insights\n- Location relevance (India-based audiences)\n\nRules:\n- Always return posting times optimized for maximum reach.\n- Use timezone: \"Asia/Kolkata\".\n- Provide a short reasoning for each recommended time.\n- Each platform must have one recommended posting slot.\n- Keep output simple, clean, and actionable.\n- RETURN ONLY valid JSON matching the exact required schema. No prose.\n"
            },
            "promptType": "define",
            "hasOutputParser": true
          },
          "typeVersion": 2
        },
        {
          "id": "f81544f4-be3e-4894-824b-b585058fc0ac",
          "name": "Parse Posting Schedule Output JSON",
          "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
          "position": [
            1952,
            624
          ],
          "parameters": {
            "jsonSchemaExample": "{\n  \"schedule\": [\n    {\n      \"platform\": \"string\",\n      \"recommended_time\": \"string\",\n      \"timezone\": \"string\",\n      \"reasoning\": \"string\"\n    }\n  ]\n}\n"
          },
          "typeVersion": 1.3
        },
        {
          "id": "12a761c9-6502-4161-a602-49f3b68a7458",
          "name": "LLM Engine for Posting Schedule",
          "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
          "position": [
            1728,
            624
          ],
          "parameters": {
            "model": {
              "__rl": true,
              "mode": "list",
              "value": "gpt-4o",
              "cachedResultName": "gpt-4o"
            },
            "options": {},
            "responsesApiEnabled": false
          },
          "credentials": {
            "openAiApi": {
              "id": "credential-id",
              "name": "openAiApi Credential"
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "cf1e4330-ccec-4b6d-8cc4-47aab0abd6ad",
          "name": "Combine All Campaign Assets",
          "type": "n8n-nodes-base.merge",
          "position": [
            2304,
            -96
          ],
          "parameters": {
            "numberInputs": 4
          },
          "typeVersion": 3.2
        },
        {
          "id": "f731dacd-be71-4976-9154-f572f910cd36",
          "name": "Send Final Campaign Package to Slack",
          "type": "n8n-nodes-base.slack",
          "position": [
            2848,
            -64
          ],
          "webhookId": "c15b6935-ed1d-4d93-9e8d-27d1b67d29f0",
          "parameters": {
            "text": "=🎉 *Your EcoBoost Campaign Package is Ready!*  \n\n---------------------------------------\n\n📸 *Images*\n{{ $json.images.join(\"\\n\") }}\n\n---------------------------------------\n\n✍️ *Captions + CTA*\n{{ $json.captions.map(c => `• ${c.caption}\\n   _CTA:_ ${c.cta}`).join(\"\\n\\n\") }}\n\n---------------------------------------\n\n#️⃣ *Hashtags*\n{{ \"#\" + $json.hashtags.join(\" #\") }}\n\n---------------------------------------\n\n🕒 *Posting Schedule*\n{{ $json.schedule.map(s => `• *${s.platform}*: ${s.recommended_time} (${s.timezone}) — ${s.reasoning}`).join(\"\\n\") }}\n\n---------------------------------------\n\n🚀 All assets generated successfully. Ready to publish!\n",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "list",
              "value": "C09GNB90TED",
              "cachedResultName": "general-information"
            },
            "otherOptions": {}
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "7bc41c5a-4250-4f89-b22b-8fa8e68f6e30",
          "name": "Prepare Final Campaign Package JSON",
          "type": "n8n-nodes-base.code",
          "position": [
            2592,
            -64
          ],
          "parameters": {
            "jsCode": "let images = [];\nlet captions = [];\nlet hashtags = [];\nlet schedule = [];\n\nfor (const entry of items) {\n  const item = entry.json;   // << IMPORTANT FIX\n\n  // Cloudinary images → detect secure_url\n  if (item.secure_url) {\n    images.push(item.secure_url);\n  }\n\n  // Captions\n  if (item.output?.captions) {\n    captions = item.output.captions;\n  }\n\n  // Hashtags\n  if (item.output?.hashtags) {\n    hashtags = item.output.hashtags;\n  }\n\n  // Schedule\n  if (item.output?.schedule) {\n    schedule = item.output.schedule;\n  }\n}\n\nreturn [\n  {\n    json: {\n      images,\n      captions,\n      hashtags,\n      schedule\n    }\n  }\n];\n"
          },
          "typeVersion": 2
        },
        {
          "id": "9287f621-d5da-4fa3-bf50-ca1efdd6a7ff",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -2272,
            -928
          ],
          "parameters": {
            "width": 736,
            "height": 464,
            "content": "## 🚀 AI-Powered Social Media Campaign Generator (End-to-End Workflow)\nThis workflow converts raw product details into a complete, production-ready social media\ncampaign package. It receives product info via webhook → cleans & normalizes fields →\ncreates a campaign blueprint → generates captions, hashtags, images, and posting schedules\nusing multiple AI agents → merges them → and finally sends a neatly formatted campaign\npackage to Slack.\n\nThe system automates:\n• Product input cleaning & validation  \n• AI-based campaign blueprint creation  \n• Instagram captions (5 versions)  \n• High-performance hashtag set  \n• Ultra-realistic commercial images (via DALL·E 3)  \n• Cloudinary upload for media hosting  \n• Optimal posting schedule per platform (India timezone)  \n• Final combined campaign JSON assembly  \n• Slack delivery of the entire campaign package  \n\nThis replaces hours of manual creative work and produces a consistent, professional,\nend-to-end marketing campaign ready to publish.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "b474768c-4d0a-4805-b1cc-6b3d24bf05ba",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1104,
            -416
          ],
          "parameters": {
            "color": 7,
            "width": 528,
            "height": 560,
            "content": "## 🧼 Product Intake & Normalization\nReceives product details and cleans messy escape characters before sending to AI.\n\n• Receive Product Details via Webhook  \n  Captures incoming request containing product name, description, benefits, and audience.\n\n• Clean & Normalize Product Input Fields  \n  Removes escaped characters, trims whitespace, and prepares clean values for AI agents.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "6813555e-1672-47d1-bcde-80f916ce09ec",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -432,
            -480
          ],
          "parameters": {
            "color": 7,
            "width": 464,
            "height": 832,
            "content": "## 🧠 AI Campaign Blueprint Creation\nBuilds the strategic foundation for the entire marketing campaign.\n\n• Generate Campaign Blueprint Using AI  \n  Produces structured JSON including article summary, insights, and platform posts.\n\n• LLM Engine for Campaign Blueprint  \n  Supplies GPT-4o model specifically for blueprint generation tasks.\n\n• Parse Campaign Blueprint JSON  \n  Validates and converts AI output into strict JSON for downstream nodes.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "5ae2cef7-296d-48e6-b239-07e1b5ae6b7f",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            256,
            -272
          ],
          "parameters": {
            "color": 7,
            "width": 592,
            "height": 768,
            "content": "## ✍️ Instagram Caption Generation\nCreates 5 modern, short, engaging captions with CTAs.\n\n• Generate Instagram Captions Using AI  \n  Produces concise Instagram-ready captions based on blueprint insights.\n\n• LLM Engine for Caption Writing  \n  Powers the caption-writing agent using GPT-4o.\n\n• Parse Caption Output JSON  \n  Ensures captions and CTAs follow the required JSON schema.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "661dc5ba-5c0c-4f57-be13-729f5e0c4b13",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            976,
            128
          ],
          "parameters": {
            "color": 7,
            "width": 512,
            "height": 720,
            "content": "## #️⃣ High-Performing Hashtag Generation\nCreates a targeted set of 12–18 discovery-optimized hashtags.\n\n• Generate Hashtag Set Using AI  \n  Builds a hashtag mix (broad + niche) tailored to the product.\n\n• LLM Engine for Hashtag Generation  \n  Provides the GPT-4o model optimized for social growth strategy.\n\n• Parse Hashtag Output JSON  \n  Validates hashtags and ensures JSON output is clean.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "eefefa58-31e4-43c9-91b1-554ab8c1d61e",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            272,
            -880
          ],
          "parameters": {
            "color": 7,
            "width": 1248,
            "height": 432,
            "content": "## 🎨 AI Image Generation for Campaign Posts\nCreates high-quality visual assets for each campaign post.\n\n• Split Campaign Posts for Image Generation  \n  Breaks the posts array into individual items for image generation.\n\n• Generate Social Media Image Using AI  \n  Uses DALL·E 3 to create vivid, ultra-realistic brand-specific visuals.\n\n• Upload Generated Image to Cloudinary  \n  Hosts the generated image and returns a secure public URL.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "73715b8d-e0a4-421d-8c68-e657446db0b0",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1632,
            64
          ],
          "parameters": {
            "color": 7,
            "width": 464,
            "height": 736,
            "content": "## 🕒 Optimal Posting Schedule Generation\nDetermines the best posting times for each platform.\n\n• Generate Optimal Posting Schedule Using AI  \n  Selects highest-engagement times for each platform (IST timezone).\n\n• LLM Engine for Posting Schedule  \n  Powers the scheduling intelligence using GPT-4o.\n\n• Parse Posting Schedule Output JSON  \n  Ensures the schedule matches strict schema and is ready for use.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "88819ce9-ece5-4d06-ba35-56240e50fcb0",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2144,
            -368
          ],
          "parameters": {
            "color": 7,
            "width": 1008,
            "height": 528,
            "content": "## 📦 Assemble Final Campaign Package\nCombines all elements — images, captions, hashtags, schedule — into a unified payload.\n\n• Combine All Campaign Assets  \n  Merges outputs from captions, hashtags, images, and scheduling nodes.\n\n• Prepare Final Campaign Package JSON  \n  Formats final JSON containing images, captions, hashtags, and posting schedule.\n\n• Send Final Campaign Package to Slack  \n  Sends a beautifully formatted campaign package to your Slack channel.\n"
          },
          "typeVersion": 1
        },
        {
          "id": "33f76b4f-c9de-4f17-be4a-8b9545d84186",
          "name": "Error Handler Trigger",
          "type": "n8n-nodes-base.errorTrigger",
          "position": [
            -816,
            1136
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "b3a750db-193c-4772-bc7a-8982ffd4bc9c",
          "name": "Slack: Send Error Alert",
          "type": "n8n-nodes-base.slack",
          "position": [
            -464,
            1136
          ],
          "webhookId": "d5eff2c3-ff6e-4116-bdda-59455acd861b",
          "parameters": {
            "text": "=❌ *Error in API Error Catalog Workflow* *Node:* {{ $json.node.name }} *Message:* {{ $json.error.message }} *Time:* {{ $json.timestamp }}",
            "select": "channel",
            "channelId": {
              "__rl": true,
              "mode": "list",
              "value": "C09GNB90TED",
              "cachedResultName": "general-information"
            },
            "otherOptions": {}
          },
          "credentials": {
            "slackApi": {
              "id": "credential-id",
              "name": "slackApi Credential"
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "45d5e615-b35c-4e02-89e0-09a33909ba72",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -896,
            944
          ],
          "parameters": {
            "color": 7,
            "width": 672,
            "height": 336,
            "content": "## 🚨 Error Handling \n\n \nCatches any workflow failure and posts an alert to Slack.  \nIncludes node name, error message, and timestamp for quick debugging.\n"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "14e66d8a-c4db-464b-ab72-032f1b960166",
      "connections": {
        "Error Handler Trigger": {
          "main": [
            [
              {
                "node": "Slack: Send Error Alert",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse Caption Output JSON": {
          "ai_outputParser": [
            [
              {
                "node": "Generate Instagram Captions Using AI",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Parse Hashtag Output JSON": {
          "ai_outputParser": [
            [
              {
                "node": "Generate Hashtag Set Using AI",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Combine All Campaign Assets": {
          "main": [
            [
              {
                "node": "Prepare Final Campaign Package JSON",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Hashtag Set Using AI": {
          "main": [
            [
              {
                "node": "Generate Optimal Posting Schedule Using AI",
                "type": "main",
                "index": 0
              },
              {
                "node": "Combine All Campaign Assets",
                "type": "main",
                "index": 2
              }
            ]
          ]
        },
        "Parse Campaign Blueprint JSON": {
          "ai_outputParser": [
            [
              {
                "node": "Generate Campaign Blueprint Using AI",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "LLM Engine for Caption Writing": {
          "ai_languageModel": [
            [
              {
                "node": "Generate Instagram Captions Using AI",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "LLM Engine for Posting Schedule": {
          "ai_languageModel": [
            [
              {
                "node": "Generate Optimal Posting Schedule Using AI",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "LLM Engine for Campaign Blueprint": {
          "ai_languageModel": [
            [
              {
                "node": "Generate Campaign Blueprint Using AI",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "LLM Engine for Hashtag Generation": {
          "ai_languageModel": [
            [
              {
                "node": "Generate Hashtag Set Using AI",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Parse Posting Schedule Output JSON": {
          "ai_outputParser": [
            [
              {
                "node": "Generate Optimal Posting Schedule Using AI",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        },
        "Prepare Final Campaign Package JSON": {
          "main": [
            [
              {
                "node": "Send Final Campaign Package to Slack",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Receive Product Details via Webhook": {
          "main": [
            [
              {
                "node": "Clean & Normalize Product Input Fields",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Campaign Blueprint Using AI": {
          "main": [
            [
              {
                "node": "Generate Instagram Captions Using AI",
                "type": "main",
                "index": 0
              },
              {
                "node": "Split Campaign Posts for Image Generation",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Instagram Captions Using AI": {
          "main": [
            [
              {
                "node": "Generate Hashtag Set Using AI",
                "type": "main",
                "index": 0
              },
              {
                "node": "Combine All Campaign Assets",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Generate Social Media Image Using AI": {
          "main": [
            [
              {
                "node": "Upload Generated Image to Cloudinary",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Upload Generated Image to Cloudinary": {
          "main": [
            [
              {
                "node": "Combine All Campaign Assets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Clean & Normalize Product Input Fields": {
          "main": [
            [
              {
                "node": "Generate Campaign Blueprint Using AI",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Split Campaign Posts for Image Generation": {
          "main": [
            [
              {
                "node": "Generate Social Media Image Using AI",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Generate Optimal Posting Schedule Using AI": {
          "main": [
            [
              {
                "node": "Combine All Campaign Assets",
                "type": "main",
                "index": 3
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 31,
      "nodeTypes": {
        "n8n-nodes-base.set": {
          "count": 1
        },
        "n8n-nodes-base.code": {
          "count": 1
        },
        "n8n-nodes-base.merge": {
          "count": 1
        },
        "n8n-nodes-base.slack": {
          "count": 2
        },
        "n8n-nodes-base.openAi": {
          "count": 1
        },
        "n8n-nodes-base.webhook": {
          "count": 1
        },
        "n8n-nodes-base.splitOut": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 9
        },
        "n8n-nodes-base.httpRequest": {
          "count": 1
        },
        "n8n-nodes-base.errorTrigger": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 4
        },
        "@n8n/n8n-nodes-langchain.lmChatOpenAi": {
          "count": 4
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "count": 4
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 12,
        "icon": "fa:bug",
        "name": "n8n-nodes-base.errorTrigger",
        "codex": {
          "data": {
            "details": "In n8n, when a workflow execution fails, it can start another workflow. This second workflow can be any arbitrary workflow on your n8n instance. Use the Error Trigger node as your Trigger in the Error workflow.",
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/creating-error-workflows-in-n8n/",
                  "icon": "🌪",
                  "label": "Creating Error Workflows in n8n"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Other Trigger Nodes"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Error Trigger",
          "color": "#0000FF"
        },
        "iconData": {
          "icon": "bug",
          "type": "icon"
        },
        "displayName": "Error Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 19,
        "icon": "file:httprequest.svg",
        "name": "n8n-nodes-base.httpRequest",
        "codex": {
          "data": {
            "alias": [
              "API",
              "Request",
              "URL",
              "Build",
              "cURL"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/",
                  "icon": "🧰",
                  "label": "How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "HTTP Request",
          "color": "#0004F5"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "HTTP Request",
        "typeVersion": 4,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 24,
        "icon": "file:merge.svg",
        "name": "n8n-nodes-base.merge",
        "codex": {
          "data": {
            "alias": [
              "Join",
              "Concatenate",
              "Wait"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-to-sync-data-between-two-systems/",
                  "icon": "🏬",
                  "label": "How to synchronize data between two systems (one-way vs. two-way sync"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Merge"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Merge",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 38,
        "icon": "fa:pen",
        "name": "n8n-nodes-base.set",
        "codex": {
          "data": {
            "alias": [
              "Set",
              "JS",
              "JSON",
              "Filter",
              "Transform",
              "Map"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/",
                  "icon": "🏭",
                  "label": "Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"
                },
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/",
                  "icon": "📡",
                  "label": "Database Monitoring and Alerting with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Edit Fields"
        },
        "iconData": {
          "icon": "pen",
          "type": "icon"
        },
        "displayName": "Edit Fields (Set)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 40,
        "icon": "file:slack.svg",
        "name": "n8n-nodes-base.slack",
        "codex": {
          "data": {
            "alias": [
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/",
                  "icon": "⚙️",
                  "label": "Automate your data processing pipeline in 9 steps"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/slack/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "Slack"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Slack",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 47,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.webhook",
        "codex": {
          "data": {
            "alias": [
              "HTTP",
              "API",
              "Build",
              "WH"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 840,
        "icon": "file:openAi.svg",
        "name": "n8n-nodes-base.openAi",
        "codex": {
          "data": {
            "alias": [
              "ChatGPT",
              "DallE"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/openai/"
                }
              ]
            },
            "categories": [
              "Utility"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjYwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTIzOS4xODQgMTA2LjIwM2E2NC43MiA2NC43MiAwIDAgMC01LjU3Ni01My4xMDNDMjE5LjQ1MiAyOC40NTkgMTkxIDE1Ljc4NCAxNjMuMjEzIDIxLjc0QTY1LjU4NiA2NS41ODYgMCAwIDAgNTIuMDk2IDQ1LjIyYTY0LjcyIDY0LjcyIDAgMCAwLTQzLjIzIDMxLjM2Yy0xNC4zMSAyNC42MDItMTEuMDYxIDU1LjYzNCA4LjAzMyA3Ni43NGE2NC42NyA2NC42NyAwIDAgMCA1LjUyNSA1My4xMDJjMTQuMTc0IDI0LjY1IDQyLjY0NCAzNy4zMjQgNzAuNDQ2IDMxLjM2YTY0LjcyIDY0LjcyIDAgMCAwIDQ4Ljc1NCAyMS43NDRjMjguNDgxLjAyNSA1My43MTQtMTguMzYxIDYyLjQxNC00NS40ODFhNjQuNzcgNjQuNzcgMCAwIDAgNDMuMjI5LTMxLjM2YzE0LjEzNy0yNC41NTggMTAuODc1LTU1LjQyMy04LjA4My03Ni40ODNtLTk3LjU2IDEzNi4zMzhhNDguNCA0OC40IDAgMCAxLTMxLjEwNS0xMS4yNTVsMS41MzUtLjg3IDUxLjY3LTI5LjgyNWE4LjYgOC42IDAgMCAwIDQuMjQ3LTcuMzY3di03Mi44NWwyMS44NDUgMTIuNjM2Yy4yMTguMTExLjM3LjMyLjQwOS41NjN2NjAuMzY3Yy0uMDU2IDI2LjgxOC0yMS43ODMgNDguNTQ1LTQ4LjYwMSA0OC42MDFNMzcuMTU4IDE5Ny45M2E0OC4zNSA0OC4zNSAwIDAgMS01Ljc4MS0zMi41ODlsMS41MzQuOTIxIDUxLjcyMiAyOS44MjZhOC4zNCA4LjM0IDAgMCAwIDguNDQxIDBsNjMuMTgxLTM2LjQyNXYyNS4yMjFhLjg3Ljg3IDAgMCAxLS4zNTguNjY1bC01Mi4zMzUgMzAuMTg0Yy0yMy4yNTcgMTMuMzk4LTUyLjk3IDUuNDMxLTY2LjQwNC0xNy44MDNNMjMuNTQ5IDg1LjM4YTQ4LjUgNDguNSAwIDAgMSAyNS41OC0yMS4zMzN2NjEuMzlhOC4yOSA4LjI5IDAgMCAwIDQuMTk1IDcuMzE2bDYyLjg3NCAzNi4yNzItMjEuODQ1IDEyLjYzNmEuODIuODIgMCAwIDEtLjc2NyAwTDQxLjM1MyAxNTEuNTNjLTIzLjIxMS0xMy40NTQtMzEuMTcxLTQzLjE0NC0xNy44MDQtNjYuNDA1em0xNzkuNDY2IDQxLjY5NS02My4wOC0zNi42M0wxNjEuNzMgNzcuODZhLjgyLjgyIDAgMCAxIC43NjggMGw1Mi4yMzMgMzAuMTg0YTQ4LjYgNDguNiAwIDAgMS03LjMxNiA4Ny42MzV2LTYxLjM5MWE4LjU0IDguNTQgMCAwIDAtNC40LTcuMjEzbTIxLjc0Mi0zMi42OS0xLjUzNS0uOTIyLTUxLjYxOS0zMC4wODFhOC4zOSA4LjM5IDAgMCAwLTguNDkyIDBMOTkuOTggOTkuODA4Vjc0LjU4N2EuNzIuNzIgMCAwIDEgLjMwNy0uNjY1bDUyLjIzMy0zMC4xMzNhNDguNjUyIDQ4LjY1MiAwIDAgMSA3Mi4yMzYgNTAuMzkxek04OC4wNjEgMTM5LjA5N2wtMjEuODQ1LTEyLjU4NWEuODcuODcgMCAwIDEtLjQxLS42MTRWNjUuNjg1YTQ4LjY1MiA0OC42NTIgMCAwIDEgNzkuNzU3LTM3LjM0NmwtMS41MzUuODctNTEuNjcgMjkuODI1YTguNiA4LjYgMCAwIDAtNC4yNDYgNy4zNjd6bTExLjg2OC0yNS41OEwxMjguMDY3IDk3LjNsMjguMTg4IDE2LjIxOHYzMi40MzRsLTI4LjA4NiAxNi4yMTgtMjguMTg4LTE2LjIxOHoiLz48L3N2Zz4="
        },
        "displayName": "OpenAI",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 7,
            "name": "Utility"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1153,
        "icon": "file:openAiLight.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1179,
        "icon": "fa:code",
        "name": "@n8n/n8n-nodes-langchain.outputParserStructured",
        "codex": {
          "data": {
            "alias": [
              "json",
              "zod"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Output Parsers"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Structured Output Parser"
        },
        "iconData": {
          "icon": "code",
          "type": "icon"
        },
        "displayName": "Structured Output Parser",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1239,
        "icon": "file:splitOut.svg",
        "name": "n8n-nodes-base.splitOut",
        "codex": {
          "data": {
            "alias": [
              "Split",
              "Nested",
              "Transform",
              "Array",
              "List",
              "Item"
            ],
            "details": "",
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Split Out"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"
        },
        "displayName": "Split Out",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 33,
        "name": "Social Media"
      },
      {
        "id": 51,
        "name": "Multimodal AI"
      }
    ],
    "image": []
  }
}