Create Veo 3.1 social videos from Google Sheets with Gemini and PostWire

Go to Workflow
0 views
Built by PostWire PostWire
Created on October 01, 2026

Description

Quick Overview
This workflow runs daily, pulls the next “ready” video idea from Google Sheets, uses Google Gemini to write a Veo prompt and platform-specific captions, generates an 8‑second vertical video with Veo 3.1, and publishes it to multiple social platforms via the PostWire API.

How it works
Runs every day at 9:00 and reads Google Sheets rows where the status is set to "ready".
Takes the first matching idea and updates the same row in Google Sheets to mark it as "generating".
Uses Google Gemini to produce a Veo prompt plus captions (and a YouTube title/description) based on the idea and optional style.
Requests an upload URL from PostWire, generates an 8-second 9:16 video with Veo 3.1, uploads the file to PostWire, and finalizes it to obtain a hosted media URL.
Calls the PostWire posting endpoint to publish the video to the selected platforms with per-platform text (and a YouTube title), using the sheet row as an idempotency key.
Updates the Google Sheets row with the published links and a "posted" status, or writes the required fixes to the row and sends a Gmail alert when any platform fails.

Setup
Connect Google Sheets credentials and select the target spreadsheet and sheet in the read/update steps.
Create a Google Sheet with columns for idea, style, networks, status, posted_at, links, and note, and set one or more rows to status "ready".
Add Google Gemini credentials and ensure billing is enabled for Veo access in Google AI Studio.
Create a PostWire account, connect your social profiles, and add an HTTP Header Auth credential with Authorization: Bearer for the PostWire API requests.
Connect Gmail credentials and replace the recipient address in the email step so failures are sent to your inbox.

Nodes Used (4)

Gmail
n8n-nodes-base.gmail
Google Gemini
@n8n/n8n-nodes-langchain.googleGemini
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest