video-assemble
合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录, 最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置; 输出 recap…
把视频分析为结构化理解索引:场景检测、ASR 转写、逐场景 VLM 观察、静音窗口、融合时间线和写作 brief。 用于理解、索引或总结视频,也作为后续创作前的分析阶段。输入视频文件;输出 scenes.json、 asr_result.json、vlm_analysis.json、silence_periods.json、timeline_fusion.json、agent_narration_brief.md。 触发词:视频理解、视频分析、视频索引、video understanding、analyze video、看懂视频。
$ npx -y skills add zenstory-ai/video-recap-skills --skill video-understanding --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/video-understandingContext preview
The summary Claude sees to decide when to auto-load this skill.
把视频分析为结构化理解索引:场景检测、ASR 转写、逐场景 VLM 观察、静音窗口、融合时间线和写作 brief。 用于理解、索引或总结视频,也作为后续创作前的分析阶段。输入视频文件;输出 scenes.json、 asr_result.json、vlm_analysis.json、silence_periods.json、timeline_fusion.json、agent_narration_brief.md。 触发词:视频理解、视频分析、视频索引、video understanding、analyze video、看懂视频。
name: video-understanding user-invocable: false description: 把视频分析为结构化理解索引:场景检测、ASR 转写、逐场景 VLM 观察、静音窗口、融合时间线和写作 brief。 用于理解、索引或总结视频,也作为后续创作前的分析阶段。输入视频文件;输出 scenes.json、 asr_result.json、vlm_analysis.json、silence_periods.json、timeline_fusion.json、agent_narration_brief.md。 触发词:视频理解、视频分析、视频索引、video understanding、analyze video、看懂视频。
本技能把源视频转成 Agent 与下游阶段可读取的理解索引,以**素材观察员 / 场记**的角色记录证据:
1. **场景检测**:写 `scenes.json`,包含切点、时长和废片段过滤结果。 2. **抽帧**:为视觉分析提取代表帧。 3. **ASR**:通过 `mimo-v2.5-asr` 写粗分段对白 `asr_result.json`,并写 `asr_timing_evidence.json` 说明可用性、有限时间精度与文本修正来源。 4. **静音检测**:写 `silence_periods.json`,标注安静窗口与 `has_speech`。 5. **VLM 观察**:写 `vlm_analysis.json`,包含场景描述、深层分析和 `frame_facts`。 6. **时间线融合与创作 brief**:写 `timeline_fusion.json`、`asr_writing_chunks.json` 和 `agent_narration_brief.md`。
各阶段只有在输出产物与 provenance sidecar 同时匹配当前视频及影响结果的设置时才会复用;`--force` 强制重算。
# ffmpeg: brew install ffmpeg | apt install ffmpeg | choco install ffmpeg export MIMO_API_KEY=***
ASR 使用 `mimo-v2.5-asr`;VLM 使用 `mimo-v2.5`。`--skip-asr` 可跳过对白转写,但完整理解仍需要 `MIMO_API_KEY` 运行 VLM。`--mimo-video-overview` 可开启按场景块的视频概览。未设置 key 时重跑会复用已缓存的转写、画面分析、概览与故事索引(key 决定的默认 endpoint 不参与比对);需要请求模型的 consolidation 记为 `skipped_no_key`,不发请求。缓存对不上(例如复制 work_dir 时没保留文件时间)而已有转写时,运行停下并保留转写:用 `cp -p` / `cp -Rp` / `rsync -t` 保留时间重新复制,或设置 key 后重跑(会重新转写)。不要用 `--skip-asr` 绕过,它会把现有转写替换成 `[]`。
若 `work_dir/background_research.json` 存在,本技能会把剧情梗概和角色名折入 VLM 上下文;`--context` 可补充一条简短提示。
ASR 把分窗音频发给 MiMo ASR;逐场景 VLM 把代表帧、帧时间和分析提示发给 MiMo;启用 `--mimo-video-overview` 时,还会把按场景截取的视频片段发给 MiMo 视频模型。故事索引汇总和可选 ASR 清洗发送的是画面描述、转写与背景资料文字。
请求使用 MiMo 的 chat 接口。`MIMO_API_URL` 可指定地址;ASR 与视频概览可分别用 `MIMO_ASR_API_URL`、`MIMO_VIDEO_API_URL` 覆盖,凭据同样支持各自的 key。未覆盖时,按量 key 使用 `https://api.xiaomimimo.com/v1`,Token Plan key 使用 `MIMO_TOKEN_PLAN_CLUSTER` 选择的集群。逐场景帧分析与汇总使用 `MIMO_API_KEY`。
`--skip-asr` 只关闭音频转写,`--no-consolidate` 只关闭索引汇总;它们不会关闭 VLM。需要只在本地处理已有产物时,使用 `--brief-only` 或 `--edited-storyboard-only`,这两条路径不调用 API。
下面的 `scripts/...` 均相对于本技能目录。若执行器从仓库根目录启动,请给脚本路径加上本技能的绝对目录。
python3 scripts/understand.py <video> --work-dir <work_dir> [选项]
| 选项 | 默认 | 作用 | |------|------|------| | `<video>` | 必填 | 源视频 | | `--work-dir` | 必填 | 产物目录;不存在时创建 | | `--context "..."` | 空 | 补充给 VLM 的简短上下文(节目名、角色名),与 `background_research.json` 合并 | | `--scene-threshold` | `0.1` | 场景检测阈值 | | `--style` | `纪录片` | 写进创作简报的解说风格 | | `--edit-mode full\|cut` | 不设 | 写进简报的 recap 模式;`cut` 时按剪后时长估算旁白预算,已有 `edited_source.mp4` 时句末锚点改用剪后时间 | | `--target-duration` | 不设 | 写进简报的 cut 目标时长;尚无 `clip_plan_validated.json` 时用它估算旁白预算 | | `--skip-asr` | 关 | 不转写对白,把 `asr_result.json` 写成 `[]`(已有转写会被覆盖),ASR 证据标为显式跳过 | | `--mimo-video-overview` | 关 | 按场景块运行 MiMo 视频概览,并作为逐场景主描述 | | `--force` | 关 | 忽略缓存,全部重算 | | `--brief-only` | 关 | 只用现有产物重建 `agent_narration_brief.md`,不抽帧、不调 API | | `--edited-storyboard-only` | 关 | 只按 `clip_plan_validated.json` 写剪后时间线 `storyboard/edited_storyboard.*`,并在已有的 `agent_narration_brief.md` 顶部加 storyboard 指引;多源计划(带 `sources`)从各来源 `source_work_dir` 的 `frames/` 按其 `frames_manifest.json` 的 fps 取帧,tile 标 `S1`/`S2`…;不抽帧、不调 API,故事板生成失败只记日志。与 `--brief-only` 互斥 | | `--consolidate` / `--no-consolidate` | 开 | 生成全局故事索引 `understanding_index.*` | | `--consolidate-asr` | 关 | 另外清洗 ASR 文本,写 `asr_clean.json` |
默认运行写出下表产物;各阶段产物旁的 `*.meta.json` 是缓存 provenance sidecar。
| 文件 | 内容 | |------|------| | `frames/frame_*.jpg`、`frames_manifest.json` | 按 fps 抽出的帧及其清单 | | `scenes.json` | 场景切点、起止时间与时长 | | `audio.wav` | 16 kHz 单声道音频,供 ASR、静音检测与句末锚点使用 | | `asr_result.json` | `[{start, end, text}]` 时间戳对白 | | `asr_timing_evidence.json` | ASR 可用性状态、粗窗口精度、glossary 前后文本,以及它所描述的源视频/音频/结果文件(路径存在性 + size/mtime) | | `silence_periods.json` | `[{start, end, duration, has_speech}]` 安静窗口 | | `speech_boundary_anchors.json` | ASR 句末标点对齐到短停顿的句末锚点;缺音频或 ASR 时 `status: unavailable` | | `vlm_analysis.json` | 逐场景描述、深层分析与 `frame_facts` | | `mimo_video_overview.status.json` | 视频概览状态(未启用时为 `disabled`);启用成功另写 `mimo_video_overview.json` | | `understanding_index.json`、`understanding_index.md` | 全局故事索引(`--no-consolidate` 时不写) | | `consolidation.status.json` | 故事索引与 ASR 清洗的运行状态 | | `storyboard/source_storyboard.{json,jpg}` | 原片时间线联系表(超页时续写 `_001.jpg` 等);已有 `clip_plan_validated.json` 时另写 `edited_storyboard.*`;`STORYBOARD=0` 关闭 | | `timeline_fusion.json` | VLM、ASR 与静音信息的统一时间线 | | `asr_writing_chunks.json` | 按句界和场景切分的 ASR 写作块 | | `agent_narration_brief.md` | Agent 首先阅读的创作简报 |
后续写作阶段根据创作简报与索引制定方案并写 `narration.json`。
不能当作已证实静音。`asr_timing_evidence.json` 的状态字段见 `references/data-schema.md`。
Claude Code / Codex skills that turn a video into a Chinese narration recap (视频解说): scene detection, ASR, VLM, script, TTS, ffmpeg assembly, optional editable JianYing / CapCut draft export (剪映草稿导出). Local ffmpeg + one MiMo key, no GPU. | 用 Claude Code skills 把视频做成中文解说成片,可选一键导出可编辑剪映草稿。
合成视频解说最终成片:把旁白音频铺到源视频上,按旁白窗口压低原声,生成 SRT / ASS 字幕并可烧录, 最后做响度标准化。作为最终合成阶段使用。输入源视频、tts_meta.json 与旁白位置; 输出 recap…
把长视频按 Agent 选择的原片区间剪成短片。作为两阶段创作流程中的剪辑环节,读取 clip_plan.json 与源视频, 输出 edited_source.mp4;随后 Agent 按输出时间线写…
从输入视频生成中文解说成片或原声剧情短片。用户提供 .mp4 / .mov / .mkv / .webm,并要求剪辑、添加旁白、 配音、总结、短剧/电视剧/电影/纪录片/科普解说时使用。负责编排 video-* 技能链:视频理解 → Agent…
按需把一部成片拆成可复用的制作参考:测镜头节奏与响度,标注段落与音轨分工,把原片事实与可迁移方法分开, 导出不含原片人名台词的 production_reference.json 供下次制作参考。不在默认生产路径上。…
对已完成分析的视频进行导演与剪辑策划,再写带时间戳的中文解说并校验;也处理已有短片的 宣发标题、花字修订和外部文案回填。普通策划输入 work_dir 的 agent_narration_brief.md 与…
把带时间戳的 narration.json 合成为中文解说音频。使用 MiMo TTS(mimo-v2.5-tts)或 Fish Audio(s2.1-pro-free)或显式配置的通用 IndexTTS HTTP 服务逐段生成语音,…