--- name: video-recap description: > 从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、 配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 → Agent 制定故事与视听方案 → 剪辑 → 配音 → 合成。触发词:视频解说、视频旁白、生成解说、 视频 recap、video recap、voiceover、narration、auto-dub、recap。 --- ## 1. 定位与流程 本技能是五个独立技能的轻量编排器。各技能只通过 `work_dir` 中的 JSON / MP4 产物通信,不共享代码: ```text video-understanding ─▶ Agent 按 video-script 制定方案并写稿 ─▶ [video-cut] ─▶ video-voiceover ─▶ video-assemble ``` 把成片拆成制作参考不是生产路径。用户要求时:对成片跑 video-understanding(建议 `ASR_SEGMENT_SECONDS=5`), 再用 video-reference 做 measure、标注、check、export,把导出的 `production_reference.json` 复制进下一次运行的 `work_dir`,或登记成资源库的 `production_reference` 模板、采纳后经 `--project` 绑定。recap 不会自动运行它,也不拿新成片与参考做比对。 流程支持断点续跑:写好 `narration.json` 后重复同一条命令即可继续。第二阶段会比对 `recap_run_manifest.json` 记录的源视频路径、文件大小/修改时间与运行参数,拒绝复用来自其他源视频或其他参数的旧工作目录;视频理解产物也只在来源一致时复用。 暂停时打印的续跑命令就是原命令:保留原来的写法,视频与路径参数转成绝对路径,补上 `--work-dir` 和来自环境变量的设置,从任何目录都能直接运行;同一份参数写在 manifest 的 `argv`。 画面流程 `--edit-mode full|cut|dub` 与声音策略 `--audio-mode` 是两个独立开关; `narration` 保留上述解说流程,`source-mix` 不做配音,`adopted-packet-copy` 冻结当前输入的已采用 AAC 音轨。 组合只有下面几条路径,其余组合在启动时直接报错: | 输入 | `--edit-mode` | `--audio-mode` | Agent 暂停点 | 流程 | 详见 | |---|---|---|---|---|---| | 单视频 | full | narration | 1:`narration.json` | 理解 → 写稿 → 校验 → 配音 → 合成 | §4 | | 单视频 | cut | narration | 2:`clip_plan.json`,再对着成片写 `narration.json` | 理解 → 剪辑 → 重建输出时间 brief → 写稿 → 配音 → 合成 | §4 | | 多视频 | cut | narration | 2:同上,clip 必须带 `source_id` | 逐源理解 → 剪辑 → 写稿 → 配音 → 合成 | §4.3 | | 单视频 | full | source-mix / adopted-packet-copy | 无 | 直接合成当前整段 | §4.7 | | 单 / 多视频 | cut | source-mix / adopted-packet-copy | 1:`clip_plan.json` | 理解 → 剪辑 → 合成,不写稿 | §4.7 | | 单视频 | dub | narration | 1:`dub_script.json` | 英文转写 → 译稿 → 克隆音色整轨替换 | §5 | | 已剪好的母版 | full | narration + 三个采用 JSON | 无 | 只做严格合成 | 下文 | 所有 full/cut 路径共用同一段收尾:(有旁白时)评审 → TTS → 合成 → 成片 QC。使用原声模式时读 `references/audio-routing.md`。 已有预制画面和本地采用的完整声音三件套时,可走严格 assembly-only 路径: ```bash python3 scripts/recap.py picture.mp4 --edit-mode full --work-dir NEW_WORK \ --output-dir DELIVERY \ --tts-meta tts_meta.json \ --narration-adoption narration_adoption.json \ --audio-mix-adoption audio_mix_adoption.json ``` 三个 JSON 参数必须同时出现。该入口只接受单视频、full、narration、音轨 0、新工作目录和未存在的 交付文件;不运行理解、写稿、解说评审、TTS、cut 或剪映导出。语义与媒体形状仍由 video-assemble 严格验证,recap 只核对子技能绑定记录引用的是同一批采用文件与母版路径,不把调用方 采用的声音或混音声明成自动创作或发布批准。详见 `references/audio-routing.md`。 这里的单视频是**已经剪好的母版**。重剪后可以复用未改动的 WAV 与 `tts_meta.json`,但必须按新母版 重新写混音采用文件里的落点与准备好的音床;衔接步骤见 `references/audio-routing.md` 的 “Keep adopted voice after a cut”。 ## 2. 创作职责 这不是单纯的 JSON / 渲染流水线。Agent 是本次内容的创作负责人。先判断本轮的**创作控制模式**(CREATE / DIRECTED / REVISION,与 `--edit-mode` 无关),再在进入昂贵的下游处理前完成五次判断: 1. **导演判断**:观众承诺、POV、戏剧问题、情绪终点与揭示节奏。 2. **故事编辑**:beat 定义为“发生了什么变化”,不是场景摘要。 3. **画面剪辑**:选择真正值得保留的具体时刻、反应、入点与出点。 4. **声音/旁白**:先分配画面、原声、沉默和旁白的任务,再写解说词。 5. **观众复核**:分别检查无旁白、只听声音和第一次观看的体验。 三种控制模式的定义、REVISION 的修改/冻结规则、创作方法以及 `recap_story_plan.json` / `visual_audio_board.json` / `style_card.json` 的写法,全部按 `video-script` 执行;它会要求先读创作手册。这些文件只记录可审计的当前决定,不增加服务或渲染依赖。 ## 3. 环境与脚本路径 ```bash # ffmpeg: brew install ffmpeg | apt install ffmpeg | choco install ffmpeg export MIMO_API_KEY=*** ``` 同一个 MiMo key 驱动: - ASR:`mimo-v2.5-asr` - VLM:`mimo-v2.5` - TTS:`mimo-v2.5-tts` TTS 供应商由 `--tts-provider mimo-tts|fish-audio|index-tts`(或 `TTS_PROVIDER`)透传给配音技能;Fish Audio 与自托管 index-tts 各自的环境变量、默认音色和能力限制见该技能。ASR/VLM 始终使用 MiMo。`--doctor` 只做离线配置检查。 `tp-*` Token Plan 密钥默认使用中国区集群,可用 `MIMO_TOKEN_PLAN_CLUSTER` 覆盖。 可选能力: - `--mimo-video-overview`:按场景块补充 MiMo 视频理解。 可覆盖配置见 `references/config-playbook.md`,`final_qc.json` 的字段见 `references/data-schema.md`。 下面的 `scripts/...` 均相对于本技能目录。若执行器从仓库根目录启动,请给脚本路径加上本技能的绝对目录。脚本启动后会自行定位兄弟技能和资源。 ## 4. 标准解说流程(audio-mode narration) ### 4.1 背景调研 若能识别影片、剧集或主题,先按 video-understanding 技能的调研指南 `research-guide.md` 调研并写入 `work_dir/background_research.json`。视频理解会把人物名和剧情背景折入 VLM 上下文,避免只得到“黑衣男子”一类模糊描述。无法识别来源时可跳过。 多视频运行同样写在项目 `work_dir` 下:recap 在每个来源理解前把它复制到 `sources//`(来源目录里没有、或比项目文件旧时才复制,所以某一集需要单独的调研时,在项目文件之后写入该来源目录即可)。 ### 4.2 分析并暂停创作 ```bash python3 scripts/recap.py