create-demo-video · git:20260923.402ee0d · 2026-09-23 · sha256 8733b32b6b71a670
create-demo-video git:20260923.402ee0dA
Immutable. This exact content is served forever at /api/v1/blob/8733b32b6b71a670.
--- name: create-demo-video description: >- Produce a narrated demo video that shows something the user made or built, cut from recordings they supply or recordings made to their direction. Use when showing a product, feature, tool, or project in action, including explainers built around a live demo. Not for slide-style explainers; for a single trim or audio cleanup, use the relevant tool directly. --- # Create a Demo Video Show the thing working. Build every demo scene from a recording of it, never from slides or static screenshots standing in for it. Settle the storyboard and narration before detailed visual timing, then review one canonical export end to end. ## Harness Drive this workflow from a harness running a strong reasoning model, such as the Amplifier CLI with `gpt-6-astra` at high reasoning effort or Claude Opus 5.5. The workflow depends on sustained judgment across footage, narration timing, and review. ## Tools Install the `smart-tools` skill from [microsoft/amplifier-smart-tools](https://github.com/microsoft/amplifier-smart-tools): ```bash npx skills add microsoft/amplifier-smart-tools ``` For the Amplifier app CLI, add the Smart Tools behavior instead: ```bash amplifier bundle add 'git+https://github.com/microsoft/amplifier-smart-tools@main#subdirectory=behaviors/smart-tools.yaml' --app ``` Load it to access the catalog and each tool's installation, prerequisites, and usage guidance: - **vid:** edit plans, assembly, rendering, and export verification. - **aud:** speech cleanup, mastering, and loudness/peak verification. - **unfold:** silent animations with editable source. - **showrun:** recorded walkthroughs of a running web app or terminal. - **Stories:** storyboards and speech synthesis. Prefer Gemini 3.1 TTS (`gemini-3.1-flash-tts-preview`); audition a short passage to choose the voice. Master the resulting speech with aud. Call the smart tool that owns each step: Stories for the storyboard and narration, Showrun for recordings, aud for mastering, Unfold for animation, and vid for video edits. Do not reimplement a tool's work with hand-written commands or scripts; use scripts only to chain smart tool capabilities into repeatable builds. ## Workflow Before step 1, run `--help` for each smart tool the video will use: `stories`, `showrun`, `aud`, `unfold`, and `vid`. Follow what the help says about setup, capabilities, and arguments in every later step. ### 1. Create the storyboard with Stories Inspect existing scripts, recordings, artwork, and credits. Establish the audience, takeaway, runtime limit, and destination; ask only for missing decisions. Use 1080p at 30 fps unless the brief calls for another format. Start with a hook, a tour of visible results, a short synthesis, and a closing action. Give each demo one spoken point and footage that proves it. Reuse chosen branding; otherwise compare a few small layout previews and voice samples before applying a direction throughout. Build the storyboard in Stories. Use `create-storyboard` to import a script the user already has, or `generate-storyboard` to develop one from the brief. Set `explore` only when the user asks to compare directions. Each panel is one scene: - `id`: stable scene ID. - `action`: the point the scene makes. - `visual`: what is on screen: a recording excerpt with file and in/out times, an Unfold animation such as an opening title or concept diagram, a title card, or a combination. - `narration`: the spoken line. - `notes` (optional): on-screen text, such as titles, animation labels, and subtitles. - `production_requirements` (optional): recordings or animations still to make. - `asset_id` (optional): a still frame from the recording. A direction holds up to eight panels; for a longer video, make each panel a section and list its scenes in `visual` and `narration`. Share the storyboard through the Stories dashboard with a short voice sample, and wait for the user to approve both before recording or generating narration, unless the user has said to proceed without review. The storyboard is the source of truth for every later step. Apply changes with `revise-storyboard` and rebuild from the latest revision. Use the scene IDs to connect on-screen sources, narration, and review timestamps. Preserve original assets, animation source, and generation settings; separate caches from rebuild inputs. **Success criteria:** Each scene has a purpose, an on-screen source, and a narration line, the total fits the runtime budget, and the user has approved the storyboard and voice or waived review. ### 2. Get the recordings Use recordings the user supplies, or make recordings of what the user wants to show. Long, unedited captures are fine; step 4 cuts them down. Make recordings with real screen capture of the thing running, using Showrun for web apps and its terminal mode for command-line demos. Seed realistic demo data first so screens do not start empty. Record a trial take before the real one, especially when a take spends money or time. Start each take with the screen and scrollback cleared, keep terminal takes to one or two commands, and check the receipt that every step shows a first interaction. Use Showrun's receipts, which time each action and wait, to choose cut points. Share takes with the user through Showrun's review dashboard before cutting them. Only substitute simulated or animated footage when the user explicitly asks not to use real screen capture. If a storyboard beat cannot be recorded because the thing lacks it, tell the user rather than faking it. **Success criteria:** Every demo scene in the storyboard maps to a recording that shows it happening. ### 3. Finish narration before timing visuals Clean supplied speech or generate one clip per scene with consistent voice settings. Check the speech provider's quota before auditioning voices; auditions spend the same budget as the final narration. Generate all lines with one provider so the voice stays consistent. Use aud to master the clips; -16 LUFS and a -1.5 dBTP ceiling are useful starting points. Inspect the verification results, and leave judgments of voice quality to the person reviewing in step 7. Retain raw and mastered clips; regenerate only changed lines. Measure speech and set scene durations with breathing room. If the video runs long, shorten copy and remove redundant beats before speeding up speech or demos. Keep spoken copy and on-screen claims synchronized. Regenerated speech requires new timing cues, including any timestamp-based breath or pause edits. **Success criteria:** Narration sounds consistent, fits each scene without clipping, and leaves the complete video within its runtime budget. ### 4. Cut demos around the result Cut with vid's trim, cut, and retime verbs. Show enough setup to explain the action, meaningful progress, and a readable result. Remove waiting and repetition; accelerate only where viewers can still follow. Judge the excerpt at delivery size and speed. Preserve the full recording and aspect ratio unless a deliberate crop is wanted. Where vid supports it, introduce the name, author, and description beside the recording, then expand it smoothly to full screen while playback continues. A 2.5-second introduction and 0.9-second expansion are a useful starting point. Otherwise open the scene with a title card. Hold final outputs long enough to understand them. **Success criteria:** Every excerpt supports its spoken point without hiding content or rushing past the useful result. ### 5. Animate to the measured narration Give Unfold the meaning, exact labels, palette, canvas size, frame rate, duration, reveal timestamps, and final hold. Request silent output. For explanations, build a stable diagram that reveals concepts in spoken order. Check a short prototype before rendering the full sequence. Unfold `create` runs for minutes; run creates one at a time with a timeout long enough to finish, not as background jobs the harness may kill. Retain editable source and dependencies. Make narrow text, alignment, and timing changes there instead of regenerating the animation. Recompute cues when speech changes. Inspect encoded frames at reveals, transitions, and the ending for collisions, misleading arrows, small text, and blank frames. Share animations with the user through Unfold's dashboard and apply their notes with Unfold's refinement before assembly. **Success criteria:** The animation matches the narration, remains readable, and holds a complete final composition. ### 6. Assemble and mix Build the whole video as one vid pipeline: stitch the scenes with vid transitions, lay the narration in with vid's audio verbs, and render once. Save the plan from `vid plan` with the project so the edit can be reviewed and replayed. Account for transition overlaps so later narration does not drift; extra outgoing footage can compensate for an overlap. A dissolve crossfades audio as well as picture, so start each scene's narration after its incoming transition ends, or use a hard cut where a line must start immediately. Keep audio within the picture's duration without cutting speech. Mute recording audio only where voiceover replaces it. Where recorded and synthetic voices meet, add the handoff to the checks for a person in step 7. **Success criteria:** The export has the intended runtime, dimensions, frame rate, and audio, with aligned transitions and intelligible speech. ### 7. Review and revise the complete video Run the tool checks yourself: `vid verify` on the render, `aud verify` on the final mix, a transcription of the mix compared against the storyboard narration, and frames sampled at every scene boundary and in the final seconds. Look for black flashes, clipped speech, frozen endings, and abrupt cutoffs. On dark palettes, `vid verify --expect-no-black-frames` can flag designed frames; confirm with the sampled frames before treating them as a defect. If `aud verify` misses the loudness target, master the extracted mix with aud, swap it in with `vid audio replace`, and render again; this is the one expected second render. Model reviews of picture or sound do not replace a person. List the checks only a person can make, such as pacing, voice quality, and whether the demo is convincing, as open items in the delivery report. Keep one canonical video for feedback, addressed by scene or timestamp. Revise the saved vid plan and rebuild only affected assets before rendering the full export again. Create a local HTML review player for the canonical MP4. Include: - A video player with playback, seeking, volume, and fullscreen controls. - Selectable closed captions, enabled by default when captions are requested. Build the caption file from the storyboard narration and the scene timeline. - Scene buttons labeled with each scene's start time and title from the storyboard. Clicking a button seeks to that scene and starts playback. - Links to download the MP4 and caption file, and to view the storyboard. - A responsive layout using the video's branding, with the player above the scene buttons. Save the player as `index.html` alongside the video and caption files. Serve it on localhost and open it for review. Start paused so the user controls playback. Keep one canonical video and update the player's scene timings whenever the edit changes. Verify that the video plays, captions display correctly, and every scene button seeks to the intended moment. Deliver the MP4 as the primary artifact and link the review player as the feedback surface. The review player is supporting HTML created by the coordinating agent; it does not need to come from a smart tool. Keep review aids, the storyboard, original assets, animation sources, and rebuild commands with prerequisites in the project rather than bundling them into an archive. Report what was actually verified and any viewing or listening checks that still need the user. **Success criteria:** The complete video meets the brief and can be revised without reconstructing the project.