8
n8n ํ•œ๊ตญ์–ดamn8n.com

๐Ÿ’ฅ NanoBanana, Seedream 4, ChatGPT Image ๋ฐ Veo 3๋ฅผ ์‚ฌ์šฉํ•œ ๋™์˜์ƒ ๊ด‘๊ณ  ์ž๋™ํ™” - VIDE

๊ณ ๊ธ‰

์ด๊ฒƒ์€Content Creation, Multimodal AI๋ถ„์•ผ์˜์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋กœ, 63๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.์ฃผ๋กœ Set, Code, Wait, Merge, SplitOut ๋“ฑ์˜ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ. AI(NanoBanana, Seedream, GPT-4o, Veo 3)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค ๊ด‘๊ณ  ์บ ํŽ˜์ธ ์ž๋™ํ™” ๋ฐ ๊ฒŒ์‹œ

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ
  • โ€ขTelegram Bot Token
  • โ€ขGoogle Drive API ์ธ์ฆ ์ •๋ณด
  • โ€ข๋Œ€์ƒ API์˜ ์ธ์ฆ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
  • โ€ขGoogle Sheets API ์ธ์ฆ ์ •๋ณด
  • โ€ขOpenAI API Key
์›Œํฌํ”Œ๋กœ์šฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
๋…ธ๋“œ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ, ํ™•๋Œ€/์ถ•์†Œ ๋ฐ ์ด๋™์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค
์›Œํฌํ”Œ๋กœ์šฐ ๋‚ด๋ณด๋‚ด๊ธฐ
๋‹ค์Œ JSON ๊ตฌ์„ฑ์„ ๋ณต์‚ฌํ•˜์—ฌ n8n์— ๊ฐ€์ ธ์˜ค๋ฉด ์ด ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
{
  "id": "W9fdydWJuXntSK9c",
  "meta": {
    "instanceId": "a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44"
  },
  "name": "๐Ÿ’ฅ Automate video ads with NanoBanana, Seedream 4, ChatGPT Image and Veo 3 - VIDE",
  "tags": [],
  "nodes": [
    {
      "id": "172c7316-350a-46a8-a720-f0be6b22cff0",
      "name": "๋ฉ”๋ชจ5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 1948,
        "height": 624,
        "content": "# 1๏ธโƒฃ  โ†’  Step 1 โ€” Generate prompts from Telegram input\n## Automate video ads with NanoBanana, Seedream 4, ChatGPT Image and Veo 3 (By Dr. Firas)\n### What problem is this workflow solving? / Use case\nCreating video ads usually requires multiple tools and a lot of time: writing scripts, designing product visuals, editing videos, and publishing them across platforms.  \nThis workflow **automates the entire pipeline** โ€” from idea to ready-to-publish ad video โ€” ensuring brands can quickly test campaigns and boost engagement without production delays."
      },
      "typeVersion": 1
    },
    {
      "id": "b5e1088e-f59b-48c0-bad0-65887aa9e37b",
      "name": "Telegram: Get Image File",
      "type": "n8n-nodes-base.telegram",
      "position": [
        944,
        272
      ],
      "webhookId": "f564ba5f-747b-4ad3-b496-70c1aabb1a88",
      "parameters": {
        "fileId": "={{ $json.message.photo[2].file_id }}",
        "resource": "file",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "7SZVrD8xnvRzdabg",
          "name": "Telegram - viral Ads"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7fd471ae-4ef4-436c-b476-b98cc8848cea",
      "name": "Trigger: Receive Idea via Telegram",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        672,
        272
      ],
      "webhookId": "fc44769c-3fa7-4a73-907f-07daa5cc8d6e",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "7SZVrD8xnvRzdabg",
          "name": "Telegram - viral Ads"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "00e2b4cb-7184-4068-a752-df588e48940d",
      "name": "Google ๋“œ๋ผ์ด๋ธŒ: Upload Image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1232,
        272
      ],
      "parameters": {
        "name": "={{ $('Trigger: Receive Idea via Telegram').item.json.message.photo[2].file_unique_id }}",
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "gzeHMd64HAz6HBIe",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "51fa2428-83e5-469e-9fbd-e6b74e7fdf35",
      "name": "Parse Idea Into Prompts",
      "type": "n8n-nodes-base.code",
      "position": [
        1664,
        272
      ],
      "parameters": {
        "jsCode": "const text = $('Trigger: Receive Idea via Telegram').first().json.message.caption;\nconst parts = text.split(';').map(part => part.trim());\nreturn {\nimagePrompt: parts[0],\nvideoPrompt: parts[1]\n};\n"
      },
      "typeVersion": 2
    },
    {
      "id": "5c8efdcc-c697-412e-be62-1f31528075e5",
      "name": "Generate Image Prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2064,
        272
      ],
      "parameters": {
        "text": "=Your task is to create an image prompt following the system guidelines.  \nEnsure that the reference image is represented as **accurately as possible**, including all text elements.  \n\nUse the following inputs:  \n\n- **Userโ€™s description:**  \n{{ $json.imagePrompt }}\n",
        "options": {
          "systemMessage": "=You are a helpful assistantROLE: UGC Image Prompt Builder  \n\nGOAL:  \nGenerate one concise, natural, and realistic image prompt (โ‰ค120 words) from a given product or reference image. The prompt must simulate authentic UGC (user-generated content) photography.  \n\nRULES:  \nYou must always create a professional background for the product image. You must never return the image with a plain white or empty background. The background must always enhance and highlight the product in the photo.\n\n- Always output **one JSON object only** with the key:  \n  - `image_prompt`: (string with full description)  \n- Do **not** add commentary, metadata, or extra keys. JSON only.  \n- User node think to be creative\n\nSTYLE GUIDELINES:  \n- Tone: casual, unstaged, lifelike, handheld snapshot.  \n- Camera cues: include at least 2โ€“3 (e.g., phone snapshot, handheld framing, off-center composition, natural indoor light, soft shadows, slight motion blur, auto exposure, unpolished look, mild grain).  \n- Realism: embrace imperfections (wrinkles, stray hairs, skin texture, clutter, smudges).  \n- Packaging/Text: preserve exactly as visible. Never invent claims, numbers, or badges.  \n- Diversity: if people appear but are unspecified, vary gender/ethnicity naturally; default age range = 21โ€“38.  \n- Setting: default to real-world everyday spaces (home, street, store, gym, office).  \n- User node think to be creative\nYou must always create a professional background for the product image. You must never return the image with a plain white or empty background. The background must always enhance and highlight the product in the photo.\n\nSAFETY:  \n- No copyrighted character names.  \n- No dialogue or scripts. Only describe scenes.  \n\nOUTPUT CONTRACT:  \n- JSON only, no prose outside.  \n- Max 120 words in `image_prompt`.  \n- Must cover: subject, action, mood, setting, background, style/camera, colors, and text accuracy.  \n\nCHECKLIST BEFORE OUTPUT:  \n- Natural handheld tone?  \n- At least 2 camera cues included?  \n- Product text preserved exactly?  \n- Only JSON returned?  \n\n---  \n\n### Example  \n\nGood Example :  \n```json\n{ \"image_prompt\": \"a young adult casually holding a skincare tube near a bathroom mirror; action: dabs small amount on the back of the hand; mood: easy morning; setting: small apartment bathroom with towel on rack and toothbrush cup; background: professional-looking bathroom scene that enhances the product, never plain white or empty, always styled to highlight the tube naturally; style/camera: phone snapshot, handheld framing, off-center composition, natural window light, slight motion blur, mild grain; colors: soft whites and mint label; text accuracy: keep every word on the tube exactly as visible, no added claims\" }\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "749d97b2-bdc0-4b0d-a608-3860f8bc19a0",
      "name": "๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ ํŒŒ์„œ",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2320,
        496
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"image_prompt\": \"string\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "49ebe3b4-175c-480b-a78b-32a86b772c11",
      "name": "Think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2160,
        496
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "6c14c0c2-425f-43a4-ac53-9a1110e24aef",
      "name": "OpenAI ์ฑ„ํŒ… ๋ชจ๋ธ",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1984,
        496
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "o4-mini",
          "cachedResultName": "o4-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2b8bb026-a1a0-4f6a-952b-c66458be98ca",
      "name": "NanoBanana: Create Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2816,
        96
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/nano-banana/edit",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n\t\"prompt\": \"{{ $json[\"output.image_prompt\"].replace(/\\\"/g, '\\\\\\\"').replace(/\\n/g, '\\\\n') }}\",\n\"image_urls\": [\"{{ $('Google Drive: Upload Image').item.json.webContentLink }}\"]\n\n} ",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "kNULkYDcOZG3X0be",
          "name": "Fal.ai"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "83dfe606-fca2-43a9-ad65-1c552899c739",
      "name": "๋ฉ”๋ชจ8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2480,
        656
      ],
      "parameters": {
        "color": 7,
        "width": 1884,
        "height": 432,
        "content": "# 4๏ธโƒฃ  โ†’ Step 4 โ€” Merge videos into a final ad"
      },
      "typeVersion": 1
    },
    {
      "id": "c35fcc2f-d3d1-4d83-8efb-6e8cf21d82fa",
      "name": "Check ๋ณ‘ํ•ฉ Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3936,
        768
      ],
      "parameters": {
        "url": "={{ $json['URL FINAL VIDEO'] }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "kNULkYDcOZG3X0be",
          "name": "Fal.ai"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "37ef1072-100c-469e-a26d-22843dc2f657",
      "name": "Wait: ๋ณ‘ํ•ฉ Process",
      "type": "n8n-nodes-base.wait",
      "position": [
        3408,
        768
      ],
      "webhookId": "6b3ea255-aabf-4eb4-9bc8-25f4272270ba",
      "parameters": {
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "55d047f8-bb1c-4b79-ad10-9edb049f5807",
      "name": "Upload Final Video to Google ๋“œ๋ผ์ด๋ธŒ",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        4192,
        768
      ],
      "parameters": {
        "name": "={{ $('Trigger: Receive Idea via Telegram').first().json.message.photo[2].file_unique_id }}",
        "driveId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "gzeHMd64HAz6HBIe",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "6fb4ed26-d430-493a-a5ef-ecf993d7dca5",
      "name": "๋ฉ”๋ชจ9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        1120
      ],
      "parameters": {
        "width": 3804,
        "height": 608,
        "content": "# 5๏ธโƒฃ  โ†’ Step 5 โ€” Publish the final ad to multiple social platforms with Blotato"
      },
      "typeVersion": 1
    },
    {
      "id": "f6490202-896a-4a21-9689-ed0189da6863",
      "name": "Read Brand ์„ค์ •tings",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        672,
        1344
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "8c3750e4-333e-4900-aa8e-97c6b5ce06b9",
      "name": "Extract Brand Info",
      "type": "n8n-nodes-base.code",
      "position": [
        912,
        1344
      ],
      "parameters": {
        "jsCode": "const allRows = $input.all();\nreturn [{\njson: {\nproductName: allRows[0].json.col_2,\nproductCategory: allRows[1].json.col_2,\nmainOffer: allRows[2].json.col_2,\nkeyFeature1: allRows[3].json.col_2,\nkeyFeature2: allRows[4].json.col_2,\nwebsiteURL: allRows[5].json.col_2\n}\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "660b172c-fe62-40ed-84c9-8b0c2aa7739d",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1312,
        1344
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are an expert ad copywriter for social media campaigns.\nYour task: Create compelling ad copy following this exact\nstructure:\n๐Ÿšจ [Attention-grabbing headline with product benefit]\nโœ” [Primary offer/benefit]\nโœ” [Key product feature/quality]\nโœ” [Trust/credibility element]\n[Call to action] โ†’ [website/link]\n# Input Variables:\nProduct Name: {{ $json.productName }}\nProduct Category: {{ $json.productCategory }}\nMain Offer: {{ $json.mainOffer }}\nKey Feature 1: {{ $json.keyFeature1 }}\nKey Feature 2: {{ $json.keyFeature2 }}\nWebsite URL: {{ $json.websiteURL }}\nRules:\n- Keep headline under 35 characters\n- Each checkmark line under 40 characters\n- Use power words that create urgency\n- Include specific product benefits, not generic claims\n- CTA must be action-oriented (Shop Now, Get Yours, Claim Offer,\netc.)\n- Output ONLY the ad copy text, no explanations\n- No quotes around the text\n- Maintain the emoji structure exactly as shown"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "f12ad44b-3078-459d-8a23-b664889cc636",
      "name": "Save Ad Data to Google ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1840,
        1344
      ],
      "parameters": {
        "columns": {
          "value": {
            "ADS TEXT": "={{ $json.message.content }}",
            "ID IMAGE": "={{ $('Trigger: Receive Idea via Telegram').first().json.message.photo[2].file_unique_id }}"
          },
          "schema": [
            {
              "id": "ID IMAGE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SOURCE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SOURCE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE NANOBANANA",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE NANOBANANA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SENDREAM",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SENDREAM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE CHATGPT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE CHATGPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL FINAL VIDEO",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL FINAL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ADS TEXT",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ADS TEXT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID IMAGE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "f9b4f876-3ce8-4896-9be5-88b76abf7a4b",
      "name": "Send Video URL via Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2080,
        1344
      ],
      "webhookId": "58e6fe93-339f-4ca8-aa15-874ac06a55c6",
      "parameters": {
        "text": "=Url VIDEO :   {{ $('Update URL Final video').first().json['URL FINAL VIDEO'] }}",
        "chatId": "={{ $('Trigger: Receive Idea via Telegram').first().json.message.chat.id }}",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "7SZVrD8xnvRzdabg",
          "name": "Telegram - viral Ads"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e7452627-f5ea-4083-964b-16832cf53f11",
      "name": "Send a video",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2304,
        1344
      ],
      "webhookId": "5eba0d00-2919-4342-9cc2-62b3b44ef2e9",
      "parameters": {
        "file": "={{ $('Update URL Final video').first().json['URL FINAL VIDEO'] }}",
        "chatId": "={{ $('Trigger: Receive Idea via Telegram').first().json.message.chat.id }}",
        "operation": "sendVideo",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "7SZVrD8xnvRzdabg",
          "name": "Telegram - viral Ads"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6d574d77-e737-46b2-a79c-02518d8a2a9e",
      "name": "๋ฉ”๋ชจ11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2480,
        0
      ],
      "parameters": {
        "color": 3,
        "width": 1884,
        "height": 624,
        "content": "# 2๏ธโƒฃ  โ†’ Step 2 โ€” Create product images with : ๐ŸŒŠ Seedream 4.0 +  ๐ŸŒ NanoBanana + ๐Ÿค– ChatGPT image"
      },
      "typeVersion": 1
    },
    {
      "id": "de4624ec-4fd8-4456-97ec-ddcb1d7d476d",
      "name": "AI ์—์ด์ „ํŠธ: Generate Video Script",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        880,
        736
      ],
      "parameters": {
        "text": "=Create a BEFORE/AFTER transformation video prompt using the provided idea.\n\n**Inputs**\n\n- idea : {{ $('Parse Idea Into Prompts').first().json.videoPrompt }}\n\n**Rules**\n- The style must be cinematic, visually striking, and optimized for vertical 9:16 TikTok content.\n- Explicitly include: BEFORE scene, AFTER scene, TRANSITION style, CAMERA movement, LIGHTING, COLOR PALETTE, and MOOD.\n- Default model: `veo3_fast` (unless otherwise specified).\n- Output only one valid JSON object.\n\n- The JSON object must contain the following keys: title, final_prompt, final_prompt_2, final_prompt_3.\n\n- Create 3 different scenarios for the same product/topic.\n\n- Place each scenario in a separate key:\nfinal_prompt โ†’ Scenario 1\nfinal_prompt_2 โ†’ Scenario 2\nfinal_prompt_3 โ†’ Scenario 3\n\n- Use the Think tool to review your output\n",
        "options": {
          "systemMessage": "=system_prompt:\n  ## SYSTEM PROMPT: Structured Safe Video Prompt Generator\n  A - Ask:\n    Generate a structured short video prompt for VEO 3 cinematic generation, strictly based on the master schema provided in: {{ $json.json_master }}.\n    Write 3 scenarios for 3 short videos (VEO 3), each lasting about 8 seconds.\n\nThe first scenario should highlight a visual \"problem atmosphere\" (e.g., dull colors, lack of energy, flat lighting) that sets the stage for the product to improve the scene.\n\nThe second scenario should show a \"visual enhancement\" instead of a physical transformation (e.g., scene becomes brighter, colors more vibrant, light reflections intensify, foam glows more under sunlight).\n\nThe third scenario should show another \"creative enhancement\" with a different cinematic angle (e.g., abstract visuals like water, foam, or product bottle under glowing light that shifts into a fresh, uplifting ambiance).\n\n- The final result must be a JSON object with exactly four top-level keys:\n\ntitle โ†’ summarizes the overall concept.\nfinal_prompt โ†’ contains Scenario 1.\nfinal_prompt_2 โ†’ contains Scenario 2.\nfinal_prompt_3 โ†’ contains Scenario 3.\n\n  G - Guidance:\n    role: Creative Director\n    output_count: 1\n    character_limit: None\n    constraints:\n      - The output must be valid JSON.\n      - The `title` field should contain a short, descriptive and unique title (max 15 words).\n      - The `final_prompt`, `final_prompt_2`, and `final_prompt_3` fields must contain a **single-line JSON string** that follows the exact structure of {{ $json.json_master }} with all fields preserved.\n      - All final prompts must clearly describe: SCENE, VISUAL ENHANCEMENT (instead of \"before/after\"), TRANSITION, CAMERA, LIGHTING, PALETTE, STYLE, and SOUND.\n      - Do not include peopleโ€™s physical traits or body/hair transformations.\n      - Avoid sensitive or restricted terms (e.g., frizzy, smooth, body, face, before/after physical changes).\n      - The focus must be on cinematic visuals, light, environment, abstract product representation, and positive ambiance.\n      - Do not include any explanations, markdown, or extra text โ€” only the JSON object.\n      - Escape all inner quotes in the `final_prompt` string so it is valid as a stringified JSON inside another JSON.\n    tool_usage:\n      - Ensure consistent alignment across all fields (camera, lighting, transition, palette, etc.).\n      - Maintain full structure even for optional fields (use \"none\", \"\", or [] as needed).\n\n  N - Notation:\n    format: JSON\n    expected_output:\n      {\n        \"title\": \"A unique short title for the enhancement concept\",\n        \"final_prompt\": \"Scenario 1 description here...\",\n        \"final_prompt_2\": \"Scenario 2 description here...\",\n        \"final_prompt_3\": \"Scenario 3 description here...\"\n      }\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "0352c6fb-0614-4266-a6a9-78fd88f1e742",
      "name": "Generate Video with VEO3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1872,
        880
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/generate",
        "body": "=\n\n{\n  \"prompt\": {{ $json.prompt }},\n  \"model\": \"{{ $json.model }}\",\n  \"imageUrls\": [ \"{{ $json.image_url }}\" ],\n  \"aspectRatio\":  \"{{ $json.aspectRatio }}\"\n}\n",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "application/json",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "ho8ZjaYj1SY0icGT",
          "name": "Kie AI"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "006fe9e9-b076-4345-aec4-27fcf1a7f30f",
      "name": "๋Œ€๊ธฐ for VEO3 Rendering",
      "type": "n8n-nodes-base.wait",
      "position": [
        2112,
        880
      ],
      "webhookId": "864a93ce-5f41-4fc9-a694-6681bc749cb7",
      "parameters": {
        "unit": "minutes",
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "b5089618-2b8f-4611-a7cf-78ec9e1ed077",
      "name": "Download Video from VEO3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2304,
        880
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/record-info",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $('Generate Video with VEO3').item.json.data.taskId }}"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "ho8ZjaYj1SY0icGT",
          "name": "Kie AI"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "bb7a3989-1ffe-46c6-a2e9-4cba9a5fb47f",
      "name": "Format Prompt",
      "type": "n8n-nodes-base.code",
      "position": [
        1648,
        880
      ],
      "parameters": {
        "jsCode": "const structuredPrompt = $input.first().json.final_prompt;\nimage = $input.first().json.image_url;\nreturn {\n  json: {\n    prompt: JSON.stringify(structuredPrompt), // this escapes it correctly!\n    model: \"veo3_fast\",\n    image_url : image,\n    aspectRatio: \"9:16\"\n  }\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "143c8983-02c7-4001-8bdf-9d69cbc77169",
      "name": "๋ฉ”๋ชจ1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        656
      ],
      "parameters": {
        "color": 7,
        "width": 1920,
        "height": 432,
        "content": "# 3๏ธโƒฃ  โ†’ Step 3 โ€” Produce video ads with Veo 3"
      },
      "typeVersion": 1
    },
    {
      "id": "e4201ff8-435d-4509-baca-9cf9ba796453",
      "name": "OpenAI ์ฑ„ํŒ… ๋ชจ๋ธ1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        816,
        960
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "bfa98213-7d12-422b-9fa9-e9f8c4e6eb36",
      "name": "Think1",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        976,
        960
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "acd37b48-c17d-4f9e-82ed-233b04036eee",
      "name": "๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ ํŒŒ์„œ1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1120,
        960
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"string\",\n  \"final_prompt\": \"string\",\n  \"final_prompt_2\": \"string\",\n  \"final_prompt_3\": \"string\"\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "07dcc2c9-28ee-449a-919d-dbd3dc5196e7",
      "name": "3 prompts",
      "type": "n8n-nodes-base.code",
      "position": [
        1168,
        736
      ],
      "parameters": {
        "jsCode": "// On rรฉcupรจre les prompts depuis l'agent IA\nconst prompts = items[0].json.output;\n\n// On rรฉcupรจre les images depuis le node \"Save Ad Data to Google Sheets1\"\nconst urls = $('Google Sheets โ€“ save image URLs').first().json;\n\nreturn [\n  { \n    json: { \n      final_prompt: prompts.final_prompt,\n      image_url: urls['URL IMAGE NANOBANANA']\n    } \n  },\n  { \n    json: { \n      final_prompt: prompts.final_prompt_2,\n      image_url: urls['URL IMAGE SENDREAM']\n    } \n  },\n  { \n    json: { \n      final_prompt: prompts.final_prompt_3,\n      image_url: urls['URL IMAGE CHATGPT']\n    } \n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "5364e300-b999-4429-8b99-c1d40f48c28f",
      "name": "Upload Video to BLOTATO",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        2544,
        1344
      ],
      "parameters": {
        "mediaUrl": "={{ $('Update URL Final video').first().json['URL FINAL VIDEO'] }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "743afd32-6ebf-4e70-b911-2bbdba7d1ecf",
      "name": "Youtube",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3600,
        1328
      ],
      "parameters": {
        "options": {},
        "platform": "youtube",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "8047",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/8047",
          "cachedResultName": "DR FIRASS (Dr. Firas)"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}",
        "postCreateYoutubeOptionTitle": "={{ $('AI Agent: Generate Video Script').first().json.output.title }}",
        "postCreateYoutubeOptionPrivacyStatus": "private",
        "postCreateYoutubeOptionShouldNotifySubscribers": false
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "035b6c10-43ac-4aea-a2ff-82a3ab0bcfa4",
      "name": "Tiktok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3232,
        1152
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "2079",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/2079",
          "cachedResultName": "elitecybzcs"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d2401532-aa7b-45b7-9dc4-2d5f51a32599",
      "name": "Update Status to \"DONE\"",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4176,
        1328
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATUS": "DONE",
            "ID IMAGE": "={{ $('Trigger: Receive Idea via Telegram').first().json.message.photo[2].file_unique_id }}"
          },
          "schema": [
            {
              "id": "ID IMAGE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SOURCE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SOURCE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE NANOBANANA",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE NANOBANANA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SENDREAM",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SENDREAM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE CHATGPT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE CHATGPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL FINAL VIDEO",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL FINAL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ADS TEXT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ADS TEXT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID IMAGE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "cc3d40a1-1123-4faf-8df9-2ae5448ed53a",
      "name": "Linkedin",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3424,
        1152
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1446",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1446",
          "cachedResultName": "Samuel Amalric"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0a3810b6-c21f-4077-954b-79aab2e7985e",
      "name": "Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3600,
        1152
      ],
      "parameters": {
        "options": {},
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1759",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759",
          "cachedResultName": "Firass Ben"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "101603614680195",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195",
          "cachedResultName": "Dr. Firas"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "7ec08451-6330-400e-87a2-ab9a2f0706ab",
      "name": "Instagram",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3232,
        1328
      ],
      "parameters": {
        "options": {},
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "11892",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/11892",
          "cachedResultName": "doc.firass"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0bc8307e-3f4a-432a-8667-eb998ab55042",
      "name": "Threads",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3232,
        1536
      ],
      "parameters": {
        "options": {},
        "platform": "threads",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "2280",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/2280",
          "cachedResultName": "doc.firass"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d039a2f5-5177-4cce-9018-6a37ab54fa19",
      "name": "Bluesky",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3424,
        1536
      ],
      "parameters": {
        "options": {},
        "platform": "bluesky",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "6012",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/6012",
          "cachedResultName": "formationinternet.bsky.social"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a04336f9-f2e6-4fbb-a082-9d232a08aa52",
      "name": "Pinterest",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3600,
        1536
      ],
      "parameters": {
        "options": {},
        "platform": "pinterest",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "363",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/363",
          "cachedResultName": "formationinternet2022"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "pinterestBoardId": {
          "__rl": true,
          "mode": "id",
          "value": "1146658823815436667"
        },
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "fb93e061-c5a9-4dfe-9ca2-ef8a3c6ce9f3",
      "name": "Twitter (X)",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        3424,
        1328
      ],
      "parameters": {
        "options": {},
        "platform": "twitter",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1289",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1289",
          "cachedResultName": "Docteur_Firas"
        },
        "postContentText": "={{ $('Save Ad Data to Google Sheets').item.json['ADS TEXT'] }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "77b73727-3d32-41d6-b0ca-03b2ccaca631",
      "name": "๋ณ‘ํ•ฉ1",
      "type": "n8n-nodes-base.merge",
      "position": [
        3936,
        1216
      ],
      "parameters": {
        "mode": "chooseBranch",
        "numberInputs": 9
      },
      "typeVersion": 3.2
    },
    {
      "id": "181c4741-92b4-4884-bffd-c1dbddca2477",
      "name": "Seedream: Generate image from texte",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2816,
        272
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/jobs/createTask",
        "body": "={\n  \"model\": \"bytedance/seedream-v4-text-to-image\",\n  \"input\": {\n    \"prompt\": \"{{ $('Parse Idea Into Prompts').item.json.videoPrompt }}\",\n    \"image_size\": \"portrait_16_9\",\n    \"image_resolution\": \"1K\"\n  }\n}\n",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "application/json",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "ho8ZjaYj1SY0icGT",
          "name": "Kie AI"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a2c358bc-ce2d-4f48-a444-8f2f24a3abbe",
      "name": "Download image from Seedream",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3440,
        272
      ],
      "parameters": {
        "url": "=https://api.kie.ai/api/v1/jobs/recordInfo?taskId={{ $json.data.taskId }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "ho8ZjaYj1SY0icGT",
          "name": "Kie AI"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b8637494-856c-46f2-9d3c-1df9593d02de",
      "name": "Generate 4o Image๏ผˆGPT IMAG 1๏ผ‰",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2816,
        448
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/gpt4o-image/generate",
        "body": "={\n  \"prompt\": \"{{ $('Parse Idea Into Prompts').item.json.videoPrompt }}\",\n  \"size\": \"2:3\"\n}\n",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "application/json",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "ho8ZjaYj1SY0icGT",
          "name": "Kie AI"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8b6583ec-e141-4314-a83e-23ced0d3d504",
      "name": "์„ค์ • Master Prompt",
      "type": "n8n-nodes-base.set",
      "position": [
        672,
        736
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cc2e0500-57b1-4615-82cb-1c950e5f2ec4",
              "name": "json_master",
              "type": "string",
              "value": "={\n  \"description\": \"Brief narrative description of the scene, focusing on key visual storytelling and product transformation.\",\n  \"style\": \"cinematic | photorealistic | stylized | gritty | elegant\",\n  \"camera\": {\n    \"type\": \"fixed | dolly | Steadicam | crane combo\",\n    \"movement\": \"describe any camera moves like slow push-in, pan, orbit\",\n    \"lens\": \"optional lens type or focal length for cinematic effect\"\n  },\n  \"lighting\": {\n    \"type\": \"natural | dramatic | high-contrast\",\n    \"sources\": \"key lighting sources (sunset, halogen, ambient glow...)\",\n    \"FX\": \"optional VFX elements like fog, reflections, flares\"\n  },\n  \"environment\": {\n    \"location\": \"describe location or room (kitchen, desert, basketball court...)\",\n    \"set_pieces\": [\n      \"list of key background or prop elements\",\n      \"e.g. hardwood floors, chain-link fence, velvet surface\"\n    ],\n    \"mood\": \"describe the ambient atmosphere (moody, clean, epic...)\"\n  },\n  \"elements\": [\n    \"main physical items involved (product box, accessories, vehicles...)\",\n    \"include brand visibility (logos, packaging, texture...)\"\n  ],\n  \"subject\": {\n    \"character\": {\n      \"description\": \"optional โ€“ physical description, outfit\",\n      \"pose\": \"optional โ€“ position or gesture\",\n      \"lip_sync_line\": \"optional โ€“ spoken line if thereโ€™s a voiceover\"\n    },\n    \"product\": {\n      \"brand\": \"Brand name\",\n      \"model\": \"Product model or name\",\n      \"action\": \"description of product transformation or assembly\"\n    }\n  },\n  \"motion\": {\n    \"type\": \"e.g. transformation, explosion, vortex\",\n    \"details\": \"step-by-step visual flow of how elements move or evolve\"\n  },\n  \"VFX\": {\n    \"transformation\": \"optional โ€“ describe style (neon trails, motion blur...)\",\n    \"impact\": \"optional โ€“ e.g. shockwave, glow, distortion\",\n    \"particles\": \"optional โ€“ embers, sparks, thread strands...\",\n    \"environment\": \"optional โ€“ VFX affecting the scene (ripples, wind...)\"\n  },\n  \"audio\": {\n    \"music\": \"optional โ€“ cinematic score, trap beat, ambient tone\",\n    \"sfx\": [\n      \"list of sound effects (zip, pop, woosh...)\"\n    ],\n    \"ambience\": \"optional โ€“ background soundscape (traffic, wind...)\",\n    \"voiceover\": {\n      \"delivery\": \"tone and style (confident, whisper, deep...)\",\n      \"line\": \"text spoken if applicable\"\n    }\n  },\n  \"ending\": \"Final shot description โ€“ what is seen or felt at the end (freeze frame, logo pulse, glow...)\",\n  \"text\": \"none | overlay | tagline | logo pulse at end only\",\n  \"format\": \"16:9 | 4k | vertical\",\n  \"keywords\": [\n    \"brand\",\n    \"scene style\",\n    \"motion type\",\n    \"camera style\",\n    \"sound mood\",\n    \"target theme\"\n  ]\n}\n"
            },
            {
              "id": "3c6ea609-e426-46d3-8617-2e289a833a64",
              "name": "model",
              "type": "string",
              "value": "veo3_fast"
            },
            {
              "id": "f15acf81-840c-4e09-9ff3-1647b634875f",
              "name": "aspectRatio",
              "type": "string",
              "value": "9:16"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f9e46614-a5d5-4520-9522-8a03674d226d",
      "name": "๋ณ‘ํ•ฉ 3 Videos",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3120,
        768
      ],
      "parameters": {
        "url": "https://fal.run/fal-ai/ffmpeg-api/merge-videos",
        "body": "={\n  \"video_urls\": [\n    \"{{ $json['URL VIDEO 1'] }}\",\n    \"{{ $json['URL VIDEO 2'] }}\",\n    \"{{ $json['URL VIDEO 3'] }}\"\n  ],\n  \"resolution\": \"portrait_16_9\",\n  \"output\": {\n    \"format\": \"mp4\"\n  }\n}\n",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "raw",
        "authentication": "genericCredentialType",
        "rawContentType": "application/json",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "kNULkYDcOZG3X0be",
          "name": "Fal.ai"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "606e323e-6e32-480e-855f-72baad361c54",
      "name": "Loop Over Items - ๋ฐฐ์น˜ ๋ถ„ํ• ",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1424,
        784
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "729b59d4-fa07-4fc9-b6cc-64fca41b22ef",
      "name": "Update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2848,
        768
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID IMAGE": "={{ $('Google Sheets โ€“ save image URLs').first().json['ID IMAGE'] }}",
            "URL VIDEO 1": "={{ $json.data[0].data.response.resultUrls[0] }}",
            "URL VIDEO 2": "={{ $json.data[1].data.response.resultUrls[0] }}",
            "URL VIDEO 3": "={{ $json.data[2].data.response.resultUrls[0] }}"
          },
          "schema": [
            {
              "id": "ID IMAGE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SOURCE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SOURCE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE NANOBANANA",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE NANOBANANA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SENDREAM",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SENDREAM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE CHATGPT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE CHATGPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 1",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL VIDEO 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 2",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL VIDEO 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 3",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL VIDEO 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL FINAL VIDEO",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL FINAL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ADS TEXT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ADS TEXT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID IMAGE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5cc81f6d-9160-4f2c-b72a-12f1e83c48fd",
      "name": "๋ฉ”๋ชจ",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 528,
        "height": 1728,
        "content": "### ๐ŸŽฅ Watch This Tutorial\n\n@[youtube](E17rYpMRvgA)\n\n### ๐Ÿ“ฅ  [Open full documentation on Notion](https://automatisation.notion.site/Automate-video-ads-with-NanoBanana-Seedream-4-ChatGPT-Image-and-Veo-3-27e3d6550fd9800dbe46e6192bae60a9?source=copy_link)\n---\n### 1. Set Up OpenAI Connection\n#### Get Your API Key\n1. Visit the [OpenAI API Keys](https://platform.openai.com/api-keys) page.  \n2. Go to [OpenAI Billing](https://platform.openai.com/settings/organization/billing/overview).  \n3. Add funds to your billing account.  \n4. Copy your API key into your **OpenAI credentials** in n8n (or your chosen platform).  \n\n---\n### 2. Setup\n1. Import this workflow into your n8n instance.  \n2. Connect your Google Sheets, Gmail, and Google Calendar credentials. Tutorial: [Configure Your Google Sheets, Gmail, Calendar Credentials](https://youtu.be/fDzVmdw7bNU)  \n3. Connect Your Data in Google Sheets. Data must follow this format: [Sample Sheets Data](https://docs.google.com/spreadsheets/d/1SpahDHWishtviYiivRlShgIi_vtHUFLvtlxcxuXp1XU/copy)  \n4. Test the workflow using the **Connected Chat Trigger** node to start conversations with the AI Agent.  \n\n---\n### 3. Integrate ๐Ÿค– VEO 3 (Kie) into n8n\n1. Sign up or log in to the **Kie (VEO 3)** dashboard.  \n2. Go to **API Keys** โ†’ **Create new key** โ†’ copy the key (keep it secret).  \n3. Base API URL: `https://api.kie.ai/api/v1/veo/generate`.  \n\n---\n### 4. Integrate ๐ŸŒ NanoBanana\n1. Go to the [NanoBanana API](https://fal.ai/models/fal-ai/nano-banana/edit/api).  \n2. Sign in with your **FAL.ai** account.  \n3. Create a new API key and copy it.  \n4. In n8n, create new credentials โ†’ **HTTP Header Auth**.  \n5. Add header: `Authorization: Bearer <YOUR_API_KEY>`.  \n\n---\n### 5. Integrate ๐ŸŒŠ Seedream 4.0\n1. Visit the [Seedream API](https://kie.ai/seedream-api).  \n2. Sign in and create an API key from your dashboard.  \n3. Base API endpoint: `https://api.kie.ai/api/v1/seedream/generate`.  \n4. In n8n, add credentials โ†’ **HTTP Header Auth** with `Authorization: Bearer <YOUR_API_KEY>`.  \n\n---\n### 6. Integrate ๐Ÿค– ChatGPT Image\n1. Visit the [ChatGPT Image API documentation](https://docs.kie.ai/4o-image-api/get-4-o-image-details).  \n2. Log in with your Kie.ai account.  \n3. Generate a new API key.  \n4. Base endpoint: `https://api.kie.ai/api/v1/image/generate`.  \n5. Add this key in n8n under **HTTP Header Auth** โ†’ `Authorization: Bearer <YOUR_API_KEY>`.  \n\n---\n### 7. Install the Blotato [Blotato](https://blotato.com/?ref=firas) Node in n8n (Community Nodes)\n1. In n8n, open **Settings โ†’ Community Nodes**.  \n2. Click **Install**, then add: `@blotato/n8n-nodes-blotato`.  \n3. Log in to **Blotato**.  \n4. Go to **Settings โ†’ API Keys**.  \n5. In n8n โ†’ **Credentials โ†’ New**.  \n6. Choose **Blotato API** (provided by the community node you installed).  \n\n---\n## ๐Ÿ“ฌ Need Help or Want to Customize This?\n**Contact me for consulting and support:** [LinkedIn](https://www.linkedin.com/in/dr-firas/) / [YouTube](https://www.youtube.com/@DRFIRASS)  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "322f6e01-5427-480c-b781-7e81f0786674",
      "name": "Split out โ€“ iterate image_prompt",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2528,
        272
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output.image_prompt"
      },
      "typeVersion": 1
    },
    {
      "id": "9cde12f3-ef41-4e9f-a8cc-7ebc6d5a5666",
      "name": "๋Œ€๊ธฐ โ€“ NanoBanana job",
      "type": "n8n-nodes-base.wait",
      "position": [
        3104,
        96
      ],
      "webhookId": "15bf99dd-2a0e-4547-9ee1-25ac8e743585",
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "c7cc7666-4e3c-4c13-b3df-18e6410a445d",
      "name": "Update URL Final video",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3680,
        768
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATUS": "VIDEO CREATED",
            "ID IMAGE": "={{ $('Google Sheets โ€“ save image URLs').first().json['ID IMAGE'] }}",
            "URL FINAL VIDEO": "={{ $json.video.url }}"
          },
          "schema": [
            {
              "id": "ID IMAGE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SOURCE",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SOURCE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE NANOBANANA",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE NANOBANANA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SENDREAM",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE SENDREAM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE CHATGPT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL IMAGE CHATGPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL FINAL VIDEO",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL FINAL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ADS TEXT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ADS TEXT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID IMAGE"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9d6ed0e4-eafc-4569-b774-1a3f62261438",
      "name": "NanoBanana โ€“ fetch edited image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3440,
        96
      ],
      "parameters": {
        "url": "={{ $json.response_url }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "kNULkYDcOZG3X0be",
          "name": "Fal.ai"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a0c3642a-76fb-4b20-bd3b-4da0d191e5c0",
      "name": "๋Œ€๊ธฐ โ€“ image rendering",
      "type": "n8n-nodes-base.wait",
      "position": [
        3104,
        272
      ],
      "webhookId": "755fd36b-b4aa-45f2-9998-d7492d8defd6",
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "24d6658d-0c8d-4e36-8266-12453d89790b",
      "name": "Google ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ โ€“ save image URLs",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4192,
        272
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATUS": "CREATE IMAGES",
            "ID IMAGE": "={{ $('Trigger: Receive Idea via Telegram').first().json.message.photo[2].file_unique_id }}",
            "URL IMAGE SOURCE": "={{ $('Google Drive: Upload Image').first().json.webContentLink }}",
            "URL IMAGE CHATGPT": "={{ $('ChatGPT Image โ€“ fetch generated image').first().json.data.response.resultUrls[0] }}",
            "URL IMAGE SENDREAM": "={{ $('Set โ€“ select Seedream image URL').first().json.url_video }}",
            "URL IMAGE NANOBANANA": "={{ $('NanoBanana โ€“ fetch edited image').item.json.images[0].url }}"
          },
          "schema": [
            {
              "id": "ID IMAGE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ID IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SOURCE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL IMAGE SOURCE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE NANOBANANA",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL IMAGE NANOBANANA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE SENDREAM",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL IMAGE SENDREAM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL IMAGE CHATGPT",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL IMAGE CHATGPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 1",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL VIDEO 3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL VIDEO 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL FINAL VIDEO",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "URL FINAL VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ADS TEXT",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "ADS TEXT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "51us92xkOlrvArhV",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "f648da56-7695-4d88-9bfd-977c6639fc53",
      "name": "๋ณ‘ํ•ฉ โ€“ collect image sources (3 providers)",
      "type": "n8n-nodes-base.merge",
      "position": [
        3984,
        256
      ],
      "parameters": {
        "mode": "chooseBranch",
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "cc07a757-53dc-43c1-9ed3-7aecbe501528",
      "name": "ChatGPT Image โ€“ fetch generated image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3440,
        448
      ],
      "parameters": {
        "url": "=https://api.kie.ai/api/v1/gpt4o-image/record-info?taskId={{ $json.data.taskId }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "ho8ZjaYj1SY0icGT",
          "name": "Kie AI"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5e77cd4f-7f23-4559-b4ef-08a8d90cdfcc",
      "name": "์„ค์ • โ€“ select Seedream image URL",
      "type": "n8n-nodes-base.set",
      "position": [
        3696,
        272
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "04c7d6bf-430a-4423-bd36-d76f8a6ff1c9",
              "name": "url_video",
              "type": "string",
              "value": "={{ ($json.data.resultJson.match(/https:\\/\\/tempfile\\.aiquickdraw\\.com\\/r\\/[^\\s\"']+\\.(?:png|jpg|jpeg|mp4|webm)/i)?.[0] || '').trim() }}\n\n\n\n"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "139b27b1-2000-429e-92eb-cdabfe4b7e04",
      "name": "๋Œ€๊ธฐ โ€“ image rendering II",
      "type": "n8n-nodes-base.wait",
      "position": [
        3104,
        448
      ],
      "webhookId": "755fd36b-b4aa-45f2-9998-d7492d8defd6",
      "parameters": {
        "unit": "minutes",
        "amount": 4
      },
      "typeVersion": 1.1
    },
    {
      "id": "b358b4a3-9e47-43f7-a416-c91e75dd85bc",
      "name": "์ง‘๊ณ„ โ€“ gather 3 video URLs",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2576,
        768
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "838977ab-171e-4300-95aa-b893d89e270b",
  "connections": {
    "49ebe3b4-175c-480b-a78b-32a86b772c11": {
      "ai_tool": [
        [
          {
            "node": "5c8efdcc-c697-412e-be62-1f31528075e5",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "d2401532-aa7b-45b7-9dc4-2d5f51a32599",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bfa98213-7d12-422b-9fa9-e9f8c4e6eb36": {
      "ai_tool": [
        [
          {
            "node": "AI Agent: Generate Video Script",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "035b6c10-43ac-4aea-a2ff-82a3ab0bcfa4": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d039a2f5-5177-4cce-9018-6a37ab54fa19": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 7
          }
        ]
      ]
    },
    "0bc8307e-3f4a-432a-8667-eb998ab55042": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 6
          }
        ]
      ]
    },
    "743afd32-6ebf-4e70-b911-2bbdba7d1ecf": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 5
          }
        ]
      ]
    },
    "0a3810b6-c21f-4077-954b-79aab2e7985e": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "cc3d40a1-1123-4faf-8df9-2ae5448ed53a": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "07dcc2c9-28ee-449a-919d-dbd3dc5196e7": {
      "main": [
        [
          {
            "node": "Loop Over Items - Split In Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7ec08451-6330-400e-87a2-ab9a2f0706ab": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "a04336f9-f2e6-4fbb-a082-9d232a08aa52": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 8
          }
        ]
      ]
    },
    "fb93e061-c5a9-4dfe-9ca2-ef8a3c6ce9f3": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "e7452627-f5ea-4083-964b-16832cf53f11": {
      "main": [
        [
          {
            "node": "5364e300-b999-4429-8b99-c1d40f48c28f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bb7a3989-1ffe-46c6-a2e9-4cba9a5fb47f": {
      "main": [
        [
          {
            "node": "0352c6fb-0614-4266-a6a9-78fd88f1e742",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge 3 Videos": {
      "main": [
        [
          {
            "node": "Wait: Merge Process",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "660b172c-fe62-40ed-84c9-8b0c2aa7739d": {
      "main": [
        [
          {
            "node": "Save Ad Data to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "5c8efdcc-c697-412e-be62-1f31528075e5",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set Master Prompt": {
      "main": [
        [
          {
            "node": "AI Agent: Generate Video Script",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Merge Status": {
      "main": [
        [
          {
            "node": "Upload Final Video to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8c3750e4-333e-4900-aa8e-97c6b5ce06b9": {
      "main": [
        [
          {
            "node": "660b172c-fe62-40ed-84c9-8b0c2aa7739d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent: Generate Video Script",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Read Brand Settings": {
      "main": [
        [
          {
            "node": "8c3750e4-333e-4900-aa8e-97c6b5ce06b9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "729b59d4-fa07-4fc9-b6cc-64fca41b22ef": {
      "main": [
        [
          {
            "node": "Merge 3 Videos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait: Merge Process": {
      "main": [
        [
          {
            "node": "c7cc7666-4e3c-4c13-b3df-18e6410a445d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5c8efdcc-c697-412e-be62-1f31528075e5": {
      "main": [
        [
          {
            "node": "322f6e01-5427-480c-b781-7e81f0786674",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c7cc7666-4e3c-4c13-b3df-18e6410a445d": {
      "main": [
        [
          {
            "node": "Check Merge Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "51fa2428-83e5-469e-9fbd-e6b74e7fdf35": {
      "main": [
        [
          {
            "node": "5c8efdcc-c697-412e-be62-1f31528075e5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5364e300-b999-4429-8b99-c1d40f48c28f": {
      "main": [
        [
          {
            "node": "035b6c10-43ac-4aea-a2ff-82a3ab0bcfa4",
            "type": "main",
            "index": 0
          },
          {
            "node": "cc3d40a1-1123-4faf-8df9-2ae5448ed53a",
            "type": "main",
            "index": 0
          },
          {
            "node": "0a3810b6-c21f-4077-954b-79aab2e7985e",
            "type": "main",
            "index": 0
          },
          {
            "node": "7ec08451-6330-400e-87a2-ab9a2f0706ab",
            "type": "main",
            "index": 0
          },
          {
            "node": "fb93e061-c5a9-4dfe-9ca2-ef8a3c6ce9f3",
            "type": "main",
            "index": 0
          },
          {
            "node": "743afd32-6ebf-4e70-b911-2bbdba7d1ecf",
            "type": "main",
            "index": 0
          },
          {
            "node": "0bc8307e-3f4a-432a-8667-eb998ab55042",
            "type": "main",
            "index": 0
          },
          {
            "node": "d039a2f5-5177-4cce-9018-6a37ab54fa19",
            "type": "main",
            "index": 0
          },
          {
            "node": "a04336f9-f2e6-4fbb-a082-9d232a08aa52",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for VEO3 Rendering": {
      "main": [
        [
          {
            "node": "b5089618-2b8f-4611-a7cf-78ec9e1ed077",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait โ€“ NanoBanana job": {
      "main": [
        [
          {
            "node": "9d6ed0e4-eafc-4569-b774-1a3f62261438",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b5089618-2b8f-4611-a7cf-78ec9e1ed077": {
      "main": [
        [
          {
            "node": "Loop Over Items - Split In Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0352c6fb-0614-4266-a6a9-78fd88f1e742": {
      "main": [
        [
          {
            "node": "Wait for VEO3 Rendering",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2b8bb026-a1a0-4f6a-952b-c66458be98ca": {
      "main": [
        [
          {
            "node": "Wait โ€“ NanoBanana job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "5c8efdcc-c697-412e-be62-1f31528075e5",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "b5e1088e-f59b-48c0-bad0-65887aa9e37b": {
      "main": [
        [
          {
            "node": "Google Drive: Upload Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait โ€“ image rendering": {
      "main": [
        [
          {
            "node": "a2c358bc-ce2d-4f48-a444-8f2f24a3abbe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent: Generate Video Script",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive: Upload Image": {
      "main": [
        [
          {
            "node": "51fa2428-83e5-469e-9fbd-e6b74e7fdf35",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f9b4f876-3ce8-4896-9be5-88b76abf7a4b": {
      "main": [
        [
          {
            "node": "e7452627-f5ea-4083-964b-16832cf53f11",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait โ€“ image rendering II": {
      "main": [
        [
          {
            "node": "cc07a757-53dc-43c1-9ed3-7aecbe501528",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a2c358bc-ce2d-4f48-a444-8f2f24a3abbe": {
      "main": [
        [
          {
            "node": "Set โ€“ select Seedream image URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Ad Data to Google Sheets": {
      "main": [
        [
          {
            "node": "f9b4f876-3ce8-4896-9be5-88b76abf7a4b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent: Generate Video Script": {
      "main": [
        [
          {
            "node": "07dcc2c9-28ee-449a-919d-dbd3dc5196e7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate โ€“ gather 3 video URLs": {
      "main": [
        [
          {
            "node": "729b59d4-fa07-4fc9-b6cc-64fca41b22ef",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b8637494-856c-46f2-9d3c-1df9593d02de": {
      "main": [
        [
          {
            "node": "Wait โ€“ image rendering II",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets โ€“ save image URLs": {
      "main": [
        [
          {
            "node": "Set Master Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9d6ed0e4-eafc-4569-b774-1a3f62261438": {
      "main": [
        [
          {
            "node": "Merge โ€“ collect image sources (3 providers)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set โ€“ select Seedream image URL": {
      "main": [
        [
          {
            "node": "Merge โ€“ collect image sources (3 providers)",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Loop Over Items - Split In Batches": {
      "main": [
        [
          {
            "node": "Aggregate โ€“ gather 3 video URLs",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "bb7a3989-1ffe-46c6-a2e9-4cba9a5fb47f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "322f6e01-5427-480c-b781-7e81f0786674": {
      "main": [
        [
          {
            "node": "2b8bb026-a1a0-4f6a-952b-c66458be98ca",
            "type": "main",
            "index": 0
          },
          {
            "node": "181c4741-92b4-4884-bffd-c1dbddca2477",
            "type": "main",
            "index": 0
          },
          {
            "node": "b8637494-856c-46f2-9d3c-1df9593d02de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7fd471ae-4ef4-436c-b476-b98cc8848cea": {
      "main": [
        [
          {
            "node": "b5e1088e-f59b-48c0-bad0-65887aa9e37b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload Final Video to Google Drive": {
      "main": [
        [
          {
            "node": "Read Brand Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "181c4741-92b4-4884-bffd-c1dbddca2477": {
      "main": [
        [
          {
            "node": "Wait โ€“ image rendering",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cc07a757-53dc-43c1-9ed3-7aecbe501528": {
      "main": [
        [
          {
            "node": "Merge โ€“ collect image sources (3 providers)",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Merge โ€“ collect image sources (3 providers)": {
      "main": [
        [
          {
            "node": "Google Sheets โ€“ save image URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์ด ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?

์œ„์˜ JSON ๊ตฌ์„ฑ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ n8n ์ธ์Šคํ„ด์Šค์—์„œ ์ƒˆ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  "JSON์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ"๋ฅผ ์„ ํƒํ•œ ํ›„, ๊ตฌ์„ฑ์„ ๋ถ™์—ฌ๋„ฃ๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ธ์ฆ ์„ค์ •์„ ์ˆ˜์ •ํ•˜์„ธ์š”.

์ด ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ์–ด๋–ค ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•œ๊ฐ€์š”?

๊ณ ๊ธ‰ - ์ฝ˜ํ…์ธ  ์ œ์ž‘, ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ AI

์œ ๋ฃŒ์ธ๊ฐ€์š”?

์ด ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ์™„์ „ํžˆ ๋ฌด๋ฃŒ์ด๋ฉฐ ์ง์ ‘ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํƒ€์‚ฌ ์„œ๋น„์Šค(์˜ˆ: OpenAI API)๋Š” ์‚ฌ์šฉ์ž ์ง์ ‘ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”์ฒœ

๐Ÿ’ฅ NanoBanana์™€ VEO3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AI ๋ฐ”์ด๋Ÿฌ์Šค ๋น„๋””์˜ค ์ƒ์„ฑํ•˜๊ณ  Blotato๋ฅผ ํ†ตํ•ด ์†Œ์…œ ํ”Œ๋žซํผ์— ๊ณต์œ  - ๋น„๋””์˜ค
NanoBanana์™€ VEO3์„ ์‚ฌ์šฉํ•˜์—ฌ AI ๋ฐ”์ด๋Ÿฌ์Šค ๋น„๋””์˜ค ์ƒ์„ฑํ•˜๊ณ  Blotato๋ฅผ ํ†ตํ•ด ์†Œ์…œ ๋ฏธ๋””์–ด์—์„œ ๊ณต์œ 
Set
Code
Wait
+
Set
Code
Wait
47 ๋…ธ๋“œDr. Firas
๊ธฐํƒ€
๐Ÿ’ฅ HeyGen II - ๋‚˜๋ฅผ ๋ณต์ œํ•˜๋ผ - ์•„์ด๋””์–ด๋ถ€ํ„ฐ ๊ฒŒ์‹œ๊นŒ์ง€: YouTube, TikTok, Instagram์„ ์œ„ํ•œ GPT-5 ๋น„๋””์˜ค ์ž๋™ํ™” - ๋น„๋””์˜ค
HeyGen, GPT-5 ๋ฐ ์†Œ์…œ ๊ฒŒ์‹œ๋ฅผ ์‚ฌ์šฉํ•œ ์Œ์„ฑ ์ž…๋ ฅ ๋น„๋””์˜ค ์ œ์ž‘ ์ž๋™ํ™”
If
Set
Wait
+
If
Set
Wait
41 ๋…ธ๋“œDr. Firas
์ฝ˜ํ…์ธ  ์ œ์ž‘
HeyGen๊ณผ Google Sheets ํ†ตํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ AI ๊ฐ€์ƒ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ƒ์„ฑ
GPT-5์„ ์‚ฌ์šฉํ•˜์—ฌ AI ๊ฐ€์ƒ ์ธ๋ฌผ ๋น„๋””์˜ค ์ƒ์„ฑ ๋ฐ ์†Œ์…œ ๋ฏธ๋””์–ด ํ”Œ๋žซํผ์— ๊ฒŒ์‹œ
If
Set
Wait
+
If
Set
Wait
41 ๋…ธ๋“œDr. Firas
์ฝ˜ํ…์ธ  ์ œ์ž‘
OpenAI, ElevenLabs ๋ฐ Fal.ai๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋””์˜ค, ํŒŸ์บ์ŠคํŠธ ๋ฐ ASMR์šฉ ๋ฐ”์ด๋Ÿด ์ฝ˜ํ…์ธ  ์ œ์ž‘ ์ž๋™ํ™”
OpenAI, ElevenLabs ๋ฐ Fal.ai๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋””์˜ค, ํŒŸ์บ์ŠคํŠธ ๋ฐ ASMR์šฉ ๋ฐ”์ด๋Ÿด ์ฝ˜ํ…์ธ  ์ œ์ž‘ ์ž๋™ํ™”
Set
Code
Wait
+
Set
Code
Wait
97 ๋…ธ๋“œAdam Crafts
์ฝ˜ํ…์ธ  ์ œ์ž‘
1. ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ์ƒ์„ธ ์„ค์ • ๋กœ๋ด‡ ๋ณต์‚ฌ๋ณธ
Suno, GPT-4, Runway, Creatomate๋กœ AI ์ƒ์„ฑ YouTube ์Œ์•… ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
If
Set
Code
+
If
Set
Code
203 ๋…ธ๋“œJoseph
์ฝ˜ํ…์ธ  ์ œ์ž‘
๐Ÿ’ฅNanoBanana์™€ Seedance๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ด๋Ÿฌ์Šค์ ์ธ ๊ด‘๊ณ  ์ƒ์„ฑ, VIDE II๋ฅผ ํ†ตํ•ด ์†Œ์…œ ๋ฏธ๋””์–ด์— upload-post๊ฒŒ์‹œ
์‚ฌ์šฉ AI๋กœ ๋ฐ”์ด๋Ÿฌ์Šค์ ์ธ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๊ด‘๊ณ  ์ƒ์„ฑ: NanoBanana, Seedance, Suno๋ฅผ ์†Œ์…œ ๋ฏธ๋””์–ด์— ์‚ฌ์šฉ
If
Set
Code
+
If
Set
Code
45 ๋…ธ๋“œDr. Firas
๊ธฐํƒ€
์›Œํฌํ”Œ๋กœ์šฐ ์ •๋ณด
๋‚œ์ด๋„
๊ณ ๊ธ‰
๋…ธ๋“œ ์ˆ˜63
์นดํ…Œ๊ณ ๋ฆฌ2
๋…ธ๋“œ ์œ ํ˜•19
๋‚œ์ด๋„ ์„ค๋ช…

๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ 16+๊ฐœ ๋…ธ๋“œ์˜ ๋ณต์žกํ•œ ์›Œํฌํ”Œ๋กœ์šฐ

์ €์ž
Dr. Firas

Dr. Firas

@drfiras

Automation expert and certified trainer. I create hands-on courses to master automation with n8n. Contact me to access my exclusive training and start building powerful workflows today. ๐Ÿš€

์™ธ๋ถ€ ๋งํฌ
n8n.io์—์„œ ๋ณด๊ธฐ โ†’

์ด ์›Œํฌํ”Œ๋กœ์šฐ ๊ณต์œ 

์นดํ…Œ๊ณ ๋ฆฌ

์นดํ…Œ๊ณ ๋ฆฌ: 34