Captions, transcripts and the written guide
Every narrated demo ships a caption track, a transcript in two formats and a Markdown walkthrough of the flow it filmed.
A narrated demo ships four text artifacts beside the video, and they answer two different questions. The caption track and the transcripts describe the soundtrack. The written guide describes the plan. They disagree in exactly two places and the plan is right in both.
Burned captions versus the caption track
These are separate features and it is worth keeping them apart.
Burned captions are pixels. The Look panel's caption choice — off, plate and minimal —
decides whether a lower third is composited into the video and which treatment it uses. plate puts
the line on a solid slab; minimal is the plateless version whose shadow does the legibility work;
off burns nothing.
The caption track is captions.vtt, a real WebVTT file beside the video. It exists whatever the
burned setting is.
The player renders it as a <track>, off by default, with a CC control in the bar. That control is
ours because the chrome is ours — without it, a track would be unreachable on every desktop browser,
since the native caption menu belongs to controls this player does not render. On a phone it opens a
sheet pinned to the bottom of the screen rather than a menu inside the video, which the video's own
rounded corners would clip.
The track is served through Demofy's own origin rather than straight from storage. A caption file is a CORS-checked subresource where a video source is not, and the attribute that would let it load cross-origin would put the video under CORS too — the same change that loads captions would stop playback.
How a cue is built
From the narration takes as they were placed in the mix, never from the plan. A cue therefore brackets words a viewer can actually hear.
- A cue ends at its take's real end, clamped to the next cue's start. Overlapping cues are the one malformation a viewer sees — two lines at once — so the clamp is there even though the mixer already guarantees a gap.
- A cue clamped to nothing keeps a millisecond, because players drop zero-length cues outright.
- No cues, no file. An unnarrated demo, an import and a demo with the voiceover switched off carry no caption key at all.
Transcripts
transcript.txt is the narration as prose; transcript.srt is the same as subtitles. Both are
written by the mix beside the caption file, from the same placed takes. They are in the job's
artifacts rather than on the page.
The written guide
guide.md is a Markdown walkthrough: the demo's beats in order, each with a human sentence for what
happens and the narration line written for it. Download it from the job page's overflow menu.
Three rules shape it, and each one is a decision rather than an omission.
It transcribes the plan. A demo with the voiceover muted synthesises no takes, so a guide read off the soundtrack would come out empty for a video that has every step and every written line it always had. So the guide reads the plan, and a muted demo still ships a full one.
It states no timestamps. A "jump to 0:34" marker would be written at the mix, and a stitched intro then pushes every recorded instant later. Markers uniformly early are internally consistent and read as a broken feature rather than an absent one — the same verdict the seekable positions and the caption cues both take.
It never prints a selector. Every sentence names the element the way a person would: the control's own label where the plan recorded one, and a plain noun where it did not. A customer's written guide should never print an XPath at them.
Only the beats that survived the cut appear, taken from the same list the video was assembled from, and they are numbered from one so a reader is never told they missed a step that is not there.
What finishing does to each of them
The replacement soundtrack deletes the caption file because the cues would transcribe speech nobody can hear. It leaves the guide alone because swapping a soundtrack does not change which buttons the demo presses.