Pipeline Hub

format-mini-movie

Long-form animated mini-movie ad, 5-12 min in CHAPTERS: the extended Dawn recipe A (accused mom, vindicated) with escalating chapters, one subplot, a mid-point false solution, the explainer, the reveal, a long payoff and the offer, spoken by a mom narrator plus voiced characters.

Lane: cartoon-h3 dialogue (one pack, one run) · not built yet: 9 (see below) · source: /Users/ayden/.openclaw/workspace/skills/format-mini-movie

SKILL.mdbeat-sheet.mdsources.mdEvals (6)Learnings (13)
1. Read first2. When to use / when not3. The format4. Why it sells5. Beat sheet (full rules, word budgets and re-hook types in references/beat-sheet.md)6. Pack spec7. Visual grammar8. Audio9. Production (free until sheets; every paid step is Fish's)10. Gates & QA checklist (on top of core §4)11. Variants & test plan (one variable per ad set; core §6)12. Failure modes13. Sources

format-mini-movie — accused, tested, fooled, vindicated (chaptered)

format-spoken-drama is one arc in 2-4 min. This skill is that arc stretched into 6-9 chapters, each opening on a re-hook, with a subplot and a false solution in the middle. It is NOT a sung format (that's format-song) and NOT photoreal (§2).

1. Read first

2. When to use / when not

3. The format

4. Why it sells

5. Beat sheet (full rules, word budgets and re-hook types in references/beat-sheet.md)

# Chapter % runtime Job Must contain
0 Cold open 0-3 Stop the scroll on her Accuser's verbatim VOC line in his voice or her stake, in action; overlay = this line
1 The charge 3-12 She is the alarm; he blames her Counts/times, generic failed solutions; ends on his threat
2 The record goes public 12-24 Blame costs her in front of a witness One new room + person; concrete cost; subplot opens (her job / her kid's trust / a sister in the same fight)
3 Then you do it 24-35 Hand-over test Accuser fails 2-3 mornings; reasonable and wrong; ends blaming a gadget
4 The false solution (mid-point) 35-47 Objection inside the story A generic fix works 1-2 days, then fails on the worst morning; stake peaks; her low point
5 The explainer 47-58 Root cause Person inside the story; Fish's root-cause line verbatim; why the false fix failed; ≤4 explainer lines
6 Discovery 58-67 Mechanism + product FIRST band beat; touch gets through, silent to everyone else, keeps going until he turns it off; named once. Optional mid-roll CTA (§11 cell)
7 Proof 67-80 Days pass, it holds Kid wakes himself on screen; subplot resolves
8 Vindication 80-95 Long payoff on HER In front of the accuser/witness; kid clears her, arm held OUT; accuser concedes in his voice; her morning back
9 Close / CTA 95-100 Offer Close line, product, 60 nights; end card (optional, --end-card; off by default per Fish 10-06)
- Every chapter opens on a re-hook (5-12 words, new information, in action) and closes on an open loop the next chapter answers within 3 lines. No recaps. No chapter over 90 s without a new stake or turn.

6. Pack spec

7. Visual grammar

8. Audio

9. Production (free until sheets; every paid step is Fish's)

cd ~/.openclaw/workspace; P=output/concept-packs/<slug>.md; S=<slug>
python3 -m scripts.cartoon_h3.run --pack $P --dry-run                    # free before the VO exists: batch + cost estimate at 3.6 wps
A=(${(z)"$(python3 -m scripts.cartoon_h3.packargs $P --storyboard)"}); A=(${(Q)A})
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage vo                   # EL per line (quota) + vo_check gate
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage storyboard           # free; Fish reviews storyboard.md chapter by chapter
python3 -m scripts.cartoon_h3.sheet <out.png> <prompt.txt> <style_anchor.png> [refs...]   # ~$0.22 each, Fish's go
touch output/cartoon-h3/$S/storyboard.approved                          # Fish only
A=(${(z)"$(python3 -m scripts.cartoon_h3.packargs $P)"}); A=(${(Q)A})    # every ref must exist now
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage canvas --canvas-workers 4
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage gen --prompts-only   # Fish reads the motion prompts
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage gen --spend --backend fal --model h3-max --batches 1   # smoke
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage gen --spend --backend fal --model h3-max --gen-workers 8 --auto-regen 1
python3 -m scripts.cartoon_h3.run "${A[@]}" --stage upscale --hd
df -h ~; REMOTION_CHUNK_FRAMES=1500 python3 -m scripts.cartoon_h3.run "${A[@]}" --stage assemble --hd --caption-mode tiktokbox --title-style dragon
output/dawn-iterate-2026-10-04/video/tools/contact.sh output/cartoon-h3/$S/$S-final-endcard.mp4 output/cartoon-h3/$S/contact 2
Runtime Batches H3 billed s H3 $ Canvases Upscale Sheets Total
5:00 ~30 ~400 $20-32 ~$9 ~$3 $6-10 ~$38-54
8:00 ~48 ~640 $32-51 ~$15 ~$4.5 $6-10 ~$58-81
10:00 ~60 ~800 $40-64 ~$18 ~$5.6 $6-10 ~$70-98
12:00 ~72 ~960 $48-77 ~$22 ~$6.7 $6-10 ~$83-116
- Plus EL quota (~1,700-2,600 words), Gemini QA and Sonnet splits. Regen budget ~2 per runtime minute (songs: 8 per ~4.5 min); hitting it means the pack is wrong, not the cap. Extra hooks cost only their hook batches (~$1-3): body clips come from the shared cache and upscale caches by clip bytes.
- Shot tiers (core §2b) + draft→final (core §4 gate 6b). Tag every batch A/B/C before approval: run.py does it itself (scripts/cartoon_h3/tiers.py, also python3 -m scripts.cartoon_h3.tiers <run>: A = first batch/hook, reveal/CTA/product beats, 3+ characters in a shot; C = no person in any shot; else B) into plan.json + <run>/tiers.md with the per-batch fal cost; re-tag in review if the word match is wrong. Per-tier models: run.py --tier-models "A=h3-max,B=h3-max,C=h3" (fal only; default = --model for every tier, i.e. all H3-max). h3 on B/C is a candidate until a one-batch side-by-side passes Fish's eye (registry "How to adopt"). Draft→final: run.py --draft = 480P ($0.05/s vs $0.08/s at 768P, fal page re-read 10-06) into <slug>-draft, seeded from the approved run (VO, plan, approval, canvases), never the shared-body cache, no upscale/end card (optional, --end-card; off by default per Fish 10-06); it prints the native 768P re-render command for the approved batches. Finals re-render natively, never a 480P→--hd upscale (Fish judged native sharper 10-04). A re-render is a new sample: judge staging and prompts on the draft, not the exact take.
- Time: wall-clock at this length is not measured. Budget Fish's review time: ~200 storyboard beats, a full VO listen, a full watch per cut.
- Check fal / kie / Higgsfield balances before promising a render; df -h ~ before assemble (10-04 hit ENOSPC with 886 MB free).

10. Gates & QA checklist (on top of core §4)

11. Variants & test plan (one variable per ad set; core §6)

Cell The one variable How Status
1 Mini-movie vs parent length/structure: chaptered 7-9 min vs the best 3-4 min parent, same accuser, voice cast and art style new pack from the parent's beats + chapters 2, 4, 7 default first test
2 Hooks cold open only 3 packs sharing everything from body_start; run h1 to completion first; or python3 -m scripts.cartoon_h3.matrix --base <pack> --variants <file> --write; ad names <concept>-h<i>-l1; python3 -m scripts.cartoon_h3.readout --concept <c> built
3 Mid-roll CTA a spoken CTA at the end of Ch6 one **cta** line (product + 60 nights, PDP-true only) built (spoken). On-screen offer card mid-roll NOT BUILT
4 Re-skin art style new slug, same VO lines + intents, only the style keys changed: EL reuses the per-line takes (cached by voice + settings + text), storyboard re-splits, Fish re-approves manual route works; reskin.py is song-only (needs a promoted song run), VO-pack support NOT BUILT
5 On-camera dialogue Lip-sync role (registry: sync-3 candidate) on 2-4 key lines one-unit proof first NOT BUILT, needs Fish's go
- Hook sources: the strongest chapter re-hooks are the hook candidates (each already works as a cold open).
- Read: own ad set in Testing cloned from the parent's, $40/day floor, PDP link everywhere, meta_preflight; day 3 look, verdict day 7 on CPA vs the parent; also read lifetime frequency vs spend, CPM, and Meta's video percent-watched (25/50/75/95 %) to see how many viewers reach Ch6. If it holds CPA, run MAP §4's frequency test (steady ~$150/day for 3 weeks vs the parent's weekly CPA curve). Never pause; reduce. Record project_launch_<date>_<slug>.md.
- Hold rate is not the length read (starpop meta-video-ad-metrics-hook-rate-hold-rate-ctr-cpa): a ThruPlay counts at 15 s, so ThruPlays ÷ 3-s views only says whether the cold open pays off; Ch6 reach comes from the 25/50/75/95 % watched read above.
- Upload hygiene (starpop are-ai-generated-ads-allowed-on-meta): Advantage+ creative enhancements stay OFF (Meta's tools have added music and altered products on finished ads). The launchers copy degrees_of_freedom_spec from a model ad and silently drop it if that post fails, which falls back to Meta's defaults: check the created creative. Day 1: open the live preview in Feed AND Reels for added music, re-crops or altered frames.

12. Failure modes

Failure Fix
Viewers leave before the band (product at ~58 %) expected; read 50/75 % watched; cell 3 mid-roll CTA, not an early reveal
A chapter sags (no new stake for 90 s) cut lines; every chapter opens with new information, never a recap
Speaker panels say "mouth moving" cutaway wording in every non-MOM intent; check_plan --lint = 0 BLOCK before approval
Room sheet silently missing in a batch ≤3 named people + 1 room per batch when a style anchor is set
Identity drift / two similar women merge distinct sheets; same names in every intent; separate close shots
False-solution watch drawn as our band call it "smartwatch", never "band"/"wristband"
Body cache silently reuses another pack's visuals identical intents from body_start on in every hook pack (storyboard now FAILS on mismatch)
Lit band pose fix (wrists down, daylight), canvas re-render, --regen N
Remotion ENOSPC on a 10-min HD render df first, REMOTION_CHUNK_FRAMES=1500, one assemble at a time
Cost under-reported price caveat in §9; ledger by fal page, not h3.py
Fix-one-chapter temptation --regen N / --batches on that chapter's batches inside the one run; never split the film into runs

13. Sources

~/research/davidaistar/REPORT.md (§3 row 14), foreplay/14_minimovie.gemini.md, foreplay/12_musical.gemini.md, foreplay/13_suno.gemini.md, foreplay/04_drama.gemini.md, analysis/diff_songs.md (rows 13, 21-23), analysis/diff_animation_styles.md; output/dawn-combo-map-2026-10-05/MAP.md; output/dawn-iterate-2026-10-04/video/RUN-LOG.md §4 + plan.json stats; scripts/cartoon_h3/{run,vo,storyboard,assemble,pack,hooksplice,packargs,upscale,h3}.py; skills/cartoon-h3/SKILL.md; skills format-spoken-drama + format-song; memory feedback_cartoon_h3_shared_body_text_hash.md, feedback_higgsfield_credit_discipline.md, feedback_ai_avatar_broll_lane.md.

Not built yet (needs Fish's go)

Every line in this skill that mentions something not built, roughly de-duplicated. Some items repeat in different words.