Add HyperFrames skills
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011h6NB8JQtfPc6eRCefEzBB
This commit is contained in:
964 files changed
+142321
No files matched your search
@@ -0,0 +1,68 @@
|
||||
# Rail track — standard lower-third subtitle
|
||||
|
||||
The **default** caption track and the workhorse: a clean, readable subtitle that sits **in
|
||||
front** of everything (never occluded by the matte) in the lower third. It carries **most**
|
||||
of the transcript. It is deliberately **plain** — the cinematic craft (planes, occlusion,
|
||||
Vogue-masthead, accumulation) lives in the _embed_ track only ([composition-craft.md](composition-craft.md)).
|
||||
|
||||
For talking-head / explainer / voiceover, the typical output is **the whole transcript on the rail**
|
||||
with only the climax(es) promoted to embed. Rail is not a fallback — it's the baseline.
|
||||
|
||||
> **Implementation note.** A dedicated rail renderer is the next build step. The rail is a
|
||||
> plain `fg` caption track and maps cleanly onto hyperframes' native caption pipeline
|
||||
> (`media-use` captions) — prefer reusing that over hand-rolling. Until wired, render
|
||||
> the rail as a simple `data-caption-layer="fg"` composition (no matte overlay for these caps).
|
||||
|
||||
## Position & safe area
|
||||
|
||||
- **Lower third, horizontally centered.** Landscape (16:9): baseline ~80–120px above the
|
||||
bottom edge. Portrait (9:16): lower-middle, ~ 600–700px from the bottom (clear of platform UI).
|
||||
- **Title-safe margins:** keep text within the title-safe box (80% of the frame, `/hyperframes-studio` Safe zones) / inside any letterbox-pillarbox bars
|
||||
(see the letterbox probe). Never flush to the frame edge.
|
||||
- **One caption group on screen at a time.** No accumulation, no cascade — that's embed-track behaviour.
|
||||
- It rides above the subject; the matte does **not** occlude it (rail = in front).
|
||||
|
||||
## Lines, length, timing
|
||||
|
||||
- **≤ 2 lines.** Broadcast target ~ 32–42 chars/line; break at a clause/phrase boundary, never
|
||||
mid-word, never leave a dangling 1-word line.
|
||||
- **Word-synced.** Each group's window envelops its words (`group.in ≤ first word.start`,
|
||||
`group.out ≥ last word.end`); each group ≥ 0.5s on screen; ~1.5s min gap discipline so it
|
||||
doesn't strobe. Word timings within 80ms of transcript (same gate as everywhere).
|
||||
- **Grouping** = short readable phrases (see [caption-grouping.md](caption-grouping.md)) — not the
|
||||
embed track's "phrase = composition" rule; here it's just legible subtitle chunking.
|
||||
|
||||
## Look (restrained on purpose)
|
||||
|
||||
- **Size: ~`calc(0.045 * var(--h))`** (≈48px @1080, ≈58px @1290) — readable, _not_ hero. The rail is a subtitle; it is deliberately much smaller than the embed body/climax. Express as a `var(--h)` fraction (never hardcode px) so it scales across resolutions. The embed climax is sized to the frame independently (see composition-craft § POP) — **never** size the climax as a multiple of this rail.
|
||||
- One clean sans (Inter / Helvetica Now / Neue Haas), weight 500–600; white (or near-white).
|
||||
- **Legibility without grading the video:** a tight text treatment local to the glyphs only —
|
||||
a soft dark drop-shadow, or a subtle rounded gradient pill / 30–40% scrim **sized to the text
|
||||
box** (not a full-frame bar, never a frame-wide grade). On luminance > 180 backgrounds, keep
|
||||
the scrim; never rely on bare light text.
|
||||
- Motion is minimal: 150–250ms fade-up in / fade-down out. No glitch, no scale-pop, no per-word
|
||||
choreography on the rail — that energy is reserved for embed.
|
||||
|
||||
## The `emphasis` flag (active-word highlight)
|
||||
|
||||
The only intensity the rail carries. When a word is graded `emphasis` (the 1–2 punch words in a
|
||||
phrase), give it an **inline** lift on the rail — accent colour and/or +weight, optionally a
|
||||
karaoke-style active-word pop (≤1.1× scale) as it's spoken. Keep it inline; it does **not**
|
||||
leave the rail. Anything that wants to leave the rail is an `embed`, not an emphasis.
|
||||
|
||||
## What the rail never does
|
||||
|
||||
- Never goes behind the subject (that's embed).
|
||||
- Never accumulates into a multi-line poem (that's embed).
|
||||
- Never crosses the face / uses occlusion as an effect.
|
||||
- Never grades or textures the underlying video.
|
||||
- Doesn't drop content to "fit fewer blocks" — split into more groups instead. The only drops
|
||||
are filler (um/uh, exact stutters, self-corrections); dense conversational `narrator` glue
|
||||
("you know", "sort of") may be trimmed for readability, content/structure words stay.
|
||||
|
||||
## Hand-off to embed
|
||||
|
||||
Rail + embed coexist in one render: the rail runs the whole clip; an embedded peak appears over
|
||||
it at its moment (the rail can briefly clear or dim under the embed if they'd collide). Decide
|
||||
which phrases promote via the role read in SKILL.md § Caption model; author the promoted ones
|
||||
with [composition-craft.md](composition-craft.md).
|
||||
Reference in new issue
Block a user