UGC ads are expensive to produce. You need a creator, product samples, filming, editing, licensing. AI generates the same format for a few dollars per video. This workflow does it from a spreadsheet row.
You enter product info in a Google Sheet. The workflow generates the product image with Nano Banana Pro, builds a UGC-style prompt, generates the video with your choice of Kling 2.6, Veo 3.1, or Veo 3.1 Fast, and writes the results back to the sheet. You're done.
The Google Sheet structure
Each row is one video job:
| Product Name | Image URL | Features | Target Audience | Video Description | Model | Status | Image Result | Video Result |
|---|---|---|---|---|---|---|---|---|
| Crossbody Bag | [url] | compact, lightweight... | women 18-30 | woman swings bag over shoulder... | kling_2.6 |
The last three columns (Status, Image Result, Video Result) get filled in by the workflow. Everything else is your input.
The workflow nodes
flowchart TD
GS[Google Sheet\nrow in_queue] --> AI1[Generate image\nprompt via GPT-4o mini]
AI1 --> IMG[fal.ai\nNano Banana Pro\nproduct image]
IMG --> RT{Model\nrouter}
RT -->|kling_2.6| V1[Kling API]
RT -->|veo_3.1| V2[Veo API]
RT -->|veo_fast| V3[Veo Fast API]
V1 & V2 & V3 --> POLL[Poll until\ncompleted]
POLL --> SAVE[Write URLs\nback to Sheet]
1. Schedule trigger
Runs on a schedule. Swap this for a webhook or manual trigger if you prefer on-demand runs.
2. Config node
Constants that don't change per product:
- Aspect ratio: 9:16
- Kling video duration
- Veo video duration
- Negative prompt: "blur, distort, low quality"
- Video resolution: 1080p
3. Get new product
Reads the first Google Sheets row where Status is "in_queue." This keeps the workflow from reprocessing finished jobs.
4. Generate image prompt
An AI agent (GPT-4o mini) receives the product name and video description and generates a detailed prompt for Nano Banana Pro. The system message specifies the UGC photography style. Structured output returns a single JSON key: prompt.
5. Generate product image with Nano Banana Pro
HTTP POST to the fal.ai API with:
- The generated prompt
- Aspect ratio from config (9:16)
- Your product image URL
- Resolution: 1k
To get your fal.ai API key: go to your fal.ai dashboard, Manage API Keys, Add Key. Select API scope. Copy the key. In n8n, use Header Auth type with the header name Authorization and value Key YOUR_KEY.
A wait loop polls fal.ai every few seconds until the image status becomes "completed," then returns the image URL.
6. Model router
A Switch node checks the model column from the Google Sheet row. Three paths:
- Kling 2.6 → video prompt node A + Kling API
- Veo 3.1 → video prompt node B + Veo API
- Veo 3.1 Fast → video prompt node C + Veo Fast API
7. Generate video prompt
Another AI agent, same model (GPT-4o mini). This time the system prompt targets UGC video generation specifically: first-person voice, authentic delivery, lifestyle framing. Receives product name, features, target audience, and video description. Returns a JSON with one key: prompt.
8. Send video generation request
HTTP POST to fal.ai with the relevant endpoint per model. Common inputs across models:
prompt: the generated video promptimage_url: the product image from Step 5aspect_ratio: from configduration: model-specific, from configresolution: from config
The endpoints differ per model. Find them in the fal.ai API documentation under each model's section.
9. Wait for video completion
Same polling loop as the image step. Get status, route on result: if "completed" continue; if "in_progress" or "in_queue" wait 10 seconds and check again.
10. Save results to Google Sheet
Update the row: Status = "completed", Image Result = image URL, Video Result = video URL.
Real results comparison
Crossbody bag:
- Kling 2.6: Natural delivery, slight hallucination on bag details
- Veo 3.1: Cleaner product representation, more cinematic feel
- Veo 3.1 Fast: Similar to Veo 3.1, generated 13 seconds faster
Vitamin C serum:
- All three models produced authentic first-person UGC-style delivery
- Product details (dropper, texture) rendered consistently
Cost per video
All three models use the same Nano Banana Pro image generation at $0.15 per image.
Video generation costs per model:
- Veo 3.1: $3.20
- Kling 2.6: $1.40
- Veo 3.1 Fast: $1.20
Total cost per complete UGC ad video: $1.35 (Veo 3.1 Fast) to $3.35 (Veo 3.1).
For most products, Veo 3.1 Fast hits the best balance of quality and cost. The quality difference over Kling 2.6 is noticeable, and the price difference from Veo 3.1 is significant.
Getting the workflow
The full n8n workflow file and the Google Sheet template are linked in the video description. Import the workflow, update the config node, connect your credentials, and you're generating UGC ads in an afternoon.
If you want this kind of content automation built for your brand or agency, get in touch. We design and build AI UGC ad pipelines for production use.