longform-video — the mixed-format longform line
Proven 2026-08-29 (v5, 4:50, exit=0). Every rule below was paid for that night or earlier.
Read /two-brents-brand FIRST for voice/story/compliance. This skill is the PRODUCTION layer.
The format (locked by Brent 08-29)
- Picture = three interleaved sources:
- Brent's REAL footage (hook, teaching-on-camera, ground/CTA, demo) — never re-cut mid-take without transcript timings.
- Faceless HyperFrames beats for AI-Brent teaching (via
/faceless-explainer) — Broadside-class ink/brass kinetic type. Brent 08-29: "I love what you did with the graphics." - Blue-shirt clone appearance (HeyGen registry
ai_brent44f56d7e) in 1–2 banter beats so viewers SEE who's talking — "nobody knows what the hell is going on, it's just my voice." Not every beat. Existing rendered modules first; NEW HeyGen render = ping Brent the dollar amount BEFORE spending, freetest:true+ his eyeball before credits (registry law).
- Voice = Brent's Voicebox clone (profile
18836009-0527-4b9f-9837-3d58c2a0dc76,/brag-voice) for all faceless narration. Clone modules carry their own HeyGen ElevenLabs voice — acceptable per Brent 08-29, keep appearances short. - Cards — LOCKED, from Youtube-system (
~/Desktop/YOUTUBE/hyperframes-cards/, repobbrysonelite-max/Youtube-system; readCARDS-LOCKED.mdbefore trusting any render):- FRONT
intro/frontcard-uniform.mp4(5s) — the follow/"keep the lights on" ask. Place after the hook, or at the first clean cut near the 90-second mark. - BACK newest
endcard/endcard-v*.mp4(14s) — SUBSCRIBE + type-CLAW + brentbryson.ai SPELLED OUT. Never ship a homemade "link below" card: every CTA card must show a typed URL or word people can spell. tap-card/tap.mp4— CLAW conversion, optional mid-video.- Stale-render trap: after editing a card source, re-render AND look at a frame.
- FRONT
- Compliance —
python3 ~/Desktop/YOUTUBE/scripts/compliance_check.py <every text>before render. No company name near any dollar figure, ever, on-canvas included ($25M stands alone). Public fence words apply.
Pipeline (each gate has a receipt or you stop)
- Script gate — Brent-approved script, verbatim (VO_MODE verbatim). No script, no build.
- VO — generate/reuse Voicebox wavs per AI beat.
ffprobeevery wav; faceless frame duration = wav + 0.4–0.6s pad. - Faceless project —
/faceless-explainerINSIDE the video's system folder (videos/<project>/), one folder per system. Mark SILENT (music: none, no SCRIPT.md) — pipeline TTS default is a stranger's voice; never let it generate narration. One Opus worker per frame, packets via frame-packets.mjs. Fonts: pin identical@font-facegstatic woff2 blocks in EVERY frame (workers diverge — normalize before lint) + vendor woff2 intoassets/fonts/. - Checks to zero —
npx hyperframes lint+check= 0 errors. Known traps: letterSpacing/layout-prop tweens (stutter — transforms only), multi-writer GSAP tweens on one property (seek renders camera frozen — ONE driver tween per property),#root .clipspecificity overriding positioned.clipelements, exits at clip boundaries needtl.sethard kill. Overlap errors: markdata-layout-allow-overlapONLY after looking at the frame. - Render —
npx hyperframes render --quality high(local, $0). Snapshot contact sheet, LOOK at it. - Assembly — script file, never inline (rtk mangles ffmpeg vars; bash
$((...))treats "09" as bad octal — no numeric-string array keys). Re-encode EVERYTHING to one spec before concat:1920x1080, 30fps, libx264 crf19, aac 192k 48k stereo; upscale 720p cards with scale+pad; add anullsrc silence to soundless cards; mux VO with-map 0:v -map 1:a -af apad -shortest. Concat with-c copyover the list file. - QC (real eyes) — pull frames at faceless, real-footage, clone, and card offsets;
volumedetectat VO and footage spots (expect ≈ -20 to -30dB mean, same ballpark both). Compute offsets from per-segment ffprobe durations, never from memory. - Chapters + metadata — re-measure chapter marks from actual segment durations every re-cut; description carries the C1 canonical block.
- Brent gate — he watches the file. NEVER upload; upload is his. Rung 4 until his eyes = rung 5.
Hard laws inherited
- No music bed decision inside faceless renders; bed (if any) at final assembly.
- Shorts = cut from THIS longform only.
- ffmpeg build here has NO drawtext; cards via PIL or HyperFrames.
- Whisper lane = brew
whisper-cli+ ggml-base.en.bin (Voicebox /transcribe is broken). - Deliver ONE file per iteration (v1, v2 …), keep prior versions, never overwrite his kept cut.