video-assemble (Final Video Assembly)
Final-stage skill that lays TTS narration over a source video, ducks the original audio, burns SRT/ASS subtitles, and loudness-normalizes the delivered recap.
Image & VideoAdvanced★ 559⑂ 105AI score 7/10Last updated: Oct 4, 2026
What it does
- Places per-segment narration audio on the video timeline, ducks the original sound only inside narration windows, and restores it at a verified sentence-end anchor (with bounded 3s hold rules).
- Generates
subtitles.srt/subtitles.assfrom narration positions and burns them in by default; if ffmpeg lacks libass it degrades to a sidecar.srtand logs asubtitle_burn_degradedwarning. - Normalizes loudness with two-pass loudnorm plus a 4x-oversampled true-peak limiter, then re-measures the delivered AAC and re-encodes audio only (stream-copying video) if it exceeds -1 dBTP.
- Emits auditable artifacts —
timeline.json,assembly_manifest.json,assembly_qc.json, binding receipts — and optionally a Jianying/CapCut editable draft.
Who it's for
- Creators mass-producing "source footage + AI narration" recap or summary videos.
- Engineers building ffmpeg-based automated editing pipelines who want mixing, subtitle and loudness policy encoded as hard rules.
- Post-production folks who need automated delivery gates (QC reports, true-peak ceilings, color tagging).
Usage examples
python3 scripts/assemble.py source.mp4 --work-dir work/— default narration mode: placement, ducking, subtitle burn, loudnorm.- For a cut edit, add
--source-video orig.mp4 --export-jianyingto produce an editable draft that references real source ranges. - Ship soft subtitles instead: pass
--no-burn-subtitlesand the run writesrecap_<stem>.srtnext to the final file.
· · · Install guide · · ·
Try it now, no install
Paste this into Claude to use the skill without installing anything.
Read the instructions in this file and follow them to help me: https://raw.githubusercontent.com/zenstory-ai/video-recap-skills/HEAD/skills/video-assemble/SKILL.md What I want: (describe your task here)
If Claude can't open the link, open it yourself and paste the contents instead.
↓ If it works for you, download the ZIP below and install it. Then it runs on its own — no pasting each time.
Install in the Claude app (no terminal)
- Download the ZIP with the button below.
- In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
- Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Install in Claude Code
Let Claude do it — paste this into Claude Code
Install the skill I found on Claude Skill Mart. Copy the skills/video-assemble folder from the GitHub repo zenstory-ai/video-recap-skills into my ~/.claude/skills/zenstory-ai-video-assemble/. When it's done, tell me in one line what this skill can do.
Install with a command instead
git clone https://github.com/zenstory-ai/video-recap-skills.git /tmp/video-recap-skills && mkdir -p ~/.claude/skills && cp -r /tmp/video-recap-skills/skills/video-assemble ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Open a terminal in your working directory.
- Clone the repo:
git clone https://github.com/zenstory-ai/video-recap-skills.git - Create the skills folder:
mkdir -p ~/.claude/skills - Copy the skill:
cp -r video-recap-skills/skills/video-assemble ~/.claude/skills/- Copy the sibling skills in
skills/too if you want the full recap pipeline.
- Copy the sibling skills in
- Verify prerequisites: run
ffmpeg -versionand check for--enable-libassand--enable-libfreetype, and confirmpython3 --versionworks. - Restart Claude Code and ask it to "assemble the recap video, mix the narration and burn subtitles". Note this stage is not user-invocable on its own: it expects
tts_meta.jsonproduced by the earlier voiceover stage.
View source on GitHub ↗License: MIT