{
  "id": "FC8kRipaqOXvANsB",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automated AI Video Creation with Veo3 for Instagram Publishing",
  "tags": [],
  "nodes": [
    {
      "id": "09970c2f-8a8d-48b1-aeed-8a2499973782",
      "name": "Think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        928,
        496
      ],
      "parameters": {
        "description": "Use this tool to record internal reasoning or intermediate thoughts. It does not retrieve new information or modify the database; instead, it appends entries to a log for reference. This is particularly useful for complex reasoning tasks or when temporary memory is required."
      },
      "typeVersion": 1
    },
    {
      "id": "d66a6d7a-fdc9-4277-bff3-151e119926f5",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1040,
        480
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"string\",\n  \"final_prompt\": \"string\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "911817a7-b87d-40a8-9ac3-1ba10d59c0db",
      "name": "Update Status to \"Publish\"",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2864,
        320
      ],
      "parameters": {
        "columns": {
          "value": {
            "idea": "={{ $('Save Idea in google sheet').first().json.idea }}",
            "production": "Publish"
          },
          "schema": [
            {
              "id": "idea",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "idea",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "caption",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "production",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "production",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "environment_prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "environment_prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sound_prompt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sound_prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "idea"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1o8a6roAbvIUyJ6yZ5u3fsom3ubr9g6A0lCzfx961V-M/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1o8a6roAbvIUyJ6yZ5u3fsom3ubr9g6A0lCzfx961V-M",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1o8a6roAbvIUyJ6yZ5u3fsom3ubr9g6A0lCzfx961V-M/edit?usp=drivesdk",
          "cachedResultName": "Save Video Idea"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "32d138c8-9548-4525-bbec-89c4ab3e9cbc",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        48,
        480
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2551e8f2-a2b6-4cf9-b0da-99ab790db77a",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        816,
        512
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "9f58a3ab-6c22-4085-b321-1b5b64362b87",
      "name": "Start Daily  Two Times",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -208,
        336
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 12
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "320f0e4b-f6d7-41aa-99ed-5122e2fed608",
      "name": "Make Professional Prompt",
      "type": "n8n-nodes-base.set",
      "position": [
        672,
        336
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "cc2e0500-57b1-4615-82cb-1c950e5f2ec4",
              "name": "json_master",
              "type": "string",
              "value": "={\n  \"description\": \"A concise narrative describing the scene, highlighting key visual storytelling elements and product transformation.\",\n  \n  \"style\": \"Defines the visual tone (e.g., cinematic, photorealistic, stylized, gritty, elegant).\",\n  \n  \"camera\": {\n    \"type\": \"Specifies camera setup (e.g., fixed, dolly, Steadicam, crane).\",\n    \"movement\": \"Describes camera motion (e.g., slow push-in, pan, orbit).\",\n    \"lens\": \"Optional \u2013 lens type or focal length for cinematic effect.\"\n  },\n  \n  \"lighting\": {\n    \"type\": \"Lighting style (e.g., natural, dramatic, high-contrast).\",\n    \"sources\": \"Primary light sources (e.g., sunlight, halogen, ambient glow).\",\n    \"FX\": \"Optional \u2013 visual effects like fog, reflections, lens flares.\"\n  },\n  \n  \"environment\": {\n    \"location\": \"Scene location (e.g., kitchen, desert, basketball court).\",\n    \"set_pieces\": [\n      \"Key props or background elements (e.g., hardwood floors, chain-link fence, velvet surface).\"\n    ],\n    \"mood\": \"Overall atmosphere (e.g., moody, clean, epic).\"\n  },\n  \n  \"elements\": [\n    \"Primary physical objects (e.g., product box, accessories, vehicles).\",\n    \"Include visible branding such as logos, packaging, textures.\"\n  ],\n  \n  \"subject\": {\n    \"character\": {\n      \"description\": \"Optional \u2013 character appearance and outfit.\",\n      \"pose\": \"Optional \u2013 character positioning or gesture.\",\n      \"lip_sync_line\": \"Optional \u2013 dialogue or spoken line.\"\n    },\n    \"product\": {\n      \"brand\": \"Brand name.\",\n      \"model\": \"Product name or model.\",\n      \"action\": \"Description of product transformation, usage, or assembly.\"\n    }\n  },\n  \n  \"motion\": {\n    \"type\": \"Type of motion (e.g., transformation, explosion, vortex).\",\n    \"details\": \"Step-by-step description of how elements move or evolve visually.\"\n  },\n  \n  \"VFX\": {\n    \"transformation\": \"Optional \u2013 visual style (e.g., neon trails, motion blur).\",\n    \"impact\": \"Optional \u2013 effects like shockwave, glow, distortion.\",\n    \"particles\": \"Optional \u2013 particles such as sparks, embers, dust.\",\n    \"environment\": \"Optional \u2013 environmental effects like wind, ripples.\"\n  },\n  \n  \"audio\": {\n    \"music\": \"Optional \u2013 background music style (e.g., cinematic score, ambient).\",\n    \"sfx\": [\n      \"List of sound effects (e.g., whoosh, pop, click).\"\n    ],\n    \"ambience\": \"Optional \u2013 environmental sounds (e.g., traffic, wind).\",\n    \"voiceover\": {\n      \"delivery\": \"Tone and style (e.g., confident, deep, whisper).\",\n      \"line\": \"Spoken narration or dialogue.\"\n    }\n  },\n  \n  \"ending\": \"Description of the final frame (e.g., logo reveal, freeze frame, glow effect).\",\n  \n  \"text\": \"Text usage (none, overlay, tagline, logo-only ending).\",\n  \n  \"format\": \"Output format (e.g., 16:9, 4K, vertical).\",\n  \n  \"keywords\": [\n    \"Relevant tags describing brand, style, motion, camera, audio mood, and theme.\"\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": "d4b893c3-891a-4f2a-a578-ea631c29ac4f",
      "name": "AI Agent (Create Video Script)",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        896,
        336
      ],
      "parameters": {
        "text": "=Create a BEFORE/AFTER transformation video prompt using the provided idea.\n\n**Inputs**\n\n- idea : {{ $('Save Idea in google sheet').item.json.idea }}\n- environment : {{ $('Save Idea in google sheet').item.json.environment_prompt }}\n- sound : {{ $('Save Idea in google sheet').item.json.sound_prompt }}\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 JSON object** with the keys: `title` and `final_prompt`.\n- Use the Think tool to review your output\n",
        "options": {
          "systemMessage": "=\"system_prompt:\n  ## SYSTEM PROMPT: Structured Transformation Video Prompt Generator\n  A - Ask:\n    Generate a structured BEFORE/AFTER transformation video prompt for VEO 3 cinematic generation, strictly based on the master schema provided in: {{ $json.json_master }}.\n    The final result must be a JSON object with exactly two top-level keys: `title` and `final_prompt`.\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` field must contain a **single-line JSON string** that follows the exact structure of {{ $json.json_master }} with all fields preserved.\n      - The `final_prompt` string must clearly describe: BEFORE scene, AFTER scene, TRANSITION, CAMERA, LIGHTING, PALETTE, STYLE, and SOUND.\n      - Do not include any explanations, markdown, or extra text \u2014 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 transformation\",\n        \"final_prompt\": \"{...stringified JSON of the full prompt...}\"\n      }\n\"\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "ac252362-ef6a-440e-8819-e2840e7aaa8f",
      "name": "Code (Format Prompt)",
      "type": "n8n-nodes-base.code",
      "position": [
        1248,
        336
      ],
      "parameters": {
        "jsCode": "const structuredPrompt = $input.first().json.output.final_prompt;\nreturn {\n  json: {\n    prompt: JSON.stringify(structuredPrompt), // this escapes it correctly!\n    model: \"veo3_fast\",\n    aspectRatio: \"9:16\"\n  }\n};\n"
      },
      "typeVersion": 2
    },
    {
      "id": "64e7af1b-f526-4619-97ba-8f35c13d4417",
      "name": "HTTP (Create Video with VEO3)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1440,
        336
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/generate",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"prompt\": {{ $json.prompt }},\n  \"model\": \"{{ $('Make Professional Prompt').item.json.model }}\",\n  \"aspectRatio\": \"{{ $('Make Professional Prompt').item.json.aspectRatio }}\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4c913db8-4b1e-42da-ae33-c904dcc57868",
      "name": "Wait 3m for Rendering video",
      "type": "n8n-nodes-base.wait",
      "position": [
        1648,
        336
      ],
      "parameters": {
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "77b63988-a6b4-4b15-9d70-81b20950dfa3",
      "name": "HTTP (Download Video from VEO3)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1856,
        336
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/record-info",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $('HTTP (Create Video with VEO3)').item.json.data.taskId }}"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "84adb93a-f8cc-4b1d-973a-a0c68839e2f4",
      "name": "If (Check Video Status)",
      "type": "n8n-nodes-base.if",
      "position": [
        2048,
        336
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "57f70829-d058-494e-b438-7ce9dc8a6384",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "SUCCESS"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "afc352b4-b71b-4820-95fd-4ebdbf6b124d",
      "name": "Wait 30s if video still processing",
      "type": "n8n-nodes-base.wait",
      "position": [
        2224,
        352
      ],
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "8c74f84d-b15b-4191-be0b-ae21309c6592",
      "name": "HTTP (Upload Bloatato Media)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2448,
        320
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{$json[\"data\"][\"videoUrl\"]}}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "da358197-25ac-4af4-a119-2321cb3b8c38",
      "name": "Save Idea in google sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        448,
        336
      ],
      "parameters": {
        "columns": {
          "value": {
            "idea": "={{ $json.output[0].Idea }}",
            "caption": "={{ $json.output[0].Caption }}",
            "production": "={{ $json.output[0].Status }}",
            "sound_prompt": "={{ $json.output[0].Sound }}",
            "environment_prompt": "={{ $json.output[0].Environment }}"
          },
          "schema": [
            {
              "id": "idea",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "idea",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "caption",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "production",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "production",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "environment_prompt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "environment_prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sound_prompt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sound_prompt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1o8a6roAbvIUyJ6yZ5u3fsom3ubr9g6A0lCzfx961V-M/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1o8a6roAbvIUyJ6yZ5u3fsom3ubr9g6A0lCzfx961V-M",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1o8a6roAbvIUyJ6yZ5u3fsom3ubr9g6A0lCzfx961V-M/edit?usp=drivesdk",
          "cachedResultName": "Save Video Idea"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "76b1fc6e-2dce-49bc-b643-a56585f678c4",
      "name": "Make a Creative Video Idea",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        48,
        336
      ],
      "parameters": {
        "text": "=Generate a highly original visual concept centered on a single non-human subject (object, environment, or natural phenomenon), showcasing a compelling BEFORE and AFTER transformation.\n\nRequirements:\n* Clearly define a visually distinct **BEFORE state** and a strongly contrasting **AFTER state**\n* Specify a **TRANSITION** using exactly one word (e.g., morph, timelapse, glitch, wipe, burst)\n* Include 2\u20133 **STYLE** descriptors (e.g., cinematic, macro, surreal, minimalist)\n* Define a concise **COLOR PALETTE** (2\u20133 colors)\n* Specify one **CAMERA movement** (e.g., slow push-in, top-down, dolly-in)\n* Specify one **LIGHTING** descriptor (e.g., soft backlight, moody rim light)\n\nConstraints:\n* Do not include humans or brands\n* Avoid clich\u00e9s (e.g., messy-to-clean, food swaps, generic glow-ups)\n* Prioritize originality, strong visual contrast, and immediate clarity\n* Optimize for vertical (9:16) short-form video impact\n\nOutput Format (strictly one line):\n\"BEFORE: [short phrase] \u2192 AFTER: [short phrase] | TRANSITION: [one word] | STYLE: [tag1, tag2] | PALETTE: [color1, color2] | CAMERA: [movement] | LIGHTING: [descriptor]\"\n",
        "options": {
          "systemMessage": "=**Role:**\nYou are an AI specialized in generating **one original BEFORE/AFTER transformation video concept**, fully optimized for TikTok and the VEO 3 API. Output must be a **single-line JSON array** following the specifications below precisely.\n\n---\n\n### RULES\n\n1. **Number of ideas**\n\n   * Generate **exactly one idea** per request.\n\n2. **Theme**\n\n   * Theme is always **\u201cBefore/After transformation\u201d**.\n   * Each idea must showcase a clear, visually striking **contrast** between the BEFORE and AFTER states.\n\n3. **Idea**\n\n   * Maximum **15 words**.\n   * Describe the transformation cinematically, visually compelling, and immediately understandable.\n\n4. **Caption**\n\n   * Short, punchy, and viral-friendly.\n   * Include **one emoji**.\n   * Exactly **12 hashtags** in this order:\n\n     1. Four transformation-relevant hashtags\n     2. Four all-time most popular hashtags\n     3. Four currently trending hashtags (based on live research)\n   * All lowercase, without punctuation in hashtags.\n\n5. **Environment**\n\n   * Maximum **20 words**.\n   * Must match the action in the Idea.\n   * Specify location (room, landscape, lab\u2026), visual details (lighting, textures, transitions\u2026), and style (cinematic, stylized, timelapse, slow-motion\u2026).\n\n6. **Sound**\n\n   * Maximum **15 words**.\n   * Describe primary sound design (e.g., \u201cbeat drop at transition,\u201d \u201csoft rain before, energetic music after\u201d).\n\n7. **Status**\n\n   * Always set to `\"for production\"`.\n\n---\n\n### OUTPUT FORMAT\n\nReturn the concept as a **single-line JSON array**:\n\n```json\n[\n  {\n    \"Caption\": \"Your short viral title with emoji #4_topic_hashtags #4_all_time_popular_hashtags #4_trending_hashtags\",\n    \"Idea\": \"Your before/after transformation idea under 15 words\",\n    \"Environment\": \"Your vivid setting under 20 words matching the action\",\n    \"Sound\": \"Your primary sound description under 15 words\",\n    \"Status\": \"for production\"\n  }\n]\n```\n\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "4192e01d-8a0e-4765-95dd-b7bd809c9f3c",
      "name": "Tool (Make More Creative Thinking in Action)",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        144,
        592
      ],
      "parameters": {
        "description": "Use this tool to record internal reasoning or intermediate thoughts. It does not retrieve new information or modify the database; instead, it appends entries to a log for reference. This is particularly useful for complex reasoning tasks or when temporary memory is required."
      },
      "typeVersion": 1
    },
    {
      "id": "6103f7ba-7e5b-45ee-852c-00dc656e3113",
      "name": "Parse AI Output",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        224,
        480
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"Caption\": \"Stray dog gets a second chance \ud83d\udc36\u2764\ufe0f #dogrescue #animalrescue #kindness #humanity #viral #feelgood #rescueanimals #loveanimals\",\n    \"Idea\": \"A homeless injured dog is rescued from the street and slowly recovers with human care\",\n    \"Environment\": \"Urban street to cozy shelter transition, warm lighting, emotional storytelling, before-and-after transformation\",\n    \"Sound\": \"Soft piano music with gentle city ambience fading into calm indoor sounds\",\n    \"Status\": \"Ready for production\"\n  }\n]\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "d8dc340f-8dc7-40eb-a7ec-5020ed51bdd6",
      "name": "Rapiwa (Send WhatsApp Notification)",
      "type": "n8n-nodes-rapiwa.rapiwa",
      "position": [
        3104,
        320
      ],
      "parameters": {
        "number": "add_your_whatsapp_number",
        "message": "=New Shorts Video Publish:\nTime: {{ $now.format(\"DD-MMM-YYYY t\") }}\nTitle: {{ $('Save Idea in google sheet').first().json.idea }}"
      },
      "credentials": {
        "rapiwaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5f82907c-018d-4ee1-b82f-4ad04a39c610",
      "name": "Send Telegram Notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        3104,
        144
      ],
      "parameters": {
        "text": "=New Shorts Video Publish:\nTime: {{ $now.format(\"DD-MMM-YYYY t\") }}\nTitle: {{ $('Save Idea in google sheet').first().json.idea }}",
        "chatId": "add_your_ID",
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "389ae64f-8821-4adc-9bf8-c8cc709dab6f",
      "name": "Send Slack Notification",
      "type": "n8n-nodes-base.slack",
      "position": [
        3104,
        496
      ],
      "parameters": {
        "text": "=New Shorts Video Publish:\nTime: {{ $now.format(\"DD-MMM-YYYY t\") }}\nTitle: {{ $('Save Idea in google sheet').first().json.idea }}",
        "user": {
          "__rl": true,
          "mode": "username",
          "value": "@add_your_username"
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "362d7004-51ff-4473-ad2d-65ef1e5aa17c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        240
      ],
      "parameters": {
        "width": 496,
        "height": 1216,
        "content": "## Overview\nThis workflow automates the creation and publishing of viral short-form videos for social media. It leverages AI to generate a unique \"before/after\" transformation concept, uses the VEO 3 API to render the video, and then publishes it to Instagram, complete with a viral-ready caption and hashtags.\n\n## Workflow Steps\n* **Scheduled Trigger** \u2013 Runs automatically on a set schedule to generate new content.\n* **AI Idea Generation** \u2013 GPT creates viral \u201cbefore/after\u201d concepts, captions, and video prompts.\n* **Data Storage** \u2013 Saves ideas, captions, and prompts in Google Sheets.\n* **Structured Prompting** \u2013 Converts ideas into JSON prompts for VEO 3 video generation.\n* **Video Generation** \u2013 Sends prompts to VEO 3 API for cinematic video rendering.\n* **Polling for Completion** \u2013 Checks video status every 30 seconds until ready.\n* **Media Upload** \u2013 Uploads finished video to Bloatato for social media hosting.\n* **Social Publishing** \u2013 Posts video and caption to Instagram via Bloatato.\n* **Status Update** \u2013 Marks idea as \u201cPublish\u201d in Google Sheets.\n* **Multi-Channel Notifications** \u2013 Sends final success alerts via WhatsApp, Telegram, and Slack.\n\n## Requirements \n* **n8n** \u2013 Automation platform for the workflow.\n* **APIs & Keys** \u2013 OpenAI (ideas & scripts), Google Sheets (tracking), VEO 3 (video generation), Bloatato (media hosting & Instagram), plus credentials for Instagram, Rapiwa, Telegram, and Slack.\n\n## Customization Options\n* **Content Theme** \u2013 Change AI prompts for tutorials, product reveals, educational clips, etc.\n* **Schedule** \u2013 Adjust the Cron node frequency.\n* **Platforms** \u2013 Swap Instagram/Bloatato for TikTok, YouTube Shorts, or Facebook Reels.\n* **AI Model** \u2013 Switch GPT to Anthropic Claude, Google Gemini, or others.\n* **Video Settings** \u2013 Modify `aspectRatio` for vertical (9:16) or horizontal (16:9) formats.\n* **Notifications** \u2013 Add/remove channels like email, Slack, WhatsApp, or Telegram.\n\n## Useful Links\n* **n8n Documentation**: [n8n.io](https://docs.n8n.io/)\n* **OpenAI API**: [platform.openai.com](https://platform.openai.com/docs/api-reference)\n* **Google Sheets API**: [developers.google.com](https://developers.google.com/sheets/api)\n* **VEO 3 API**: [kie.ai](https://kie.ai/)\n* **Bloatato API**: [backend.blotato.com](https://backend.blotato.com/)\n* **Instagram Graph API**: [developers.facebook.com](https://developers.facebook.com/docs/instagram-api/)"
      },
      "typeVersion": 1
    },
    {
      "id": "dcda96dc-94bc-4f35-a1ab-f4fda5c93ea8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        272
      ],
      "parameters": {
        "width": 832,
        "height": 448,
        "content": "# Idea Generation & Storage Group"
      },
      "typeVersion": 1
    },
    {
      "id": "5b62bfc7-9a9d-45a7-9987-aa7593aac1ba",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        272
      ],
      "parameters": {
        "width": 576,
        "height": 352,
        "content": "# Professional Scripting Group\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0d190958-76b1-418c-887b-50506c954b0c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1200,
        272
      ],
      "parameters": {
        "width": 1168,
        "height": 272,
        "content": "# Video Generation & Retrieval Group\n"
      },
      "typeVersion": 1
    },
    {
      "id": "96953a0a-8145-4675-ab76-11d26d1e3d69",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2384,
        256
      ],
      "parameters": {
        "width": 592,
        "height": 240,
        "content": "# Publishing Group\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "94bdf7b1-d660-4149-8880-368103e4563b",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3040,
        96
      ],
      "parameters": {
        "height": 544,
        "content": "## Notification Group\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5ac4c746-fec4-4479-bfbe-4083aa35361e",
      "name": "HTTP (Publish to Instagram)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2672,
        320
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"target\": {\n      \"targetType\": \"instagram\"\n    },\n    \"content\": {\n      \"text\": {{ $('Save Idea in google sheet').first().json.idea }},\n      \"platform\": \"instagram\",\n      \"mediaUrls\": [\"{{ $json.url }}\"]\n    },\n    \"accountId\": \"add_your_instagram_ID\"\n  }\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "875ce5e2-fe04-4e51-ac56-255a141c4cd3",
  "connections": {
    "Think": {
      "ai_tool": [
        [
          {
            "node": "AI Agent (Create Video Script)",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Output": {
      "ai_outputParser": [
        [
          {
            "node": "Make a Creative Video Idea",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Make a Creative Video Idea",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent (Create Video Script)",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Code (Format Prompt)": {
      "main": [
        [
          {
            "node": "HTTP (Create Video with VEO3)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Daily  Two Times": {
      "main": [
        [
          {
            "node": "Make a Creative Video Idea",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If (Check Video Status)": {
      "main": [
        [
          {
            "node": "HTTP (Upload Bloatato Media)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 30s if video still processing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Make Professional Prompt": {
      "main": [
        [
          {
            "node": "AI Agent (Create Video Script)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent (Create Video Script)",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Save Idea in google sheet": {
      "main": [
        [
          {
            "node": "Make Professional Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Make a Creative Video Idea": {
      "main": [
        [
          {
            "node": "Save Idea in google sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Status to \"Publish\"": {
      "main": [
        [
          {
            "node": "Send Telegram Notification",
            "type": "main",
            "index": 0
          },
          {
            "node": "Rapiwa (Send WhatsApp Notification)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Slack Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP (Publish to Instagram)": {
      "main": [
        [
          {
            "node": "Update Status to \"Publish\"",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 3m for Rendering video": {
      "main": [
        [
          {
            "node": "HTTP (Download Video from VEO3)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP (Upload Bloatato Media)": {
      "main": [
        [
          {
            "node": "HTTP (Publish to Instagram)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP (Create Video with VEO3)": {
      "main": [
        [
          {
            "node": "Wait 3m for Rendering video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent (Create Video Script)": {
      "main": [
        [
          {
            "node": "Code (Format Prompt)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP (Download Video from VEO3)": {
      "main": [
        [
          {
            "node": "If (Check Video Status)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 30s if video still processing": {
      "main": [
        [
          {
            "node": "If (Check Video Status)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tool (Make More Creative Thinking in Action)": {
      "ai_tool": [
        [
          {
            "node": "Make a Creative Video Idea",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}