Requirements
- Clueso MCP connected. Nothing else.
Inputs
- The recording — either:
- a file the user provides →
upload_file, then pollcheck_uploadsuntil processed; or - a fresh capture →
record_screen(available when the workspace has recording enabled — check withget_capabilities; if unavailable, ask for a file instead).
- a file the user provides →
- What the demo shows — the feature/flow name and the 1-line takeaway per major
step. If the user can't list steps, derive them by watching the recording's
structure (clip timestamps + any narration via
analyze_audio) and confirm your step list with the user before editing. - Tone — narrated product demo (default) or captions-only silent demo.
Workflow
1. Confirm workspace, ingest the recording
find(type='workspaces') → confirm → create_project → ingest the recording
(upload_file/record_screen, check_uploads until ready), add_clips to place it
on the timeline.
If the recording has spoken audio, run analyze_audio first — the existing narration
tells you where the step boundaries and dead time are.
2. Cut the dead time
Raw captures are mostly waiting. Use split_clip at each step boundary, then:
- Remove or compress stretches where nothing meaningful happens (page loads, typing
long form fields, mouse wandering) —
remove_clipthe dead segments or tighten withupdate_clips. - Target: no shot where the screen is effectively idle for more than ~2 seconds.
- Keep one breath (~0.5s) after each completed action so viewers register the result.
3. Write the narration against the cut
One or two sentences per step: what's being done and why it matters. Present tense,
second person. estimate_duration per step — where narration outruns footage, either
tighten the words or let the footage of that step run slightly longer; never rush the
voice.
Skip this if the user chose captions-only.
4. Direct the viewer's eye
Fetch get_element_schema, then per step:
- Zoom & pan — keyframe scale/position so the camera pushes toward the region being used, holds, and releases. One move per step; constant zooming reads as seasickness, a static full-screen recording reads as unedited.
- Highlights — a keyframed rectangle or ring landing on the control as it's clicked, timed to the narration's action word.
- Captions — short step labels (3-6 words) entering with
animation_settingpresets (slide,masked_reveal), swapped out as steps change. For captions-only demos these carry the narration's job: slightly longer, but still one line at a time.
5. Bookends
- Intro clip (~3s): product/feature name + one-line promise, kinetic type on the
committed palette (brand colors if the workspace has them; otherwise
get_design_guideand pick). - Outro clip (~3s): the CTA. One action.
6. Audio pass
- Narrated:
set_voice→voiceover_batchfor all steps →auto_sync, thenadd_sync_pointso each zoom/highlight lands on its action word. - Optional bed:
add_audiofor subtle background music;analyze_audio/update_audioto keep it well under the voice. - Captions-only: music bed slightly more present, sync captions to the action instead of a voice.
7. Verify and export
get_clip(render=true, timestamp=…) at each step's action moment: is the zoom framing
the right region, is the highlight on the control, is the caption legible and current?
Watch the pacing math: total runtime should be a fraction of the raw capture (a 4-min
raw take usually makes a 60-90s demo). Fix, then export_project and hand over the
link.
Fallbacks
record_screenunavailable → ask for an uploaded file; don't attempt any local recording tooling.- Upload fails or stalls → report the
check_uploadsstate and ask the user to retry; don't silently proceed without the footage. - Recording quality too low to zoom (tiny text, low resolution) → keep zooms gentle, lean harder on highlights and captions, and tell the user a higher-resolution capture would let the demo push in closer.
- User's step list doesn't match the footage → trust the footage; show the user the discrepancy before cutting.