Talking-head editing is split into two steps, don't mix them together:First cut out a clean one (cut talking-head), then package it into a final cut (final cut).
Stage one: Cut talking-head (produce clean material)
Goal: take one raw screen recording and cut it into one without slips of the tongue, stumbles, or filler source_cut.mp4 + proofread subtitles.srt。
Process
原视频 → ①转录(带时间词级) → ②识别删除候选 → ③生成审核网页
→ 用户确认删哪里 → ④ffmpeg 剪出新视频
→ ⑤基于剪后视频重新转写 → ⑥AI 校对字幕 → 输出
Subtitlesmust be re-transcribed based on the cut video and then proofread, you cannot reuse the original video's subtitles, nor treat the first transcription draft as the final subtitles.
Identify what should be deleted (detector)
Scan category by category according to references/删除检测规则.md : silent segments, filler words, consecutive filler words, stumble words, word-by-word repetition, incomplete sentences, restatement corrections.
How to delete (two iron rules)
- Delete the earlier, keep the later: what is said later is usually more complete → delete the earlier slip of the tongue/incomplete sentence/first repetition, keep the later complete one. See
references/删前保后.md。 - Risk-tiered review: "deleting words" is safe, "deleting meaning" is dangerous. Review only hits high-risk spots (whole-sentence deletion, start colliding with end divergence, long repetition), low-risk ones are left to the end manual review page as a fallback. See
references/删除风险分层.md。
Cut execution
After marks are confirmed, use scripts/cut_by_ranges.sh to losslessly splice by "keep intervals" (avoid error accumulation from deleting segment by segment):
bash scripts/cut_by_ranges.sh 原视频.mp4 keep_ranges.json source_cut.mp4
Output
output/YYYY-MM-DD_视频名/
├── 剪口播/1_转录/{audio.mp3, words.json}
├── 剪口播/2_分析/{readable.txt, 口误分析.md, auto_selected.json}
├── 剪口播/3_审核/review.html
├── source_cut.mp4
└── subtitles.srt # 剪后重转写 + AI 校对
Stage two: Talking-head final cut
Turn source_cut.mp4 + subtitles.srt + 素材 into a complete final cut.Only solve one thing: produce the final cut. Aspect ratio and animation style read from user config.
输入(剪后视频+字幕+素材)
→ ① 分镜稿:概念分段 + 每段类型判定 + 画面来源(原视频/截图/HTML/B-roll)
→ ② 时间线预览:画面与口播逐秒对齐(HTML 预览页)
→ ③ 合成:按配置比例导出 MP4
→ ④ 验收:ffprobe 检查时长/分辨率 + 抽关键帧核对
User config
{ "aspectRatio": "3:4", "animationStyle": "极简深色" }
Read the config first every time, to decide the final cut's aspect ratio and animation style. B-roll/animated visuals themselves are handed to space-video-broll for generation, this stage is only responsible foralignment and compositing。
Handoff
- Upstream:
space-video-script'sscript.md(storyboard basis), the recorded original video - Parallel: B-roll goes to
space-video-broll, subtitle fine-tuning goes tospace-video-subtitle - Downstream: final cut →
space-video-coverproduces the cover
Dependencies
ffmpeg / ffprobe、node(to run the review page/preview page), an ASR backend (transcription and re-transcription).
Core principles
- Delete the earlier, keep the later > all sub-rules
- Deleting words is safe, deleting meaning is dangerous: review is deployed by risk, not spread everywhere
- Cut talking-head and final cut are separate: first produce clean material, then talk about packaging
- Everything can be reviewed: the review page lets people see at a glance what is deleted, and the timeline is aligned before the final cut