AutomationFlowsWeb Scraping › Veo 3.1 — Finance Tip (video-only, Base Nodes)

Veo 3.1 — Finance Tip (video-only, Base Nodes)

Veo 3.1 — Finance Tip (Video-Only, Base Nodes). Uses httpRequest. Event-driven trigger; 13 nodes.

Event trigger★★★★☆ complexity13 nodesHTTP Request
Web Scraping Trigger: Event Nodes: 13 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "name": "Veo 3.1 \u2014 Finance Tip (Video-Only, Base Nodes)",
  "nodes": [
    {
      "parameters": {},
      "id": "ManualTrigger",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -560,
        0
      ]
    },
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "string": [
            {
              "name": "topic",
              "value": "One quick way to start a $1K emergency fund"
            },
            {
              "name": "durationSeconds",
              "value": "20"
            },
            {
              "name": "aspectRatio",
              "value": "9:16"
            },
            {
              "name": "negativePrompt",
              "value": "nudity, explicit, low quality, glitch, distorted, disfigured"
            }
          ]
        }
      },
      "id": "Config",
      "name": "Config",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        -360,
        0
      ]
    },
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "string": [
            {
              "name": "script",
              "value": "Keep $20 from every paycheck in a separate high-interest savings account. Automate the transfer on payday so you never feel it. After 50 deposits you\u2019re at $1,000\u2014your emergency buffer. Keep it boring, keep it untouched. Follow for one small money win every day."
            }
          ]
        }
      },
      "id": "Script",
      "name": "Script (Placeholder)",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        -160,
        0
      ]
    },
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "string": [
            {
              "name": "prompt",
              "value": "={{`Soft, photorealistic, vertical ${$node[\"Config\"].json[\"aspectRatio\"]} video (~${$node[\"Config\"].json[\"durationSeconds\"]}s) of an attractive adult woman delivering a calm, intimate personal-finance tip in a soft whisper. Professional and tasteful; avoid sexualization. Subtle head/eye movement, natural micro-expressions. Neutral background, shallow depth of field, soft key light.\n\nVOICEOVER (use exactly this text, paced to ${$node[\"Config\"].json[\"durationSeconds\"]}s):\n${$node[\"Script\"].json[\"script\"]}\n\nCompliance: educational only, no guarantees, no securities recommendations.\nRunId:${Date.now()}-${Math.random().toString(36).slice(2,8)}`}}"
            },
            {
              "name": "aspectRatio",
              "value": "={{$node[\"Config\"].json[\"aspectRatio\"]}}"
            },
            {
              "name": "durationSeconds",
              "value": "={{$node[\"Config\"].json[\"durationSeconds\"]}}"
            },
            {
              "name": "negativePrompt",
              "value": "={{$node[\"Config\"].json[\"negativePrompt\"]}}"
            }
          ]
        }
      },
      "id": "BuildPrompt",
      "name": "Build Veo Prompt",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        40,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/veo-3.1-generate-preview:predictLongRunning",
        "method": "POST",
        "sendBody": true,
        "jsonParameters": true,
        "responseFormat": "json",
        "authentication": "none",
        "headerParametersJson": "={\"x-goog-api-key\": $env.GEMINI_API_KEY, \"Content-Type\": \"application/json\"}",
        "bodyParametersJson": "={\n  \"instances\": [\n    {\n      \"prompt\": $json[\"/previousNode:Build Veo Prompt\"].prompt,\n      \"aspectRatio\": $json[\"/previousNode:Build Veo Prompt\"].aspectRatio,\n      \"durationSeconds\": Number($json[\"/previousNode:Build Veo Prompt\"].durationSeconds)\n    }\n  ],\n  \"parameters\": {\n    \"preset\": \"fast\",\n    \"negativePrompt\": $json[\"/previousNode:Build Veo Prompt\"].negativePrompt\n  }\n}"
      },
      "id": "VeoCreate",
      "name": "Veo 3.1 \u2014 Create Job (Preview)",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "string": [
            {
              "name": "operationName",
              "value": "={{$json[\"name\"]}}"
            }
          ]
        }
      },
      "id": "StoreOperation",
      "name": "Store Operation",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [
        520,
        0
      ]
    },
    {
      "parameters": {
        "amount": 8,
        "unit": "seconds"
      },
      "id": "Wait8s",
      "name": "Wait 8s",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1,
      "position": [
        520,
        160
      ]
    },
    {
      "parameters": {
        "url": "={{\"https://generativelanguage.googleapis.com/v1beta/\" + $json[\"operationName\"]}}",
        "method": "GET",
        "responseFormat": "json",
        "authentication": "none",
        "headerParametersJson": "={\"x-goog-api-key\": $env.GEMINI_API_KEY}"
      },
      "id": "PollOperation",
      "name": "Poll Operation",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        720,
        60
      ]
    },
    {
      "parameters": {
        "conditions": {
          "collection": [
            {
              "type": "boolean",
              "value1": "={{$json.done === true}}"
            }
          ]
        }
      },
      "id": "IfDone",
      "name": "Done?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        920,
        60
      ]
    },
    {
      "parameters": {
        "amount": 5,
        "unit": "seconds"
      },
      "id": "WaitLoop",
      "name": "Wait (loop)",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1,
      "position": [
        920,
        -80
      ]
    },
    {
      "parameters": {},
      "id": "Loop",
      "name": "Loop",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1100,
        -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": [
        1100,
        60
      ]
    },
    {
      "parameters": {
        "message": "\u2705 Veo render complete: {{$json[\"/previousNode:Extract Video URL\"].videoUrl}}",
        "raiseMessage": true
      },
      "id": "Success",
      "name": "Success",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1300,
        60
      ]
    }
  ],
  "connections": {
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Config": {
      "main": [
        [
          {
            "node": "Script (Placeholder)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Script (Placeholder)": {
      "main": [
        [
          {
            "node": "Build Veo Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Veo Prompt": {
      "main": [
        [
          {
            "node": "Veo 3.1 \u2014 Create Job (Preview)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Veo 3.1 \u2014 Create Job (Preview)": {
      "main": [
        [
          {
            "node": "Store Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store Operation": {
      "main": [
        [
          {
            "node": "Poll Operation",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 8s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 8s": {
      "main": [
        [
          {
            "node": "Poll Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Poll Operation": {
      "main": [
        [
          {
            "node": "Done?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Done?": {
      "main": [
        [
          {
            "node": "Extract Video URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait (loop)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait (loop)": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop": {
      "main": [
        [
          {
            "node": "Poll Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Video URL": {
      "main": [
        [
          {
            "node": "Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "version": "1.114.x",
    "notes": "Pure base nodes. No Function/Code nodes. Placeholder script so it runs before wiring OpenAI."
  }
}
Pro

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 (Video-Only, Base Nodes). Uses httpRequest. Event-driven trigger; 13 nodes.

Source: https://gist.github.com/allanzilber-boop/bba4ab738822bde9d39842aa471faed8 — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily. A multi-form setup guides you through the entire process At the beginning you have t

Execute Command, Read Write File, HTTP Request +3
Web Scraping

[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.

HTTP Request, GitHub, Stop And Error +1
Web Scraping

[](https://youtu.be/c7yCZhmMjtI)

HTTP Request, GitHub, Stop And Error +1
Web Scraping

This automation organizes your n8n workflows files into categorizes (Active, Template, Done, Archived) and uploads them directly to a categorized Google Drive folders. It is designed to help users man

Google Drive, HTTP Request, Time Saved
Web Scraping

Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest. Event-driven trigger; 51 nodes.

HTTP Request