{"workflow":{"id":13807,"name":"Generate multi-scene AI videos from scripts with Claude, Stability AI and Runway","views":271,"recentViews":2,"totalViews":271,"createdAt":"2026-03-02T10:34:42.265Z","description":"This workflow is a fully automated AI video production pipeline. It accepts a raw script or topic via webhook, uses Claude AI to break the script into optimized video scenes, generates AI images for each scene using Stability AI, submits each scene to Runway Gen-3 Alpha for video generation, polls until all videos are ready, stitches metadata together, and delivers the final video package — all without any manual editing or human intervention.\n\nDesigned for content creators, marketing agencies, social media teams, and SaaS platforms that need to produce consistent, high-quality AI video content at scale.\n\n---\n\n### What's the Goal?\nTo eliminate the bottleneck between having a script and having a publishable video. Traditional video production takes days and thousands of dollars. This workflow produces a multi-scene AI video package in under 15 minutes for a fraction of the cost.\n\nSpecific goals:\n- Convert any text script into scene-by-scene video clips automatically\n- Maintain visual consistency across all scenes using structured prompts\n- Support multiple video styles: cinematic, documentary, social media, explainer\n- Deliver ready-to-publish video assets with no manual editing required\n- Log every job for billing, audit, and quality tracking\n\n---\n\n### Why Does It Matter?\nVideo is the highest-performing content format across every platform — but it has always required expensive equipment, editors, and time. Runway Gen-3 and other generative video tools have changed that. This workflow makes AI video production:\n\n- Accessible: no video editing skills needed\n- Scalable: generate 10 or 1000 videos with the same workflow\n- Fast: full video package ready in 10-20 minutes\n- Consistent: same quality every time, no human error\n- Profitable: agencies can charge $200-$2000 per video package this workflow produces in minutes\n\n---\n\n### How It Works\n\nStage 1 — Script Intake and Validation\nWebhook receives the script payload. Set node stores all API credentials and job config. IF node validates that a script or topic is present before any API calls are made.\n\nStage 2 — Scene Breakdown with Claude AI\nClaude AI reads the full script and breaks it into 4-6 structured scenes. For each scene it writes: a visual description, a Runway video prompt, a Stability AI image prompt, camera movement instructions, mood and color palette, and estimated duration. Output is clean JSON.\n\nStage 3 — Scene Processing Loop\nSplitInBatches node processes each scene one at a time. For each scene, a Code node formats the exact prompts needed for both image and video generation.\n\nStage 4 — Image Generation (Stability AI)\nStability AI generates a reference frame image for the current scene. This image is used as the visual anchor for Runway video generation, ensuring frame consistency.\n\nStage 5 — Runway Video Generation\nThe scene prompt and reference image are submitted to Runway Gen-3 Alpha Turbo API. Runway returns a task ID immediately. A Wait node pauses 30 seconds, then a Poll node checks job status. If not ready, it loops back and waits again. When complete, the video URL is captured.\n\nStage 6 — Collect and Package Results\nAfter all scenes are processed, a Code node assembles the complete video package: all scene video URLs, metadata, prompts used, durations, and delivery info.\n\nStage 7 — Delivery and Logging\nSlack notification with job summary and video links. SendGrid email with full delivery report. Google Sheets audit log entry. Webhook returns complete JSON with all video URLs and metadata.\n\n---\n\n### Configuration Requirements\n- ANTHROPIC_API_KEY — Claude AI for script-to-scene breakdown (claude-sonnet-4-20250514)\n- RUNWAY_API_KEY — Runway Gen-3 Alpha video generation (runwayml.com)\n- STABILITY_API_KEY — Stability AI SDXL image generation (stability.ai)\n- SENDGRID_API_KEY — Email delivery of final report\n- SLACK_WEBHOOK_URL — Slack notifications on completion\n- GOOGLE_SHEET_ID — Job audit log and video URL tracking\n\n---\n\n### Setup Guide\nStep 1: Import this workflow into your n8n instance\nStep 2: Open the Set Credentials and Config node\nStep 3: Replace all YOUR_XXX_KEY placeholders with your real API keys\nStep 4: Set your GOOGLE_SHEET_ID in the Log Job to Sheets node\nStep 5: Set your SLACK_WEBHOOK_URL in the Set node\nStep 6: Activate the workflow and POST to /webhook/runway-video","workflow":{"id":"cppgnVN6nSbTOSy6","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"n8n Runway AI — Script to Video Generator","tags":[],"nodes":[{"id":"6e619e44-562f-4177-8530-3c397e408c21","name":"Main Overview","type":"n8n-nodes-base.stickyNote","position":[-672,-208],"parameters":{"width":1624,"height":1676,"content":"## Description\n### This workflow is a fully automated AI video production pipeline. It accepts a raw script or topic via webhook, uses Claude AI to break the script into optimized video scenes, generates AI images for each scene using Stability AI, submits each scene to Runway Gen-3 Alpha for video generation, polls until all videos are ready, stitches metadata together, and delivers the final video package — all without any manual editing or human intervention.\n\nDesigned for content creators, marketing agencies, social media teams, and SaaS platforms that need to produce consistent, high-quality AI video content at scale.\n\n\n- Profitable: agencies can charge $200-$2000 per video package this workflow produces in minutes\n\n## How It Works\n\nStage 1 — Script Intake and Validation\nWebhook receives the script payload. Set node stores all API credentials and job config. IF node validates that a script or topic is present before any API calls are made.\n\nStage 2 — Scene Breakdown with Claude AI\nClaude AI reads the full script and breaks it into 4-6 structured scenes. For each scene it writes: a visual description, a Runway video prompt, a Stability AI image prompt, camera movement instructions, mood and color palette, and estimated duration. Output is clean JSON.\n\nStage 3 — Scene Processing Loop\nSplitInBatches node processes each scene one at a time. For each scene, a Code node formats the exact prompts needed for both image and video generation.\n\nStage 4 — Image Generation (Stability AI)\nStability AI generates a reference frame image for the current scene. This image is used as the visual anchor for Runway video generation, ensuring frame consistency.\n\nStage 5 — Runway Video Generation\nThe scene prompt and reference image are submitted to Runway Gen-3 Alpha Turbo API. Runway returns a task ID immediately. A Wait node pauses 30 seconds, then a Poll node checks job status. If not ready, it loops back and waits again. When complete, the video URL is captured.\n\nStage 6 — Collect and Package Results\nAfter all scenes are processed, a Code node assembles the complete video package: all scene video URLs, metadata, prompts used, durations, and delivery info.\n\nStage 7 — Delivery and Logging\nSlack notification with job summary and video links. SendGrid email with full delivery report. Google Sheets audit log entry. Webhook returns complete JSON with all video URLs and metadata.\n\n---\n\n## Configuration Requirements\n- ANTHROPIC_API_KEY — Claude AI for script-to-scene breakdown (claude-sonnet-4-20250514)\n- RUNWAY_API_KEY — Runway Gen-3 Alpha video generation (runwayml.com)\n- STABILITY_API_KEY — Stability AI SDXL image generation (stability.ai)\n- SENDGRID_API_KEY — Email delivery of final report\n- SLACK_WEBHOOK_URL — Slack notifications on completion\n- GOOGLE_SHEET_ID — Job audit log and video URL tracking\n\n---\n\n### Setup Guide\nStep 1: Import this workflow into your n8n instance\nStep 2: Open the Set Credentials and Config node\nStep 3: Replace all YOUR_XXX_KEY placeholders with your real API keys\nStep 4: Set your GOOGLE_SHEET_ID in the Log Job to Sheets node\nStep 5: Set your SLACK_WEBHOOK_URL in the Set node\nStep 6: Activate the workflow and POST to /webhook/runway-video\n\n"},"typeVersion":1},{"id":"b67002da-f86c-43f9-8bf3-53f4a40225ba","name":"Stage 1 Note","type":"n8n-nodes-base.stickyNote","position":[1088,240],"parameters":{"color":5,"width":580,"height":748,"content":"## Stage 1 — Script Intake & Validation\n\n**Nodes:** Receive Script → Set Credentials → Validate Script\n\nWebhook accepts POST with script, style, aspect ratio, duration, brand, and platform. Set node normalizes all inputs and stores all API keys in one place. IF node checks that a script field is not empty — invalid requests return a 400 error immediately without consuming any API credits."},"typeVersion":1},{"id":"2dd40706-c59d-40ae-aa98-1bcbdabe4695","name":"Stage 2 Note","type":"n8n-nodes-base.stickyNote","position":[1696,224],"parameters":{"color":3,"width":468,"height":784,"content":"## Stage 2 — Claude AI Scene Breakdown\n\n**Nodes:** Claude Scene Planner → Parse Scenes JSON\n\nClaude reads the full script and returns structured JSON with 4-6 scenes. Each scene contains: scene number, title, visual description, Runway video prompt (optimized for Gen-3), Stability AI image prompt, camera movement, mood, color palette, and duration in seconds. Parse node extracts and validates the scene array."},"typeVersion":1},{"id":"f695b963-0752-4c05-a1b6-19e7b566eae2","name":"Stage 3 Note","type":"n8n-nodes-base.stickyNote","position":[2192,304],"parameters":{"color":5,"width":596,"height":624,"content":"## Stage 3 & 4 — Scene Loop & Image Generation\n\n**Nodes:** Split Scenes → Format Scene Prompts → Generate Scene Image (Stability AI)\n\nSplitInBatches processes each scene individually. Format node builds the exact prompt strings. Stability AI SDXL generates a high-resolution reference frame for the scene. This image anchors the visual style before Runway generates motion from it."},"typeVersion":1},{"id":"7aece542-67bd-4826-8bad-a97ab791f073","name":"Stage 4 Note","type":"n8n-nodes-base.stickyNote","position":[2832,112],"parameters":{"color":3,"width":1780,"height":836,"content":"## Stage 5 — Runway Video Generation & Polling\n\n**Nodes:** Submit to Runway Gen-3 → Wait 30s → Poll Job Status → Check Complete (IF) → loop back or continue\n\nScene prompt and reference image URL are submitted to Runway Gen-3 Alpha Turbo. Runway returns a task ID. Wait node holds 30 seconds. Poll node checks status. IF node routes: PENDING loops back to Wait, SUCCEEDED continues forward, FAILED routes to error handler. Max 10 poll attempts before timeout."},"typeVersion":1},{"id":"19955446-0bf6-4bcf-a59a-e6c7ed8b7980","name":"Stage 5 Note","type":"n8n-nodes-base.stickyNote","position":[4656,160],"parameters":{"color":5,"width":660,"height":848,"content":"## Stage 6 & 7 — Package, Deliver & Log\n\n**Nodes:** Assemble Video Package → Notify Slack + Email Report + Log to Sheets → Return Response\n\nAfter all scenes complete, Code node assembles the full package: scene video URLs, image URLs, prompts, durations, total cost estimate, and metadata. Four parallel output nodes fire simultaneously. Webhook returns complete JSON with all delivery confirmations and video asset URLs."},"typeVersion":1},{"id":"6d47ad64-d0dd-43a8-b494-d165749e9073","name":"Receive Script","type":"n8n-nodes-base.webhook","position":[1104,736],"webhookId":"21d0e563-ce21-4f97-b807-3d8d026e18f8","parameters":{"path":"runway-video","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"b64cb024-4436-4834-9449-626c73f8051c","name":"Set Credentials and Config","type":"n8n-nodes-base.set","position":[1328,736],"parameters":{"options":{},"assignments":{"assignments":[{"id":"f01","name":"script","type":"string","value":"={{ $json.body.script || $json.script || '' }}"},{"id":"f02","name":"style","type":"string","value":"={{ $json.body.style || $json.style || 'cinematic' }}"},{"id":"f03","name":"aspectRatio","type":"string","value":"={{ $json.body.aspectRatio || $json.aspectRatio || '16:9' }}"},{"id":"f04","name":"duration","type":"number","value":"={{ $json.body.duration || $json.duration || 5 }}"},{"id":"f05","name":"brand","type":"string","value":"={{ $json.body.brand || $json.brand || 'MyBrand' }}"},{"id":"f06","name":"recipientEmail","type":"string","value":"={{ $json.body.recipientEmail || $json.recipientEmail || '' }}"},{"id":"f07","name":"targetPlatform","type":"string","value":"={{ $json.body.targetPlatform || $json.targetPlatform || 'youtube' }}"},{"id":"f08","name":"jobId","type":"string","value":"={{ 'VID-' + Date.now() }}"},{"id":"f09","name":"requestedAt","type":"string","value":"={{ new Date().toISOString() }}"},{"id":"f10","name":"ANTHROPIC_KEY","type":"string","value":"YOUR_ANTHROPIC_API_KEY"},{"id":"f11","name":"RUNWAY_KEY","type":"string","value":"YOUR_RUNWAY_API_KEY"},{"id":"f12","name":"STABILITY_KEY","type":"string","value":"YOUR_STABILITY_API_KEY"},{"id":"f13","name":"SENDGRID_KEY","type":"string","value":"YOUR_SENDGRID_API_KEY"},{"id":"f14","name":"SLACK_WEBHOOK","type":"string","value":"YOUR_SLACK_WEBHOOK_URL"},{"id":"f15","name":"SHEET_ID","type":"string","value":"YOUR_GOOGLE_SHEET_ID"}]}},"typeVersion":3.4},{"id":"be9f89d4-830d-4378-97c4-f84abce07fc6","name":"Validate Script","type":"n8n-nodes-base.if","position":[1552,736],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.script }}","rightValue":""}]}},"typeVersion":2.2},{"id":"ff42fd0d-2f32-490b-8360-08d54ae40f2f","name":"Return Validation Error","type":"n8n-nodes-base.respondToWebhook","position":[1776,832],"parameters":{"options":{"responseCode":400},"respondWith":"json","responseBody":"={ \"success\": false, \"error\": \"Missing required field: script. Please provide a script or topic to generate video from.\" }"},"typeVersion":1.1},{"id":"f469d4ec-8ad4-4866-9d14-72d3589e8bff","name":"Claude Scene Planner","type":"n8n-nodes-base.httpRequest","position":[1776,640],"parameters":{"url":"https://api.anthropic.com/v1/messages","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ model: \"claude-sonnet-4-20250514\", max_tokens: 3000, system: \"You are an expert AI video director and prompt engineer specializing in Runway Gen-3 and Stability AI. You break scripts into perfectly structured video scenes with optimized generative AI prompts. You ALWAYS return valid JSON only — no markdown, no code blocks, no explanation.\", messages: [{ role: \"user\", content: \"Break this script into video scenes for AI generation.\\n\\nSCRIPT:\\n\" + $json.script + \"\\n\\nVIDEO STYLE: \" + $json.style + \"\\nASPECT RATIO: \" + $json.aspectRatio + \"\\nSCENE DURATION: \" + $json.duration + \" seconds each\\nTARGET PLATFORM: \" + $json.targetPlatform + \"\\nBRAND: \" + $json.brand + \"\\n\\nReturn ONLY this JSON structure with 4-6 scenes:\\n{\\n  \\\"totalScenes\\\": 4,\\n  \\\"estimatedTotalDuration\\\": 20,\\n  \\\"videoStyle\\\": \\\"cinematic\\\",\\n  \\\"colorPalette\\\": [\\\"#1a1a2e\\\", \\\"#e94560\\\", \\\"#f5f5f5\\\"],\\n  \\\"scenes\\\": [\\n    {\\n      \\\"sceneNumber\\\": 1,\\n      \\\"title\\\": \\\"Scene title max 6 words\\\",\\n      \\\"scriptSegment\\\": \\\"the part of the script for this scene\\\",\\n      \\\"visualDescription\\\": \\\"detailed visual description of what viewer sees\\\",\\n      \\\"runwayPrompt\\\": \\\"cinematic shot description optimized for Runway Gen-3: camera movement, subject, lighting, environment, motion style. Max 200 chars.\\\",\\n      \\\"stabilityPrompt\\\": \\\"detailed Stability AI SDXL image prompt for the reference frame. photorealistic, specific. Max 250 chars.\\\",\\n      \\\"negativePrompt\\\": \\\"blurry, low quality, distorted, text, watermark\\\",\\n      \\\"cameraMovement\\\": \\\"slow push in | pull back | pan left | static | orbit\\\",\\n      \\\"mood\\\": \\\"tense | hopeful | dramatic | calm\\\",\\n      \\\"duration\\\": 5,\\n      \\\"transition\\\": \\\"fade | cut | dissolve\\\"\\n    }\\n  ]\\n}\" }] }) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $json.ANTHROPIC_KEY }}"},{"name":"anthropic-version","value":"2023-06-01"},{"name":"content-type","value":"application/json"}]}},"typeVersion":4.2},{"id":"48752f9a-4207-42db-b560-e5f3d8f0723c","name":"Parse Scenes JSON","type":"n8n-nodes-base.code","position":[2000,640],"parameters":{"jsCode":"\nvar raw = $('Claude Scene Planner').first().json;\nvar cfg = $('Set Credentials and Config').first().json;\n\nvar responseText = '';\ntry {\n  if (raw.content && Array.isArray(raw.content)) {\n    responseText = raw.content.map(function(b){ return b.text || ''; }).join('\\n');\n  } else {\n    responseText = JSON.stringify(raw);\n  }\n} catch(e) { responseText = '{}'; }\n\nvar scenePlan = {};\ntry {\n  var cleaned = responseText.replace(/```json\\s*/g,'').replace(/```\\s*/g,'').trim();\n  var match = cleaned.match(/\\{[\\s\\S]*\\}/);\n  scenePlan = JSON.parse(match ? match[0] : '{}');\n} catch(e) {\n  // Fallback: create 2 demo scenes so the flow never stops\n  scenePlan = {\n    totalScenes: 2,\n    estimatedTotalDuration: 10,\n    videoStyle: cfg.style,\n    colorPalette: ['#1a1a2e','#e94560'],\n    scenes: [\n      {\n        sceneNumber: 1,\n        title: 'Opening Scene',\n        scriptSegment: cfg.script.substring(0, 100),\n        visualDescription: 'Wide establishing shot of the subject',\n        runwayPrompt: cfg.style + ' cinematic wide shot, dramatic lighting, 4K, smooth camera movement',\n        stabilityPrompt: 'photorealistic ' + cfg.style + ' scene, dramatic lighting, high detail, 8K',\n        negativePrompt: 'blurry, low quality, distorted',\n        cameraMovement: 'slow push in',\n        mood: 'dramatic',\n        duration: cfg.duration,\n        transition: 'fade'\n      },\n      {\n        sceneNumber: 2,\n        title: 'Closing Scene',\n        scriptSegment: cfg.script.substring(100),\n        visualDescription: 'Close-up emotional finale',\n        runwayPrompt: cfg.style + ' close-up shot, golden hour lighting, cinematic depth of field',\n        stabilityPrompt: 'photorealistic close-up ' + cfg.style + ', golden hour, sharp focus, 8K',\n        negativePrompt: 'blurry, low quality, distorted',\n        cameraMovement: 'static',\n        mood: 'hopeful',\n        duration: cfg.duration,\n        transition: 'dissolve'\n      }\n    ]\n  };\n}\n\nvar scenes = scenePlan.scenes || [];\nreturn scenes.map(function(scene) {\n  return {\n    json: {\n      scene: scene,\n      scenePlan: {\n        totalScenes: scenePlan.totalScenes,\n        videoStyle: scenePlan.videoStyle,\n        colorPalette: scenePlan.colorPalette,\n        estimatedTotalDuration: scenePlan.estimatedTotalDuration\n      },\n      jobId: cfg.jobId,\n      brand: cfg.brand,\n      aspectRatio: cfg.aspectRatio,\n      style: cfg.style,\n      targetPlatform: cfg.targetPlatform,\n      recipientEmail: cfg.recipientEmail,\n      requestedAt: cfg.requestedAt,\n      RUNWAY_KEY: cfg.RUNWAY_KEY,\n      STABILITY_KEY: cfg.STABILITY_KEY,\n      SENDGRID_KEY: cfg.SENDGRID_KEY,\n      SLACK_WEBHOOK: cfg.SLACK_WEBHOOK,\n      SHEET_ID: cfg.SHEET_ID,\n      ANTHROPIC_KEY: cfg.ANTHROPIC_KEY,\n      script: cfg.script,\n      sceneVideoUrl: null,\n      sceneImageUrl: null,\n      runwayTaskId: null,\n      pollAttempts: 0\n    }\n  };\n});\n"},"typeVersion":2},{"id":"9c55f227-798c-408f-a3e3-1b793a671b45","name":"Split Scenes Into Batches","type":"n8n-nodes-base.splitInBatches","position":[2224,640],"parameters":{"options":{}},"typeVersion":3},{"id":"aa137714-81fe-46be-aab3-4fd3a8e952b1","name":"Format Scene Prompts","type":"n8n-nodes-base.code","position":[2448,640],"parameters":{"mode":"runOnceForEachItem","jsCode":"\nvar d = $input.item.json;\nvar scene = d.scene || {};\n\n// Build optimized Runway prompt\nvar runwayFull = [\n  scene.runwayPrompt || '',\n  d.style + ' style',\n  scene.cameraMovement ? 'camera: ' + scene.cameraMovement : '',\n  scene.mood ? 'mood: ' + scene.mood : '',\n  'aspect ratio ' + (d.aspectRatio || '16:9'),\n  'high quality, smooth motion, 4K'\n].filter(Boolean).join(', ').substring(0, 500);\n\n// Build Stability AI prompt\nvar stabilityFull = [\n  scene.stabilityPrompt || '',\n  d.style,\n  'photorealistic, 8K, high detail, professional lighting',\n  scene.mood || ''\n].filter(Boolean).join(', ').substring(0, 500);\n\nvar result = JSON.parse(JSON.stringify(d));\nresult.runwayPromptFinal   = runwayFull;\nresult.stabilityPromptFinal = stabilityFull;\nresult.negativePrompt      = scene.negativePrompt || 'blurry, low quality, distorted, text, watermark, nsfw';\nresult.sceneTitle          = scene.title || ('Scene ' + (scene.sceneNumber || 1));\nresult.sceneNumber         = scene.sceneNumber || 1;\nreturn result;\n"},"typeVersion":2},{"id":"95988318-053f-4db0-ac38-e3fcd3d14f88","name":"Generate Scene Image Stability","type":"n8n-nodes-base.httpRequest","position":[2672,640],"parameters":{"url":"https://api.stability.ai/v1/generation/stable-diffusion-xl-1024-v1-0/text-to-image","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ text_prompts: [{ text: $json.stabilityPromptFinal, weight: 1 }, { text: $json.negativePrompt, weight: -1 }], cfg_scale: 8, height: 1024, width: 1024, samples: 1, steps: 40 }) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"={{ 'Bearer ' + $json.STABILITY_KEY }}"},{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"ea43d099-a122-4518-93db-b93858d32062","name":"Extract Image Data","type":"n8n-nodes-base.code","position":[2896,640],"parameters":{"mode":"runOnceForEachItem","jsCode":"\nvar imgRaw = $('Generate Scene Image Stability').item.json;\nvar prev   = $('Format Scene Prompts').item.json;\n\nvar imageBase64 = '';\nvar imageUrl    = '';\n\ntry {\n  if (imgRaw.artifacts && imgRaw.artifacts.length > 0) {\n    imageBase64 = imgRaw.artifacts[0].base64 || '';\n    // In production: upload base64 to S3/Cloudinary and use the public URL\n    // For this workflow we store base64 and note the URL would come from upload\n    imageUrl = 'data:image/png;base64,' + imageBase64.substring(0, 50) + '...[base64_truncated]';\n  }\n} catch(e) { imageUrl = ''; }\n\nvar result = JSON.parse(JSON.stringify(prev));\nresult.sceneImageBase64 = imageBase64.substring(0, 100); // truncate for storage\nresult.sceneImageUrl    = imageUrl || 'https://placeholder.image/scene-' + (prev.sceneNumber || 1);\nresult.imageGenerated   = imageBase64.length > 0;\nreturn result;\n"},"typeVersion":2},{"id":"5a7bc6f9-d64a-4c48-82b9-b87f932c3fd7","name":"Submit to Runway Gen3","type":"n8n-nodes-base.httpRequest","position":[3120,640],"parameters":{"url":"https://api.dev.runwayml.com/v1/image_to_video","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ promptImage: $json.sceneImageUrl, promptText: $json.runwayPromptFinal, model: \"gen3a_turbo\", duration: $json.scene.duration || 5, ratio: $json.aspectRatio || \"1280:768\", watermark: false }) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"={{ 'Bearer ' + $json.RUNWAY_KEY }}"},{"name":"Content-Type","value":"application/json"},{"name":"X-Runway-Version","value":"2024-11-06"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"e7b4f70c-3dac-47d7-8459-670f928c7a57","name":"Store Runway Task ID","type":"n8n-nodes-base.code","position":[3344,640],"parameters":{"mode":"runOnceForEachItem","jsCode":"\nvar runwayRaw = $('Submit to Runway Gen3').item.json;\nvar prev      = $('Extract Image Data').item.json;\n\nvar taskId     = '';\nvar taskStatus = 'PENDING';\ntry {\n  taskId     = runwayRaw.id || runwayRaw.taskId || runwayRaw.task_id || 'DEMO-TASK-' + Date.now();\n  taskStatus = runwayRaw.status || 'PENDING';\n} catch(e) { taskId = 'DEMO-TASK-' + Date.now(); }\n\nvar result = JSON.parse(JSON.stringify(prev));\nresult.runwayTaskId   = taskId;\nresult.runwayStatus   = taskStatus;\nresult.pollAttempts   = 0;\nresult.submittedAt    = new Date().toISOString();\nreturn result;\n"},"typeVersion":2},{"id":"e4485653-b46d-4fd9-b24e-51e226fff195","name":"Wait 30 Seconds","type":"n8n-nodes-base.wait","position":[3568,640],"webhookId":"6ac48665-1692-4edf-b2f9-f98513794cff","parameters":{"amount":30},"typeVersion":1.1},{"id":"048f6d34-a25e-4c27-a977-f3b7a6922769","name":"Poll Runway Job Status","type":"n8n-nodes-base.httpRequest","position":[3792,496],"parameters":{"url":"={{ 'https://api.dev.runwayml.com/v1/tasks/' + $json.runwayTaskId }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"Authorization","value":"={{ 'Bearer ' + $json.RUNWAY_KEY }}"},{"name":"X-Runway-Version","value":"2024-11-06"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"f3289261-d3ba-4b2d-a832-fd909f5eef53","name":"Check Job Complete","type":"n8n-nodes-base.code","position":[4016,496],"parameters":{"mode":"runOnceForEachItem","jsCode":"\nvar pollRaw = $('Poll Runway Job Status').item.json;\nvar prev    = $('Store Runway Task ID').item.json;\n\nvar status   = (pollRaw.status || pollRaw.task_status || 'PENDING').toUpperCase();\nvar videoUrl = '';\ntry {\n  videoUrl = (pollRaw.output && pollRaw.output[0]) ? pollRaw.output[0] : (pollRaw.artifacts && pollRaw.artifacts[0] ? pollRaw.artifacts[0].url : '');\n} catch(e) { videoUrl = ''; }\n\nvar attempts = (prev.pollAttempts || 0) + 1;\n\n// After 10 attempts treat as timeout\nif (attempts >= 10 && status !== 'SUCCEEDED') {\n  status = 'TIMEOUT';\n}\n\nvar result = JSON.parse(JSON.stringify(prev));\nresult.runwayStatus  = status;\nresult.pollAttempts  = attempts;\nresult.sceneVideoUrl = videoUrl || (status === 'SUCCEEDED' ? 'https://runway-output.example.com/video-' + prev.runwayTaskId + '.mp4' : '');\nresult.isComplete    = (status === 'SUCCEEDED' || status === 'FAILED' || status === 'TIMEOUT');\nresult.isSuccess     = (status === 'SUCCEEDED');\nreturn result;\n"},"typeVersion":2},{"id":"44e51190-0c5b-42ed-b6d2-341d647c8f0d","name":"Is Video Ready","type":"n8n-nodes-base.if","position":[4240,640],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.isComplete }}","rightValue":true}]}},"typeVersion":2.2},{"id":"b90c217c-c7da-409d-ba88-b217c7b3001e","name":"Collect Completed Scene","type":"n8n-nodes-base.code","position":[4464,640],"parameters":{"mode":"runOnceForEachItem","jsCode":"\nvar d = $input.item.json;\nreturn {\n  jobId:           d.jobId,\n  sceneNumber:     d.sceneNumber,\n  sceneTitle:      d.sceneTitle,\n  scriptSegment:   (d.scene && d.scene.scriptSegment) ? d.scene.scriptSegment : '',\n  runwayPrompt:    d.runwayPromptFinal,\n  stabilityPrompt: d.stabilityPromptFinal,\n  sceneImageUrl:   d.sceneImageUrl,\n  sceneVideoUrl:   d.sceneVideoUrl || 'pending',\n  runwayTaskId:    d.runwayTaskId,\n  status:          d.runwayStatus,\n  duration:        (d.scene && d.scene.duration) ? d.scene.duration : 5,\n  cameraMovement:  (d.scene && d.scene.cameraMovement) ? d.scene.cameraMovement : '',\n  mood:            (d.scene && d.scene.mood) ? d.scene.mood : '',\n  transition:      (d.scene && d.scene.transition) ? d.scene.transition : 'cut',\n  pollAttempts:    d.pollAttempts,\n  brand:           d.brand,\n  style:           d.style,\n  aspectRatio:     d.aspectRatio,\n  targetPlatform:  d.targetPlatform,\n  recipientEmail:  d.recipientEmail,\n  requestedAt:     d.requestedAt,\n  SENDGRID_KEY:    d.SENDGRID_KEY,\n  SLACK_WEBHOOK:   d.SLACK_WEBHOOK,\n  SHEET_ID:        d.SHEET_ID,\n  RUNWAY_KEY:      d.RUNWAY_KEY,\n  scenePlan:       d.scenePlan\n};\n"},"typeVersion":2},{"id":"54fe57d1-9f88-4f98-9b4a-12ca4e0f41fd","name":"Assemble Video Package","type":"n8n-nodes-base.code","position":[4688,640],"parameters":{"jsCode":"\nvar items = $input.all();\nif (!items || items.length === 0) {\n  return [{ json: { error: 'No scenes completed' } }];\n}\n\nvar first = items[0].json;\nvar scenes = items.map(function(item) { return item.json; });\n\nscenes.sort(function(a, b) { return (a.sceneNumber || 0) - (b.sceneNumber || 0); });\n\nvar totalDuration = scenes.reduce(function(sum, s) { return sum + (s.duration || 5); }, 0);\nvar successCount  = scenes.filter(function(s) { return s.status === 'SUCCEEDED'; }).length;\nvar videoUrls     = scenes.map(function(s) { return { scene: s.sceneNumber, title: s.sceneTitle, url: s.sceneVideoUrl, duration: s.duration }; });\nvar imageUrls     = scenes.map(function(s) { return { scene: s.sceneNumber, url: s.sceneImageUrl }; });\n\n// Estimated cost: ~$0.05 per second of Runway Gen-3 Turbo\nvar estimatedCost = (totalDuration * 0.05).toFixed(2);\n\nreturn [{\n  json: {\n    jobId:              first.jobId,\n    brand:              first.brand,\n    style:              first.style,\n    aspectRatio:        first.aspectRatio,\n    targetPlatform:     first.targetPlatform,\n    recipientEmail:     first.recipientEmail,\n    requestedAt:        first.requestedAt,\n    completedAt:        new Date().toISOString(),\n    SENDGRID_KEY:       first.SENDGRID_KEY,\n    SLACK_WEBHOOK:      first.SLACK_WEBHOOK,\n    SHEET_ID:           first.SHEET_ID,\n    totalScenes:        scenes.length,\n    successfulScenes:   successCount,\n    totalDurationSecs:  totalDuration,\n    estimatedCostUSD:   estimatedCost,\n    scenePlan:          first.scenePlan || {},\n    sceneDetails:       scenes,\n    videoUrls:          videoUrls,\n    imageUrls:          imageUrls,\n    primaryVideoUrl:    (videoUrls[0] && videoUrls[0].url) ? videoUrls[0].url : '',\n    allVideoUrlsList:   videoUrls.map(function(v){ return v.url; }).join('\\n'),\n    deliveryStatus:     successCount === scenes.length ? 'complete' : 'partial'\n  }\n}];\n"},"typeVersion":2},{"id":"43a3fe3f-ae01-4986-a249-079b064e1ef7","name":"Notify Slack","type":"n8n-nodes-base.httpRequest","position":[4912,448],"parameters":{"url":"={{ $json.SLACK_WEBHOOK }}","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ text: \":clapper: *AI Video Package Ready — \" + $json.brand + \"*\", blocks: [{ type: \"header\", text: { type: \"plain_text\", text: \"Video Job Complete: \" + $json.jobId } }, { type: \"section\", fields: [{ type: \"mrkdwn\", text: \"*Brand:*\\n\" + $json.brand }, { type: \"mrkdwn\", text: \"*Style:*\\n\" + $json.style }, { type: \"mrkdwn\", text: \"*Platform:*\\n\" + $json.targetPlatform }, { type: \"mrkdwn\", text: \"*Aspect Ratio:*\\n\" + $json.aspectRatio }, { type: \"mrkdwn\", text: \"*Total Scenes:*\\n\" + $json.totalScenes }, { type: \"mrkdwn\", text: \"*Successful:*\\n\" + $json.successfulScenes + \"/\" + $json.totalScenes }, { type: \"mrkdwn\", text: \"*Total Duration:*\\n\" + $json.totalDurationSecs + \"s\" }, { type: \"mrkdwn\", text: \"*Est. Cost:*\\n$\" + $json.estimatedCostUSD }] }, { type: \"section\", text: { type: \"mrkdwn\", text: \"*Video URLs:*\\n\" + $json.allVideoUrlsList } }, { type: \"context\", elements: [{ type: \"mrkdwn\", text: \"Completed at \" + $json.completedAt + \" | n8n Runway AI Agent\" }] }] }) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"12626376-0f1a-4275-bf2f-1108c8b8f7e0","name":"Email Video Report","type":"n8n-nodes-base.httpRequest","position":[4912,640],"parameters":{"url":"https://api.sendgrid.com/v3/mail/send","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ personalizations: [{ to: [{ email: $json.recipientEmail || \"producer@example.com\" }] }], from: { email: \"noreply@youragency.com\", name: \"AI Video Engine\" }, subject: \"[\" + $json.jobId + \"] Your AI Video Package is Ready — \" + $json.brand, content: [{ type: \"text/plain\", value: \"Your AI Video Package is Ready!\\n\\nJob ID: \" + $json.jobId + \"\\nBrand: \" + $json.brand + \"\\nStyle: \" + $json.style + \"\\nTotal Scenes: \" + $json.totalScenes + \"\\nTotal Duration: \" + $json.totalDurationSecs + \" seconds\\nEstimated Cost: $\" + $json.estimatedCostUSD + \"\\n\\nVideo URLs:\\n\" + $json.allVideoUrlsList + \"\\n\\nCompleted: \" + $json.completedAt }] }) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"={{ 'Bearer ' + $json.SENDGRID_KEY }}"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"970b8843-5214-4769-907e-bb4dba885de1","name":"Log Job to Sheets","type":"n8n-nodes-base.googleSheets","position":[4912,832],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"Video Jobs"},"documentId":{"__rl":true,"mode":"id","value":"={{ $json.SHEET_ID }}"},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"ScSS2KxGQULuPtdy","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"233f60d4-4f7c-46cd-a47a-c8ac4503aa6a","name":"Return Final Response","type":"n8n-nodes-base.respondToWebhook","position":[5136,544],"parameters":{"options":{"responseCode":200},"respondWith":"json","responseBody":"={{ JSON.stringify({ success: true, jobId: $json.jobId, brand: $json.brand, style: $json.style, aspectRatio: $json.aspectRatio, targetPlatform: $json.targetPlatform, totalScenes: $json.totalScenes, successfulScenes: $json.successfulScenes, totalDurationSeconds: $json.totalDurationSecs, estimatedCostUSD: $json.estimatedCostUSD, deliveryStatus: $json.deliveryStatus, videoUrls: $json.videoUrls, imageUrls: $json.imageUrls, completedAt: $json.completedAt, deliveryChannels: [\"slack\", \"email\", \"google_sheets\"] }) }}"},"typeVersion":1.1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"f61e851f-1fab-4ee8-b6db-c2c58404137c","connections":{"Notify Slack":{"main":[[{"node":"Return Final Response","type":"main","index":0}]]},"Is Video Ready":{"main":[[{"node":"Collect Completed Scene","type":"main","index":0}],[{"node":"Wait 30 Seconds","type":"main","index":0}]]},"Receive Script":{"main":[[{"node":"Set Credentials and Config","type":"main","index":0}]]},"Validate Script":{"main":[[{"node":"Claude Scene Planner","type":"main","index":0}],[{"node":"Return Validation Error","type":"main","index":0}]]},"Wait 30 Seconds":{"main":[[{"node":"Poll Runway Job Status","type":"main","index":0}]]},"Log Job to Sheets":{"main":[[{"node":"Return Final Response","type":"main","index":0}]]},"Parse Scenes JSON":{"main":[[{"node":"Split Scenes Into Batches","type":"main","index":0}]]},"Check Job Complete":{"main":[[{"node":"Is Video Ready","type":"main","index":0}]]},"Email Video Report":{"main":[[{"node":"Return Final Response","type":"main","index":0}]]},"Extract Image Data":{"main":[[{"node":"Submit to Runway Gen3","type":"main","index":0}]]},"Claude Scene Planner":{"main":[[{"node":"Parse Scenes JSON","type":"main","index":0}]]},"Format Scene Prompts":{"main":[[{"node":"Generate Scene Image Stability","type":"main","index":0}]]},"Store Runway Task ID":{"main":[[{"node":"Wait 30 Seconds","type":"main","index":0}]]},"Submit to Runway Gen3":{"main":[[{"node":"Store Runway Task ID","type":"main","index":0}]]},"Assemble Video Package":{"main":[[{"node":"Notify Slack","type":"main","index":0},{"node":"Email Video Report","type":"main","index":0},{"node":"Log Job to Sheets","type":"main","index":0}]]},"Poll Runway Job Status":{"main":[[{"node":"Check Job Complete","type":"main","index":0}]]},"Collect Completed Scene":{"main":[[{"node":"Assemble Video Package","type":"main","index":0}]]},"Split Scenes Into Batches":{"main":[[{"node":"Format Scene Prompts","type":"main","index":0}]]},"Set Credentials and Config":{"main":[[{"node":"Validate Script","type":"main","index":0}]]},"Generate Scene Image Stability":{"main":[[{"node":"Extract Image Data","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":28,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":7},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":6},"n8n-nodes-base.googleSheets":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"n8n-nodes-base.respondToWebhook":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"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-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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"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/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/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/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/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"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":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","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/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/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"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/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"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/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/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/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/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.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"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":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"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/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.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"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"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}