💥 使用VEO 3生成AI病毒视频并上传到TikTok
高级
这是一个Content Creation, Miscellaneous, Multimodal AI领域的自动化工作流,包含 24 个节点。主要使用 Set, Code, Wait, HttpRequest, GoogleSheets 等节点。 使用VEO 3生成AI病毒视频并上传到TikTok
前置要求
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (24)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "AtyhZTTVbhFDWFhM",
"meta": {
"instanceId": "a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44"
},
"name": "💥 使用 VEO 3 生成 AI 病毒视频并上传到 TikTok",
"tags": [],
"nodes": [
{
"id": "958b1b16-4eb0-436a-ac87-b5d529e414bc",
"name": "触发器:开始每日内容生成",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-240,
112
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "3d6bbc87-c411-434a-aa74-7e8e9893acc7",
"name": "工具:注入创意视角(想法)",
"type": "@n8n/n8n-nodes-langchain.toolThink",
"position": [
240,
384
],
"parameters": {},
"typeVersion": 1
},
{
"id": "824f3d5a-c7c2-42b4-ba28-24ba4cbc972b",
"name": "解析 AI 输出(想法、环境、声音)",
"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": "保存想法和元数据到 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": "生成创意视频想法",
"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:生成原始想法(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 聊天模型",
"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": "思考",
"type": "@n8n/n8n-nodes-langchain.toolThink",
"position": [
-80,
816
],
"parameters": {},
"typeVersion": 1
},
{
"id": "854036f1-bca7-4252-be3a-1095526ee614",
"name": "结构化输出解析器",
"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": "设置主提示",
"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": "AI 智能体:生成视频脚本",
"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": "使用 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": "等待 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": "从 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": "格式化提示",
"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",
"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": "上传视频到 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": "更新状态为 \"完成\"",
"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": "便签8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-864,
-80
],
"parameters": {
"width": 528,
"height": 1328,
"content": "## 🎥 观看本教程"
},
"typeVersion": 1
},
{
"id": "98797c5f-7a99-4f61-ab61-47772925ed0b",
"name": "便签",
"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": "便签 7",
"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": "便签 9",
"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": "便签1",
"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": {
"Think": {
"ai_tool": [
[
{
"node": "AI Agent: Generate Video Script",
"type": "ai_tool",
"index": 0
}
]
]
},
"TikTok": {
"main": [
[
{
"node": "Update Status to \"DONE\"",
"type": "main",
"index": 0
}
]
]
},
"Format Prompt": {
"main": [
[
{
"node": "Generate Video with VEO3",
"type": "main",
"index": 0
}
]
]
},
"URL Final Video": {
"main": [
[
{
"node": "Upload Video to BLOTATO",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent: Generate Video Script",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set Master Prompt": {
"main": [
[
{
"node": "AI Agent: Generate Video Script",
"type": "main",
"index": 0
}
]
]
},
"Upload Video to BLOTATO": {
"main": [
[
{
"node": "TikTok",
"type": "main",
"index": 0
}
]
]
},
"Wait for VEO3 Rendering": {
"main": [
[
{
"node": "Download Video from VEO3",
"type": "main",
"index": 0
}
]
]
},
"Download Video from VEO3": {
"main": [
[
{
"node": "URL Final Video",
"type": "main",
"index": 0
}
]
]
},
"Generate Video with VEO3": {
"main": [
[
{
"node": "Wait for VEO3 Rendering",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent: Generate Video Script",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Generate Creative Video Idea": {
"main": [
[
{
"node": "Save Idea & Metadata to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"LLM: Generate Raw Idea (GPT-5)": {
"ai_languageModel": [
[
{
"node": "Generate Creative Video Idea",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent: Generate Video Script": {
"main": [
[
{
"node": "Format Prompt",
"type": "main",
"index": 0
}
]
]
},
"Save Idea & Metadata to Google Sheets": {
"main": [
[
{
"node": "Set Master Prompt",
"type": "main",
"index": 0
}
]
]
},
"Trigger: Start Daily Content Generation": {
"main": [
[
{
"node": "Generate Creative Video Idea",
"type": "main",
"index": 0
}
]
]
},
"Tool: Inject Creative Perspective (Idea)": {
"ai_tool": [
[
{
"node": "Generate Creative Video Idea",
"type": "ai_tool",
"index": 0
}
]
]
},
"Parse AI Output (Idea, Environment, Sound)": {
"ai_outputParser": [
[
{
"node": "Generate Creative Video Idea",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 杂项, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
💥 使用NanoBanana、Seedream 4、ChatGPT Image和Veo 3自动化视频广告 - VIDE
使用AI(NanoBanana、Seedream、GPT-4o、Veo 3)自动化和发布视频广告活动
Set
Code
Wait
+16
63 节点Dr. Firas
内容创作
💥 使用NanoBanana和VEO3生成AI病毒视频,通过Blotato分享到社交平台 - 视频
使用NanoBanana和VEO3生成AI病毒视频,通过Blotato在社交媒体分享
Set
Code
Wait
+13
47 节点Dr. Firas
杂项
💥 使用 NanoBanana 和 Seedance 创建病毒式广告,通过 upload-post 在社交媒体发布 VIDE II
使用 AI 创建病毒式多媒体广告:NanoBanana、Seedance 和 Suno 用于社交媒体
If
Set
Code
+13
45 节点Dr. Firas
杂项
💥 HeyGen II - 克隆我 - 从想法到发布:适用于 YouTube、TikTok 和 Instagram 的 GPT-5 视频自动化 - 视频
使用 HeyGen、GPT-5 和社交发布自动化语音输入视频创作
If
Set
Wait
+13
41 节点Dr. Firas
内容创作
💥 HeyGen - 从想法到发布:用于 YouTube、TikTok 和 Instagram 的 GPT-5 视频自动化 - 视频
使用 GPT-5 生成 AI 虚拟形象视频并发布至社交媒体平台
If
Set
Wait
+13
41 节点Dr. Firas
内容创作
💥 使用 VEO3 和 Blotato 创建并自动发布到 9 个平台的病毒式 AI 视频
使用 VEO3 生成 AI 视频并通过 Blotato 在多个平台分发
Set
Wait
Telegram
+9
29 节点Dr. Firas
内容创作
工作流信息
难度等级
高级
节点数量24
分类3
节点类型12
作者
Dr. Firas
@drfirasAutomation 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 查看 →
分享此工作流