Mini-movie — sources
Reference ads (Foreplay, analysed 10-06 in ~/research/davidaistar/foreplay/; paraphrased beat by beat, structure only — never copy a script or lyric)
Note: the .txt transcripts for these ads hold only the share header; the Gemini video passes are the source. Gemini's tool guesses (Midjourney, Runway, HeyGen) are stale style hints, not facts (REPORT §3).
- 14_minimovie — Rosabella beetroot supplement, 11:51, 9:16, photoreal "short film". Paraphrase: a woman stops a stranger yanking a dog on a leash → traces the dog to an elderly widow who gave it up after her husband died of a stroke despite "good numbers" on his medication → the heroine sees her own husband worn out by the same medication → she researches, explains the mechanism with household props (rust, a browning apple) → the "wrong supplement" the late husband took vs the right one → the widow and the husband take it daily, the widow gets strong enough to take the dog back (reunion) → a doctor confirms both → CTA with a colour test of the powder and a 90-day empty-bottle guarantee. 100 % AI, lip-synced. Gemini: difficulty 9.5/10; risks = uncanny faces in emotional close-ups and drop-off at this length; tells = morphing dog fur, gibberish label text, stiff lower face in dialogue. Keep: a cold open of pure conflict that doesn't feel like an ad; a second story (the widow) that mirrors the hero's risk = our subplot; the mechanism explained with an everyday picture; a "wrong product" beat = our false solution; third-party proof before the CTA. Change: animated, not photoreal; the stake is HER being blamed for the mornings, not a stranger's tragedy; no doctor-confirms-numbers beat (no clinical claims needed; the kid waking himself is the proof); 7-9 min default, not 12.
- 12_musical — Resilia aged garlic, 7:25, 9:16, stylised-3D narrative VSL. Paraphrase: a man catches his wife with a trainer and she mocks how he's let himself go → he narrates three years of fatigue → an older, fit mentor listens to him → the mentor names a hidden cause (3D artery b-roll) → the product → a week-by-week log with a doctor confirming → the ex tries to come back, he shuts the door → he pitches it to a friend → "available on Amazon". Cuts every 3-5 s, lip-sync on faces. Keep: humiliation from someone close; a mentor INSIDE the story; a time-stamped proof log (our Ch7 day stamps); the accuser witnessing the result. Change: stake on her, caused by the mornings; no evangelist epilogue (it adds 2 min after the payoff); no lip-sync.
- 13_suno — Smooche colour-changing foundation, 5:37, 9:16, Pixar-style musical. Paraphrase: a 63-year-old woman runs into her ex and his much younger partner in a store → flashback to the divorce and makeup that failed her → a work trip, a same-age colleague who looks decades younger explains why → product + mechanism → back at the store, the young partner asks her secret → a mid-roll offer screen (units sold, discount) → the ex texts, she ignores it. Keep: the rival/accuser asking for her secret = vindication staged in public; an explainer met inside the story; ≥5 min holds attention when every beat moves. Change: spoken, not sung (format-song owns sung); the mid-roll offer becomes a spoken CTA cell (on-screen card NOT BUILT).
- 04_drama — Koriderm Time Reverse Cream, 4:32, photoreal three-character dialogue. Paraphrase: a clerk refuses a woman's ID because she looks too young for it → a supervisor backs the clerk → they list procedures she must have had → she trades her secret for the stamp → product pitch + hand test → timeline + guarantee → stamped, she leaves triumphant. Gemini: "expect to generate 50+ shots". Keep: a bureaucratic witness who controls something she needs; 50+ shots is normal for this kind of length. Change: our dialogue is staged without lip-sync; product never applied by hand on camera.
davidaistar diffs that apply at this length
analysis/diff_songs.mdrow 13:FAL_PRICEin h3.py lists h3-max 768P at $0.05/s and 480P at $0.08/s (inverted; yapper found 768P = $0.08); fal billing isn't readable with our key, so real H3 spend may be ~1.6× the ledger. At 60 batches this is the difference between ~$40 and ~$64 of H3.- Row 21 (hooks): one hook per expensive film is the waste; the shared-body route gives extra hooks for their hook batches only.
- Row 23 (mid-roll offer): Smooche's offer block before the epilogue; ours = spoken CTA cell, PDP-true claims only.
analysis/diff_animation_styles.mdP1: last-frame chaining across batches (kills hard seams in continuous styles) is not built; at 60 batches every seam is a hard cut, so chapters lean into cuts.- REPORT §3 row 14: "Animated yes / photoreal no … Low until spoken drama (#4) reads"; §4 "Don't: … photoreal mini-movie".
Model registry roles this format touches (bind to roles, never names)
- Stylized video, ref + audio clock: proven pick runs everything. The style-LoRA candidate could hold identity across 40-70 batches: untested, one-unit proof (same batch, both models, Fish's eye) before any lane depends on it.
- Video extend: candidate for smoothing seams; NOT BUILT.
- Lip-sync onto an animated frame (sync-3 candidate): the route to on-camera dialogue (cell 5); NOT BUILT.
- Photoreal / multi-ref video with locked character: the only route if photoreal ever re-opens; gated by the avatar-lane rules.
Our receipts (verified in code 2026-10-06)
- No cross-run concat:
scripts/cartoon_h3/assemble.pybuilds its ffmpeg concat list (<run>/fit/concat.txt) from ONE run'splan["batches"]clips, then lays one VO, one bed, one caption track, one end card (optional,--end-card; off by default per Fish 10-06). - Forced batch breaks exist only at
lead_start,body_start,body_end(storyboard.pybuild_beatsbatch_break); batches otherwise end on any pack-line end within 15 s / 4 panels (3 on reveal/CTA). run.pyrefs_for_batch: characters (whole-word label match, aliases son/daughter/mom/dad) → product → rooms; with--style-refthe list is cut torefs[:5]+ the anchor, otherwiserefs[:9].storyboard.py_SYS: "If a speaker is given … show them on screen with their mouth moving (unless the scene description is a cutaway…)";h3.pyvideo_prompt: "No on-camera dialogue, no lip-sync."run.pyadds the "bulky square-cased smartwatch … clearly not this band" clause only in product-visible batches whose panels say "smartwatch"/"fitbit";pack.pyPRODUCT_IN_FRAME_REmarks a line product-visible on "the band", "wristband", "dawn band", etc.vo.py: hook / lead / body / tail segments; body cached underoutput/cartoon-h3/_shared-body/<hash>/(hash = voice + body text + dialogue cfg); the storyboard FAILS on intent mismatch for identical cached words (10-02).upscale.pycaches by clip bytes + settings, so shared body clips upscale once.- 10-04 ledger (
output/dawn-iterate-2026-10-04/video/RUN-LOG.md§4): 1,105 billed H3 s, 114 canvas renders ($25.08), 36 sheet renders ($7.92), upscale $7.68 for three songs; plan.json: 85-98 beats, 24-31 batches, 8.4-10.6 s per batch; regens 8 / 11 / 6; ENOSPC at assemble with 886 MB free; Discord copies 21.6-29.0 MB at 4-5.5 min. - MAP §4: songs CPM $49-68 vs statics $17-31, lifetime frequency 1.12-1.25, unproven past ~$550/week.
starpop articles (creator's own write-ups, read 2026-10-06; ~/research/davidaistar/starpop/txt/)
- Applied:
facebook-instagram-ad-sizes-and-safe-zones+how-to-preview-a-facebook-ad-before-publishing→ §10 placement gate (the article names the UI regions but gives no percentages; the 14/35/6 % Reels box is Meta's published spec, cross-checked 10-06).are-ai-generated-ads-allowed-on-meta→ §11 upload hygiene (Advantage+ enhancements off, live preview day 1).meta-video-ad-metrics-hook-rate-hold-rate-ctr-cpa,how-much-budget-to-test-meta-ad-creatives→ §11 read/floor lines where this format needed them. - Read, nothing new for this format:
ai-ad-formats-guide(format ↔ job table, shot-list order, references before video: already core §4),fully-ai-generated-ads-are-here-to-stay(strategy essay),how-to-calculate-break-even-roas-for-meta-ads(proposed for core §6, not format-specific),how-to-add-correct-captions-in-any-language+how-to-fix-wrong-capcut-auto-captions(script-as-source captions = our assemble rule already; his SRT → CapCut/Premiere import maps to Remotion per core §2a). - Not adopted: (1) "an AI actor must not voice a fictional first-person experience / fabricated testimonial" (formats guide, AI-ads article, organic-vs-paid) — conflicts with Fish's claims unlock (10-02) and our dramatized mom-narrator recipe; risk is Fish's call, recorded here only. (2) His 25-char vertical caption line cap — VideoAd chunks by its own MAX_PHRASE_CHARS 28 + two-line fit, Fish-set. (3) Organic-first discovery (
ai-organic-social-vs-paid-ads) — Dawn's message and checkout path are proven, Testing CBO is our discovery lane. (4) His model picks (Kling O3 Pro, Sora 2, P-Video) — registry roles only; untested candidates.