Video Narration Script (video-script)
Turns an already-analyzed video into a director-level story plan, A/V board, and timestamped narration JSON — then validates it before TTS.
Image & VideoAdvanced★ 563⑂ 105AI score 8/10Last updated: Oct 4, 2026
What it does
- Reads a
work_dirthat already contains video-understanding artifacts (vlm_analysis.json,asr_result.json,agent_narration_brief.md) and walks the agent through directing → story editing → cutting → voice/narration → first-viewer check. - Produces
recap_story_plan.json(intent, POV, change-driven beats),visual_audio_board.json(per-beataudio_ownerandnarration_job), optionalstyle_card.json,clip_plan.jsonfor cut mode, and a timestampednarration.jsonwith emotion tags for TTS. validate.pyruns locally and mechanically: flagsover_budgetblocks, ordering errors, and rewrites measuredoverlaps_speechwithout ever rewriting your prose.review.pyis an advisory LLM review (hallucination/unsupported-claim detection) and is the only script that goes online, sending text excerpts to a MiMo chat endpoint — no video, frames, or audio.- Distinguishes CREATE / DIRECTED / REVISION modes so review notes freeze everything the user didn't mention.
Who it's for
- Creators and studios producing recap / summary commentary videos at volume
- Users of the zenstory video-recap automated TTS pipeline
- Anyone trying to move narration beyond "describing the frame" toward causal, POV-driven storytelling
Examples
- Point it at a 90-minute drama's
work_dirand ask for a 10-minute recap → it compares two viable structures, writesclip_plan.json, then output-timenarration.json. - After a screening: "beat 3 sounds like subtitle-speak, freeze the rest" → REVISION mode edits only
style_card.jsonand that segment. - Only need promo titles, thumbnail text, or on-screen caption fixes for a finished short → it uses the promotional-copy reference and skips the planning chain.
- Run
python3 scripts/validate.py --work-dir <work_dir> --mode fullto find over-length blocks before synthesizing voice.
· · · 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-script/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-script folder from the GitHub repo zenstory-ai/video-recap-skills into my ~/.claude/skills/video-script/. 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 && mkdir -p ~/.claude/skills && cp -r video-recap-skills/skills/video-script ~/.claude/skills/⚠ This is a third-party skill. Check the source repository before installing.
- Open a terminal and go to a working folder.
- Clone the repo:
git clone https://github.com/zenstory-ai/video-recap-skills.git - Create the skills folder:
mkdir -p ~/.claude/skills - Copy this skill:
cp -r video-recap-skills/skills/video-script ~/.claude/skills/ - (Recommended) Copy the sibling analysis skills too — this skill only consumes an existing
work_dir, it does not run ASR/VLM itself. - For the optional review step, set
export MIMO_API_KEY=your_key; to keep drafts local, skip it or setREVIEW_NARRATION=0/ pass--no-review-narration. - Restart Claude Code and ask for a narration script. For confidential drafts, run only
validate.pyand do human review instead ofreview.py.
View source on GitHub ↗License: MIT