AutomationFlowsWeb Scraping › Generate Product Videos with Veo 3

Generate Product Videos with Veo 3

Original n8n title: Simple Product Video Generation - Veo 3

Simple Product Video Generation - Veo 3. Uses httpRequest, googleDrive. Webhook trigger; 8 nodes.

Webhook trigger★★★★☆ complexity8 nodesHTTP RequestGoogle Drive
Web Scraping Trigger: Webhook Nodes: 8 Complexity: ★★★★☆ Added:

This workflow follows the Google Drive → 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 →

Download .json
{
  "name": "Simple Product Video Generation - Veo 3",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "generate-product-video",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "webhook-node",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "project-id",
              "name": "PROJECT_ID",
              "type": "string",
              "value": "={{ $env.GCP_PROJECT_ID }}"
            },
            {
              "id": "model-version",
              "name": "MODEL_VERSION",
              "type": "string",
              "value": "veo-3.0-generate-preview"
            },
            {
              "id": "location",
              "name": "LOCATION",
              "type": "string",
              "value": "us-central1"
            },
            {
              "id": "prompt",
              "name": "TEXT_PROMPT",
              "type": "string",
              "value": "={{ $json.body.prompt }}"
            },
            {
              "id": "access-token",
              "name": "ACCESS_TOKEN",
              "type": "string",
              "value": "={{ $env.GCP_ACCESS_TOKEN }}"
            },
            {
              "id": "api-endpoint",
              "name": "API_ENDPOINT",
              "type": "string",
              "value": "us-central1-aiplatform.googleapis.com"
            },
            {
              "id": "product-id",
              "name": "PRODUCT_ID",
              "type": "string",
              "value": "={{ $json.body.productId }}"
            },
            {
              "id": "callback-url",
              "name": "CALLBACK_URL",
              "type": "string",
              "value": "={{ $json.body.callbackUrl }}"
            }
          ]
        },
        "options": {}
      },
      "id": "setting-node",
      "name": "Setting",
      "type": "n8n-nodes-base.set",
      "position": [
        460,
        300
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://{{ $json.API_ENDPOINT }}/v1/projects/{{ $json.PROJECT_ID }}/locations/{{ $json.LOCATION }}/publishers/google/models/{{ $json.MODEL_VERSION }}:predictLongRunning",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $json.ACCESS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"instances\": [\n    {\n      \"prompt\": {{ JSON.stringify($json.TEXT_PROMPT) }}\n    }\n  ],\n  \"parameters\": {\n    \"aspectRatio\": \"9:16\",\n    \"sampleCount\": 1,\n    \"durationSeconds\": \"7\",\n    \"personGeneration\": \"allow_all\",\n    \"addWatermark\": false,\n    \"includeRaiReason\": true,\n    \"generateAudio\": false\n  }\n}",
        "options": {}
      },
      "id": "veo-generate",
      "name": "Vertex AI Veo 3 - Generate",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        680,
        300
      ],
      "typeVersion": 4.2
    },
    {
      "parameters": {
        "amount": 2,
        "unit": "minutes"
      },
      "id": "wait-node",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        900,
        300
      ],
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=https://{{ $('Setting').item.json.API_ENDPOINT }}/v1/projects/{{ $('Setting').item.json.PROJECT_ID }}/locations/{{ $('Setting').item.json.LOCATION }}/publishers/google/models/{{ $('Setting').item.json.MODEL_VERSION }}:fetchPredictOperation",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Bearer {{ $('Setting').item.json.ACCESS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"operationName\": \"{{ $json.name }}\"\n}",
        "options": {}
      },
      "id": "veo-fetch",
      "name": "Vertex AI Veo 3 - Fetch",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1120,
        300
      ],
      "typeVersion": 4.2
    },
    {
      "parameters": {
        "operation": "toBinary",
        "sourceProperty": "response.videos[0].bytesBase64Encoded",
        "options": {
          "fileName": "={{ $('Setting').item.json.PRODUCT_ID }}.mp4",
          "mimeType": "video/mp4"
        }
      },
      "id": "convert-file",
      "name": "Convert to File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1340,
        300
      ],
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "name": "=product_{{ $('Setting').item.json.PRODUCT_ID }}_{{ $now.toMillis() }}.mp4",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "value": "={{ $env.GCP_DRIVE_FOLDER_ID || 'root' }}",
          "mode": "list"
        },
        "options": {}
      },
      "id": "upload-drive",
      "name": "Upload to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1560,
        300
      ],
      "typeVersion": 3,
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "url": "={{ $('Setting').item.json.CALLBACK_URL }}",
        "method": "POST",
        "sendBody": true,
        "contentType": "json",
        "body": "={\n  \"productId\": \"{{ $('Setting').item.json.PRODUCT_ID }}\",\n  \"videoUrl\": \"{{ $json.webViewLink }}\",\n  \"status\": \"COMPLETED\",\n  \"completedAt\": \"{{ $now.toISO() }}\"\n}",
        "options": {}
      },
      "id": "callback-node",
      "name": "Send Callback",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1780,
        300
      ],
      "typeVersion": 4.2
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Setting",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setting": {
      "main": [
        [
          {
            "node": "Vertex AI Veo 3 - Generate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vertex AI Veo 3 - Generate": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Vertex AI Veo 3 - Fetch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vertex AI Veo 3 - Fetch": {
      "main": [
        [
          {
            "node": "Convert to File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File": {
      "main": [
        [
          {
            "node": "Upload to Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload to Google Drive": {
      "main": [
        [
          {
            "node": "Send Callback",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [],
  "triggerCount": 0,
  "updatedAt": "2025-10-18T00:00:00.000Z",
  "versionId": "1"
}

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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Simple Product Video Generation - Veo 3. Uses httpRequest, googleDrive. Webhook trigger; 8 nodes.

Source: https://github.com/Ashis-Mishra07/genAi/blob/8145a58a6129f3db4433cd0193fb96d5ff8b028f/n8n-workflows/veo3-simple-workflow.json — 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

AI Background Change – VideoBGRemover + Wan2.2 Vace (fal). Uses httpRequest, googleDrive. Webhook trigger; 32 nodes.

HTTP Request, Google Drive
Web Scraping

Remove Video Background & Compose on Custom Background with Google Drive. Uses httpRequest, googleDrive. Webhook trigger; 25 nodes.

HTTP Request, Google Drive
Web Scraping

• Upload foreground video (AI actors, product demos, webcam footage) • Provide custom background video URL • API removes video background with videobgremover.com • Composites foreground onto backgroun

HTTP Request, Google Drive
Web Scraping

Automated workflow to remove video backgrounds and composite foreground video on static image backgrounds. Perfect for creating branded content, professional presentations, and consistent visual brand

HTTP Request, Google Drive
Web Scraping

A comprehensive n8n workflow template that completely automates the startup pitch deck submission process for accelerators, incubators, VC firms, and startup competitions. This workflow validates foun

Google Drive, Gmail, N8N Nodes Verifiemail +2