ZenStory AI

Video scripts and editing

Make a video recap with Chinese narration from local footage

Video Recap Skills · Updated 2026-10-15

WorkflowTurn footage into a recap, step 1 of 4

Video Recap Skills separates a Chinese-narration recap into understanding, editorial planning, narration, voiceover and assembly. Starting from an authorized local video, it builds a scene/speech/frame evidence index, chooses a viewer promise and POV, and writes only claims that evidence or supplied context supports. It can deliver a rendered MP4 or an editable draft. The source need not already have narration: the original no-dialogue example below compares two story angles and writes a short Chinese script that treats a promise written on screen as still untested. A second example covers footage that stops after the first attempts: request the missing payoff footage, or propose a narrower account and let the creator decide whether a fixed direction changes.

Method fromvideo-recap4 method files

Part of Video Recap SkillsSource on GitHub

Before you start

  • Install Video Recap Skills in a supported agent host using the current route on the project page, then open the authorized video’s workspace. In manual commands, /ABS/video-recap-skills stands for the absolute path of the installed checkout.
  • A local .mp4, .mov, .mkv or .webm that you own or may process, plus Python 3.10+, ffmpeg on PATH and space for frames, WAV files and renders. Burned subtitles require ffmpeg’s libass/subtitles filter.
  • A Xiaomi MiMo API key for remote ASR, VLM and default TTS. Fish Audio can replace TTS with its own key, or you can explicitly select a self-hosted IndexTTS endpoint; ASR/VLM still use MiMo. MiMo and Fish Audio are external services; the chosen self-hosted endpoint determines where IndexTTS requests go. Check the relevant services’ privacy, region and billing terms before sending authorized material.

Steps

  1. Choose the voiceover task first Voice synthesis turns a finished script into speech; speech recognition turns existing sound into text. Choose the route for your work: to add Chinese narration to an authorized local video, continue with this guide; for scripted short-drama characters, start with distinct character voices; to decide where dialogue, action sounds or silence should remain and where narration belongs, use original sound and narration. This guide starts from video. Set the script and its placement before generating speech, then listen to each complete line and watch the assembled scene to check how sound and picture connect.
  2. Choose the edit shape Primary route: invoke the installed video-recap skill in its configured host (for hosts exposing that slash name, /video-recap) with a natural-language brief. Use full to retain the source timeline; use cut for a shorter story rendered before narration. State audience, duration, context, subtitles and material that must survive.
  3. Build an evidence index Understanding detects scenes, extracts frames, transcribes speech, finds quiet windows and writes timeline_fusion.json plus agent_narration_brief.md. It records what the footage shows and keeps facts and inference separate. Script-first entry: python3 /ABS/video-recap-skills/skills/video-understanding/scripts/understand.py /ABS/input.mp4 --work-dir /ABS/work. A source without narration can still contain dialogue: when people speak, keep the speech evidence. For footage with no dialogue, the understanding script supports --skip-asr; it skips transcription only, while remote visual understanding still runs and the source sound stays intact. With an empty transcript, speech and motives still need other evidence.
  4. Separate what is visible from what somebody claims Record the observed action or readable text, who supplied any background, and what remains unknown. A card saying “opens in ten seconds” proves only that the card makes that claim; whether the demonstration met it needs its own evidence. A pointing gesture shows where someone pointed; a person’s job, private thoughts or intent to expose someone need separate support. Check important frame details against the source, because VLM notes can be incomplete or mistaken. The evidence notes in the worked example below are invented teaching material.
  5. Choose an angle before writing Read the brief, contact sheet, frame facts and ASR. Decide the viewer promise, POV, dramatic question, emotional endpoint and delayed information. For a new recap, compare viable story shapes; for a directed request, honor that direction. Record the spine and change-based beats in recap_story_plan.json. Compare only angles the footage supports. The example can follow a changing public claim or the visible action that lets a demonstration continue; neither angle supports a fraud accusation. If a later outcome is missing, name the gap and leave the outcome unwritten. Propose a narrower promise or state the limit; when the direction is fixed, the creator decides before anything is substituted.
  6. Assign picture, original sound and narration In visual_audio_board.json, give every beat a picture task, preferred reaction, in/out reason, original-audio anchor and audio owner. Strong dialogue, action sound or silence may carry a beat alone. In cut mode, create clip_plan.json first; after edited_source.mp4 exists, recheck its storyboard and write on output time.
  7. Write source-grounded Chinese narration A narration.json block needs a job: context, causal link, foreshadowing, interpretation or transition. Do not restate visible action. Names, motives, relationships and outcomes must trace to visual evidence, ASR, reliable research or user context; never disguise background knowledge as an on-screen fact. Write complete spoken thoughts and preserve dialogue boundaries.
  8. Review, voice and assemble Ask whether every beat changes knowledge, power, goal, relationship, emotion or risk, and whether any claim lacks support. To review before TTS, take the stage route: after video-understanding, invoke video-script, inspect its plans/narration, then run python3 /ABS/video-recap-skills/skills/video-script/scripts/validate.py --work-dir /ABS/work --mode full. Only then run voiceover.py and assemble.py from their skill directories. Cut validation uses the orchestrator’s output-timeline mode.
  9. Resume from real artifacts The installed skill normally handles internal handoffs. For script-level cut control, start with python3 /ABS/video-recap-skills/skills/video-recap/scripts/recap.py /ABS/input.mp4 --work-dir /ABS/work --edit-mode cut --target-duration 6m. It exits after analysis and hands the work to the agent’s writing stage; in the default flow the agent carries on without waiting for your approval. After the required clip plan or narration exists, rerun that exact command; the manifest rejects mismatched source/settings. If you chose stage review, finish the review before rerunning. After timeline.json exists, use the draft export guide.

Example

Example

Here is an original suggested brief for a host that exposes this slash name (otherwise select video-recap). The path and timestamps are placeholders:

/video-recap Create a six-minute Chinese recap from /ABS/interview.mov in cut mode. I may use it. Show how the guest’s launch claim changes after the failed demonstration. Follow the guest’s POV until failure, then the engineer’s reaction. Preserve the full 18:40–19:05 exchange without narration. Use visible action, transcribed speech and my context; mark uncertain identities. Build the evidence and story/audio plan before concise spoken Chinese. Burn subtitles and retain timeline.json for draft export.

ORIGINAL EDITORIAL EXAMPLE — a demonstration with no dialogue This is a separate, invented teaching example, unrelated to the interview brief above. A–E are editorial labels for the beats, in source order.

Supplied context: the creator identifies the object as a folding display stand. Names, occupations, relationships, product specification and earlier events are all unknown. The imagined footage has no narration or dialogue; room tone and the buckle click stay as source sound.

Evidence notes in source order A. Person A puts a card reading “十秒展开” (“opens in ten seconds”) beside the folded stand. This establishes a written promise only; nothing has been timed yet. B. A pulls at the stand twice. It does not unfold. Record just that: whether the stand is broken, or whether A knew it would fail, stays unknown. C. Person B points to the still-fastened transport strap. A unfastens it. The pointing is visible; whether B is an engineer, a supervisor or an accuser is unknown. D. In the same continuous shot after C, A opens the stand. The footage shows this one sequence; no new attempt is timed against the ten-second claim. E. A crosses out “十秒” (“ten seconds”) on the card and writes “先解运输带,再展开” (“unfasten the transport strap, then unfold”). The wording changes; whether A feels ashamed, angry or relieved is unknown.

Two supported story angles 1. Follow A and the card: how does a speed promise become a preparation step? Keep A at the beginning and E at the end, with B–D explaining what happens between them. The payoff is a visible change in the claim; the narration passes no judgment on anyone’s character. 2. Follow the detail B points out: what visible action lets this stalled demonstration continue? Focus on the still-fastened strap, the unfastening and the subsequent opening. This foregrounds the practical sequence of this one demonstration. Choose angle 1 for this editorial brief: the before/after card gives the ending a concrete answer. Angle 2 remains a valid alternative with a hook of its own. “An expert exposes a deliberate scam” fails as a third angle: it adds an occupation, intent and accusation that the notes do not support.

Short proposed Chinese script, with English meaning Opening, around A — establish what the ending will answer: “先记住卡片上的‘十秒’。演示结束时,再看这个承诺留下了什么。” Meaning: Remember the card’s ten-second promise; at the end, see what remains of it.

Middle, B–D — no added line. Let the failed opening, pointing, unfastening and opening play in order. Leave the hand movements and the buckle click to picture and source sound: no line for each movement and no invented dialogue. Keep C and D as one uncut take in this proposed edit, so viewers can see for themselves what happens between the unfastening and the opening.

Ending, after E — distinguish the observed result from the untested promise: “现在卡片写的是‘先解运输带,再展开’,原来的‘十秒’被划掉了。十秒到底能不能做到,素材并没有重新计时的结果。” Meaning: The card now says to unfasten the transport strap before unfolding; the original “ten seconds” has been crossed out. There is still no new timed result establishing whether ten seconds is achievable.

The opening directs attention to an actual promise that E revises; the ending names the question the footage leaves open. The middle needs no sentence for every action. These lines are writing and editorial planning; they go into narration.json once you find real time windows in the footage and check the reading length against them.

A tempting but unsupported rewrite “He knew the stand was broken, yet kept boasting. An engineer exposed his scam, repaired it and finally proved the ten-second claim.” None of knowing deception, engineering credentials, a repair or a successful timed test appears in A–E. Adding “perhaps” leaves that added story just as unsupported. Remove those claims; keep the visible sequence and the narrower outcome. Equally, if the real source stops at B, leave this example’s C–E out of it.

If only A–B are available: keep the gap visible; narrow the promise only with approval This is a separate original editorial variant. The supplied material now stops after the two unsuccessful pulls, so C–E are unknown to this edit, even though the full teaching example above describes them.

Choose between two different jobs: - Keep the already-selected before/after-card story. Its ending needs the legible changed card and evidence of the intervening opening sequence. Record those missing source locations or request the missing material, and hold the promised payoff until that evidence arrives. If that direction is fixed, offer a smaller observation clip as a proposal for the creator to accept or decline. - With the creator's agreement, make a narrower account of what the supplied excerpt shows. The promise becomes “what this excerpt establishes about the attempts”; how the problem was solved and what the card eventually said drop out of it. Keep A–B in order and make the limited scope clear from the start.

One proposed Chinese narration block for that narrower version: “卡片写着‘十秒展开’,这里能看到的是两次没有展开的尝试。原因是什么、后来有没有打开,这段素材没有给出答案。” Meaning: The card says “opens in ten seconds”; this excerpt shows two unsuccessful attempts. It does not establish the cause or whether the stand later opened.

That line identifies the card's claim and the supplied record's limit. Let the two attempts play on screen, with no sentence per pull. Two unsuccessful pulls leave the ten-second claim untested. Place the line once you find a real speaking window in the footage.

Keep C's pointing, strap and buckle sound, D's opening and E's crossed-out wording out of this variant. The title and opening promise only what the available ending can answer, so leave out “the truth at the end”. A replay shows the same pull again, so the count stays at two attempts; if you use a replay, label it clearly.

When the supplied footage stops early, treat three things as unknown: whether a later event happened, whether it was filmed and whether anyone withheld it. If the notes are incomplete but you have the source, return to the relevant source passage before making a stronger claim. If the available recording itself ends at B, re-running analysis adds no later images. Leave that gap visible or obtain the additional material, and let an uncertain ending sound uncertain.

Bounded request for this partial-source situation: Use only the actual A–B-equivalent evidence and source locations I provide; treat all later actions and outcomes as unknown. First say which part of my selected viewer promise cannot yet be delivered. If I require the complete before/after story, list the missing material and stop before writing its ending. Otherwise, propose a clearly narrower observation script and state what it gives up; do not silently replace an already-approved direction. Do not add a repair, a changed card, dialogue, later-event audio or a timed result. Stay in the text proposal; no remote analysis, TTS or rendering. [Replace the teaching labels with your real source notes and scope.]

Text-only editorial request for your own material Use the real evidence notes and source locations I supply in place of this example’s invented A–E. Separate observations, quoted or on-screen claims, supplied context and open questions. Compare two supported angles unless I have already chosen one; propose the beat order and a short Chinese script for the selected promise. If the required evidence index is absent, identify what is missing—do not silently run remote analysis. Stop at the text plan: no TTS, media rendering or background music. Use actual output-time mappings only after I choose the cut and the edited video exists.

Expected files

  • Understanding: scenes.json, asr_result.json, vlm_analysis.json, silence_periods.json, timeline_fusion.json and agent_narration_brief.md.
  • Editorial: recap_story_plan.json, visual_audio_board.json, optional style_card.json, narration.json and, for cut, clip_plan.json plus edited_source.mp4.
  • Delivery: TTS WAV/metadata, recap_<name>.mp4, subtitles.srt/.ass and timeline.json; editable-draft export is separate.
  • For a concrete edit decision, see original sound versus narration: an original five-beat radio scene shows when dialogue, action sound or a pause should lead, and why audio_owner works as a planning label while the audible mix comes from the actual narration blocks, clear intervals for original sound and mix settings.

Check the result

  • Before TTS, spot-check names, actions, quoted speech and causal claims against frames/ASR; read narration aloud for complete thoughts and usable pauses.
  • Before delivery, watch the actual final file once, listen once without looking, and inspect joins around preserved dialogue. Reports point to candidate problems; playback settles them.

Sources

All guides