embedded-captions
Embedded Captions
One catalog, picked up front (CATALOG.md — 17 identities; the three engines behind it are backend detail). Standard (default) builds a clean verbatim rail (lower-third subtitle carrying most text) + an embed climax composited into the scene behind the subject at the peak. Cinematic is pure embed — no rail, every caption composited behind the subject (hero typography, accumulation, occlusion as the effect). Theme is a complete themed constitution — body paradigm × hero setpiece × front fx × plate reaction, composed from registries (themes/README.md): ordnance terminal neonsign stardust stomp. Most explainer / voiceover is Standard; embed is the scarce, earned peak — embedding every word is the common mistake; Theme is for VFX-grade asks ("炸", "特效", "像 AE 做的").
Operational flow (TL;DR)
The craft prose below is long; the pipeline itself is short — and everything deterministic is computed or compiled, never hand-written:
- Decision gate (refuse bad clips) → pick ONE identity from CATALOG.md (17 identities; engine/compiler derived by lookup — never surface a mode/category question)
hyperframes init(skip it if the project dir already exists with the video inside —matte.cjs/transcribe.cjsadopt any video in the dir as source.mp4) →bash scripts/prepare.sh <project>(matte ∥ transcribe ∥ audio-envelope in parallel, then safe-zones v2 with scene palette/optics/lighting — one command, nothing forgotten)- author a small JSON of creative choices (read
safe-zones.jsonfirst): Cinematic →plan.json→fill-timings.cjs→fit-fonts.cjs→make-composition.cjs; Theme →theme.json→make-theme.cjs(rail/panel/poem/takeover paradigms;anchoris the quiet rail default) - Visual QA:
node scripts/preview-frames.cjs <project>→ faithful composite previews in ~2s/frame (no render). Check § Visual QA before paying for a render. render-and-composite.sh→ gates (timing / occlusion+hero / overflow / hand-off) →final.mp4