用途:把一段包含多个独立钩子/多条拍摄的长录像,拆分为每个钩子一个独立视频,并收紧节奏,去掉死气、口误、废弃拍摄和重复。
主要能力:由单个 hooks.json 驱动整条流水线。probe.py 读取源文件、按音频流提取 wav、计算 10ms dB 包络并区分麦克风与系统采集;video_regions.py 生成“正在播放视频”掩码;detect_loops.py 定位播放器循环重启点;build_mix.py 生成 work/mixed.mov;plan.py 生成 cuts.json;render.py 输出 final/hook-NN.mp4;qa.py 重新转写每个渲染并扫描重复;build_canvas.py 生成画廊画布;map_notes.py 把评审意见映射回源时间。
两条核心规则:不为节奏裁剪文案,只删死气、口误、废弃拍摄和重复;转写渲染结果而非仅转写源文件,因为 Whisper 在全文件转写中会把重复拍摄平滑成一行,只有对剪辑结果转写才能暴露真实重复。
使用方式:脚本以 hooks.json 路径为 $1,默认 ./hooks.json。依赖 ffmpeg/ffprobe、whisper-cli 与 ggml-large-v3.bin、whisper-vad-speech-segments 与 silero VAD 模型、numpy、OPENAI_API_KEY 以及 here.now 凭据。若沙箱阻止 ffmpeg,需禁用沙箱重跑。
适用场景:带麦克风与系统音频双轨的屏幕录制,且系统轨在无播放时为数字静音,可免费获得精确掩码;只有单音频流时需在 hooks.json 中手动标注 video_regions。
限制:掩码漂移会静默污染全部输出,需在开头和结尾各转写同一 45 秒窗口验证对齐;不要仅凭麦克风轨推断视频区域,广告音频会以约 22dB 渗入并落在语音阈值上。交付时每轮回复以画布 URL 开头,每轮升版本,字节变化的钩子文件名加版本戳,删除被取代文件并确认旧名 404。