Promo Video Maker
Produce a truthful, publishable video package: script, raw footage, narration, subtitles, audio/video timeline, rendered deliverables, and verification evidence.
Route the work
- For copywriting, titles, descriptions, or choosing between official and casual developer-led tone, read references/writing-styles.md.
- When a live web UI must be demonstrated, read references/recording.md. Use an available browser-testing skill if one exists in the environment.
- When generating narration or aligning speech, read references/audio.md.
- When editing, adding subtitles, choosing resolution, or exporting, read references/rendering.md.
Read only the references needed for the requested deliverables. A complete end-to-end video requires all four.
Core workflow
- Inspect the project and identify only demonstrable facts: audience, problem, main actions, limits, and safety notes.
- Choose a tone from the writing guide. Write the narration, on-screen phrases, shot list, title, and description before recording.
- Record the actual product where possible. Reconcile the script with real UI states; do not fabricate disabled or unavailable actions.
- Resolve the TTS provider and model, retrieve its current voice catalog, and show the relevant voices to the user. Require an explicit voice choice before synthesis unless the user already supplied an exact, currently valid voice. Then generate narration, measure its actual duration and sentence boundaries, and treat the finished audio as the master clock.
- Map every spoken idea to a relevant shot. Create editable timeline and subtitle sources before rendering.
- Render the requested aspect ratios and resolutions. Preserve raw media and reproducible scripts separately from exports.
- Validate every final file with metadata inspection, full decode, visual frame sampling, audio-level checks, and state-restoration evidence when live services were changed.
Non-negotiable invariants
- Never place passwords, API keys, cookies, or tokens in scripts, docs, commands committed to the project, media metadata, or screenshots. Accept secrets at runtime via environment variables or no-echo prompts.
- External TTS calls, paid APIs, live service actions, and other state changes still require the user's choice or authorization. A video request does not grant unrelated access.
- Before TTS generation, list the currently available voices from an official provider source and let the user choose. Do not silently select a voice or make paid audition clips; verify and reuse an exact voice only when the user has already chosen it.
- Before operating a live service, record its initial state. Restore that state after recording and verify it in a fresh session. Do not stop a service that was already running unless the user explicitly permits it.
- Do not claim unsupported capabilities, built-in public exposure, universal compatibility, or security guarantees. Show the real product and state limitations in the description when relevant.
- Never disable TLS verification to make an API work. Repair the CA path or use the maintained system CA bundle.
- Do not label interpolated video as natively recorded at a higher frame rate. Report actual capture and export frame rates.
- Default to 1920×1080, 16:9 for a general desktop deliverable only when the user does not specify a format. Do not silently crop important UI to force an aspect ratio.
Deliverable layout
Use the project's existing convention when present. Otherwise prefer:
video/
├── copy/ # narration, shot list, titles, descriptions
├── raw/ # untouched screen recordings and source audio
├── audio/ # processed narration and reproducible generators
├── project/ # timeline, subtitles, render and recording scripts
└── exports/ # final publishable media
Large binary files may need Git LFS or external artifact storage; do not assume they belong in ordinary Git history.
Validation
For a rendered file, run scripts/validate_media.py with the expected streams and dimensions. Also inspect representative frames at the beginning, every major transition, the mobile segment, and the end card. The validator cannot detect bad writing, visual obstruction, misleading footage, pronunciation problems, or live-state drift; check those separately.
1---2name: promo-video-maker3description: Plan and produce software or product promotional videos from copywriting through real UI recording, TTS narration, subtitles, timeline editing, FFmpeg composition, and media validation. Use when creating or remaking a demo or promo video, including official brand and casual developer-led styles. Do not use for simple playback, transcoding-only requests, or image-only design.4---56# Promo Video Maker78Produce a truthful, publishable video package: script, raw footage, narration, subtitles, audio/video timeline, rendered deliverables, and verification evidence.910## Route the work1112- For copywriting, titles, descriptions, or choosing between **official** and **casual developer-led** tone, read [references/writing-styles.md](references/writing-styles.md).13- When a live web UI must be demonstrated, read [references/recording.md](references/recording.md). Use an available browser-testing skill if one exists in the environment.14- When generating narration or aligning speech, read [references/audio.md](references/audio.md).15- When editing, adding subtitles, choosing resolution, or exporting, read [references/rendering.md](references/rendering.md).1617Read only the references needed for the requested deliverables. A complete end-to-end video requires all four.1819## Core workflow20211. Inspect the project and identify only demonstrable facts: audience, problem, main actions, limits, and safety notes.222. Choose a tone from the writing guide. Write the narration, on-screen phrases, shot list, title, and description before recording.233. Record the actual product where possible. Reconcile the script with real UI states; do not fabricate disabled or unavailable actions.244. Resolve the TTS provider and model, retrieve its current voice catalog, and show the relevant voices to the user. Require an explicit voice choice before synthesis unless the user already supplied an exact, currently valid voice. Then generate narration, measure its actual duration and sentence boundaries, and treat the finished audio as the master clock.255. Map every spoken idea to a relevant shot. Create editable timeline and subtitle sources before rendering.266. Render the requested aspect ratios and resolutions. Preserve raw media and reproducible scripts separately from exports.277. Validate every final file with metadata inspection, full decode, visual frame sampling, audio-level checks, and state-restoration evidence when live services were changed.2829## Non-negotiable invariants3031- Never place passwords, API keys, cookies, or tokens in scripts, docs, commands committed to the project, media metadata, or screenshots. Accept secrets at runtime via environment variables or no-echo prompts.32- External TTS calls, paid APIs, live service actions, and other state changes still require the user's choice or authorization. A video request does not grant unrelated access.33- Before TTS generation, list the currently available voices from an official provider source and let the user choose. Do not silently select a voice or make paid audition clips; verify and reuse an exact voice only when the user has already chosen it.34- Before operating a live service, record its initial state. Restore that state after recording and verify it in a fresh session. Do not stop a service that was already running unless the user explicitly permits it.35- Do not claim unsupported capabilities, built-in public exposure, universal compatibility, or security guarantees. Show the real product and state limitations in the description when relevant.36- Never disable TLS verification to make an API work. Repair the CA path or use the maintained system CA bundle.37- Do not label interpolated video as natively recorded at a higher frame rate. Report actual capture and export frame rates.38- Default to 1920×1080, 16:9 for a general desktop deliverable only when the user does not specify a format. Do not silently crop important UI to force an aspect ratio.3940## Deliverable layout4142Use the project's existing convention when present. Otherwise prefer:4344```text45video/46├── copy/ # narration, shot list, titles, descriptions47├── raw/ # untouched screen recordings and source audio48├── audio/ # processed narration and reproducible generators49├── project/ # timeline, subtitles, render and recording scripts50└── exports/ # final publishable media51```5253Large binary files may need Git LFS or external artifact storage; do not assume they belong in ordinary Git history.5455## Validation5657For a rendered file, run `scripts/validate_media.py` with the expected streams and dimensions. Also inspect representative frames at the beginning, every major transition, the mobile segment, and the end card. The validator cannot detect bad writing, visual obstruction, misleading footage, pronunciation problems, or live-state drift; check those separately.