Winning scripts in. Static + video out.
Paste a direct-response script. Get a variant matrix of static ads across feed, story, and Reels formats, plus 78-second editorial-typography animation with Kokoro voiceover. Biased by what's currently winning in the ad library. A working pipeline you can break right now.
- Variants / run
- 8 → 300
- Formats
- 4
- Feedback loop
- Live
He hit snooze four times. Every morning. For years.
Turns out it wasn't laziness. His testosterone was tanked. $50 fixed it.
is what it cost him to find out his testosterone was the problem.
"She would like to personally thank Male Excel."
Month 2 of TRT. He says muscle is building. She says other things.
Order your $50 test →Tired by 3pm? Hands off your wife? It's probably not stress.
Male Excel TRT script → 78-second photoreal claymation
One direct-response script in. One rendered vertical MP4 out. Claude Opus 4.7 writes the 8-scene storyboard. FLUX schnell (via Pollinations) generates 3 photoreal-claymation pose variants per character scene in Aardman-Studios register. CSS hard-cuts between poses every 3-4s, simulating real stop-motion puppet articulation. A typography overlay layer adds kickers, titles, subtitles. Kokoro af_heart voices the narration. ffmpeg concat-stitches per-scene PNG sequences. No post-processing. No human editor.
- 01.Script → storyboard. 8 scenes, per-frame palette/badge/title/subtitle/visual slot.
- 02.Scene → PNG. Playwright renders parametric SVG clay illustrations at 1080×1920.
- 03.Narration. Kokoro
af_heartvoices 8 `Say:` blocks, per-block durations drive frame timing. - 04.Stitch. ffmpeg concat + zoompan (slow zoom 1.0→1.08) + AAC mux → faststart MP4.
fetch_clay_backgrounds.py from Pollinations FLUX schnell (free, rate-limited) to GPT Image 2 (gpt-image-2) at ~$0.18/image high quality, whose native 8-image coherent batching locks character consistency across all 8 scenes in a single call. Nano Banana 2 (gemini-3.1-flash-image-preview) at $0.045/image is the cheap fallback when budget-constrained. For true motion video, swap to Veo 3.1 / Runway Gen-4. Same storyboard, same orchestrator.Four-stage pipeline, end to end.
Each stage is a real API route you can curl. The demo uses fixture data for the ad-library fetch so it runs without a Meta token; the analyzer, the generator, the feedback loop, and the storyboard emitter are all live.
- STEP 01
Ingest
Paste a winning script. Structured payload: brand, product, audience, CTA, offer, copy.
/api/generate-variants - STEP 02
Trend bias
Analyze current ad-library sample. Extract repeatable patterns, not surface descriptions.
/api/trend-scan - STEP 03
Generate
Claude Opus 4.7 produces 8-300 variants across 5 styles × 4 formats × 3 durations.
/api/generate-variants - STEP 04
Close the loop
Upload winners CSV → extract angle/format/hook patterns → bias next batch.
/api/feedback-ingest
What the trend analyzer actually extracts.
Not "attention-grabbing hooks". Concrete repeatable patterns with frequency, examples, and a one-sentence mechanism. These bias the generator on the next run.
Run the trend scanDollar-amount specificity in first 1.5s ($50, $79, $129)
36% of sampleA precise dollar figure under $100 reads as discovery, not pitch. It frames the next 8 seconds as 'how is that possible' rather than 'here comes the upsell'. Drops scroll-past by ~22% in men's-wellness 2025 creative.
Friends-think-he-X camouflage hook (meditating, therapy, affair)
24% of sampleNames a plausible explanation for the transformation, then immediately denies it. Curiosity-loop without an explicit claim. Outperforms direct-claim hooks 1.7x CTR on warm audiences.
Symptom-stack micro-specificity (snooze 4 times, energy by 3pm)
27% of sampleStacks 2-3 micro-specific symptoms instead of one vague claim. Self-identification triggers immediately because the viewer recognizes their own routine. Wins against generic 'tired all the time' by 2.3x in low-T category.
Wife / partner / friend named-relationship endorsement
22% of sampleSocial proof via a named relationship outperforms anonymous testimonials by 1.8x. Frame the ad as 'someone close to him pushed' rather than 'he discovered this' — converts the awareness-stage viewer who hasn't self-diagnosed yet.
Honest disclosure of what's live.
Every direct-response operator has been burned by a vendor who demo'd a pitch deck. This POC labels exactly what's running against a real model versus what's a production swap-in.
Script → variants
Real Claude Opus 4.7 via Vercel AI Gateway. Structured output, Zod-validated, 8 variants per call.
Static ad render
5 parameterized templates. HTML/CSS, exported as PNG in-browser via html-to-image. Zero image assets.
Feedback-loop bias
Upload winners CSV, Claude extracts hook/angle/format patterns, next gen gets them as system-prompt bias.
Storyboard emitter
Per-frame shot / motion / voiceover / palette. Each frame is a ready-to-render Pika/Runway spec.
Meta Ad Library fetch
Response shape matches /ads_archive. Swap the fetch URL with your Meta token and it's production. 40 real-shape rows included.
Video frame render
Photoreal claymation BGs (FLUX schnell via Pollinations) + typography overlay + Kokoro af_heart + ffmpeg concat. Male Excel TRT rendered as 78s photoreal claymation, full verbatim script (see top of page). GPT Image 2 default upgrade for production load (Nano Banana 2 fallback for cost-constrained runs).