ZenStory AI

Video scripts and editing

Export a video recap as an editable CapCut or JianYing draft

Video Recap Skills · Updated 2026-10-15

WorkflowTurn footage into a recap, step 4 of 4

To keep editing a finished recap in JianYing or CapCut, export its existing timeline.json as an editable draft built from the source clips and per-segment narration. Video Recap Skills' standalone exporter puts the source clips with their original sound, the narration and optional music on separate tracks, keeps captions as text, and by default bundles the media into a draft folder under --out-dir, so the draft still opens after being moved. The export reads only the timeline and the media it references: ASR, visual understanding and TTS stay idle, and the rendered MP4 stays as it is. The dry-run example below compares two edits, including what else has to move when a voiceover moves.

Method fromvideo-assemble10 method files

Part of Video Recap SkillsSource on GitHub

Before you start

  • A repository checkout containing skills/video-assemble/scripts/export_jianying.py, or the scripts/export_jianying.py file inside an installed video-assemble skill; Python 3.10+, ffprobe, and a schema_version: 2 timeline from the current assembler with accessible media references. Replace the /ABS/ placeholders below. If no recap timeline exists yet, start with the video-to-narration workflow; separate voice and caption tracks come from that timeline, while a finished MP4 has them flattened into its picture and sound.
  • If starting before assembly, prepare the source video and work_dir/tts_meta.json. Local assembly needs ffmpeg; burned subtitles need its libass/subtitles filter. MiMo supplies remote ASR/VLM/default TTS; optional Fish Audio or a self-hosted IndexTTS service can replace TTS only.
  • A JianYing or CapCut desktop installation in which you can test the exported folder. Export is an optional sidecar; the recap MP4 renders without it.
  • Decide the revision scope: the thought to keep, the source line or action that must remain audible/visible, and whether you are retaining the existing voice recording or requesting a new one. Add reverse playback, speed changes and transitions in the target editor.

Steps

  1. Choose export-only or assembly With a completed timeline.json, use the standalone command below. It is the path for exporting the existing edit without rerunning assembly. If assembly has not happened yet, its separate assemble.py flow can also export a draft with --export-jianying --jianying-out /ABS/drafts; that flow runs its normal assembly first and then writes the draft.
  2. Preserve the right source In cut mode, pass --source-video /ABS/original.mp4 to the assemble.py command that creates timeline.json; this preserves real original-video intervals in the timeline. The standalone exporter then consumes that completed timeline and does not accept --source-video.
  3. Export the existing edit from its original media Run the standalone command with the real timeline and read its returned draft_dir and warnings. It reads the timeline and referenced media only: MiMo/Fish stay idle and the whole recap is not rendered again. If an original clip is missing, recover it; result.mp4 may look the same, but it already carries the mixed voiceover and, by default, burned captions.
  4. Keep the bundle together Media bundling is on by default. Copy the whole output folder, including Resources/local/. Use standalone --no-bundle-media only if the editor can continue accessing the external media paths. Read the warnings: missing media is listed there and stays an external reference.
  5. Open in your target editor Use your installed editor’s supported local-draft opening or import flow. Keep the returned draft directory intact and confirm its media, subtitles and audio tracks resolve; menus and draft locations vary by editor release.
  6. Identify what each editable element actually contains In the normal exported recap, video clips carry their original audio together with its volume keyframes, and any dialogue stays mixed into that sound with the rest of the source audio. Narration and optional BGM are separate audio segments, and recap captions are text segments. A caption correction changes the displayed text only; the words in its WAV stay the same. Hard captions already inside the source picture belong to the image, so mask them in the editor when needed.
  7. Move the explanation and keep the evidence Decide what the viewer needs to hear or see before shortening. The worked rehearsal preserves a failed entrance, the instruction, a visible cue and the next entrance. Move commentary after that result, or omit it for an original-audio-led cut. Cutting the cue to save two seconds leaves the edit unable to show how the response followed it. For the earlier sound-planning decision, see original audio and narration.
  8. Keep voice, captions and volume changes consistent When moving a recorded voiceover, move its corresponding caption cues and inspect original-audio and music keyframes at both the old and new positions. The exporter writes those positions once; any later ducking changes in the editor are yours to make. If you change what is said, provide an approved replacement recording, retime it to its real length, and replace the caption and the audio together.
  9. Choose which edit owns the final delivery Keep the untouched export as a starting point and use the target editor’s supported copy/version flow for a finishing version. This exporter works one way: it reads timeline.json and writes a draft, and your desktop edits stay in the editor project while the timeline, SRT, WAV and previously rendered MP4 remain as they were. Export the chosen finished version from the editor, or deliberately carry the decisions back to the pipeline inputs before a later render. Re-exporting the old timeline gives you the untouched starting point again.

Example

Example

From an existing timeline (replace every /ABS path): python3 /ABS/video-recap-skills/skills/video-assemble/scripts/export_jianying.py \ /ABS/work/timeline.json \ --out-dir /ABS/drafts \ --name rehearsal_base

Read the returned draft_dir and any warnings. Keep the entire draft folder and its Resources/local/ media together.

ORIGINAL EDITORIAL EXERCISE — The Second Count-In These are invented footage descriptions and edit placements; all times below are illustrative. English dialogue is a meaning translation of the Chinese. Use this plan with real media only when the footage actually contains these beats.

Viewer question: what changes between the two entrances? The supplied fictional footage shows a guitar entering before the other players, a stop, an instruction, a hand cue, and a second entrance that lands together. What it supports is that one change: after the raised hand, the second entrance lands together. Whether the rehearsal is finished, or why the first entrance went wrong, would need footage that shows it.

Source time → edited time | picture and source sound 00:12–00:16 → 00:00–00:04 | first entrance does not land together; they stop 00:22–00:26 → 00:04–00:08 | “看我抬手,再进。” / “Watch my hand go up, then come in.” 00:26–00:28 → 00:08–00:10 | the leader raises a hand; the others wait 00:28–00:34 → 00:10–00:16 | second entrance, complete short phrase and its necessary audible release 00:34–00:38 → 00:16–00:20 | the phrase and its release are over; hands lower in the remaining room tone

The gap at source 00:16–00:22 is already omitted from this illustrative edit. All edit decisions below use the right-hand (edited) clock. The hand cue and second entrance stay consecutive in source order and come from the same attempt.

A problem deliberately placed in this example draft: - A narration recording and its matching caption occupy edited 00:05–00:09. - Chinese line: “抬手以后,第二次起拍合在了一起。” Meaning: “After the raised hand, the second entrance lands together.” - For this placement exercise, assume that the complete existing recording is four seconds long. - The voiceover covers part of the instruction; original-audio volume keyframes also lower that region. To make the instruction audible again, the recording and the keyframes both have to move.

A — KEEP A SHORT EXPLANATION, AFTER THE RESULT (illustrative 20-second edit) 1. Keep the failed start, complete instruction, hand cue and second phrase in order. 2. Move the complete four-second narration from 00:05–00:09 to 00:16–00:20, with its caption shifted by the same eleven seconds. It now comments on the result after the viewer has heard it, and the instruction stays clear. 3. Inspect the video clip’s original-audio keyframes: remove the obsolete reduction over the instruction where appropriate, preserve the audible entrance, and shape any new reduction/recovery around the late narration. Inspect optional music there too. Keyframes on the video clip have to be moved separately from the audio segment. 4. If the actual recording or source phrase lasts longer than the illustrative window, enlarge or change the edit. Do not amputate a syllable, assume a silence, or hide the cue just to preserve the number “20.” The late shot must truly contain a usable settling beat.

B — LET THE RETRY SPEAK FOR ITSELF (illustrative 16-second editor cut) 1. Remove this added narration and its corresponding narration caption; leave unrelated captions in place. If original-dialogue captions exist, keep only those that match what remains audible, and check line by line which original lines have a caption. 2. Remove the 00:16–00:20 tail; keep the instruction and the 00:08–00:10 cue. 3. Remove the now-unneeded original-audio reduction and listen to both entrances at normal speed. If music masks the comparison, lower or omit the music. End after the complete second phrase, with enough audible release in the real footage.

A adds one retrospective explanation; B gives the audible comparison more responsibility. A title that fits either cut is “Same opening, second try”; “They finally mastered the whole piece” claims more than the footage shows. Both are cuts the author chooses by hand.

When the correction is about the WORDS: Suppose an existing recording says “They finally mastered the whole piece.” Changing its caption to the narrower claim would leave the unsupported spoken claim audible. Remove that recording with its caption, or obtain a separately approved replacement and fit its real duration. The replacement voice is synthesized separately; an export-only command carries the existing recordings as they are.

Handoff note (plain editorial notes): Chosen version: A or B; record which one is the final cut. Protected beats: first stop → complete instruction → hand cue → second phrase. Changed elements: narration placement/removal, matching captions, source/music volume. Working master: the named editor project, while the original export remains untouched. Final deliverable: the render from that chosen edit, replacing the older pipeline MP4. Still to judge in the real media: full spoken endings, cue visibility, phrase release and whether the target editor opens the bundled media correctly.

Running the standalone exporter again reads the same input timeline; editor changes stay in the editor project, whatever the output folder is called. Keep the bundle intact and record which version you actually chose to finish.

FAQ

Where is the exported CapCut / JianYing draft saved?

With the standalone exporter, the draft folder is created inside --out-dir and named by --name (default recap); the draft_dir the command prints is its full path. When assemble.py --export-jianying writes it, the parent folder is --jianying-out, then the JIANYING_DRAFT_DIR environment variable, then the work directory, and the folder is named recap_ plus the source video's file name without its extension, or the --recap-stem value when you pass one. If the target folder already has content, the exporter creates a numbered sibling such as recap_demo_2.

How do I open the draft in JianYing or CapCut?

Write the draft straight into the editor's drafts root: for a pipeline export, point JIANYING_DRAFT_DIR (or --jianying-out) at it as the configuration playbook describes; for the standalone exporter, pass it as --out-dir. Then open the draft from the editor's draft list and check that source clips, narration, BGM, subtitles and photo overlays are online and editable, volume automation shows and plays, and no offline-media warning appears.

How do I open a CapCut draft on another computer?

Keep media bundling on, the default (leave out --no-bundle-media and --jianying-no-bundle-media, and keep JIANYING_BUNDLE_MEDIA on), so the exporter copies video, audio and images into the draft's Resources/local/ and references them through the editor's draft placeholder paths. Copy the whole draft folder into the new computer's drafts root and open it there. Media that was already missing at export time is listed in the warnings and keeps its old external path, so restore it and export again.

Expected files

  • The returned draft_dir contains draft_content.json, draft_info.json and draft_meta_info.json.
  • Bundled media goes under Resources/local/video/, Resources/local/audio/ and Resources/local/image/; missing files stay as explicit external references and are listed in the warnings.
  • If a draft folder with that name already has content, export writes to a numbered sibling such as recap_demo_2 and leaves the existing folder as it was. This draft export is separate from the assembled MP4, subtitles and timeline.json.
  • The editor finishing version is a separate deliverable from the pipeline snapshot. Edited captions change the displayed text only and leave the narration audio as it was; a fresh draft exported from an unchanged timeline.json is the original starting point, without the editor’s revisions. Keep the chosen project and the media it still references together.

Check the result

  • Confirm the three draft JSON files and referenced media, then test opening in the exact desktop/region version you intend to use; compatibility is confirmed by the version you actually open it in.
  • For the rehearsal exercise, the instruction, cue and second entrance must remain in order and audible where needed. Check the original-audio keyframes at the old voiceover position as well as the new one, and compare the actual spoken words with their displayed captions. The 20/16-second lengths are illustrative; the real media sets the final length.
  • Check voiceover endings, audio sync, original-audio transitions, BGM levels, subtitle line breaks and cuts. Drafts reference source media, so hard subtitles already in that footage stay visible; mask them in the editor when needed.
  • An export-only smoke test covers the local draft contract; check remote generation, opening in the desktop editor and the final rendered video separately.

Sources

All guides