claymation-ads
Claymation Ads
Turn a product image plus an angle into a finished vertical claymation video ad. The pipeline is a chain of cheap, reviewable artifacts — each stage's output anchors the next, and the user approves at five gates before money concentrates. Everything deterministic (API calls, audio math, assembly) lives in scripts/; your job is planning, prompt assembly, quality judgment, and stopping at the gates.
Read references/prompts.md before writing any generation prompt — the templates there encode hard-won consistency rules. Read references/fal-api.md before the first FAL call — it has the payload shapes and model routes.
Why this order works (understand this before deviating)
Character consistency in AI video comes from three mechanisms stacked, none sufficient alone:
- Approved masters ride every image. A style lock (the world: material, palette, lighting, sets) and one master reference per recurring character are generated FIRST and attached as reference images to every later generation. Without this, a 10-scene ad drifts into several different protagonists.
- The chain. Each scene still also references the previous scene's still, so adjacent frames agree locally.
- The clip contract. Each video clip is generated from a PAIR of stills (this scene's + the next scene's) with a prompt contract that frame one is the first image unchanged and the final frame matches the second image. Clips therefore join seamlessly — clip N ends on the exact frame clip N+1 begins.
And one rule that outranks all three: the real product photo is the only product authority. Never generate a "master" of the product; attach the user's actual packshot to every image that shows the product. Generated product references degrade label text within two generations ("Testosterone" becomes "Testasterone" — this is the single most common failure in AI product ads).
Voiceover is generated per-line BEFORE the clips, so scene timing comes from measured audio, not estimates. This is why the final cuts land exactly on the narration with zero timing correction.