See llms.txt for all machine-readable content.

Back to Templates

Create reviewed AI product video ads with OpenAI, Shotstack and Google Sheets

Quick overview

Turn approved product photos and facts into narrated vertical video ads. Create up to six language and hook variants, review scripts before generation, add captions from real narration, and archive verified MP4s privately in Google Drive. Includes separate script and final-video approval gates.

How it works

  1. Reads one approved SKU brief from Google Sheets, rejects duplicate job IDs and checks the downloaded portrait PNG against its approved SHA-256. Related SKU rows can share a campaign ID and private Drive folder. Each worker execution performs one durable provider operation.
  2. Checks the availability and option schemas of the fixed Shotstack speech and image-to-video models. OpenAI proposes a bounded set of scripts with source fact references. A signed-in allowlisted reviewer must check every language and approve the exact script plan before speech, video or rendering starts.
  3. Requests Shotstack generation credit estimates for narration and maximum video lengths. After approval and estimate checks, generates narration, probes its actual audio duration, requests an exact video estimate and animates the approved image. The output is limited to two hooks in each of up to three languages.
  4. Renders 720 × 1280 MP4s using existing generated assets, narration-based captions and the exact product name, price and call to action. It does not place generation prompts in the final render, avoiding an unintended second generation.
  5. Inspects actual H264/AAC MP4 bytes, preallocates a Google Drive file ID, uploads to the configured private folder, verifies destination metadata and reads back the complete file to compare its SHA-256.
  6. An allowlisted signed-in reviewer watches every archived variant with sound and approves the exact completed content hash. Checks cover product identity, source facts, captions and language. Approval records a decision; no advertisement is posted or scheduled.
  7. Keeps versioned native Data Table state, compares and swaps updates before effects, and holds uncertain paid submissions for verified-ID reconciliation. The Google Sheet is a RAW status mirror, not the approval authority.

Setup

  1. Import workflow.json, review.json and setup.json into the same n8n project. Keep them inactive. Connect Google Sheets OAuth2 to the setup and worker Google nodes. Run setup once to create a separate Queue and five-column native Data Table; copy both IDs into the worker and review configurations.
  2. Choose an existing private Google Drive folder you own and configure its ID in both workflows. Bind Google Drive OAuth2 to all four worker Drive HTTP adapters. Bind OpenAI API to the script-planning adapter. Bind a Header Auth credential named x-api-key with your Shotstack API key to both Shotstack HTTP adapters; keep keys outside Code, Sheet rows and JSON exports.
  3. Use your own rights-cleared immutable public 9:16 PNG. Set the precise approved image and Shotstack output hostnames in allowedAssetHosts; the defaults are examples, not a wildcard. Run the read-only photo preflight to obtain the exact source hash, then fill Queue using examples/queue-example.csv and the documented headers.
  4. Set real allowlisted reviewer emails and retain n8n user authentication on the review form. Match every model, host, budget, polling and Drive setting between worker and reviewer. Enter current render/caption credit allowances, a total estimate limit, and a separate OpenAI USD estimate limit. Defaults disable generation and authorize no spend.
  5. Run the credential-free local demo first. For your separately authorized live test, set approval flags TRUE, production_status=ready and generationEnabled=true. Run one worker step at a time or enable its minute schedule. Inspect the saved version and hash with the review companion, approve scripts, then resume that job using resumeJobId. Inspect all final Drive videos with sound before final approval. Clear resumeJobId after the intended run.

Requirements

  • Target: n8n 2.28.6 with built-in nodes, native Data Tables and signed-in n8n Forms. Requires Google Sheets and Google Drive OAuth2 access, an OpenAI API account, a Shotstack account with the documented active Seedance 2.5 image-to-video and ElevenLabs multilingual speech models, a private Drive folder and trusted immutable public PNG storage. Provider credits, generation, captions, hosting and model usage are separate from this USD 5 template purchase. Local and isolated mock tests completed; live provider generation, real Google OAuth/delivery and n8n Cloud are untested.

Customization

  • Edit campaign IDs, SKU facts, the exact product name, price and CTA, audience, one to three supported language codes (en,de,fr,es,it,pt,nl), and one or two hooks, with at most six outputs per SKU job. Select a compatible documented voice and adjust estimate limits, current render/caption allowances, polling and trusted hostnames in both configurations. New models, caption layouts, destinations or schema changes require adapter changes and retesting. There is no automatic publishing step.

Additional info

Includes worker, authenticated review and setup JSONs, a synthetic media demo, Queue CSV, state schema and local test evidence. The demo contains fixed graphics and a quiet test tone, not AI-generated video or narration. Quotes are estimates, not credit reservations or a guaranteed account spending cap; caption/render allowances are operator estimates. Source and provider media URLs must be public for provider processing, even though the final Drive archive is private. Hashing the downloaded source cannot prove which bytes a provider later fetched; use immutable storage and visually inspect product identity. Human reviewers must verify claims, translations, captions, voice and rights. Lost paid responses are held; recover only the exact verified provider ID, never blindly repeat a charge. No revenue, reach or approval result is promised.