Use for portable local long-form Chinese narration video/audio review workflows: bootstrap ASR/ffmpeg dependencies, transcribe media, create reference-corrected review projects, launch the LAN review page, and export subtitles, ASR time-alignment sidecars, rendered previews, and DaVinci/FCPXML handoff timelines.
Resources
9Install
npx skillscat add smartlanny/interactive-video-cutter Install via the SkillsCat registry.
Interactive Video Cutter
Use this skill when the user wants to open, initialize, or export the local review UI for conservative line-based video or audio cutting.
Core rules:
- Treat
interactive_review_state.jsonas the human review source of truth. - The browser page must receive preprocessed content, not raw ASR. Follow
references/chinese_preprocess.md: cache ASR, correct terms/numbers/model names from the reference script, segment by Chinese meaning, and pre-mark conservative deletion lines. - Audio is still source of truth. The reference script corrects terminology and punctuation/segmentation; it must not force text that was not spoken.
- Imported skeleton lines default to kept unless an input explicitly marks a line deleted. For production projects, prefer alignment JSON or a pre-cleaned state over plain reference text.
- Prefer the bundled scripts over rewriting glue code.
Scripts:
scripts/bootstrap.py: checks ffmpeg/ffprobe, bundled transcription helper, Python ASR packages, and can best-effort install deps with--install.scripts/create_review_project.py: from media + reference script, runs transcription when needed and creates manifest/state/workdir.scripts/preprocess_chinese.py: turns Qwen transcript JSON into timed review lines, applies reference-script terminology/number/model cleanup, and suggests conservative deletion lines.scripts/start_review_server.py: starts the bundled review server with a manifest.scripts/export_davinci_timeline.py: loads the server module and writes the standard export package, including DaVinci FCPXML and subtitle alignment sidecars.scripts/import_review_project.py: builds a manifest plus optional initial state from preprocessed text/timing inputs.
Typical commands:
SKILL_DIR="${CODEX_HOME:-$HOME/.codex}/skills/interactive-video-cutter"
python3 "$SKILL_DIR/scripts/bootstrap.py" --install
python3 "$SKILL_DIR/scripts/create_review_project.py" --media /path/to/talk.mp4 --reference /path/to/script.md --workdir /path/to/review-work
python3 "$SKILL_DIR/scripts/start_review_server.py" --host 0.0.0.0 --manifest /path/to/review-work/interactive_review_manifest.json
python3 "$SKILL_DIR/scripts/export_davinci_timeline.py" --manifest /path/to/review-work/interactive_review_manifest.json --format fcpxmlFor a new review project, call import_review_project.py with explicit --media, --manifest-out, and --state-out. Include --transcript-json, --alignment-json, --srt, or --reference-text only when those artifacts already exist.
New project workflow:
- Run
bootstrap.py --json; if deps are missing, runbootstrap.py --installor follow its printed manual actions. - Run
create_review_project.py --media <audio-or-video> --reference <script.md> --workdir <review-workdir>. This uses the bundled transcribe helper and local Qwen3-ASR package when available, then runs the bundled Chinese preprocessing layer. - Before sharing the page, inspect
interactive_review_state.jsonfor obvious missed protected terms or bad matches. Do not leave raw ASR in production review projects. - Start the LAN server with
start_review_server.py --host 0.0.0.0 --manifest <review-workdir>/interactive_review_manifest.json. - After browser review, export with the page or
export_davinci_timeline.py --manifest <review-workdir>/interactive_review_manifest.json --format fcpxml. - Deliver rendered media when requested, FCPXML, SRT, keep segments, handoff JSON/readme, and
*_text_time_alignment*sidecars for AI marking.
Portability notes:
- The review server, browser app, Chinese preprocessing script, and transcription helper are bundled in this skill under
assets/andscripts/. - The bundled server intentionally has no production default project. Always start it through
start_review_server.pywith an explicit project manifest. - Python packages and Qwen model weights are not bundled.
bootstrap.py --installinstalls packages when network/package indexes are available; model weights can also be preseeded in the machine's Hugging Face cache. bootstrap.py --jsonreports bothokandofflineReady.okmeans the code path can run and may download models;offlineReadymeans both Qwen ASR and forced-aligner model caches were found locally.- If a machine cannot download model weights, copy the Hugging Face cache manually and set
HF_HOMEorHUGGINGFACE_HUB_CACHEbefore transcription.