Pipeline Hub

format-song

Long-form sung cartoon story ad (3-5.5 min), the "accused mom, vindicated" story (Dawn recipe A) sung in the first person by a mom's voice on Suno, animated on cartoon-h3 with the song as the clock. Dawn's best video format.

Lane: cartoon-h3 song · not built yet: 6 (see below) · source: /Users/ayden/.openclaw/workspace/skills/format-song

SKILL.mdbeat-sheet.mdsources.mdEvals (6)Learnings (16)

Song — sources

Reference ads (paraphrased beat by beat; structure only, never copy lyrics or scripts)

10-06 songs diff (~/research/davidaistar/analysis/diff_songs.md) — what this skill folds in

Diff row Gap Where it lands here
25 (P0) Splitter _SYS has none of the song rules; check_plan.py checks only timing/caps; ~100 beats hand-fixed, ~11 lit-band regens on 10-04 SKILL §7 manual checklist; §12 "not built" line
21 (P1) One hook per $26-33 song SKILL §11: hooksplice (built) + replace-section (not built)
15 (P1, Fish call) On-camera sung chorus untested; overrides 9-19 ruling SKILL §11 test cell, needs Fish's go, not built
3b / 22 (P1) No short song; ≥3 min rule untested against 30-60 s beat-sheet short cell; SKILL §11
18 (P1) Captions at 68-74 % may sit in the Reels overlay zone SKILL §10 safe-zone check
20 (P1) End card (optional, --end-card; off by default per Fish 10-06) spin wired (--clip, end_card_clip), asset missing SKILL §11
13 (P1) FAL_PRICE inverted; ledger may understate H3 ~1.6× SKILL §9 cost caveat
5 (P2) No Suno persona/voice lock not adopted yet; same style string is the current lock
14, 17, 10, 11 (P2) Song-aware H3 prompt, ≥0.95 slow-down, beat-grid snapping, "no extra in-between panel" canvas line not built; out of scope for a format skill (code changes, Fish's go)
Don't-adopt list (diff §2): 6-panel canvases, 2 candidates per batch, single-take Suno, brand-voice/character rap, ingredient chant as spine, transcript captions, permanent header bar, no-ref B-roll models, text-prompt end cards, CapCut hand edits (core §2a: every edit is Remotion/ffmpeg via assemble.py).

Our receipts

starpop.ai articles by the same creator (10-06; ~/research/davidaistar/starpop/txt/<slug>.txt, paraphrased)

Read: how-to-make-ai-singing-ads-minimax-h3, how-to-make-ai-song-ads-with-suno, ai-song-ad-in-5-minutes, easy-ai-song-style-ads, ai-song-ad-examples, best-ai-song-ads-swipe-file, ai-song-ads-vs-ai-voiceover-ads, ai-singing-ad-mattress-case-study, brands-scaling-with-song-style-ads, song-ads-ingredient-list-crossover, how-to-edit-ai-song-ads-capcut, how-to-make-a-lyric-video-with-synced-subtitles. - Adopted (SKILL §7, §8/§9/§10, §11): frame 0 must name the persona, header over a face (mattress-case-study: his dark-bedroom opener cost thumbstop; edit-capcut); keep the 3-5 s instrumental tail and size the end card (optional, --end-card; off by default per Fish 10-06) to it (singing-ads-minimax-h3, edit-capcut); judge songs on CPA + days live, not thumbstop (mattress-case-study retention curve, vs-voiceover). - Already ours, confirmed: song before any visual; per-batch song slices with no gaps, instrumentals kept (storyboard.py raises on a non-contiguous song timeline; slices.py checks each slice == batch span); native clip audio muted under the one uncut song (run.py --song); captions typed from the lyric, not transcribed (lyric-video article: transcription mangles sung words and brand names); title hook on frame 0; persona-voice take over the nicer mix; measured song length over the asked length (his 30 s request came back 40 s = our receipt + --song-end). - Not adopted: (1) a lip-synced singing shot per batch ("first shot sings, rest B-roll") because Fish ruled no on-camera singing 9-19 and h3.py has no lip-sync (test cell in SKILL §11 only). (2) 0.9× speed nudges in the editor when a slice lands early, because our song clips keep timing (assemble.fit_clip preserve_timing): a short clip is regenerated, never stretched. (3) Two candidates per batch: credit discipline, --candidates 1. (4) P-Video cheap drafts + Suno intro trim by hand, because no-ref models drift identity and --head 0.05 already trims to the first lyric. (5) Brand name printed on the character or a named competitor on screen (swipe file: RYZE chest print, Penrose competitor bottles), because of the no-readable-text and no-competitor-brand rules. (6) Sung ingredient list as the spine (ingredient-crossover), because mechanism-only songs never scaled for us; the 3-line "I'm X, I do Y, you get Z" shape lands in format-mascot-explainer instead. (7) Mid-ad genre switch (arcade level in the mechanism verse) and 9-minute runtimes: untested here, each would be its own one-variable cell. - Claims are his: 4.95 ROAS / $2,239 / 20 purchases / $554 AOV / $17.43 CPM (mattress); RYZE ~4,700 live ads, song ads among the longest-running (Ad Library, his read); H3-max ~4× cheaper per second than Seedance 2.0 at Sept 2026 fal list prices (his). None verified by us.