# 视频分析.skill

> Analyze public video URLs, local media, subtitles, and transcripts into traceable knowledge reports. Use when the user wants to learn what a video teaches, extract and explain knowledge, assess claims, or ask evidence-grounded follow-ups.

- Skill: `ttg6/skill` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add ttg6/skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ttg6/skill/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ttg6 (https://skillmd.com/u/ttg6)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ttg6/skill

---


# 通用音视频知识分析

把视频转成可复核的知识报告。默认目标是学习内容，不做短视频运营分析。保留用户可见报告模板、Obsidian 目录、文章版和 Mermaid 思维导图；速度优化不能降低音频/字幕证据门槛。

## 选择输入与模式

- 接受公开 URL、本地音视频、SRT/VTT、Whisper JSON 或带时间的逐字稿。已有逐字稿时直接预处理，绝不重复下载或转写。
- URL 使用 `python scripts/analyze_url.py "<URL>" --output-dir "<工作区>" --browser-fallback`。字幕优先；否则仅下载独立音频。只有用户明确要求画面时追加 `--video`。
- 默认使用 `--mode fast`：`medium`、beam 1、段落级时间戳。它适合普通短视频，仍输出完整现有报告模板。
- 用户明确要逐词对齐、最高转写质量、重要访谈或高风险引用时才使用 `--mode deep`；CUDA 下为 `large-v3`、beam 5、词级时间戳。`--mode balanced` 是中间选项。模型默认离线复用共享缓存，首次下载必须由用户明确同意 `--allow-model-download`。
- 使用 `--reuse-existing` 断点续跑同一个视频工作区；输入变更时新建工作区，不复用旧 `analysis.json`。

## 不可突破的证据门槛

1. 不绕过登录、DRM、付费墙、验证码或平台安全措施；不要输出 Cookie、Token 或授权头。
2. 没有可用字幕或健康音轨就立即停止。不得根据标题、简介、截图或 OCR 猜测视频内容，也不得静默降级到视觉分析。
3. 音轨必须经 `audio_gatekeeper.py` 验证：存在音频流、时长大于 0、采样率至少 16kHz（必要时重采样）且有声比例大于 10%。正常 URL 流程复用首次成功的 `audio_health.json`，不要为同一文件再全量扫描。
4. 页面文案只可识别来源，不能当作口播或知识证据。画面结论只在用户明确需要画面且实际查看过帧文件时写入。

## 快速且可核验的分析

1. 统一入口会执行解析、门禁、转写、清洗分章，并输出 `analysis-request.json`。`analysis_input_ready` 不是完成状态。
2. 宿主只做一次符合 `references/knowledge-report-schema.json` 的结构化抽取，保存 `analysis.json`，随后执行返回的 `resume_command`。不要把同一短视频拆成摘要、金句、知识点等多轮调用。
3. 对模型只传段落级证据（`segment_id`、起止时间、speaker、文本）和章节引用；词级时间戳与章节全文留在本地文件中供核验，不能重复塞入模型上下文。
4. 遵守请求中的 `analysis_limits`：选择最有学习价值且不重复的内容。短视频通常为 3–4 个核心知识点，而非穷举每一句话。
5. 运行 `render_report.py` 与 `build_fts_index.py` 完成本地校验和索引。原话必须逐字存在于逐字稿；证据、Schema 或就绪闸门失败时不得宣告完成。

## 报告与追问

- 报告以视频标题命名；抖音为 `抖音视频分析报告：{标题}.md`，其他来源为 `视频分析报告：{标题}.md`。用 `report_filename.py` 得到安全文件名。
- 固定报告标题下先列出来源、解析页面、时长和处理状态，再包含核心知识、内容还原、推导链、知识点详解、事实/观点/推断、学习转化、关键原话、Mermaid 导图、视频内容文章版。Obsidian 目录使用 `[[#标题|显示文字]]`；面向用户的 Markdown 不显示 `seg_XXXX`、HTML 锚点、逐句毫秒时间或 `Speaker_Unknown`。
- 文章版只把已验证的字幕/ASR 碎片按顺序合并成自然段，可补阅读标点但不补充事实或改变措辞顺序。
- 追问先运行 `search_fts.py` 召回少量片段，再基于召回证据回答并附时间戳；不要回灌完整逐字稿。

## 按需读取

- 短视频 JSON 字段：`references/knowledge-report-schema.json`；长视频分章：`references/chapter-schema.json`。
- 需要调整默认值时读 `config.example.yaml`；需要检查渲染结构时读 `templates/report.md.j2`。
- 媒体失败时先检查 `resolver.json`、`audio_health.json`、`transcription.runtime.json` 与 `pipeline.json`，根据其中的结构化错误处理；不要靠重复下载或猜测解决。

