B-roll library
Every generated clip in the shared footage library — TimDS media keys b-roll-*, staged locally under media-local/b-roll/ — with the rule for when to reach for it. All clips are Seedance 2.0 generations in the Editorial Heritage grade: warm golden side-light, navy · cream · brass palette, one continuous slow camera move, no cuts, no readable text, no logos.
House rules
| Rule | Why |
|---|---|
| Every clip drifts. The Remotion kit adds a constant Ken Burns move (push-in or pan) on top of the clip's own camera. | 5–8 second generations held on screen read as freeze-frames without it. |
Never crop a head. Zooms anchor near the top of frame on people clips (origin prop); text boxes sit in the lower-left clear zone, over torsos or furniture — never over a face. | Cropped or covered heads read as careless. This is the #1 review note. |
| One emotional clip per beat. Cinematic people shots carry the hook, the turn, or the answer — not every scene. | Constant emotion flattens; the object layer gives it room to land. |
| Scrim before text. Full-bleed footage under type gets a navy scrim (0.5–0.75 on shorts, boxes carry their own fill on 16:9). | Caption and headline contrast on any frame of the clip, not just the pretty ones. |
Text sits opposite the subject. Every clip declares its subject side (clip-meta.json); the engine keeps text boxes on the clear side, or mirrors the footage away from the text — but a clip is never mirrored if it contains writing or anything with a distinct left/right orientation (flipped text reads backwards). Those clips are marked NEVER FLIP below; for them the text moves instead. | Text over the subject reads as a template mistake; a mirrored signature reads as a fake. |
| No readable writing, ever. Prompts forbid it; reject any generation where text artifacts appear (AI gibberish breaks trust instantly). | Legal content + fake text = a compliance and credibility problem. |
| No back-to-back footage repeats. A clip may return later, but the same footage family never plays twice in a row—inside one scene chain or across a scene boundary. Offset, mirrored, and vertical derivatives count as the same footage. Separate repeats with a different register. | Adjacent duplicates and near-duplicates read as a playback glitch. npm run check:video rejects them. |
| Fit motion to the whole shot. TimDS reads the source duration and plays footage only at natural 1× speed. If one clip is shorter than the scene, add another registered clip to the chain or shorten the line. Never slow, freeze, pause, or hold the last frame. | A drifting CSS crop cannot hide a stopped person or object inside the source video. |
Metadata is a render gate. Every horizontal clip declares subject, flip, and text; every short-form derivative declares its approved crop and vertical text zone. Missing metadata stops the edit. Check the first, middle, and final frame of every people shot. | The subject can move during a clip; a safe opening frame alone does not prove the face stays clear. |
A multi-person clip is not automatically safe just because it says "subject": "center" or "full". Those values describe the clip's general composition, not whether a specific box position clears every face. A group standing or walking toward camera can span the entire frame with no clear quadrant at all — that clip needs its own "subject": "crowd" and "textSafe": false, which permanently blocks it from ever sitting behind a headline, subline, or chapter-explainer board in any production. npm run check:video runs scripts/check-video-text-safety.mjs, which fails the build if a scene references a textSafe: false asset. | On 2026-09-23, b-roll-family-walk — a five-person family group filling the frame edge to edge — was registered "subject": "center" and chained behind a headline box. Nothing checked whether the group's faces actually cleared that box, and the render cut off a child's face. The clip is now "subject": "crowd", "textSafe": false. |
textSafe: false flag takes a real re-verification, not a guess: render the actual scene (not just the raw clip) at the frame where the box appears, confirm no face falls inside the box's drawn rectangle, then remove the flag in video/assets.json. A raw-frame pull from the source file is not sufficient proof by itself — verify through the same TimDS render pipeline the final video uses, since that is the only view that reflects the clip's registered flip and the scene's actual box position together.Choosing a clip — the beat map
Picks follow the script beat's register, not its literal nouns — a line about notaries doesn't need a notary, it needs the right emotional temperature. This is Step 4 of the video pipeline; the per-clip cards below carry the specific content context for each file.
| Script beat | Register | Reach for | Text placement |
|---|---|---|---|
| hook | The strongest emotion the topic allows — this beat carries feeling. | People — cinematic (widow-window, family-walk) or a charged object (check-on-desk). | The clip's declared clear side; lower placement on people clips so faces stay open. |
| Substance lines | Neutral — the words lead, the footage recedes. | Objects & settings (document-stack, ledger-accounting, pen-hover). | Anywhere the layout line allows; overlay-safe clips take a box on either side. |
| Authority beat | Institutional weight — once per video, twice reads as a lecture. | The court (courthouse-person, courthouse-columns). | Left-bottom on the figure clip; the columns clip is overlay-safe. |
| Human moments | Warmth without identity. | People — hands & moments (clasped-hands, beneficiary-envelope). | Over hands and furniture, never near the top of frame. |
| answer / turn | Resolution — close the loop the hook opened, often by returning to its image. | People — cinematic (siblings-porch, walking-away-field, consult-office). | Declared clear side; keep the closing line low and unhurried. |
| CTA-adjacent | Advice, not urgency. | consult-office, people-consult. | Lower third; the outro card itself carries no footage. |
-offset and -mirrored variants, so the copy never has to fight the footage. For 9:16, use the pre-cropped vertical set and its per-clip text rule — never hand-crop a 16:9 master.Generating new clips
Model: Seedance 2.0 via the Higgsfield CLI, 16:9, 1080p, 6s. Prompts follow SUBJECT → CAMERA → STYLE; the style block is pasted verbatim so the library stays one film. People clips fail server-side more often than object clips — check the result and retry; concurrency is capped at six jobs.
SUBJECT: {one scene, one simple continuous action, faces soft or out of frame}
CAMERA: One continuous slow {push-in | lateral dolly | follow}, no cuts.
STYLE: Cinematic editorial heritage look — warm late-afternoon golden light,
deep navy, cream and antique-brass palette, natural skin tones, shallow depth
of field, calm unhurried movement, quiet dignified mood, photorealistic,
filmic grain. No exaggerated expressions, no on-screen text, no logos, no
readable writing. Objects & settings
No people. Safe under any text box; the workhorse layer of every explainer.
pension-desk.mp4check-on-desk.mp4ledger-accounting.mp4document-stack.mp4estate-paperwork.mp4written-inquiry.mp4written-inquiry-angle.mp4letter-into-envelope.mp4pen-hover.mp4car-keys.mp4benefits-letter.mp4vault-door.mp4bank-teller.mp4brass-scale.mp4locked-portfolio.mp4two-chairs.mp4family-home.mp4The court
Institutional weight. Use once per video at the "authority" beat — twice reads as a lecture.
courthouse-person.mp4courthouse-columns.mp4People — hands & moments
Human warmth without identity. Faces out of frame or softly out of focus by design.
rural-farmland-survey.mp4funeral-home-death-certificate.mp4notary-witness-execution.mp4beneficiary-envelope.mp4handing-keys.mp4clasped-hands.mp4hospital-hands.mp4people-sorting.mp4people-album.mp4family-signing-full.mp4people-consult.mp4People — cinematic
The emotional register. One or two per video, at the beats that carry feeling: the hook, the turn, the answer.
hospital-care-team.mp4cemetery-graveside-visit.mp4widow-window.mp4courthouse-family.mp4sorting-belongings.mp4siblings-porch.mp4consult-office.mp4reading-porch.mp4phone-kitchen.mp4doorway-embrace.mp4family-tree-album.mp4walking-away-field.mp4family-walk.mp4family-support.mp4Position — text left
Subject held in the right half; the left side stays quiet for the text box. Offset compositions and mirrors of left-subject clips. Center/full clips in the sections above are safe on either side.
bank-teller-mirrored.mp4beneficiary-envelope-offset.mp4brass-scale-offset.mp4car-keys-offset.mp4cemetery-graveside-visit.mp4clasped-hands-offset.mp4courthouse-person-offset.mp4document-stack.mp4document-stack-offset.mp4doorway-embrace-offset.mp4family-home-offset.mp4family-walk-offset.mp4funeral-home-death-certificate.mp4handing-keys-offset.mp4hospital-care-team-mirrored.mp4hospital-hands-offset.mp4locked-portfolio-offset.mp4notary-witness-execution.mp4pen-hover.mp4pen-hover-offset.mp4people-sorting-offset.mp4phone-kitchen-offset.mp4reading-porch-mirrored.mp4rural-farmland-survey.mp4siblings-porch.mp4sorting-belongings-mirrored.mp4two-chairs-offset.mp4vault-door.mp4widow-window.mp4Position — text right
Subject held in the left half; the right side stays quiet for the text box. Mostly mirrors of the offset compositions — every subject above is available on both sides.
bank-teller.mp4beneficiary-envelope-offset-mirrored.mp4brass-scale-offset-mirrored.mp4car-keys-offset-mirrored.mp4cemetery-graveside-visit-mirrored.mp4clasped-hands-offset-mirrored.mp4courthouse-person-offset-mirrored.mp4document-stack-offset-mirrored.mp4doorway-embrace-offset-mirrored.mp4family-home-offset-mirrored.mp4family-walk-offset-mirrored.mp4funeral-home-death-certificate-mirrored.mp4handing-keys-offset-mirrored.mp4hospital-care-team.mp4hospital-hands-offset-mirrored.mp4locked-portfolio-offset-mirrored.mp4pen-hover-offset-mirrored.mp4people-sorting.mp4people-sorting-offset-mirrored.mp4phone-kitchen-offset-mirrored.mp4reading-porch.mp4rural-farmland-survey-mirrored.mp4siblings-porch-mirrored.mp4sorting-belongings.mp4two-chairs-offset-mirrored.mp4vault-door-mirrored.mp4widow-window-mirrored.mp4Shorts — vertical b-roll
The full library reformatted for 9:16 vertical (1080×1920), cropped toward each clip's subject. Text placement follows the shorts rules: navy scrim 0.5–0.75 under any type; on people clips the box stays in the lower third so heads remain clear.
bank-teller-vertical.mp4beneficiary-envelope-offset-vertical.mp4beneficiary-envelope-vertical.mp4benefits-letter-vertical.mp4brass-scale-offset-vertical.mp4brass-scale-vertical.mp4car-keys-offset-vertical.mp4car-keys-vertical.mp4cemetery-graveside-visit-vertical.mp4check-on-desk-vertical.mp4clasped-hands-offset-vertical.mp4consult-office-vertical.mp4courthouse-columns-vertical.mp4courthouse-family-vertical.mp4courthouse-person-offset-vertical.mp4courthouse-person-vertical.mp4document-stack-offset-vertical.mp4document-stack-vertical.mp4doorway-embrace-offset-vertical.mp4doorway-embrace-vertical.mp4estate-paperwork-vertical.mp4family-home-offset-vertical.mp4family-home-vertical.mp4family-signing-full-vertical.mp4family-support-vertical.mp4family-tree-album-vertical.mp4family-walk-offset-vertical.mp4family-walk-vertical.mp4funeral-home-death-certificate-vertical.mp4handing-keys-vertical.mp4hospital-care-team-vertical.mp4hospital-hands-offset-vertical.mp4hospital-hands-vertical.mp4ledger-accounting-vertical.mp4letter-into-envelope-vertical.mp4locked-portfolio-offset-vertical.mp4locked-portfolio-vertical.mp4notary-witness-execution-vertical.mp4pen-hover-offset-vertical.mp4pen-hover-vertical.mp4pension-desk-vertical.mp4people-album-vertical.mp4people-consult-vertical.mp4people-sorting-offset-vertical.mp4people-sorting-vertical.mp4phone-kitchen-offset-vertical.mp4phone-kitchen-vertical.mp4reading-porch-vertical.mp4rural-farmland-survey-vertical.mp4siblings-porch-vertical.mp4sorting-belongings-vertical.mp4two-chairs-offset-vertical.mp4two-chairs-vertical.mp4vault-door-vertical.mp4walking-away-field-vertical.mp4widow-window-vertical.mp4written-inquiry-angle-vertical.mp4written-inquiry-vertical.mp4