This workflow follows the Googlegemini → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Veo 3.1 \u2014 Finance Tip Auto Video (Gemini)",
"nodes": [
{
"parameters": {},
"id": "ManualTrigger",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-560,
0
]
},
{
"parameters": {
"model": "gemini-1.5-pro",
"messages": [
{
"role": "user",
"content": "Write a concise 20-second script (max ~55 words) delivered in a soft, confident feminine voice giving one practical personal-finance tip. Keep it warm, non-preachy, and actionable. No emojis. Return only the spoken script, nothing else."
}
],
"simplifyOutput": true
},
"id": "GeminiScript",
"name": "Gemini \u2014 Generate Script",
"type": "n8n-nodes-base.googleGemini",
"typeVersion": 1,
"position": [
-320,
0
],
"credentials": {
"googleGeminiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"string": [
{
"name": "script",
"value": "={{$json[\"message\"][0][\"content\"] || $json[\"message\"][\"content\"]}}"
},
{
"name": "aspectRatio",
"value": "9:16"
},
{
"name": "durationSeconds",
"value": "8"
}
]
}
},
"id": "NormalizeFields",
"name": "Normalize Fields",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
-120,
0
]
},
{
"parameters": {
"url": "https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview:predictLongRunning",
"responseFormat": "json",
"sendBody": true,
"jsonParameters": true,
"authentication": "none",
"headerParametersJson": "{\n \"x-goog-api-key\": \"YOUR_GEMINI_API_KEY_HERE\",\n \"Content-Type\": \"application/json\"\n}",
"bodyParametersJson": "{\n \"instances\": [\n {\n \"prompt\": \"{{$json[\\\"script\\\"]}}\",\n \"aspectRatio\": \"{{$json[\\\"aspectRatio\\\"]}}\",\n \"durationSeconds\": {{$json[\"durationSeconds\"]}}\n }\n ],\n \"parameters\": {\n \"preset\": \"fast\",\n \"negativePrompt\": \"nudity, explicit, low quality, glitch, distorted, disfigured\"\n }\n}"
},
"id": "VeoCreate",
"name": "Veo 3.1 \u2014 Create Job",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
100,
0
]
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"string": [
{
"name": "operationName",
"value": "={{$json[\"name\"]}}"
},
{
"name": "script",
"value": "={{$json[\"script\"]}}"
}
]
}
},
"id": "StoreOperation",
"name": "Store Operation",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
300,
0
]
},
{
"parameters": {
"seconds": 10
},
"id": "Wait10s",
"name": "Wait 10s",
"type": "n8n-nodes-base.wait",
"typeVersion": 1,
"position": [
320,
200
]
},
{
"parameters": {
"url": "={{\"https://generativelanguage.googleapis.com/v1beta/\" + $json[\"operationName\"]}}",
"responseFormat": "json",
"authentication": "none",
"headerParametersJson": "{\n \"x-goog-api-key\": \"YOUR_GEMINI_API_KEY_HERE\"\n}"
},
"id": "PollOperation",
"name": "Poll Operation",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
520,
80
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"done\"]}}",
"operation": "equal",
"value2": "true"
}
]
}
},
"id": "IfDone",
"name": "IF done?",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
720,
80
]
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"string": [
{
"name": "videoUrl",
"value": "={{$json[\"response\"][\"generateVideoResponse\"][\"generatedSamples\"][0][\"video\"][\"uri\"]}}"
}
]
}
},
"id": "ExtractURL",
"name": "Extract Video URL",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
920,
0
]
}
],
"connections": {
"Manual Trigger": {
"main": [
[
{
"node": "Gemini \u2014 Generate Script",
"type": "main",
"index": 0
}
]
]
},
"Gemini \u2014 Generate Script": {
"main": [
[
{
"node": "Normalize Fields",
"type": "main",
"index": 0
}
]
]
},
"Normalize Fields": {
"main": [
[
{
"node": "Veo 3.1 \u2014 Create Job",
"type": "main",
"index": 0
}
]
]
},
"Veo 3.1 \u2014 Create Job": {
"main": [
[
{
"node": "Store Operation",
"type": "main",
"index": 0
}
]
]
},
"Store Operation": {
"main": [
[
{
"node": "Poll Operation",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 10s",
"type": "main",
"index": 0
}
]
]
},
"Wait 10s": {
"main": [
[
{
"node": "Poll Operation",
"type": "main",
"index": 0
}
]
]
},
"Poll Operation": {
"main": [
[
{
"node": "IF done?",
"type": "main",
"index": 0
}
]
]
},
"IF done?": {
"main": [
[
{
"node": "Extract Video URL",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait 10s",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleGeminiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Veo 3.1 — Finance Tip Auto Video (Gemini). Uses googleGemini, httpRequest. Event-driven trigger; 9 nodes.
Source: https://gist.github.com/allanzilber-boop/d6fa8ddea1304184bea2515e13601a55 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow helps you repurpose your YouTube videos across multiple social media platforms with zero manual effort. It’s designed for creators, businesses, and marketers who want to maximize reach w
Sales Lead Qualifier. Uses telegramTrigger, googleSheets, telegram, googleGemini. Event-driven trigger; 41 nodes.
This workflow empowers marketing teams, agencies and solopreneurs to instantly generate on-brand, platform-optimized social media ads — without designers or complex setup. Running performance marketin
Monitor a Google Drive folder, process each image based on the prompt defined in and save the new image to the specified output Google Drive folder. Maintain a processing log in Google Sheets.
[](https://drive.google.com/file/d/1Cl0KwgRgcuBPVdGgL-nqAcheyvfVXttD/view) Click on the image to see the Example output in google drive