AutomationFlowsAI & RAG › Video Automation Workflow

Video Automation Workflow

Video Automation Workflow. Uses googleSheetsTrigger, openai, httpRequest. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexityAI-powered10 nodesGoogle Sheets TriggerOpenAIHTTP Request
AI & RAG Trigger: Event Nodes: 10 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Googlesheetstrigger → 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": "Video Automation Workflow",
  "nodes": [
    {
      "parameters": {
        "sheetId": "YOUR_SHEET_ID",
        "range": "Sheet1!A2:G",
        "options": {
          "valueRenderOption": "RAW",
          "dataReturned": "allData"
        }
      },
      "name": "Google Sheets Trigger",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "typeVersion": 1,
      "position": [
        250,
        300
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "videoIdea",
              "value": "={{$json['Title']}}"
            },
            {
              "name": "niche",
              "value": "={{$json['Niche']}}"
            },
            {
              "name": "hashtags",
              "value": "={{$json['Hashtags']}}"
            },
            {
              "name": "videoSize",
              "value": "={{$json['Size']}}"
            },
            {
              "name": "videoLength",
              "value": "={{$json['Length']}}"
            },
            {
              "name": "platform",
              "value": "={{$json['Platform']}}"
            },
            {
              "name": "imageUrl",
              "value": "={{$json['ImageURL']}}"
            }
          ]
        }
      },
      "name": "Set Idea & Context",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "operation": "chatCompletion",
        "model": "gpt-4o-mini",
        "messages": [
          {
            "role": "system",
            "content": "You are an expert video director. Use the idea, niche, hashtags, resolution, duration, and reference image to craft a detailed AI video-generation prompt with style, camera angles, lighting, character use, and shot breakdowns."
          },
          {
            "role": "user",
            "content": "Idea: {{$json['videoIdea']}}\nNiche: {{$json['niche']}}\nHashtags: {{$json['hashtags']}}\nSize: {{$json['videoSize']}}\nLength: {{$json['videoLength']}} seconds\nReference Image: {{$json['imageUrl']}}"
          }
        ]
      },
      "name": "OpenAI - Generate Video Prompt",
      "type": "n8n-nodes-base.openai",
      "typeVersion": 1,
      "position": [
        650,
        300
      ],
      "credentials": {
        "openAIApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "videoPrompt",
              "value": "={{$json['choices'][0].message.content}}"
            }
          ]
        }
      },
      "name": "Set Video Prompt",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        850,
        300
      ]
    },
    {
      "parameters": {
        "mode": "multiple",
        "rules": [
          {
            "operation": "equals",
            "value1": "={{$json['platform'].toLowerCase()}}",
            "value2": "veo3"
          },
          {
            "operation": "equals",
            "value1": "={{$json['platform'].toLowerCase()}}",
            "value2": "synthesia"
          },
          {
            "operation": "equals",
            "value1": "={{$json['platform'].toLowerCase()}}",
            "value2": "pictory"
          },
          {
            "operation": "equals",
            "value1": "={{$json['platform'].toLowerCase()}}",
            "value2": "runway"
          },
          {
            "operation": "equals",
            "value1": "={{$json['platform'].toLowerCase()}}",
            "value2": "lumen5"
          }
        ]
      },
      "name": "Switch - Choose AI Engine",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 1,
      "position": [
        1050,
        300
      ]
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "https://api.veo3.ai/v1/generate",
        "method": "POST",
        "jsonParameters": true,
        "bodyParametersJson": {
          "prompt": "={{$json['videoPrompt']}}",
          "resolution": "={{$json['videoSize']}}",
          "duration": "={{$json['videoLength']}}",
          "reference_image": "={{$json['imageUrl']}}"
        }
      },
      "name": "Veo3 - Generate Video",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1250,
        200
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "https://api.synthesia.io/v2/videos",
        "method": "POST",
        "jsonParameters": true,
        "bodyParametersJson": {
          "script": "={{$json['videoPrompt']}}",
          "resolution": "={{$json['videoSize']}}",
          "lengthSeconds": "={{$json['videoLength']}}",
          "avatarImageUrl": "={{$json['imageUrl']}}"
        }
      },
      "name": "Synthesia - Generate Video",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1250,
        300
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "https://api.pictory.ai/v1/create-video",
        "method": "POST",
        "jsonParameters": true,
        "bodyParametersJson": {
          "text": "={{$json['videoPrompt']}}",
          "width": "={{$split($json['videoSize'], 'x')[0]}}",
          "height": "={{$split($json['videoSize'], 'x')[1]}}",
          "duration": "={{$json['videoLength']}}",
          "styleImage": "={{$json['imageUrl']}}"
        }
      },
      "name": "Pictory - Generate Video",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1250,
        400
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "https://api.runwayml.com/v1/generate",
        "method": "POST",
        "jsonParameters": true,
        "bodyParametersJson": {
          "prompt": "={{$json['videoPrompt']}}",
          "size": "={{$json['videoSize']}}",
          "lengthSeconds": "={{$json['videoLength']}}",
          "source_image": "={{$json['imageUrl']}}"
        }
      },
      "name": "Runway - Generate Video",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1450,
        200
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "authentication": "headerAuth",
        "url": "https://api.lumen5.com/videos",
        "method": "POST",
        "jsonParameters": true,
        "bodyParametersJson": {
          "storyboard": "={{$json['videoPrompt']}}",
          "format": "={{$json['videoSize']}}",
          "duration": "={{$json['videoLength']}}",
          "avatar": "={{$json['imageUrl']}}"
        }
      },
      "name": "Lumen5 - Generate Video",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        1450,
        400
      ],
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Google Sheets Trigger": {
      "main": [
        [
          {
            "node": "Set Idea & Context",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Idea & Context": {
      "main": [
        [
          {
            "node": "OpenAI - Generate Video Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI - Generate Video Prompt": {
      "main": [
        [
          {
            "node": "Set Video Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Video Prompt": {
      "main": [
        [
          {
            "node": "Switch - Choose AI Engine",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch - Choose AI Engine": {
      "main": [
        [
          {
            "node": "Veo3 - Generate Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Synthesia - Generate Video",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Pictory - Generate Video",
            "type": "main",
            "index": 2
          }
        ],
        [
          {
            "node": "Runway - Generate Video",
            "type": "main",
            "index": 3
          }
        ],
        [
          {
            "node": "Lumen5 - Generate Video",
            "type": "main",
            "index": 4
          }
        ]
      ]
    }
  }
}

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

Video Automation Workflow. Uses googleSheetsTrigger, openai, httpRequest. Event-driven trigger; 10 nodes.

Source: https://gist.github.com/EnverAI/77687354acac542f7fb862e07e443d74 — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Note: Now includes an Apify alternative for Rapid API (Some users can't create new accounts on Rapid API, so I have added an alternative for you. But immediately you are able to get access to Rapid AP

Form Trigger, Google Sheets Trigger, OpenAI +2
AI & RAG

This system automates LinkedIn lead generation and enrichment in six clear stages: Lead Collection (via Apollo.io) Automatically pulls leads based on keywords, roles, or industries using Apollo’s API.

Form Trigger, OpenAI, Google Sheets Trigger +2
AI & RAG

This n8n workflow automates the process of retrieving products from Printify, generating optimized product titles and descriptions, and updating them back to the platform. It leverages OpenAI for cont

HTTP Request, Tool Calculator, Tool Wikipedia +3
AI & RAG

This workflow is designed for content creators, marketers, and automation enthusiasts who want to produce professional AI-generated videos and publish them automatically on social media — without edit

OpenAI, HTTP Request, Google Drive +3
AI & RAG

Hubspot Workflow. Uses hubspotTrigger, hubspot, httpRequest, openai. Event-driven trigger; 22 nodes.

HubSpot Trigger, HubSpot, HTTP Request +2