Turn a product photo into a product video ad
What wins in late 2026 is one impossible but tactile moment built around the real product: a macro pour, a lid snap, an ingredient burst, a hands-only unboxing. What fails: logo-first "cinematic" b-roll, still-photo slideshows (TikTok Shop bans them in shoppable videos), and any frame where the model rewrote the label.
Generation runs on varg (MCP call_tool or POST https://api.varg.ai/v2/tools/{image|video}/call). Quote with estimate_cost and wait for a yes before each paid step. A still costs cents to fix; a clip costs dollars, so approve stills first.
1. Product truth sheet (free, do it first)
From the photos and the product page, write:
PRODUCT: <name, size, e.g. "30 ml amber glass dropper bottle, gold cap">
LABEL (exact, in order): "NORTHLINE" / "VITAMIN C" / "30 ML"
COLOURS: body #F4A23B, cap #C9A227, label #FFFFFF
PARTS / IN THE BOX: bottle, dropper, box
SCALE: fits in the palm
CLAIMS WE CAN SHOW: absorbs in ~30 s (visible), lightweight texture
NEVER: change shape, size, colour or material; add text; fake results (fizz, instant clearing)
Photos: clean, straight-on, label readable. "If the label isn't readable in the reference, the model invents its own text."
2. Cut-out and hero still
- Cut-out:
bria_guided_remove_background (keeps the original pixels).
- Hero still:
gpt_image_2_5 edit, "keep the uploaded product exactly unchanged, replace only the background with [environment], match reflections and contact shadows, no product deformation, no added labels". nano_banana_2_1 is cheaper but may need small packaging text fixed.
- 9:16 canvas:
bria_fibo_edit_1_5_expand. Real side views for reveals: qwen_angles (exact angles, not invented sides).
- Check at 100%, letter by letter, colour by eyedropper. Reject and redo, don't "fix later".
Product in a hand: bria_fibo_edit_1_5_product_holding. Apparel on a person: bria_fibo_edit_1_5_virtual_try_on (check stitching, print and logo; AI try-on smooths texture and length).
3. Storyboard sheet (approve before video)
gpt_image_2_5, 8–12 panels, each ≥1.5 s with one camera move, POV hands only for no-face formats. Template: references/prompts.md P1. Sequence that works: product on the surface, hands enter → open and reveal → the most tactile moments → in use → the result in macro → hero packshot. Show it to the person.
4. One multi-shot clip with PRODUCT LOCK
seedance_2_5, 10–15 s, @image1 = the cut-out, @image2 = the approved sheet ("follow its shot order, never show its panels, numbers or text"), audio on for foley, "no background music" unless wanted, last second held clean for the end card. Template: references/prompts.md P2.
Cheaper: kling_v4 multi-shot (often right first time) or wan_3 (best value for b-roll volume). Drafts: kling_v4_flash.
Safest for listings and loops: pixelcut_looping_video (locked camera, seamless loop, motion: spin for 360°). Exact orbit around a packshot: minimax_h3_max_camera_controls.
5. Repair, don't reroll
Reject any shot where the pack, label, shape, colour, part count or hand count drifts. Regenerate only that shot from first and last frames (seedance_2_5 first/last-frame mode, kling_v4 end_image_url), camera locked in both frames or it invents a move. Reliability ladder, best first:
- Composite the real product PNG and label over AI footage (real pixels)
- Locked camera, only the environment moves (liquid, fog, hands)
- Reference on every shot + PRODUCT LOCK + label spelled out
- One job per reference ("defines the product ONLY")
- First/last frames from approved stills
- A hand anchored on the box base; hands at the product's edges
- Push-ins and parallax instead of full spins of unseen sides
Common failures and fixes: references/failures.md.
6. Composite the truth and export
-
Lay the real packshot PNG (and copy, if any) over the clean last second:
# packshot.png = the real cut-out with alpha; 13 = where the clean last seconds start
ffmpeg -i clip.mp4 -loop 1 -i packshot.png -filter_complex "[1:v]scale=760:-1[p];[0:v][p]overlay=(W-w)/2:(H-h)/2:shortest=1:enable='gte(t,13)'" -c:v libx264 -crf 18 -c:a copy hero.mp4
Tested on FFmpeg 6.0: the packshot appears from 13 s and the clip keeps its length.
-
Edit, captions, CTA, loudness and the 4:5 cut: ecommerce-video-edit. A 1:1 or 16:9 15–30 s cut with no hard sell for the product page.
-
Label realistic AI footage (TikTok AIGC toggle; Amazon contains-synthetic-performer if a photoreal person appears). Never show the product doing more than it can.
Formats
| Format | Model | Notes |
|---|
| Hands-only ASMR unboxing | seedance_2_5 / kling_v4 | 12-panel ASMR sheet; "natural ASMR only"; one hand stays on the box base |
| Macro pour / texture / splash | seedance_2_5 | Locked camera on the pack; only the liquid moves |
| Ingredient burst / exploded view | gpt_image_2_5 still → seedance_2_5 | Real parts in their real order |
| Food process film ending on the product | seedance_2_5 | 8–12 beats of 2–3 s, match cuts, 110–120 BPM |
| 360° loop for listings | pixelcut_looping_video | Safest label fidelity |
| Product in use (kitchen, bathroom) | nano_banana_2_1 stills → kling_v4 | Hands at edges, real scale cue |
| Apparel on a model | bria_fibo_edit_1_5_virtual_try_on → seedance_2_5 | One @image per garment, "EXCLUSIVE reference" |
Costs on varg (live rules, Oct 2026; quote exact jobs with estimate_cost): a 15 s product video is roughly 250–1,000 credits at 720p (Seedance 2.5 is the priciest and varies ~2× by route; Kling 4 ~16 credits/s, Wan 3 ~10 credits/s at 720p).
Related
ecommerce-video-ads · varg-product-hook (UGC-style hook clip of the product in use) · ecommerce-video-edit · ai-ugc-ad-video · tiktok-shop-video · varg-ai
Sources: varg how-to: turn a product photo into a video, fal commercial skill, Masonry controlled test, Luma Seedance guide, OpenAI image prompting cookbook, X posts by @abxxai, @Ciri_ai, @HeyRu0by, @Strength04_X, @yourPlugAI.