💥 使用Veo 3.1和Blotato自动化AI视频创作与多平台发布 - 视频
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 25 个节点。主要使用 Set, Code, Merge, GoogleDrive, HttpRequest 等节点。 使用GPT-4、Veo 3.1和Blotato自动化AI视频创作与多平台发布
前置要求
- •Google Drive API 凭证
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "Zwz315okMu0UwtRQ",
"meta": {
"instanceId": "de822f81f3a2367cef7d9549771a77783236bc9596481be2ae65c05fbcc4b4fd",
"templateCredsSetupCompleted": true
},
"name": "💥 使用Veo 3.1和Blotato自动化AI视频创作与多平台发布 - 视频",
"tags": [],
"nodes": [
{
"id": "f614b82e-a053-403d-afb5-b6c9cf9d6fd6",
"name": "工作流配置",
"type": "n8n-nodes-base.set",
"position": [
896,
2000
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "openai_api_key",
"type": "string",
"value": "YOUR_OPENAI_API_KEY"
},
{
"id": "id-2",
"name": "min_idea_length",
"type": "number",
"value": 5
},
{
"id": "id-3",
"name": "required_photos",
"type": "number",
"value": 3
},
{
"id": "id-5",
"name": "fal_api_key",
"type": "string",
"value": "key YOUR_FAL_API_KEY"
},
{
"id": "id-6",
"name": "google_drive_folder_id",
"type": "string",
"value": "YOUR_GOOGLE_DRIVE_FOLDER_ID"
},
{
"id": "id-7",
"name": "google_sheet_id",
"type": "string",
"value": "YOUR_GOOGLE_SHEETS_ID"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "19a1188d-dbbd-48e5-a3ef-6da21410c3ec",
"name": "解析GPT响应",
"type": "n8n-nodes-base.code",
"position": [
1376,
2000
],
"parameters": {
"jsCode": "// Parse OpenAI-style responses into { prompt, caption, hashtags[], hashtags_string }\nreturn $input.all().map(item => {\n const data = item.json || {};\n \n // Try to locate \"content\" in the common places\n let content =\n data?.choices?.[0]?.message?.content ??\n data?.message?.content ??\n data?.content ??\n null;\n\n let prompt = \"\";\n let caption = \"\";\n let hashtagsArr = [];\n\n // If content is an object (your current input case)\n if (content && typeof content === \"object\") {\n prompt = content.prompt ?? \"\";\n caption = content.caption ?? \"\";\n if (Array.isArray(content.hashtags)) {\n hashtagsArr = content.hashtags;\n } else if (typeof content.hashtags === \"string\") {\n // Support comma/space separated string\n hashtagsArr = content.hashtags.split(/[,\\s]+/).filter(Boolean);\n }\n }\n // If content is a string (some models return JSON as string)\n else if (typeof content === \"string\" && content.trim()) {\n try {\n const parsed = JSON.parse(content);\n prompt = parsed.prompt ?? \"\";\n caption = parsed.caption ?? \"\";\n if (Array.isArray(parsed.hashtags)) {\n hashtagsArr = parsed.hashtags;\n } else if (typeof parsed.hashtags === \"string\") {\n hashtagsArr = parsed.hashtags.split(/[,\\s]+/).filter(Boolean);\n }\n } catch {\n // Not a JSON string — leave fields empty\n prompt = \"\";\n caption = \"\";\n hashtagsArr = [];\n }\n }\n\n // Normalize hashtags: ensure leading '#', dedupe, no empties\n const norm = Array.from(\n new Set(\n (hashtagsArr || [])\n .map(h => (h ?? \"\").toString().trim())\n .filter(Boolean)\n .map(h => (h.startsWith(\"#\") ? h : `#${h}`))\n )\n );\n const hashtags_string = norm.join(\" \");\n\n return {\n json: {\n prompt,\n caption,\n hashtags: norm,\n hashtags_string\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "b9dfa37c-082f-431d-9494-aa620892b134",
"name": "为Veo优化提示",
"type": "n8n-nodes-base.set",
"position": [
672,
2224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "veo_prompt",
"type": "string",
"value": "={{ $json.prompt }} consistent character throughout, photorealistic quality, professional cinematography, 8 seconds duration, 9:16 aspect ratio, 24fps"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "f73ea354-b40b-4dac-9ecc-687b315a4a84",
"name": "GPT-4 API调用",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1072,
2000
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": "gpt-4o-mini"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You are a viral video content creator"
},
{
"content": "=Create viral video content for {{ $json.niche }} about {{ $json.idea }}. Return JSON with: prompt (150-200 word cinematic Veo 3.1 description), caption (50-100 word social media text with emojis), hashtags (array of 8-10 tags)"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "QmtwfFk8iBkuCXOX",
"name": "n8n free OpenAI API credits"
}
},
"typeVersion": 1.8
},
{
"id": "44c68f8d-0a12-4f9b-83fa-ca3b939bb223",
"name": "下载视频",
"type": "n8n-nodes-base.httpRequest",
"position": [
672,
2464
],
"parameters": {
"url": "={{ $json.video_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "b8a019e2-af8d-4818-ad6d-86a31462e2a1",
"name": "Google Drive上传",
"type": "n8n-nodes-base.googleDrive",
"position": [
896,
2464
],
"parameters": {
"name": "={{ 'AI_Video_' + $json.user_id + '_' + $json.timestamp + '.mp4' }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.google_drive_folder_id }}"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "odf7JAwyqVFVZBhQ",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "563e682a-708e-4268-953b-0cc2df993632",
"name": "Google Sheets追加",
"type": "n8n-nodes-base.googleSheets",
"position": [
1136,
2464
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "="
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.google_sheet_id }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YlIXFU6zUDsqwmRG",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "2e1a8319-95b3-43c7-b279-94bfd3b4afaf",
"name": "Google Sheets 触发器",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
464,
2000
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyX",
"unit": "minutes",
"value": 30
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/10yrKcdX92Yxauixzl58RDN6yNKfxAk0zX5avPy0uqAE/edit#gid=0",
"cachedResultName": "Video_Requests"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "10yrKcdX92Yxauixzl58RDN6yNKfxAk0zX5avPy0uqAE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/10yrKcdX92Yxauixzl58RDN6yNKfxAk0zX5avPy0uqAE/edit?usp=drivesdk",
"cachedResultName": "Video_Requests"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"id": "76v1LGA3Gdhk2uFH",
"name": "Google Sheets Trigger account"
}
},
"typeVersion": 1
},
{
"id": "76a152e7-6aa1-4859-94bf-4470fe79c51d",
"name": "解析表格输入",
"type": "n8n-nodes-base.code",
"position": [
672,
2000
],
"parameters": {
"jsCode": "// Parse Google Sheets Input (headers) and Validate for Veo 3.1 workflow\nconst items = $input.all();\nconst results = [];\n\n// Helper to read and trim a field safely\nfunction getField(data, key) {\n const v = (data[key] ?? data[key?.toUpperCase?.()] ?? \"\").toString();\n return v.trim();\n}\n\nfor (const item of items) {\n const data = item.json || {};\n\n // Read by header names\n const id_video = getField(data, \"id_video\");\n const niche = getField(data, \"niche\");\n const idea = getField(data, \"idea\");\n const url_1 = getField(data, \"url_1\");\n const url_2 = getField(data, \"url_2\");\n const url_3 = getField(data, \"url_3\");\n const url_final = getField(data, \"url_final\"); // peut être vide au départ\n const status = getField(data, \"status\"); // ex: pending|processing|completed|failed\n const row_number = data.row ?? data._row ?? \"\";\n\n // Validation\n const errors = [];\n\n // niche & idea\n if (!niche || niche.length <= 2) {\n errors.push(\"niche must be longer than 2 characters\");\n }\n if (!idea || idea.length <= 5) {\n errors.push(\"idea must be longer than 5 characters\");\n }\n\n // URLs images requises\n if (!url_1 || !url_1.startsWith(\"http\")) {\n errors.push(\"url_1 is missing or invalid - must start with http\");\n }\n if (!url_2 || !url_2.startsWith(\"http\")) {\n errors.push(\"url_2 is missing or invalid - must start with http\");\n }\n if (!url_3 || !url_3.startsWith(\"http\")) {\n errors.push(\"url_3 is missing or invalid - must start with http\");\n }\n\n // url_final si présent\n if (url_final && !url_final.startsWith(\"http\")) {\n errors.push(\"url_final is invalid - must start with http if provided\");\n }\n\n // status optionnel : normalisation (facultatif)\n const allowedStatus = new Set([\"\", \"pending\", \"processing\", \"completed\", \"failed\", \"draft\"]);\n if (!allowedStatus.has(status.toLowerCase?.() ?? \"\")) {\n errors.push(`status '${status}' is not recognized (use: pending|processing|completed|failed|draft)`);\n }\n\n // Build output item\n const image_urls = [url_1, url_2, url_3];\n\n const out = {\n json: {\n id_video,\n niche,\n idea,\n image_urls,\n url_final: url_final || \"\",\n status: (status || \"pending\").toLowerCase(),\n row_number,\n timestamp: new Date().toISOString(),\n },\n };\n\n // Valid flag + errors\n if (errors.length) {\n out.json.valid = false;\n out.json.validation_errors = errors;\n } else {\n out.json.valid = true;\n }\n\n results.push(out);\n}\n\nreturn results;\n"
},
"typeVersion": 2
},
{
"id": "65a7f4ed-10d7-44e0-8997-631991fc0bf3",
"name": "Veo生成1",
"type": "n8n-nodes-base.httpRequest",
"position": [
1136,
2224
],
"parameters": {
"url": "https://fal.run/fal-ai/veo3.1/reference-to-video",
"method": "POST",
"options": {
"timeout": 600000,
"response": {
"response": {
"responseFormat": "json"
}
}
},
"jsonBody": "={{ JSON.stringify($json.veo_request_body) }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{ $('Workflow Configuration').item.json.fal_api_key }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "a403778d-de47-4132-9e4a-4982dcd1f06e",
"name": "准备Veo请求体",
"type": "n8n-nodes-base.code",
"position": [
896,
2224
],
"parameters": {
"jsCode": "const prompt = $input.item.json.veo_prompt || $input.item.json.prompt;\nlet imageUrls = $('Parse Sheet Input').item.json.image_urls;\n\nfunction convertGoogleDriveUrl(url) {\n if (!url) return url;\n if (url.includes('drive.google.com/file/d/')) {\n const match = url.match(/\\/d\\/([a-zA-Z0-9_-]+)/);\n if (match && match[1]) {\n return `https://drive.google.com/uc?export=download&id=${match[1]}`;\n }\n }\n return url;\n}\n\nif (!prompt || prompt.length < 10) {\n throw new Error('Prompt required');\n}\n\nif (!Array.isArray(imageUrls) || imageUrls.length !== 3) {\n throw new Error('Need 3 image URLs');\n}\n\nconst directImageUrls = imageUrls.map(url => convertGoogleDriveUrl(url));\n\ndirectImageUrls.forEach((url, index) => {\n if (!url || !url.startsWith('http')) {\n throw new Error('Invalid image URL at position ' + (index + 1));\n }\n});\n\nreturn {\n json: {\n veo_request_body: {\n prompt: prompt,\n image_urls: directImageUrls,\n duration: 8,\n aspect_ratio: \"9:16\"\n },\n ...($input.item.json)\n }\n};"
},
"typeVersion": 2
},
{
"id": "f65730da-04f6-4e63-9a38-b9b3354a3b02",
"name": "提取视频数据",
"type": "n8n-nodes-base.code",
"position": [
1376,
2224
],
"parameters": {
"jsCode": "// Extract video data from Veo Generation response\nconst items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n const data = item.json || {};\n \n // Extract video data from current node\n const video_url = data.video?.url || '';\n const video_content_type = data.video?.content_type || '';\n const video_file_size = data.video?.file_size || 0;\n const video_file_name = data.video?.file_name || '';\n \n // Preserve data from previous nodes\n const niche = $('Parse Sheet Input').item.json.niche || '';\n const idea = $('Parse Sheet Input').item.json.idea || '';\n const caption = $('Parse GPT Response').item.json.caption || '';\n const hashtags_string = $('Parse GPT Response').item.json.hashtags_string || '';\n const veo_prompt = $('Optimize Prompt for Veo').item.json.veo_prompt || '';\n const id_video = $('Parse Sheet Input').item.json.id_video || '';\n const row_number = $('Parse Sheet Input').item.json.row_number || '';\n \n results.push({\n json: {\n video_url,\n video_content_type,\n video_file_size,\n video_file_name,\n generation_completed_at: new Date().toISOString(),\n niche,\n idea,\n caption,\n hashtags_string,\n veo_prompt,\n id_video,\n row_number\n }\n });\n}\n\nreturn results;"
},
"typeVersion": 2
},
{
"id": "3b65094d-10e0-42a2-af60-ce4110d81f35",
"name": "步骤5 - 发布",
"type": "n8n-nodes-base.stickyNote",
"position": [
1536,
1376
],
"parameters": {
"color": 5,
"width": 796,
"height": 1316,
"content": "# 📤 步骤5:发布与跟踪"
},
"typeVersion": 1
},
{
"id": "98ea7ae3-a917-42bf-9872-c9a212281224",
"name": "将视频上传到 BLOTATO",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1376,
2464
],
"parameters": {
"mediaUrl": "={{ $json.url_final }}",
"resource": "media"
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "950a3e4f-52d5-4124-8c70-bc1b0da6cc00",
"name": "YouTube",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1856,
2464
],
"parameters": {
"options": {},
"platform": "youtube",
"accountId": {
"__rl": true,
"mode": "list",
"value": "8047",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/8047",
"cachedResultName": "DR FIRASS (Dr. Firas)"
},
"postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
"postContentMediaUrls": "={{ $json.url }}",
"postCreateYoutubeOptionTitle": "={{ $('Save to Google Sheets').item.json.IDEA }}",
"postCreateYoutubeOptionPrivacyStatus": "private",
"postCreateYoutubeOptionShouldNotifySubscribers": false
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "62cf18fb-818d-40a8-be61-b08aecdebdec",
"name": "Tiktok",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1632,
2000
],
"parameters": {
"options": {},
"platform": "tiktok",
"accountId": {
"__rl": true,
"mode": "list",
"value": "9332",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/9332",
"cachedResultName": "docteur.firas"
},
"postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
"postContentMediaUrls": "={{ $json.url }}"
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "f250b454-e081-49b6-abf8-9ebe04cd152f",
"name": "Linkedin",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1840,
2000
],
"parameters": {
"options": {},
"platform": "linkedin",
"accountId": {
"__rl": true,
"mode": "list",
"value": "1446",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/1446",
"cachedResultName": "Samuel Amalric"
},
"postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
"postContentMediaUrls": "={{ $json.url }}"
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "6075fdc3-f2ae-43b8-9429-3f138f6a506c",
"name": "便签 - 接收",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1632,
2224
],
"parameters": {
"options": {},
"platform": "facebook",
"accountId": {
"__rl": true,
"mode": "list",
"value": "1759",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759",
"cachedResultName": "Firass Ben"
},
"facebookPageId": {
"__rl": true,
"mode": "list",
"value": "101603614680195",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195",
"cachedResultName": "Dr. Firas"
},
"postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
"postContentMediaUrls": "={{ $json.url }}"
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "fb35a6e6-8d5b-44f8-894c-3cd64cf43009",
"name": "Instagram",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1840,
2224
],
"parameters": {
"options": {},
"accountId": {
"__rl": true,
"mode": "list",
"value": "1687",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/1687",
"cachedResultName": "acces.a.vie"
},
"postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
"postContentMediaUrls": "={{ $json.url }}"
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "4177dca6-53a5-4b32-9796-b526302ecc17",
"name": "Twitter (X)",
"type": "@blotato/n8n-nodes-blotato.blotato",
"position": [
1632,
2464
],
"parameters": {
"options": {},
"platform": "twitter",
"accountId": {
"__rl": true,
"mode": "list",
"value": "1289",
"cachedResultUrl": "https://backend.blotato.com/v2/accounts/1289",
"cachedResultName": "Docteur_Firas"
},
"postContentText": "={{ $('Save to Google Sheets').item.json.CAPTION }}",
"postContentMediaUrls": "={{ $json.url }}"
},
"credentials": {
"blotatoApi": {
"id": "wozsYJYLfCZO37j8",
"name": "Blotato account"
}
},
"typeVersion": 2
},
{
"id": "6d972b56-f5eb-423d-9215-21ce753564a3",
"name": "合并1",
"type": "n8n-nodes-base.merge",
"position": [
2128,
2160
],
"parameters": {
"mode": "chooseBranch",
"numberInputs": 6
},
"typeVersion": 3.2
},
{
"id": "21eedebf-5b84-4ee6-ac5d-9bdadaba1211",
"name": "Google Sheets追加1",
"type": "n8n-nodes-base.googleSheets",
"position": [
2128,
2464
],
"parameters": {
"columns": {
"value": {
"status": "Published",
"id_video": "={{ $('Google Sheets Trigger').first().json.id_video }}"
},
"schema": [
{
"id": "id_video",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id_video",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "niche",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "niche",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "idea",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "idea",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url_1",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url_1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url_2",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url_2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url_3",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url_3",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url_final",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url_final",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id_video"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/10yrKcdX92Yxauixzl58RDN6yNKfxAk0zX5avPy0uqAE/edit#gid=0",
"cachedResultName": "Video_Requests"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "=10yrKcdX92Yxauixzl58RDN6yNKfxAk0zX5avPy0uqAE"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YlIXFU6zUDsqwmRG",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "a6cd7ba1-36a7-4807-9b47-1112da74a6ac",
"name": "步骤1 - 先决条件",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
1376
],
"parameters": {
"color": 5,
"width": 598,
"height": 1316,
"content": "# 🎬 AI视频生成器 - VEO 3.1"
},
"typeVersion": 1
},
{
"id": "d844cb16-6387-4745-8aaa-c5aa1b073c99",
"name": "步骤3 - API密钥配置",
"type": "n8n-nodes-base.stickyNote",
"position": [
416,
1376
],
"parameters": {
"color": 5,
"width": 550,
"height": 584,
"content": "# 🔑 步骤3:API密钥配置"
},
"typeVersion": 1
},
{
"id": "12c2de0c-cfc0-4e9d-8508-eebb22c9b094",
"name": "步骤4 - 工作流激活",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
1376
],
"parameters": {
"color": 6,
"width": 550,
"height": 582,
"content": "# 🚀 步骤4:工作流激活"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "3bc03c0c-d6bb-4851-b83b-9d6c223d02bb",
"connections": {
"Merge1": {
"main": [
[
{
"node": "Google Sheets Append1",
"type": "main",
"index": 0
}
]
]
},
"Tiktok": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Youtube": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 5
}
]
]
},
"Facebook": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 2
}
]
]
},
"Linkedin": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Instagram": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 3
}
]
]
},
"Twitter (X)": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 4
}
]
]
},
"Download Video": {
"main": [
[
{
"node": "Google Drive Upload",
"type": "main",
"index": 0
}
]
]
},
"GPT-4 API Call": {
"main": [
[
{
"node": "Parse GPT Response",
"type": "main",
"index": 0
}
]
]
},
"Veo Generation1": {
"main": [
[
{
"node": "Extract Video Data",
"type": "main",
"index": 0
}
]
]
},
"Parse Sheet Input": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Extract Video Data": {
"main": [
[
{
"node": "Download Video",
"type": "main",
"index": 0
}
]
]
},
"Parse GPT Response": {
"main": [
[
{
"node": "Optimize Prompt for Veo",
"type": "main",
"index": 0
}
]
]
},
"Google Drive Upload": {
"main": [
[
{
"node": "Google Sheets Append",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Append": {
"main": [
[
{
"node": "Upload Video to BLOTATO",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Trigger": {
"main": [
[
{
"node": "Parse Sheet Input",
"type": "main",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "GPT-4 API Call",
"type": "main",
"index": 0
}
]
]
},
"Optimize Prompt for Veo": {
"main": [
[
{
"node": "Prepare Veo Request Body",
"type": "main",
"index": 0
}
]
]
},
"Upload Video to BLOTATO": {
"main": [
[
{
"node": "Tiktok",
"type": "main",
"index": 0
},
{
"node": "Linkedin",
"type": "main",
"index": 0
},
{
"node": "Facebook",
"type": "main",
"index": 0
},
{
"node": "Instagram",
"type": "main",
"index": 0
},
{
"node": "Twitter (X)",
"type": "main",
"index": 0
},
{
"node": "Youtube",
"type": "main",
"index": 0
}
]
]
},
"Prepare Veo Request Body": {
"main": [
[
{
"node": "Veo Generation1",
"type": "main",
"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
内容创作
病毒式 TikTok 视频生成器:使用 VEED 虚拟形象自动创建 UGC 视频
使用 VEED.io AI 虚拟形象、ElevenLabs 和 GPT-4 自动创建 TikTok 视频
Set
Code
Wait
+9
35 节点Dr. Firas
内容创作
💥 HeyGen II - 克隆我 - 从想法到发布:适用于 YouTube、TikTok 和 Instagram 的 GPT-5 视频自动化 - 视频
使用 HeyGen、GPT-5 和社交发布自动化语音输入视频创作
If
Set
Wait
+13
41 节点Dr. Firas
内容创作
💥 从视频链接自动化创建YouTube缩略图
使用Templated.io和Blotato自动化创建YouTube缩略图及社交媒体发布
Set
Code
Wait
+10
25 节点Dr. Firas
内容创作
💥 HeyGen - 从想法到发布:用于 YouTube、TikTok 和 Instagram 的 GPT-5 视频自动化 - 视频
使用 GPT-5 生成 AI 虚拟形象视频并发布至社交媒体平台
If
Set
Wait
+13
41 节点Dr. Firas
内容创作
💥 使用NanoBanana和VEO3生成AI病毒视频,通过Blotato分享到社交平台 - 视频
使用NanoBanana和VEO3生成AI病毒视频,通过Blotato在社交媒体分享
Set
Code
Wait
+13
47 节点Dr. Firas
杂项
工作流信息
难度等级
高级
节点数量25
分类2
节点类型10
作者
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 查看 →
分享此工作流