Captions & narration cues
Per-slide narration script, caption rendering, step-by-step reveals — inline markers keep speech and visuals in sync.
Cues are the narration layer of Storyboard. Each slide carries a script, and inline markers pin specific moments in the script to visual actions: trigger a sub-step, highlight a range, or reveal a hidden element. A marker is written as {@cueId} for a single point, or as a pair {@cueId:start} … {@cueId:end} for a range. In the cue editor those markers are drawn as coloured dots floating above the line rather than shown as raw text.
Three capabilities
- Captions: scrolling subtitle at the bottom during TTS playback (toggleable).
- Step reveals: a point marker
{@cueId}inside the script triggers that cue's operations when the narration reaches it. - Range effects: a range marker
{@cueId:start}…{@cueId:end}fires that cue's operations at the start; any of them marked as temporary — a highlight, a connecting line, a brief camera zoom-in, and so on — are automatically undone once the range ends.
Example script
Q3 GMV grew 38% YoY, {@2}driven mostly by East China.
{@3:start}The Yangtze Delta alone contributed 60%{@3:end}, a clear payoff on focused investment.2 and 3 are the ids of cues defined on that slide. Everything outside the markers is plain text: it is read aloud verbatim and shown as the caption, so Markdown syntax has no effect there and would simply be spoken.
Playback timeline:
| Time | Event |
|---|---|
| 0–2.1s | Speaks line 1 |
2.1s ({@2}) | Fires cue 2 (the "East China bar chart" reveal) |
2.1–5.4s ({@3:start}…{@3:end}) | Highlights the Yangtze Delta region |
Follow along and seek
During playback the script lights up character by character in step with the voice — that highlight is the progress indicator. To replay from a particular line, click that character and playback resumes from there; there is no separate progress bar to hunt for.
How widgets appear
During playback, a widget that appears with the current line of narration fades in. To give a widget a more deliberate entrance, just ask the AI — it picks one that matches the narration: a key conclusion zooms in, a step that follows from the previous one rises into place, trend charts and code reveal left to right, and backgrounds or decoration appear without animation.
When you jump by clicking a character, change slides, or skip past several lines at once, widgets simply appear where they belong — the entrance is not replayed. With your system's Reduce Motion setting on, every entrance falls back to a plain fade.
When playback turns to the next slide, a widget that was already on screen and is used again right at the start of the new slide stays where it is instead of disappearing and reappearing; if the new slide gives it a different position or size, it glides there. Moving or resizing a widget partway through the narration glides the same way. With Reduce Motion on, it jumps straight to its new place.
Waiting for the visuals to finish
Some widgets keep moving for a while on their own: physics simulations, random processes, countdown timers. In continuous playback, if the narration ends while such a widget is still running, the slide doesn't turn yet — it waits for the widget to finish. The playback bar shows "Waiting: <what it is waiting for>", plus the time left when it is known. Click Skip next to it to move on. Pausing and resuming keeps waiting rather than re-reading the slide.
To wait before a particular line — say, "let the ball land, then talk about how high it bounced" — ask the AI to wait there. When playback reaches that point the narration pauses while the visuals keep going, and picks up again once they finish.
The widget setting for this is Wait before turning the page, on by default; turn it off and the slide turns as soon as the narration ends. Turning pages by hand, jumping by clicking a word, and playing a single slide never wait.
A widget has to load before it can make its entrance. On a slow connection, if it isn't ready right away, a spinner shows where it will appear, and the entrance plays once it has loaded. A widget that still isn't ready after a few seconds is shown as-is, without the entrance.
Where cues come from
Cues are written by the AI as part of the storyboard document — you get the script and its markers together with the slides, not as a separate generation step.
Editing it yourself
The ✏️ button beside the narration opens edit mode, where you can rewrite it directly. You edit the clean text — internal notation like {@id} never shows up. Markers ride along with the words: insert text before a marker and it shifts right; delete a whole passage and any marker inside it lands at the start of the cut. The markers sit right on the line you are editing and move with every keystroke — and they look exactly as they do outside edit mode, so toggling the pencil never shifts the text by a pixel.
Marker positions are also drag-adjustable, to retime events (not while editing the text — the two are never live at once). When several markers sit at the same spot, dragging also reorders them — they spread out side by side; drop on a dot's left half to go before it, its right half to go after, and the insertion caret shows where it will land. While you drag, positions that won't accept the marker turn grey — marker order also decides the order operations run in, so the marker that creates a chart can't move past the one that highlights it, or playback would act on something that isn't there yet. The greyed-out region is what that constraint looks like.
Two things only the AI can do (just ask in chat):
- Adding a marker — e.g. "trigger something here too". It has to pick a cue, and the cue-to-operation mapping isn't something you should have to think about.
- Converting between point and range markers — e.g. "keep this highlight up until the end of these three sentences".
A hollow dot is inactive: its cue has no operations left (usually what a deleted widget leaves behind), so nothing happens when playback reaches it. Click it to clear it away.
Slide navigation is disabled while editing — switching pages would swap the text under you. Playback is not: pressing play leaves edit mode and starts reading, so you can hear a revision without closing the editor first. Conversely, editing is disabled during playback, since the word-by-word highlight would drift out of sync with text that is changing.
TTS and volume
Cues work with TTS (text-to-speech). The playback bar runs along the bottom of the whole view. From left to right:
- Play / pause (the arrow next to it offers "From here", "This slide only" and "From the start")
- Previous slide / slide number / next slide
- Elapsed / total time for the current slide (the total appears once the slide's audio has arrived)
- Mute button plus a continuous volume slider, captions on or off, fullscreen
To jump sentence by sentence use ← / →, or click any word in the script to read on from there.
During playback the dots in the script follow along: the ones already triggered fade, the one just triggered gives a short pulse, and those not reached yet keep their color — so you can tell what triggered the change you just saw on the canvas and where the next one is. Hover a dot to see the operations it triggers.
Next step
Building a storyboard
Describe the story to the AI, then refine the slides it generates — reorder in the Outline, adjust in the Property panel, tweak widgets on canvas.
Annotations
Script-driven callouts that box the data items you're talking about — rendered above the slide, never written back into the widgets.