video-minutes · git:20260830.ad65525 · 2026-08-30 · sha256 2384bb5198e635d0

video-minutes git:20260830.ad65525A

Immutable. This exact content is served forever at /api/v1/blob/2384bb5198e635d0.

---
name: video-minutes
description: |
  智能视频纪要生成器 - 自动提取视频语音、生成字幕、智能分类总结,输出结构化纪要文档

  **MUST use this skill when user mentions:**
  - 处理视频、生成视频纪要、视频转文字、视频总结
  - 会议录像整理、网课笔记、视频内容提取
  - "帮我总结这个视频"、"提取视频字幕"、"视频转笔记"
  - 录屏整理、直播回放分析、培训视频归档

  **支持的视频类型 (auto-detected):**
  - meeting: 会议录像 → 待办事项 + 决议 + 负责人
  - lecture: 课程/讲座 → 知识点图谱 + 时间戳
  - interview: 访谈/采访 → Q&A 整理 + 观点对比
  - presentation: 演讲/汇报 → 核心论点 + 数据可视化
  - podcast: 播客/对话 → 金句摘录 + 话题索引
  - tutorial: 教程/演示 → 步骤清单 + 关键截图提示

  **支持的数据源:**
  - 本地视频文件 (.mp4/.mov/.mkv/.avi)
  - Zoom 录制自动扫描
  - 腾讯会议/钉钉录制
  - YouTube/B站链接 (yt-dlp)
  - 网盘分享链接 (阿里云盘/百度网盘)

  **Do NOT use when:**
  - 仅需视频转文字无总结需求 (直接用 whisper)
  - 视频无音频轨道或音频质量极差
  - 实时视频流处理 (需先录制)
  - 视频时长超过 4 小时 (建议分段处理)

  **触发关键词:** video, 视频, 纪要, 字幕, 总结, meeting, 会议, 课程
---

# Video Minutes Skill

智能视频纪要生成器,支持多类型视频自动分类、智能总结、任务分发。

## 核心特性

- 🤖 **AI 自动分类**: 自动识别视频类型(会议/课程/访谈等),应用对应模板
- 📝 **智能总结**: 提取核心要点、行动项、关键决策
- 🏷️ **任务分发**: 通过 @tags 将待办分发给其他 skill 执行
- 🔗 **多源支持**: 本地文件、Zoom/腾讯会议录制、在线视频链接
- 🌐 **多语言**: 自动检测语言,支持中英日等 99+ 语言
- 📊 **多种输出**: Markdown/Obsidian/Notion/飞书文档

---

## 首次设置 (First-Time Setup)

**配置优先级检测**:

```bash
# 检测配置文件存在性
test -f "video-minutes/config.yaml" && echo "project"
test -f "$HOME/.ai-agent/skills/video-minutes/config.yaml" && echo "user"
test -f "$HOME/.video-minutes-config.json" && echo "legacy"
```

| 结果 | 操作 |
|------|------|
| 找到 YAML | 读取并应用 |
| 找到 legacy JSON | 迁移到 YAML 格式 |
| 未找到 | **执行首次设置向导** (阻塞操作) |

### 首次设置向导 (BLOCKING)

**⚠️ CRITICAL**: 未检测到配置文件时,**必须**先完成设置向导,**阻塞**后续所有视频处理操作。

使用 `AskUserQuestion` 一次性呈现所有问题,等待用户回答后再继续。

---

**🎬 Video Minutes 配置向导**

```
让我为您配置视频纪要生成的默认偏好:

**1. 默认输出语言**
视频语音通常为哪种语言?
- 🌐 自动检测 (推荐)
- 🇨🇳 中文
- 🇺🇸 英文
- 🇯🇵 日文
- 其他: __________

**2. Whisper 模型选择**
语音转文字精度 vs 速度偏好?
- ⚡ Tiny (最快,适合快速预览)
- 🚀 Base (推荐,平衡速度质量)
- 🎯 Small (更精准,慢 2x)
- 🏆 Medium (高精度,慢 4x)
- 💎 Large (最佳质量,慢 8x,需 GPU)

**3. 输出格式偏好**
纪要文档保存为哪种格式?
- 📝 Markdown (推荐,通用)
- 📔 Obsidian (带双链和标签)
- 📊 Notion (自动同步到数据库)
- 🚀 飞书文档 ( Lark )

**4. 输出内容选项**
纪要包含哪些内容?(多选)
- ✅ 内容摘要 (一句话总结)
- ✅ 核心要点 (分点列出)
- ✅ 详细时间线 (带时间戳)
- ✅ 行动项追踪 (TODO 列表)
- ✅ 完整字幕 (可选折叠)
- ✅ 发言人识别 (如果可区分)

**5. 自动扫描路径** (可选)
自动监控哪些目录的新视频?
- 📹 Zoom 录制文件夹
- 📹 腾讯会议录制
- 📹 钉钉会议录制
- 📂 自定义路径: __________

**6. 任务分发集成**
检测到行动项时如何分发?
- ❓ 先问我确认 (推荐)
- 🤖 自动分发到对应 skill
- 📋 仅汇总列出,不分发

**7. 视频类型偏好**
您最常处理的视频类型?
- 💼 会议录像 (提取 TODO)
- 📚 课程讲座 (知识笔记)
- 🎙️ 访谈播客 (Q&A 整理)
- 🎤 演讲汇报 (观点提炼)
- 🛠️ 教程演示 (步骤清单)
```

**配置保存路径**: `~/.claude/skills/video-minutes/config.yaml`

```yaml
# config.yaml 示例
version: "1.1.0"

output:
  language: auto  # auto/zh/en/ja
  format: obsidian  # markdown/obsidian/notion/lark
  directory: "~/Documents/video-minutes"
  filename_template: "{date}-{type}-{title}"

content:
  include_summary: true
  include_key_points: true
  include_timeline: true
  include_action_items: true
  include_transcript: true
  transcript_collapsed: true  # 默认折叠
  speaker_identification: true
  max_summary_points: 10

whisper:
  model: base  # tiny/base/small/medium/large/large-v1/large-v2/large-v3
  device: auto  # auto/cpu/cuda/mps
  compute_type: int8  # int8/int8_float16/float16/float32
  language: null  # null=auto

classification:
  enabled: true
  confidence_threshold: 0.7

dispatch:
  confirm_before_dispatch: true
  auto_dispatch_tags: ["@reminder"]  # 自动分发的标签

scanning:
  enabled: true
  interval_minutes: 60
  paths:
    - "~/Documents/Zoom"
    - "~/Documents/腾讯会议"

integrations:
  obsidian_vault: "~/Obsidian/VideoNotes"
  notion_database_id: null
  lark_webhook: null
```

---

## 使用方法

### 命令行用法

```bash
# 基本用法
python video-minutes/generate_minutes.py <视频路径>

# 指定类型 (跳过自动分类)
python video-minutes/generate_minutes.py meeting.mp4 --type meeting

# 指定输出
python video-minutes/generate_minutes.py lecture.mp4 -o ~/Notes/课程.md

# 指定语言
python video-minutes/generate_minutes.py interview.mp4 --language zh

# 使用更高精度模型
python video-minutes/generate_minutes.py presentation.mp4 --model medium

# 仅提取字幕不生成纪要
python video-minutes/generate_minutes.py video.mp4 --transcript-only

# 批量处理目录
python video-minutes/generate_minutes.py ~/Recordings/ --batch
```

### 自动扫描

```bash
# 扫描配置路径中的新视频
python video-minutes/scripts/scan-and-process.py

# 扫描指定目录
python video-minutes/scripts/scan-and-process.py ~/Downloads --since-hours 24

# 查看待处理队列
python video-minutes/scripts/queue.py --list

# 查看处理统计
python video-minutes/scripts/queue.py --stats
```

---

## 视频类型分类系统

### 自动分类逻辑

```
视频文件
    ↓
音频指纹分析 + 内容采样
    ↓
分类模型 (Gemini/本地模型)
    ↓
类型判断 + 置信度评分
    ↓
选择对应模板生成纪要
```

### 分类维度

| 维度 | 检测指标 | 影响 |
|------|----------|------|
| **说话人数量** | 单/双/多人 | note/podcast vs meeting/interview |
| **对话模式** | 独白/问答/讨论 | lecture vs interview vs meeting |
| **内容特征** | 任务/知识点/观点 | 提取 TODO vs 知识图谱 vs 金句 |
| **视觉线索** | PPT/白板/屏幕分享 | presentation vs tutorial |
| **时长** | <15min/15-60min/>60min | 详略程度 |

### 7 种视频类型

#### 1. Meeting (会议录像)
**特征**: 多人参与、任务分配、决策讨论
**输出重点**:
- 参会人员列表
- 核心决议清单
- 行动项追踪表(含负责人、截止日期)
- 待跟进事项

**模板**: `templates/meeting.md`

```markdown
# 会议纪要: {{title}}

## 📋 会议信息
- **日期**: {{date}}
- **时长**: {{duration}}
- **参会人**: {{participants}}
- **视频**: {{video_path}}

## 🎯 核心决议
{{decisions}}

## ✅ 行动项
| 任务 | 负责人 | 截止日期 | 优先级 |
|------|--------|----------|--------|
{{action_items}}

## 📍 关键时间节点
{{timeline}}

## 💬 重要讨论摘要
{{discussion_summary}}

---
{{#if include_transcript}}
<details>
<summary>📝 完整字幕 (点击展开)</summary>

{{transcript}}
</details>
{{/if}}
```

#### 2. Lecture (课程/讲座)
**特征**: 单/双主讲人、结构化内容、知识点密集
**输出重点**:
- 课程大纲/目录
- 核心概念图谱
- 重点摘录(带时间戳)
- 延伸阅读建议

**模板**: `templates/lecture.md`

```markdown
# 📚 课程笔记: {{title}}

## 📖 课程信息
- **讲师**: {{speaker}}
- **时长**: {{duration}}
- **主题**: {{topics}}

## 🗺️ 知识图谱
```mermaid
{{knowledge_graph}}
```

## ⏱️ 章节速览
{{chapters}}

## 📝 核心概念
{{key_concepts}}

## 💡 重点摘录
{{key_quotes}}

## ❓ 疑问与思考
{{questions}}

## 🔗 延伸阅读
{{references}}
```

#### 3. Interview (访谈/采访)
**特征**: 问答形式、双方观点、深入探讨
**输出重点**:
- Q&A 结构化整理
- 双方核心观点对比
- 金句摘录
- 话题索引

**模板**: `templates/interview.md`

#### 4. Presentation (演讲/汇报)
**特征**: PPT 辅助、数据展示、观点阐述
**输出重点**:
- 核心论点(金字塔结构)
- 关键数据/图表描述
- 结论与建议
- 演讲技巧点评(可选)

**模板**: `templates/presentation.md`

#### 5. Podcast (播客/对话)
**特征**: 轻松对话、话题跳跃、金句频出
**输出重点**:
- 话题时间索引
- 金句摘录
- 推荐片段(高光时刻)
- 相关资源链接

**模板**: `templates/podcast.md`

#### 6. Tutorial (教程/演示)
**特征**: 步骤演示、操作指导、屏幕录制
**输出重点**:
- 步骤清单(可勾选)
- 关键截图提示
- 常见问题/踩坑点
- 快捷键/命令汇总

**模板**: `templates/tutorial.md`

#### 7. Note (个人录屏/语音备忘)
**特征**: 自言自语、快速记录、想法片段
**输出重点**:
- 清理格式化文本
- 想法归类标签
- 待办提取
- 关联笔记链接

**模板**: `templates/note.md`

---

## 任务分发系统 (@tags)

> **分发为可选能力**:下方 @tags 对应的 `content-publisher` / `cron` / `gcal` / `calendar` / `image-gen` / `agent-swarm` / `transcribe` 等兄弟技能在多数环境未安装。当目标技能不可用时,AI 仅将行动项整理为**本地 TODO 清单(Markdown)**,不强制分发;仅当对应技能确实可用时才尝试派发。

### 提取标签规则

AI 从视频中提取行动项时,自动识别并添加 @tags:

| Tag | 触发条件 | 分发给 |
|-----|----------|--------|
| `@user` | 指派给具体人员 | 用户通知 |
| `@assistant` | 需要 AI 执行 | 内置工具 |
| `@dev` | 代码相关任务 | 开发助手 |
| `@design` | 设计/前端任务 | 设计助手 |
| `@article` | 需要写文章 | content-publisher |
| `@reminder` | 需要提醒 | cron/gcal |
| `@research` | 需要调研 | web_search |
| `@design` | 需要设计稿 | image-gen |
| `@meeting` | 需要安排会议 | calendar |
| `@review` | 需要审核 | 通知相关人员 |

### 确认机制流程

```
视频处理完成
    ↓
提取行动项 + 自动标记 @tags
    ↓
向用户展示提取结果
    ↓
用户确认/修改/取消
    ↓
分发到对应 skill 执行
    ↓
更新任务追踪状态
```

### 示例交互

**AI**: 已从会议视频中提取以下行动项:

```markdown
### @dev
- [ ] 实现用户认证模块的 JWT 刷新机制 (deadline: 周五)
- [ ] 优化数据库查询性能,目标 QPS > 1000

### @article
- [ ] 撰写"微服务架构实践"技术博客 (deadline: 下周四)

### @reminder
- [ ] cron: 0 10 * * 1 周报提醒
- [ ] 2026-04-01 跟进 Q2 OKR 进度

### @meeting
- [ ] 安排下周与产品团队的评审会
```

**用户**: 第1项改成 @张三,第2项优先级降低

**AI**: ✅ 已更新,确认分发吗?

**用户**: 确认

**AI**: 🚀 正在分发任务...
- ✅ @Codex 任务已发送至 agent-swarm
- ✅ @article 草稿已创建在 ~/Drafts/
- ✅ @reminder 已添加到 cron
- ✅ @meeting 会议邀请已发送到日历

---

## 数据源集成

### 已支持

| 来源 | 接入方式 | 自动扫描 |
|------|----------|----------|
| 本地视频文件 | 直接路径 | ❌ |
| Zoom 录制 | `~/Documents/Zoom` | ✅ |

### 计划中

| 来源 | 接入方式 | 状态 |
|------|----------|------|
| 腾讯会议 | `~/Documents/腾讯会议` | 🔜 |
| 钉钉会议 | 自定义路径 | 🔜 |
| YouTube | yt-dlp + URL | 🔜 |
| Bilibili | yt-dlp + URL | 🔜 |
| 阿里云盘 | 分享链接解析 | 🔜 |
| 百度网盘 | 分享链接解析 | 🔜 |
| Google Drive | API 集成 | 🔜 |

---

## 输出格式详情

### Markdown (默认)

标准 Markdown 格式,兼容所有编辑器。

### Obsidian

```markdown
---
date: {{date}}
type: {{video_type}}
tags: [video-minutes, {{type_tag}}]
source: {{video_path}}
duration: {{duration}}
---

# {{title}}

## 关联笔记
- [[相关笔记1]]
- [[相关笔记2]]

## 内容
{{content}}

## 行动项
- [ ] #task 任务1 @{{assignee}}
```

### Notion

自动创建数据库条目,包含:
- 标题、日期、类型、时长
- 内容块(Toggle 列表)
- 行动项(Checkbox)
- 嵌入视频链接

### 飞书文档

调用 Lark API 创建文档,支持:
- 富文本格式
- @提及用户
- 插入任务清单

---

## 依赖安装

### 必需依赖

```bash
# ffmpeg
brew install ffmpeg              # macOS
sudo apt install ffmpeg          # Ubuntu
winget install Gyan.FFmpeg       # Windows

# Python 依赖
pip install -r requirements.txt
```

### requirements.txt

```
# 🚀 insanely-fast-whisper (高性能转录)
faster-whisper>=1.0.0

# 其他依赖
ffmpeg-python>=0.2.0
pyyaml>=6.0
requests>=2.31.0
notion-client>=2.2.1
yt-dlp>=2023.12.30
onnxruntime>=1.16.0
torch>=2.0.0
```

---

## 性能优化

### insanely-fast-whisper 优势

基于 [faster-whisper](https://github.com/SYSTRAN/faster-whisper),比原始 Whisper **快 2-4 倍**:

| 特性 | openai-whisper | faster-whisper |
|------|----------------|----------------|
| **速度** | 1x (基准) | 2-4x ⚡ |
| **内存** | 较高 | 降低 50% 💾 |
| **精度** | 标准 | 相同 ✓ |
| **量化** | float32 | int8/int16 🔧 |
| **VAD** | 无 | 内置 🎙️ |

### 模型选择建议

| 模型 | 显存需求 | 适合场景 |
|------|----------|----------|
| `tiny` | ~1GB | 快速预览、实时测试 |
| `base` | ~1GB | **推荐**,平衡速度质量 |
| `small` | ~2GB | 更精准,慢 2x |
| `medium` | ~5GB | 高精度,慢 4x |
| `large-v3` | ~10GB | 最佳质量,慢 8x |

### 设备与精度配置

```yaml
whisper:
  device: auto        # auto/cpu/cuda/mps
  compute_type: int8  # int8/int8_float16/float16/float32
```

- **int8**: 最快,内存占用最小,质量损失极小
- **float16**: 更快,需要 GPU
- **float32**: 标准精度

---

## 目录结构 (更新)

```
video-minutes/
├── SKILL.md                          # 本文件
├── config.yaml                       # 默认配置模板
├── README.md                         # 快速开始指南
├── requirements.txt                  # Python 依赖 ⭐
├── scripts/
│   ├── generate_minutes.py           # 主入口 ⭐
│   ├── insanely_fast_transcriber.py  # 高性能转录器 ⭐ NEW
│   ├── video_processor.py            # 视频处理
│   ├── classifier.py                 # 视频类型分类
│   ├── config_manager.py             # 配置管理
│   └── dispatcher.py                 # 任务分发
├── templates/                        # 类型特定模板
│   ├── meeting.md
│   ├── lecture.md
│   ├── interview.md
│   ├── presentation.md
│   ├── podcast.md
│   ├── tutorial.md
│   └── note.md
└── references/
    └── config/
        └── config-schema.md          # 配置 schema
```

---

## 配置参考

### 完整配置项

| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| `output.language` | string | "auto" | 输出语言 |
| `output.format` | string | "markdown" | 输出格式 |
| `output.directory` | string | "~/video-minutes" | 输出目录 |
| `whisper.model` | string | "base" | 转录模型 |
| `whisper.device` | string | "auto" | 计算设备 |
| `classification.enabled` | bool | true | 启用分类 |
| `dispatch.confirm_before_dispatch` | bool | true | 分发前确认 |
| `scanning.enabled` | bool | true | 启用自动扫描 |
| `scanning.interval_minutes` | int | 60 | 扫描间隔 |

---

## 故障排除

### 常见问题

**Q: Whisper 下载模型失败**
A: 设置镜像 `export WHISPER_MIRROR=https://hf-mirror.com`

**Q: 视频无音频**
A: 检查视频编码 `ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1 input.mp4`

**Q: 分类不准确**
A: 手动指定类型 `--type meeting` 或调整 `classification.confidence_threshold`

**Q: 处理超时**
A: 长视频建议分段 `--segment-duration 1800` (30分钟一段)

---

## 相关 Skill

> 以下为可选兄弟技能,本仓库快照未包含;缺失时不影响核心纪要功能,相关行动项降级为本地 TODO。

| Skill | 关系 |
|-------|------|
| `task-dispatcher` | 接收 `@dev` `@design` 代码/设计任务 |
| `content-publisher` | 接收 `@article` 文章任务 |
| `cron` / `gcal` | 接收 `@reminder` 提醒任务 |
| `elyfinn-voice-notes` | 语音备忘录处理 (姊妹 skill) |
| `transcribe` | 纯转录功能 (无总结) |

---

## 版本历史

### v2.0.0 (2026-03-25) - 当前
- 🚀 **新增 insanely-fast-whisper 支持** - 基于 faster-whisper,速度提升 2-4 倍
- ⚡ **性能优化** - 支持 int8 量化、VAD 过滤、词级时间戳
- 💾 **内存优化** - 显存占用降低 50%
- 🔧 **新配置项** - `compute_type` 支持多种精度模式

### v1.2.0 (2026-03-21)
- ✅ 新增视频类型自动分类系统 (7种类型)
- ✅ 新增任务分发集成 (@tags)
- ✅ 新增 Obsidian/Notion/飞书多格式输出
- ✅ 新增首次设置向导
- ✅ 新增自动扫描队列系统
- ✅ 新增发言人识别

### v1.1.0 (2026-03-15)
- 🔧 重构配置系统 (YAML 格式)
- 🔧 支持多语言自动检测
- 🔧 优化 Whisper 模型选择逻辑

### v1.0.0 (2026-03-01)
- 🎉 初始版本
- ✅ 基础视频转文字
- ✅ Markdown 纪要生成
- ✅ 命令行接口

---

## Roadmap

- [ ] 实时转录 (直播场景)
- [ ] 多模态分析 (PPT 内容提取)
- [ ] 视频摘要生成 (短视频)
- [ ] 团队协作功能 (共享队列)
- [ ] 移动端支持 (iOS Shortcuts)

---

## 备选方案

- **多模态视频理解**:对于 2 小时以内的短视频,当前多模态模型可直接理解视频内容并生成纪要,无需完整的 ASR→转录→LLM 流水线。适合快速预览和简单总结场景。长视频(>2h)或需要精确字幕的场景仍推荐使用本技能的完整处理流程。