8
n8n Françaisamn8n.com

đŸ’„ GĂ©nĂ©rer des vidĂ©os virales IA avec VEO 3 et les tĂ©lĂ©charger sur TikTok

Avancé

Ceci est unContent Creation, Miscellaneous, Multimodal AIworkflow d'automatisation du domainecontenant 24 nƓuds.Utilise principalement des nƓuds comme Set, Code, Wait, HttpRequest, GoogleSheets. GĂ©nĂ©rez des vidĂ©os virales IA avec VEO 3 et tĂ©lĂ©chargez-les sur TikTok

Prérequis
  • ‱Peut nĂ©cessiter les informations d'identification d'authentification de l'API cible
  • ‱Informations d'identification Google Sheets API
  • ‱ClĂ© API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nƓuds, avec support du zoom et du dĂ©placement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "AtyhZTTVbhFDWFhM",
  "meta": {
    "instanceId": "a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44"
  },
  "name": "đŸ’„ Generate AI Viral Videos with VEO 3 and Upload to TikTok ",
  "tags": [],
  "nodes": [
    {
      "id": "958b1b16-4eb0-436a-ac87-b5d529e414bc",
      "name": "Trigger : Démarrer la génération de contenu quotidien",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -240,
        112
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3d6bbc87-c411-434a-aa74-7e8e9893acc7",
      "name": "Outil : Injecter une perspective créative (Idée)",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        240,
        384
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "824f3d5a-c7c2-42b4-ba28-24ba4cbc972b",
      "name": "Analyser la sortie IA (Idée, Environnement, Son)",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        416,
        384
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"Caption\": \"Diver Removes Nets Off Whale 🐋 #whalerescue #marinelife #oceanrescue #seahelpers #love #nature #instagood #explore #viral #savenature #oceanguardians #cleanoceans\",\n    \"Idea\": \"Diver carefully cuts tangled net from distressed whale in open sea\",\n    \"Environment\": \"Open ocean, sunlight beams through water, diver and whale, cinematic realism\",\n    \"Sound\": \"Primary sound description under 15 words\",\n    \"Status\": \"for production\"\n  }\n]\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "4fc884ca-3611-4148-9f22-e6f6543363d0",
      "name": "Sauvegarder l'idée et les métadonnées dans Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        592,
        112
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "==ROW()-1",
            "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": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "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
            },
            {
              "id": "final_output",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "final_output",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "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.5
    },
    {
      "id": "5017f6ed-03cb-408c-bd47-97008e2d7352",
      "name": "Générer une idée de vidéo créative",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        160,
        112
      ],
      "parameters": {
        "text": "=Generate a creative concept involving:\n\n[[\nA striking BEFORE/AFTER transformation of a single non-human subject (object, environment, or natural phenomenon). The concept must specify:\n- BEFORE state: clear, visually distinct\n- AFTER state: contrasting outcome\n- TRANSITION: one word (e.g., morph, hard cut, timelapse, glitch, wipe, burst)\n- STYLE tags: 2–3 visual adjectives (e.g., cinematic, macro, neon, minimalist)\n- PALETTE: 2–3 color keywords\n- CAMERA: one movement (e.g., slow push-in, top-down, dolly-in)\n- LIGHTING: one descriptor (e.g., soft backlight, moody rim light)\n\nAvoid humans, brands, and clichĂ©s (messy→clean room, burger→salad, generic glow-up). Ensure novelty and immediate visual clarity suitable for vertical 9:16.\n\nYour response must follow this exact one-line structure:\n\n\"BEFORE: [short phrase] → AFTER: [short phrase] | TRANSITION: [style] | STYLE: [tag1, tag2] | PALETTE: [color1, color2] | CAMERA: [movement] | LIGHTING: [descriptor]\"\n]]\n\nReflect carefully before answering to ensure originality and visual appeal.\n\nUse the Think tool to review your output\n",
        "options": {
          "systemMessage": "=**Role:**  \nYou are an AI designed to generate **one original BEFORE/AFTER transformation video concept** optimized for TikTok and the VEO 3 API. Your output must be formatted as a **single-line JSON array** and follow the rules below exactly.\n\n---\n\n### RULES\n\n1. **Number of ideas**  \n   - Return **only one idea**.\n\n2. **Theme**  \n   - The user will always provide the theme: “Before/After transformation.”  \n   - Every idea must clearly show a striking **contrast** between the BEFORE and AFTER states.\n\n3. **Idea**  \n   - Maximum 15 words.  \n   - Describe the transformation in a cinematic, visually appealing way.\n\n4. **Caption**  \n   - Short, punchy, viral-friendly.  \n   - Include **one emoji**.  \n   - Exactly **12 hashtags** in this order:  \n     1. 4 transformation-relevant hashtags  \n     2. 4 all-time most popular hashtags  \n     3. 4 currently trending hashtags (based on live research)  \n   - All in lowercase.\n\n5. **Environment**  \n   - Maximum 20 words.  \n   - Must match the action in the Idea exactly.  \n   - Specify setting (room, landscape, lab
), visual details (lighting, textures, transitions
), and style (cinematic, stylized, timelapse, slow-motion
).\n\n6. **Sound**  \n   - Maximum 15 words.  \n   - Describe the sound design (e.g., “beat drop at transition,” “soft rain before, energetic music after”).\n\n7. **Status**  \n   - Always set to `\"for production\"`.\n\n---\n\n### OUTPUT FORMAT (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"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "d167d2b8-320e-4ea8-9f83-fae9840db585",
      "name": "LLM : Générer une idée brute (GPT-5)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        64,
        384
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9c487748-bee0-40b8-b8d4-0deff7294f60",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -224,
        816
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "6h3DfVhNPw9I25nO",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6434e3ed-7f71-467c-9a7c-625feb9024c9",
      "name": "Think",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        -80,
        816
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "854036f1-bca7-4252-be3a-1095526ee614",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        48,
        816
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"string\",\n  \"final_prompt\": \"string\"\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "be8ad1f9-2de7-4c61-810a-fa3ab483835d",
      "name": "Définir l'invite principale",
      "type": "n8n-nodes-base.set",
      "position": [
        592,
        352
      ],
      "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": "d823f8e0-f1fe-48d3-bcd8-d312c23c06dc",
      "name": "Agent IA : Générer un script vidéo",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -176,
        592
      ],
      "parameters": {
        "text": "=Create a BEFORE/AFTER transformation video prompt using the provided idea.\n\n**Inputs**\n\n- idea : {{ $('Save Idea & Metadata to Google Sheets').item.json.idea }}\n- environment : {{ $('Save Idea & Metadata to Google Sheets').item.json.environment_prompt }}\n- sound : {{ $('Save Idea & Metadata to Google Sheets').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 — 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": "ca35eeb6-ad4a-43a4-932d-982ea8c5b34c",
      "name": "Générer la vidéo avec VEO3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        592,
        592
      ],
      "parameters": {
        "url": "https://api.kie.ai/api/v1/veo/generate",
        "body": "={\n  \"prompt\": {{ $json.prompt }},\n  \"model\": \"{{ $('Set Master Prompt').item.json.model }}\",\n  \"aspectRatio\": \"{{ $('Set Master Prompt').item.json.aspectRatio }}\"\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": "58b989a8-21a0-41a3-b6b0-1962720e0440",
      "name": "Attendre le rendu VEO3",
      "type": "n8n-nodes-base.wait",
      "position": [
        320,
        784
      ],
      "webhookId": "f8f1a8a7-0870-4f09-b732-425a8937f229",
      "parameters": {
        "unit": "minutes",
        "amount": 3
      },
      "typeVersion": 1.1
    },
    {
      "id": "e7a619a0-035f-4506-a92e-c501a7e63786",
      "name": "Télécharger la vidéo depuis VEO3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -256,
        1024
      ],
      "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": "4fdbd573-2ff1-48e5-8a60-0138900ca4ab",
      "name": "Formater l'invite",
      "type": "n8n-nodes-base.code",
      "position": [
        320,
        592
      ],
      "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": "b2090577-e3e8-46e2-861d-5ad595335324",
      "name": "URL de la vidéo finale",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -48,
        1024
      ],
      "parameters": {
        "columns": {
          "value": {
            "idea": "={{ $('Save Idea & Metadata to Google Sheets').item.json.idea }}",
            "production": "done",
            "final_output": "={{ $json.data.response.resultUrls[0] }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "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
            },
            {
              "id": "final_output",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "final_output",
              "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": [
            "idea"
          ],
          "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.5
    },
    {
      "id": "5133195b-ccd0-4749-a871-26c56c68b019",
      "name": "Téléverser la vidéo sur BLOTATO",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        160,
        1024
      ],
      "parameters": {
        "mediaUrl": "={{ $json.final_output }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2f892860-6576-4c64-89a7-213162a623c2",
      "name": "Mettre à jour le statut en \"TERMINÉ\"",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        592,
        1024
      ],
      "parameters": {
        "columns": {
          "value": {
            "idea": "={{ $('Save Idea & Metadata to Google Sheets').first().json.idea }}",
            "production": "Publish"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "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
            },
            {
              "id": "final_output",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "final_output",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "idea"
          ],
          "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": "1825853b-1c3e-479b-acff-4d2804cf10d9",
      "name": "TikTok",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        368,
        1024
      ],
      "parameters": {
        "options": {},
        "platform": "tiktok",
        "accountId": {
          "__rl": true,
          "mode": "id",
          "value": "="
        },
        "postContentText": "={{ $('Save Idea & Metadata to Google Sheets').first().json.caption }}",
        "postContentMediaUrls": "={{ $json.url }}",
        "postCreateTiktokOptionIsAiGenerated": true
      },
      "credentials": {
        "blotatoApi": {
          "id": "NtMnRSKAAN5u9lyc",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "007b1c04-31b3-4b5d-aceb-a5a650908dee",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -80
      ],
      "parameters": {
        "width": 528,
        "height": 1328,
        "content": "## đŸŽ„ Watch This Tutorial\n\n@[youtube](E-_8KZ_FSeY)\n\n\n### đŸ“„  [Open full documentation on Notion](https://automatisation.notion.site/Generate-AI-Viral-Videos-with-VEO-3-and-Upload-to-TikTok-2703d6550fd980aa9ea1dd7867c1cccf?source=copy_link)\n\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/1pdMs3jWqiYQn3BNdmPhFYhbelQD3jRVtm72ECoCxo0o/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. Install the Blotato 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. Go to **Credentials → New**.\n6. Choose **Blotato API** (provided by the community node you installed).\n\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\n"
      },
      "typeVersion": 1
    },
    {
      "id": "98797c5f-7a99-4f61-ab61-47772925ed0b",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 1152,
        "height": 1328,
        "content": "## Generate AI Viral Videos with VEO3 and Upload to TikTok (By Dr. Firas)\n### What problem is this workflow solving? / Use case\nCreating short-form video content that stands out takes time: ideation, scriptwriting, video generation, and publishing. This workflow automates the entire pipeline — from idea generation to TikTok upload — enabling you to scale your content strategy and focus on creativity rather than repetitive tasks.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c13b5356-80d0-4d62-a3e8-a65a32f730f9",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        48
      ],
      "parameters": {
        "color": 7,
        "width": 1104,
        "height": 480,
        "content": "## | INPUT: Starting Idea Section\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f7433a4a-89e0-41c7-a0b2-55fcdeeac374",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        960
      ],
      "parameters": {
        "color": 3,
        "width": 1104,
        "height": 256,
        "content": "## | Step 2 — Publish Video to TikTok\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7412d83f-e434-4e72-ae12-fd2d97ba05e6",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        528
      ],
      "parameters": {
        "color": 7,
        "width": 1104,
        "height": 432,
        "content": "## | Step 1 — Generate Video with VEO3"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b1fa6d8c-9f83-4ae1-8c99-952ef3e97229",
  "connections": {
    "6434e3ed-7f71-467c-9a7c-625feb9024c9": {
      "ai_tool": [
        [
          {
            "node": "d823f8e0-f1fe-48d3-bcd8-d312c23c06dc",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "1825853b-1c3e-479b-acff-4d2804cf10d9": {
      "main": [
        [
          {
            "node": "2f892860-6576-4c64-89a7-213162a623c2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4fdbd573-2ff1-48e5-8a60-0138900ca4ab": {
      "main": [
        [
          {
            "node": "ca35eeb6-ad4a-43a4-932d-982ea8c5b34c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b2090577-e3e8-46e2-861d-5ad595335324": {
      "main": [
        [
          {
            "node": "5133195b-ccd0-4749-a871-26c56c68b019",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9c487748-bee0-40b8-b8d4-0deff7294f60": {
      "ai_languageModel": [
        [
          {
            "node": "d823f8e0-f1fe-48d3-bcd8-d312c23c06dc",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "be8ad1f9-2de7-4c61-810a-fa3ab483835d": {
      "main": [
        [
          {
            "node": "d823f8e0-f1fe-48d3-bcd8-d312c23c06dc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5133195b-ccd0-4749-a871-26c56c68b019": {
      "main": [
        [
          {
            "node": "1825853b-1c3e-479b-acff-4d2804cf10d9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "58b989a8-21a0-41a3-b6b0-1962720e0440": {
      "main": [
        [
          {
            "node": "e7a619a0-035f-4506-a92e-c501a7e63786",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e7a619a0-035f-4506-a92e-c501a7e63786": {
      "main": [
        [
          {
            "node": "b2090577-e3e8-46e2-861d-5ad595335324",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ca35eeb6-ad4a-43a4-932d-982ea8c5b34c": {
      "main": [
        [
          {
            "node": "58b989a8-21a0-41a3-b6b0-1962720e0440",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "854036f1-bca7-4252-be3a-1095526ee614": {
      "ai_outputParser": [
        [
          {
            "node": "d823f8e0-f1fe-48d3-bcd8-d312c23c06dc",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "5017f6ed-03cb-408c-bd47-97008e2d7352": {
      "main": [
        [
          {
            "node": "4fc884ca-3611-4148-9f22-e6f6543363d0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d167d2b8-320e-4ea8-9f83-fae9840db585": {
      "ai_languageModel": [
        [
          {
            "node": "5017f6ed-03cb-408c-bd47-97008e2d7352",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "d823f8e0-f1fe-48d3-bcd8-d312c23c06dc": {
      "main": [
        [
          {
            "node": "4fdbd573-2ff1-48e5-8a60-0138900ca4ab",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4fc884ca-3611-4148-9f22-e6f6543363d0": {
      "main": [
        [
          {
            "node": "be8ad1f9-2de7-4c61-810a-fa3ab483835d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "958b1b16-4eb0-436a-ac87-b5d529e414bc": {
      "main": [
        [
          {
            "node": "5017f6ed-03cb-408c-bd47-97008e2d7352",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3d6bbc87-c411-434a-aa74-7e8e9893acc7": {
      "ai_tool": [
        [
          {
            "node": "5017f6ed-03cb-408c-bd47-97008e2d7352",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "824f3d5a-c7c2-42b4-ba28-24ba4cbc972b": {
      "ai_outputParser": [
        [
          {
            "node": "5017f6ed-03cb-408c-bd47-97008e2d7352",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramÚtres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Création de contenu, Divers, IA Multimodale

Est-ce payant ?

Ce workflow est entiĂšrement gratuit et peut ĂȘtre utilisĂ© directement. Veuillez noter que les services tiers utilisĂ©s dans le workflow (comme l'API OpenAI) peuvent nĂ©cessiter un paiement de votre part.

Workflows recommandés

đŸ’„ Automatisation des publicitĂ©s vidĂ©o avec NanoBanana, Seedream 4, ChatGPT Image et Veo 3 - VIDE
Utiliser l'IA (NanoBanana, Seedream, GPT-4o, Veo 3) pour automatiser et publier des campagnes publicitaires vidéo
Set
Code
Wait
+
Set
Code
Wait
63 NƓudsDr. Firas
Création de contenu
đŸ’„ GĂ©nĂ©rer des vidĂ©os virales IA avec NanoBanana et VEO3, les partager sur les rĂ©seaux sociaux avec Blotato - VidĂ©o
Générez des vidéos virales IA avec NanoBanana et VEO3, et partagez-les sur les réseaux sociaux via Blotato
Set
Code
Wait
+
Set
Code
Wait
47 NƓudsDr. Firas
Divers
đŸ’„ CrĂ©er des publicitĂ©s virales avec NanoBanana et Seedance, les publier sur les mĂ©dias sociaux via upload-post VIDE II
Créer des publicités multimédias virales avec l'IA : NanoBanana, Seedance et Suno pour les médias sociaux
If
Set
Code
+
If
Set
Code
45 NƓudsDr. Firas
Divers
đŸ’„ HeyGen II - Clone-moi - De l'idĂ©e Ă  la publication : Automatisation de vidĂ©os GPT-5 pour YouTube, TikTok et Instagram - VidĂ©o
Automatiser la création de vidéos à partir d'entrées vocales avec HeyGen, GPT-5 et la publication sociale
If
Set
Wait
+
If
Set
Wait
41 NƓudsDr. Firas
Création de contenu
đŸ’„ HeyGen - De l'idĂ©e Ă  la publication : Automatisation de vidĂ©o GPT-5 pour YouTube, TikTok et Instagram - VidĂ©o
Générer et publier des vidéos d'avatar IA avec GPT-5 sur les plateformes de médias sociaux
If
Set
Wait
+
If
Set
Wait
41 NƓudsDr. Firas
Création de contenu
đŸ’„ CrĂ©er et publier automatiquement des vidĂ©os virales IA sur 9 plateformes avec VEO3 et Blotato
Générer des vidéos IA avec VEO3 et les distribuer sur plusieurs plateformes via Blotato
Set
Wait
Telegram
+
Set
Wait
Telegram
29 NƓudsDr. Firas
Création de contenu
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nƓuds24
Catégorie3
Types de nƓuds12
Description de la difficulté

AdaptĂ© aux utilisateurs avancĂ©s, avec des workflows complexes contenant 16+ nƓuds

Auteur
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. 🚀

Liens externes
Voir sur n8n.io →

Partager ce workflow

Catégories

Catégories: 34