{"workflow":{"id":14881,"name":"Generate Seedance AI lighting look dev variations with review via Drive, Notion, and Slack","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-04-08T07:49:31.045Z","description":"## 📘 Description\nThis workflow is an AI-powered lighting and look development pipeline designed for VFX production. It transforms a single lighting brief into multiple high-quality cinematic lighting references using AI, automates rendering, organizes assets, builds a visual lookbook, and delivers structured outputs to the lighting team—bridging the gap between creative lighting direction and CG execution.\n\n## ⚙️ Step-by-Step Flow\nThe workflow begins with a form-based trigger that acts as the lighting brief intake layer, allowing artists or supervisors to submit structured inputs such as shot code, sequence, project ID, plate image, lighting mood description, scene type, and CG subject type. This input flows into a validation and normalization stage, where required fields are verified, scene and subject types are mapped into standardized pipeline values, and the payload is structured for downstream processing. The system then performs prompt engineering and expands the single lighting brief into five distinct lighting variations: a key light setup for strong directional lighting, a soft diffuse setup for ambient lighting conditions, a high-contrast dramatic setup for stylized visuals, a plate-matched reference for accurate scene integration, and a final comp-grade preview simulating cinematic color grading. Each variation is enriched with detailed lighting instructions, scene context, and subject-specific attributes to guide realistic AI generation.\n\nAt the core of the pipeline, an image-to-video rendering layer constructs structured API requests and submits each variation as an independent job to the Seedance AI model, always using the plate image as a reference to maintain lighting consistency with the scene. A polling mechanism continuously monitors each job at regular intervals, ensuring that processing advances only after successful completion. Once rendering is complete, a metadata layer structures detailed information for each asset, including video URLs, lighting types, scene context, subject details, and generation timestamps, along with tagging for pipeline tracking and review status.\n\nThe asset pipeline then downloads the generated lighting reference videos and uploads them to Google Drive using a structured naming convention aligned with shot and variation identifiers. An aggregation layer consolidates all variations into a unified output and dynamically generates an HTML-based lookbook, presenting all lighting setups in a structured visual format with preview links, technical details, and usage guidance. This lookbook is stored in a Notion database for centralized tracking and documentation. Finally, an AI-driven messaging layer generates a clean, professional Slack notification summarizing the lighting brief, listing all generated variations with preview links, and prompting the lighting team to review and select the preferred direction before proceeding with CG lighting setup—ensuring seamless collaboration between creative intent and technical execution.\n\n## 🚨 Error Handling\n• Global error trigger across the workflow\n • Sends instant Slack alerts with failure details\n • Prevents silent failures and ensures production reliability\n\n## 🧩 Prerequisites\n• Seedance API (AI video generation)\n • n8n Form Trigger (input layer)\n • Google Drive OAuth2 (asset storage)\n • Notion API (lookbook tracking)\n • Slack OAuth2 (team notifications)\n • OpenAI API (AI-generated Slack messaging)\n\n## 💡 Key Benefits\n✔ Rapid lighting look development with multiple variations instantly\n ✔ Structured prompt engineering for consistent cinematic outputs\n ✔ Automated asset storage and organized lookbook generation\n ✔ AI-generated team communication for faster decision-making\n ✔ Seamless integration between creative direction and CG execution\n ✔ Scalable pipeline for production-ready lighting workflows\n\n## 👥 Perfect For\n- Lighting artists and look development teams\n-  VFX supervisors and creative directors\n-  CG and rendering pipelines\n-  Film and post-production studios\n-  AI-assisted lighting and visualization workflows","workflow":{"id":"KKMpzsD5MVzOnaPY","meta":{"instanceId":"8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177"},"name":"Seedance AI Lighting Look Dev with Multi-Variation Rendering & Review Workflow","tags":[],"nodes":[{"id":"375eb5ba-b93e-4fcb-9e79-61a22345ab42","name":"n8n Form: Lighting Brief","type":"n8n-nodes-base.formTrigger","position":[864,624],"webhookId":"08f29ded-c0d3-4878-a8da-0a10610b282c","parameters":{"options":{},"formTitle":"Lighting & Look Dev Reference Request","formFields":{"values":[{"fieldLabel":"Shot Code","placeholder":"SQ010_SH020","requiredField":true},{"fieldLabel":"Sequence Code","placeholder":"SQ010"},{"fieldLabel":"Project ID","placeholder":"PROJ-001"},{"fieldLabel":"Plate Image URL","placeholder":"https://your-server.com/onset_still.jpg","requiredField":true},{"fieldType":"textarea","fieldLabel":"Lighting Mood Description","placeholder":"Overcast soft light with cool blue shadows, golden hour warmth on edges, cinematic film look","requiredField":true},{"fieldType":"dropdown","fieldLabel":"Scene Type","fieldOptions":{"values":[{"option":"Exterior Day"},{"option":"Exterior Night"},{"option":"Interior Day"},{"option":"Interior Night"},{"option":"Golden Hour"},{"option":"Overcast"},{"option":"Storm / Dramatic"}]},"requiredField":true},{"fieldType":"dropdown","fieldLabel":"CG Subject Type","fieldOptions":{"values":[{"option":"Character / Human"},{"option":"Vehicle"},{"option":"Creature"},{"option":"Hard Surface Object"},{"option":"Environment / Set Extension"}]},"requiredField":true},{"fieldType":"email","fieldLabel":"Supervisor Email","placeholder":"user@example.com"}]},"formDescription":"Submit a lighting brief to generate AI look development references for your sequence."},"typeVersion":2.2},{"id":"59bf9a33-20d9-43d0-91f6-e73204fd07a3","name":"Validate & Extract Lighting Brief","type":"n8n-nodes-base.code","position":[1104,624],"parameters":{"jsCode":"const form = $input.first().json;\n\nconst sceneTypeMap = {\n  'Exterior Day':      'ext_day',\n  'Exterior Night':    'ext_night',\n  'Interior Day':      'int_day',\n  'Interior Night':    'int_night',\n  'Golden Hour':       'golden_hour',\n  'Overcast':          'overcast',\n  'Storm / Dramatic':  'storm'\n};\n\nconst cgSubjectMap = {\n  'Character / Human':          'character',\n  'Vehicle':                    'vehicle',\n  'Creature':                   'creature',\n  'Hard Surface Object':        'hard_surface',\n  'Environment / Set Extension':'environment'\n};\n\nconst data = {\n  shotCode:          (form['Shot Code'] || '').trim(),\n  sequenceCode:      (form['Sequence Code'] || form['Shot Code']?.split('_')[0] || 'SEQ-000').trim(),\n  projectId:         (form['Project ID'] || 'PROJ-001').trim(),\n  plateImageUrl:     (form['Plate Image URL'] || '').trim(),\n  moodDescription:   (form['Lighting Mood Description'] || '').trim(),\n  sceneType:         sceneTypeMap[form['Scene Type']] || 'ext_day',\n  cgSubjectType:     cgSubjectMap[form['CG Subject Type']] || 'character',\n  supervisorEmail:   (form['Supervisor Email'] || '').trim(),\n  requestTimestamp:  new Date().toISOString()\n};\n\nif (!data.shotCode) throw new Error('Shot Code is required');\nif (!data.plateImageUrl) throw new Error('Plate Image URL is required');\nif (!data.moodDescription) throw new Error('Lighting Mood Description is required');\n\nreturn [{ json: data }];"},"typeVersion":2},{"id":"c2905198-c1be-4330-80bf-e90859468603","name":"Fan-Out: 5 Lighting Variations","type":"n8n-nodes-base.code","position":[1344,624],"parameters":{"jsCode":"const d = $input.first().json;\nconst mood = d.moodDescription;\nconst scene = d.sceneType;\nconst subject = d.cgSubjectType;\n\nconst variations = [\n  {\n    variantId:   'LLD-KEY',\n    lightType:   'key_light',\n    label:       'Key Light Setup',\n    lightIcon:   '☀️',\n    safePrompt:  JSON.stringify(`${mood}. Strong single key light source from upper left at 45 degrees, deep shadows on opposite side, rim light separating subject from background. CG ${subject} on neutral grey turntable, ${scene} lighting conditions. Photorealistic look development reference, cinema quality --duration 5 --camerafixed true`).slice(1,-1)\n  },\n  {\n    variantId:   'LLD-SOFT',\n    lightType:   'soft_diffuse',\n    label:       'Soft Diffuse Setup',\n    lightIcon:   '🌥️',\n    safePrompt:  JSON.stringify(`${mood}. Overcast sky dome lighting, no hard shadows, soft wrap light from all directions, subtle ambient occlusion in crevices. CG ${subject} on neutral grey turntable, ${scene} lighting conditions. Photorealistic look development reference, cinema quality --duration 5 --camerafixed true`).slice(1,-1)\n  },\n  {\n    variantId:   'LLD-DRAM',\n    lightType:   'dramatic_contrast',\n    label:       'High Contrast / Dramatic',\n    lightIcon:   '🎭',\n    safePrompt:  JSON.stringify(`${mood}. High contrast dramatic lighting, deep blacks, strong highlights, noir-inspired single source from side. CG ${subject} on neutral grey turntable, ${scene} lighting conditions. Photorealistic look development reference, cinema quality --duration 5 --camerafixed true`).slice(1,-1)\n  },\n  {\n    variantId:   'LLD-PLATE',\n    lightType:   'plate_match',\n    label:       'Plate Match Reference',\n    lightIcon:   '🎬',\n    safePrompt:  JSON.stringify(`${mood}. Lighting precisely matched to the reference plate photograph provided — same colour temperature, same shadow direction, same light intensity and falloff. CG ${subject} composited into scene, matching all plate lighting exactly. Photorealistic VFX look development reference --duration 5 --camerafixed true`).slice(1,-1)\n  },\n  {\n    variantId:   'LLD-COMP',\n    lightType:   'comp_grade',\n    label:       'Comp Grade Preview',\n    lightIcon:   '🎨',\n    safePrompt:  JSON.stringify(`${mood}. Final comp-graded look with colour correction, film grain, lens vignette, chromatic aberration, colour grade matching ${scene} aesthetic. CG ${subject} fully integrated into environment. Cinematic final frame look development reference --duration 5 --camerafixed true`).slice(1,-1)\n  }\n];\n\nreturn variations.map(v => ({ json: { ...v, ...d } }));"},"typeVersion":2},{"id":"c064167b-db01-4d96-a078-c064a893bfee","name":"Build Lighting Request Body","type":"n8n-nodes-base.code","position":[1584,624],"parameters":{"jsCode":"const input = $input.first().json;\n\nconst body = {\n  model: 'seedance-1-5-pro-251215',\n  content: [\n    { type: 'text', text: input.safePrompt },\n    { type: 'image_url', image_url: { url: input.plateImageUrl } }\n  ],\n  generate_audio: false,\n  ratio: '16:9',\n  duration: 5,\n  watermark: false\n};\n\nreturn [{\n  json: {\n    ...input,\n    requestBody: JSON.stringify(body),\n    mode: 'image_to_video'\n  }\n}];"},"typeVersion":2},{"id":"454e12e0-aae0-4d4c-b718-47fdd3a063cd","name":"Seedance: Generate Lighting Ref","type":"n8n-nodes-base.httpRequest","position":[1824,624],"parameters":{"method":"POST","options":{},"jsonBody":"={{ JSON.parse($json.requestBody) }}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization"},{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.3},{"id":"a1ca548b-c755-4dd8-b886-2edaec700e82","name":"Merge Lighting Job ID + Metadata","type":"n8n-nodes-base.code","position":[2064,624],"parameters":{"jsCode":"const httpResult = $input.first().json;\nconst variantData = $('Build Lighting Request Body').first().json;\nreturn [{ json: { ...variantData, id: httpResult.id, jobStatus: httpResult.status } }];"},"typeVersion":2},{"id":"a427d110-7600-4374-9869-2c36464f5556","name":"Poll: Check Lighting Job Status","type":"n8n-nodes-base.httpRequest","position":[2304,624],"parameters":{"url":"=","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"Authorization"}]}},"typeVersion":4.3},{"id":"1f4cc5a1-630c-498a-803f-73f5763fe3fe","name":"Wait 20s","type":"n8n-nodes-base.wait","position":[2784,848],"webhookId":"lld-wait-webhook-001","parameters":{"amount":20},"typeVersion":1.1},{"id":"79c42c07-2566-466d-afd1-dcb6506e11f9","name":"Lighting Render Complete?","type":"n8n-nodes-base.if","position":[2544,656],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"lld-cond-001","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"succeeded"}]}},"typeVersion":2},{"id":"c161fcde-2468-4986-841a-fc55ace2f065","name":"Build Lighting Asset Metadata","type":"n8n-nodes-base.code","position":[2864,640],"parameters":{"jsCode":"const input = $input.first().json;\nconst variantData = $('Merge Lighting Job ID + Metadata').first().json;\n\nlet videoUrl = null;\nif (input.content && input.content.video_url) {\n  videoUrl = input.content.video_url;\n}\nif (!videoUrl) {\n  videoUrl = input.output_url || input.video_url || `URL not found. Job ID: ${input.id}`;\n}\n\nreturn [{\n  json: {\n    variantId:        variantData.variantId,\n    lightType:        variantData.lightType,\n    lightIcon:        variantData.lightIcon,\n    label:            variantData.label,\n    shotCode:         variantData.shotCode,\n    sequenceCode:     variantData.sequenceCode,\n    projectId:        variantData.projectId,\n    videoUrl:         videoUrl,\n    plateImageUrl:    variantData.plateImageUrl,\n    moodDescription:  variantData.moodDescription,\n    sceneType:        variantData.sceneType,\n    cgSubjectType:    variantData.cgSubjectType,\n    supervisorEmail:  variantData.supervisorEmail,\n    jobId:            input.id,\n    resolution:       input.resolution,\n    duration:         input.duration,\n    generatedAt:      new Date().toISOString(),\n    tags: {\n      asset_type:    'lighting_lookdev',\n      light_type:    variantData.lightType,\n      scene_type:    variantData.sceneType,\n      cg_subject:    variantData.cgSubjectType,\n      shot_code:     variantData.shotCode,\n      ai_generated:  true,\n      review_status: 'pending_review',\n      workflow:      'lighting_lookdev_builder'\n    }\n  }\n}];"},"typeVersion":2},{"id":"06443249-3d4d-47a2-9d6c-4e0a66cbd470","name":"Download Lighting Ref Video","type":"n8n-nodes-base.httpRequest","position":[3104,640],"parameters":{"url":"={{ $json.videoUrl }}","options":{"response":{"response":{"responseFormat":"file"}}}},"typeVersion":4.3},{"id":"2a92844c-9e37-475e-92e0-df2cb1b1bd9a","name":"Google Drive: Upload Lighting Ref","type":"n8n-nodes-base.googleDrive","position":[3376,640],"parameters":{"name":"={{ $json.shotCode }}_lighting_{{ $json.lightType }}_{{ $json.variantId }}.mp4","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"list","value":"1fL57MP1QWsF0O_n7WuqfzJ0hO6I9Csrh","cachedResultUrl":"https://drive.google.com/drive/folders/1fL57MP1QWsF0O_n7WuqfzJ0hO6I9Csrh","cachedResultName":"Simulation FX Concept Generator "}},"credentials":{"googleDriveOAuth2Api":{"id":"credential-id","name":"Automations.ai"}},"typeVersion":3},{"id":"c8b347e6-ee4e-41b8-a06e-307358816665","name":"Aggregate + Build Lookbook","type":"n8n-nodes-base.code","position":[3632,640],"parameters":{"jsCode":"const items = $input.all();\nconst metaItems = $('Build Lighting Asset Metadata').all();\n\n// Build lookbook HTML content for Confluence\nconst lookbookRows = metaItems.map(item => {\n  const d = item.json;\n  return `<tr>\n    <td><strong>${d.lightIcon} ${d.label}</strong></td>\n    <td>${d.lightType}</td>\n    <td><a href=\"${d.videoUrl}\">Watch Reference</a></td>\n    <td>${d.resolution || '720p'}</td>\n    <td>${d.generatedAt}</td>\n  </tr>`;\n}).join('\\n');\n\nconst lookbookHtml = `\n<h1>🎬 Lighting Look Development – ${metaItems[0].json.shotCode}</h1>\n<p><strong>Sequence:</strong> ${metaItems[0].json.sequenceCode} | <strong>Project:</strong> ${metaItems[0].json.projectId}</p>\n<p><strong>Scene Type:</strong> ${metaItems[0].json.sceneType} | <strong>CG Subject:</strong> ${metaItems[0].json.cgSubjectType}</p>\n<p><strong>Lighting Mood:</strong> ${metaItems[0].json.moodDescription}</p>\n<p><strong>Reference Plate:</strong> <a href=\"${metaItems[0].json.plateImageUrl}\">View Plate</a></p>\n<h2>Generated Lighting Variations</h2>\n<table>\n  <thead>\n    <tr><th>Variation</th><th>Light Type</th><th>Video</th><th>Resolution</th><th>Generated</th></tr>\n  </thead>\n  <tbody>\n    ${lookbookRows}\n  </tbody>\n</table>\n<h2>Usage Notes</h2>\n<p>These AI-generated references are for look development guidance only. Use as visual targets when setting up CG lighting rigs. Match colour temperature, shadow direction, and light intensity to the selected option.</p>\n<p><em>Generated by AI Lighting Look Dev Builder — ${new Date().toISOString()}</em></p>\n`;\n\nconst slackLines = metaItems.map(item => {\n  const d = item.json;\n  return `${d.lightIcon} *${d.label}* (${d.variantId})\\n> 🎬 <${d.videoUrl}|Watch Reference>\\n> 💡 Type: ${d.lightType}\\n> 📅 ${d.generatedAt}`;\n}).join('\\n\\n');\n\nconst first = metaItems[0].json;\n\nreturn [{\n  json: {\n    shotCode:        first.shotCode,\n    sequenceCode:    first.sequenceCode,\n    projectId:       first.projectId,\n    moodDescription: first.moodDescription,\n    sceneType:       first.sceneType,\n    cgSubjectType:   first.cgSubjectType,\n    supervisorEmail: first.supervisorEmail,\n    plateImageUrl:   first.plateImageUrl,\n    lookbookHtml:    lookbookHtml,\n    slackLines:      slackLines,\n    totalVariations: metaItems.length,\n    generatedAt:     new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"aa2478cb-3436-443a-9b42-da96ab41d89b","name":"Slack: Notify Lighting Team","type":"n8n-nodes-base.slack","position":[4256,640],"webhookId":"19c5b5da-a434-42c3-a60a-5ce37bd23c7e","parameters":{"text":"={{ $json.message.content }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C0ANFAL4WJ2","cachedResultName":"social"},"otherOptions":{},"authentication":"oAuth2"},"typeVersion":2.3},{"id":"3eab15cf-4cbc-44cc-bb13-1f7a42f953fd","name":"On Workflow Error","type":"n8n-nodes-base.errorTrigger","position":[864,1120],"parameters":{},"typeVersion":1},{"id":"8ef92e9d-57b9-400b-8b36-67ffa6853f74","name":"Slack: Error Alert","type":"n8n-nodes-base.slack","position":[1104,1120],"webhookId":"d3de18f6-0f62-4960-bd7f-6ff7ca38f75d","parameters":{"text":"=❌ *Lighting Look Dev Generator Failed*\n\nError: {{ $json.message }}\nTime: {{ new Date().toISOString() }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C0ANFAL4WJ2","cachedResultName":"social"},"otherOptions":{},"authentication":"oAuth2"},"typeVersion":2.3},{"id":"f3cab4af-4ffc-41f4-81ca-762adfe6adb2","name":"AI - Generate the slack message","type":"@n8n/n8n-nodes-langchain.openAi","position":[3856,640],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"GPT-4O-MINI"},"options":{"maxTokens":300,"temperature":0.7},"messages":{"values":[{"role":"system","content":"You are a VFX production assistant. Your job is to write a clear, professional Slack message for a lighting team when their AI look development references are ready. \n\nRules:\n- Write in a concise, professional tone\n- Use Slack markdown formatting (bold with *asterisks*, code with backticks)\n- Include all the key details: shot code, mood, scene type, variations ready\n- Keep it scannable — use line breaks and emoji for visual hierarchy\n- End with a clear call to action for the team\n- Never include raw HTML, JSON, or technical URLs in the message\n- Output ONLY the Slack message text, nothing else"},{"content":"=Generate a Slack notification message for the lighting team using this data:\n\nShot Code: {{ $json.shotCode }}\nSequence: {{ $json.sequenceCode }}\nProject: {{ $json.projectId }}\nScene Type: {{ $json.sceneType }}\nCG Subject: {{ $json.cgSubjectType }}\nLighting Mood: {{ $json.moodDescription }}\nTotal Variations Generated: {{ $json.totalVariations }}\nGenerated At: {{ $json.generatedAt }}\nSupervisor Email: {{ $json.supervisorEmail }}\n\nVariation Details:\n{{ $json.slackLines }}\n\nWrite a Slack message that tells the lighting team their look dev references are ready, summarises the key lighting details, lists the variations with their watch links, and asks them to review and pick their preferred direction before starting the CG lighting rig."}]}},"typeVersion":1.7},{"id":"b1464e45-ac82-4f0b-8347-b0a1f2ba6ff4","name":"Record the log in Notion","type":"n8n-nodes-base.notion","position":[3904,384],"parameters":{"title":"Look Dev Reference DB","options":{},"resource":"databasePage","databaseId":{"__rl":true,"mode":"list","value":"330802b9-1fa0-8027-8e92-f1c712bad8fd","cachedResultUrl":"https://www.notion.so/330802b91fa080278e92f1c712bad8fd","cachedResultName":"Lighting & Look Dev Reference DB"},"propertiesUi":{"propertyValues":[{"key":"lookbookHtml|rich_text","textContent":"={{ $json.lookbookHtml }}"},{"key":"shotCode|title","title":"={{ $json.shotCode }}"}]}},"credentials":{"notionApi":{"id":"credential-id","name":"saurabh notion"}},"typeVersion":2.2},{"id":"2a3df8cd-7a37-4842-a037-7456c5b7d4f3","name":"Sticky Note: Overview","type":"n8n-nodes-base.stickyNote","position":[-32,-224],"parameters":{"width":626,"height":478,"content":"## 🎬 AI Lighting Look Dev Builder\n\n### How it works\nA lighting TD or VFX supervisor submits a brief via a web form — shot code, scene type, CG subject, mood description, and a reference plate image URL. The workflow fans out into **five parallel AI video generation jobs**, each targeting a distinct lighting setup: Key Light, Soft Diffuse, Dramatic, Plate Match, and Comp Grade. Each render is polled until complete, downloaded, and uploaded to Google Drive with structured naming. Once all five are ready, an HTML lookbook lands in Notion and GPT drafts a contextual Slack notification for the lighting team.\n\n### Setup steps\n1. Add your **Seedance API key** to the two HTTP Request nodes (replace `YOUR_SEEDANCE_API_KEY`)\n2. Connect **Google Drive OAuth2** credentials and update the target folder ID\n3. Connect **Notion API** credentials and point to your Look Dev database\n4. Connect **Slack OAuth2** and set your lighting team channel ID in both Slack nodes\n5. Connect **OpenAI API** credentials for Slack message generation\n6. Submit a test brief via the form trigger to verify the full render-to-delivery pipeline"},"typeVersion":1},{"id":"ffdf2baa-d5fc-4ac6-8590-6647f5ac1645","name":"Sticky Note: Form Intake","type":"n8n-nodes-base.stickyNote","position":[768,336],"parameters":{"color":7,"width":490,"height":490,"content":"## 📋 Form Intake & Validation\nCaptures the lighting brief from a web form and validates all required fields — shot code, plate URL, mood description, and scene type — before anything reaches the AI pipeline. Bad data is rejected here, not downstream."},"typeVersion":1},{"id":"d99a0f25-c3d4-4b30-82cf-d267033a5435","name":"Sticky Note: Prompt Fan-Out","type":"n8n-nodes-base.stickyNote","position":[1280,336],"parameters":{"color":7,"width":458,"height":490,"content":"## 🔀 Prompt Fan-Out\nExpands the single brief into five distinct lighting prompts — Key Light, Soft Diffuse, Dramatic, Plate Match, and Comp Grade — and wraps each as a multimodal Seedance request with the plate image attached."},"typeVersion":1},{"id":"a88a4761-33d0-4c92-bc2c-fb758f9c0bc0","name":"Sticky Note: AI Generation","type":"n8n-nodes-base.stickyNote","position":[1744,352],"parameters":{"color":7,"width":490,"height":458,"content":"## 🎥 AI Video Generation\nSubmits each lighting prompt to the Seedance image-to-video API. Job IDs returned by the API are merged with original metadata so the polling loop tracks the correct render per variation."},"typeVersion":1},{"id":"ea1a3887-ce44-449b-b886-4454f202cc8d","name":"Sticky Note: Polling Loop","type":"n8n-nodes-base.stickyNote","position":[2256,368],"parameters":{"color":7,"width":720,"height":666,"content":"## 🔄 Render Polling Loop\nChecks each render job's status every 20 seconds. The workflow loops until the API confirms success — only then does the variation proceed to asset extraction and storage."},"typeVersion":1},{"id":"fa19fa7b-41d1-4cc9-b904-050768f4fd25","name":"Sticky Note: Asset Storage","type":"n8n-nodes-base.stickyNote","position":[3008,368],"parameters":{"color":7,"width":776,"height":666,"content":"## 💾 Asset Storage\nDownloads each rendered video and uploads it to Google Drive with a structured filename (`SHOT_lighting_TYPE_VARIANT.mp4`). Asset metadata is tagged with scene type, CG subject, shot code, and review status for pipeline tracking."},"typeVersion":1},{"id":"5302e920-38f5-4bd3-8607-8426db742c6a","name":"Sticky Note: Lookbook","type":"n8n-nodes-base.stickyNote","position":[3808,256],"parameters":{"color":7,"width":598,"height":762,"content":"## 📣 Lookbook & Notifications\nAggregates all five variations into an HTML lookbook page saved to Notion. GPT-4o-mini writes a team-facing Slack message with variation links, lighting mood context, and a clear review call-to-action."},"typeVersion":1},{"id":"b6961e01-8adf-4bc8-82d9-f3d60adb2687","name":"Sticky Note: Security","type":"n8n-nodes-base.stickyNote","position":[4512,736],"parameters":{"color":3,"width":308,"height":250,"content":"## 🔐 Credentials & Security\nUse OAuth2 for Slack, Google Drive, and Notion. Store your Seedance and OpenAI keys as n8n credentials — never hardcode tokens in HTTP Request headers. Replace all `YOUR_*` placeholders before publishing or sharing this template."},"typeVersion":1},{"id":"ccee1a2f-fc70-4d91-be17-145f46b99872","name":"Section: Error Handler","type":"n8n-nodes-base.stickyNote","position":[800,976],"parameters":{"color":7,"width":492,"height":328,"content":"## ⚠️ Error Handler\nCatches any failure across the entire workflow and immediately sends a Slack alert to the ops channel. Wire this to every sub-workflow or critical node to ensure no silent failures."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"b404fb72-de26-4fa0-829a-d2df931e086c","connections":{"Wait 20s":{"main":[[{"node":"Poll: Check Lighting Job Status","type":"main","index":0}]]},"On Workflow Error":{"main":[[{"node":"Slack: Error Alert","type":"main","index":0}]]},"n8n Form: Lighting Brief":{"main":[[{"node":"Validate & Extract Lighting Brief","type":"main","index":0}]]},"Lighting Render Complete?":{"main":[[{"node":"Build Lighting Asset Metadata","type":"main","index":0}],[{"node":"Wait 20s","type":"main","index":0}]]},"Aggregate + Build Lookbook":{"main":[[{"node":"Record the log in Notion","type":"main","index":0},{"node":"AI - Generate the slack message","type":"main","index":0}]]},"Build Lighting Request Body":{"main":[[{"node":"Seedance: Generate Lighting Ref","type":"main","index":0}]]},"Download Lighting Ref Video":{"main":[[{"node":"Google Drive: Upload Lighting Ref","type":"main","index":0}]]},"Build Lighting Asset Metadata":{"main":[[{"node":"Download Lighting Ref Video","type":"main","index":0}]]},"Fan-Out: 5 Lighting Variations":{"main":[[{"node":"Build Lighting Request Body","type":"main","index":0}]]},"AI - Generate the slack message":{"main":[[{"node":"Slack: Notify Lighting Team","type":"main","index":0}]]},"Poll: Check Lighting Job Status":{"main":[[{"node":"Lighting Render Complete?","type":"main","index":0}]]},"Seedance: Generate Lighting Ref":{"main":[[{"node":"Merge Lighting Job ID + Metadata","type":"main","index":0}]]},"Merge Lighting Job ID + Metadata":{"main":[[{"node":"Poll: Check Lighting Job Status","type":"main","index":0}]]},"Google Drive: Upload Lighting Ref":{"main":[[{"node":"Aggregate + Build Lookbook","type":"main","index":0}]]},"Validate & Extract Lighting Brief":{"main":[[{"node":"Fan-Out: 5 Lighting Variations","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":27,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.slack":{"count":2},"n8n-nodes-base.notion":{"count":1},"n8n-nodes-base.stickyNote":{"count":9},"n8n-nodes-base.formTrigger":{"count":1},"n8n-nodes-base.googleDrive":{"count":1},"n8n-nodes-base.httpRequest":{"count":3},"n8n-nodes-base.errorTrigger":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":1}}},"status":"published","readyToDemo":null,"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":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":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":58,"icon":"file:googleDrive.svg","name":"n8n-nodes-base.googleDrive","codex":{"data":{"resources":{"generic":[{"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/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/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.googledrive/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Drive"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Google Drive","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":487,"icon":"file:notion.svg","name":"n8n-nodes-base.notion","codex":{"data":{"resources":{"generic":[{"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 "}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/notion/"}]},"categories":["Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Notion"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjU4Mjc2IDYuOTc2NzlDOC44MjA0NyA3Ljk4MjM4IDkuMjg0NzkgNy45MDU2NiAxMS42MDkxIDcuNzUwNTdMMzMuNTIwNiA2LjQzNDg4QzMzLjk4NTMgNi40MzQ4OCAzMy41OTg5IDUuOTcxMjcgMzMuNDQzOSA1Ljg5NDIzTDI5LjgwNDkgMy4yNjM0OEMyOS4xMDc2IDIuNzIyMTMgMjguMTc4NiAyLjEwMjE3IDI2LjM5ODIgMi4yNTcyNkw1LjE4MTE1IDMuODA0NzZDNC40MDczNiAzLjg4MTQ4IDQuMjUyODIgNC4yNjgzNyA0LjU2MDk2IDQuNTc4NDdMNy41ODI3NiA2Ljk3Njc5Wk04Ljg5ODI5IDEyLjA4MzNWMzUuMTM4MUM4Ljg5ODI5IDM2LjM3NzEgOS41MTc0NiAzNi44NDA3IDEwLjkxMSAzNi43NjRMMzQuOTkxOSAzNS4zNzA2QzM2LjM4NjIgMzUuMjkzOSAzNi41NDE1IDM0LjQ0MTcgMzYuNTQxNSAzMy40MzUyVjEwLjUzNTFDMzYuNTQxNSA5LjUzMDE5IDM2LjE1NDkgOC45ODgyOSAzNS4zMDE0IDkuMDY1NjRMMTAuMTM2NyAxMC41MzUxQzkuMjA3OTkgMTAuNjEzMSA4Ljg5ODIxIDExLjA3NzcgOC44OTgyMSAxMi4wODMzSDguODk4MjlaTTMyLjY3MDggMTMuMzJDMzIuODI1MiAxNC4wMTcgMzIuNjcwOCAxNC43MTMzIDMxLjk3MjUgMTQuNzkxN0wzMC44MTIzIDE1LjAyMjlWMzIuMDQzNEMyOS44MDQ5IDMyLjU4NDggMjguODc1OSAzMi44OTQ0IDI4LjEwMTggMzIuODk0NEMyNi44NjI1IDMyLjg5NDQgMjYuNTUyMSAzMi41MDcyIDI1LjYyMzcgMzEuMzQ3NEwxOC4wMzQzIDE5LjQzMjlWMzAuOTYwNUwyMC40MzU5IDMxLjUwMjRDMjAuNDM1OSAzMS41MDI0IDIwLjQzNTkgMzIuODk0NCAxOC40OTgzIDMyLjg5NDRMMTMuMTU2OCAzMy4yMDQyQzEzLjAwMTYgMzIuODk0NCAxMy4xNTY4IDMyLjEyMTQgMTMuNjk4NiAzMS45NjY1TDE1LjA5MjUgMzEuNTgwMlYxNi4zMzg1TDEzLjE1NzIgMTYuMTgzNEMxMy4wMDE5IDE1LjQ4NjQgMTMuMzg4NSAxNC40ODE0IDE0LjQ3MzMgMTQuNDAzNUwyMC4yMDM1IDE0LjAxNzJMMjguMTAxOCAyNi4wODY4VjE1LjQwOTdMMjYuMDg4MSAxNS4xNzg2QzI1LjkzMzUgMTQuMzI2NSAyNi41NTIxIDEzLjcwNzggMjcuMzI2NSAxMy42MzExTDMyLjY3MDggMTMuMzJaTTMuMzk5NzMgMS43MTU5OEwyNS40Njg4IDAuMDkwNzQ1N0MyOC4xNzkgLTAuMTQxNjg4IDI4Ljg3NjMgMC4wMTQwMjQ1IDMwLjU3OTYgMS4yNTEzNUwzNy42MjQzIDYuMjAyNzZDMzguNzg2NyA3LjA1NDIxIDM5LjE3NDIgNy4yODYwMiAzOS4xNzQyIDguMjE0MTlWMzUuMzcwNkMzOS4xNzQyIDM3LjA3MjYgMzguNTU0MiAzOC4wNzkxIDM2LjM4NjUgMzguMjMzMUwxMC43NTc3IDM5Ljc4MDdDOS4xMzA0OSAzOS44NTgzIDguMzU2MDcgMzkuNjI2NCA3LjUwMzkyIDM4LjU0MjZMMi4zMTYwOCAzMS44MTE3QzEuMzg2NTggMzAuNTcyNiAxIDI5LjY0NTcgMSAyOC41NjEzVjQuNDIyODNDMSAzLjAzMTA1IDEuNjIwMTkgMS44NzAwNSAzLjM5OTczIDEuNzE1OThWMS43MTU5OFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo="},"displayName":"Notion","typeVersion":2,"nodeCategories":[{"id":4,"name":"Productivity"}]},{"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":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":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}