video-minutes
Skill11 starsChanged 50 days agoMITView on GitHub
智能视频纪要生成器:从视频音频生成结构化纪要 —— 提取语音、生成字幕、自动分类(会议/课程/访谈/演讲/播客/教程/备忘),输出核心要点、行动项与 @tags 任务分发,支持 Markdown/Obsidian/Notion/飞书。支持本地视频 (.mp4/.mov/.mkv/.avi)、Zoom/腾讯会议录制、YouTube/B站链接。触发词:处理视频、生成视频纪要、视频纪要、视频转文字、视频总结、提取视频字幕、视频转笔记、总结这个视频、会议录像整理、网课笔记、视频内容提取、录屏整理、直播回放分析、培训视频归档。Do NOT use when:仅需视频转文字无总结(直接用 whisper)、视频无音频轨道或音频质量极差、需要实时视频流处理(须先录制)、视频时长超过 4 小时(建议先分段)。
In this repository32 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-coding-styleSkill
- article-deconstructorSkill
- black-humor-writingSkill
- chatgpt-bridgeSkill
- claude-rememberSkill
- claude-simplifySkill
- clean-codeSkill
- curriculum-designSkill
- de-ai-writingSkill
- design-md-extractorSkill
- edulabSkill
- github-analyzerSkill
- graspSkill
- image-designSkill
- infocardSkill
- jira-server-pat-cliSkill
- llm-aiopsSkill
- mckinsey-coverSkill
- mlx-ttsSkill
- novel-writingSkill
- obsidian-kb-builderSkill
- pdf2mdSkill
- prompt-enhancerSkill
- skill-security-checkSkill
- snowflake-novel-writerSkill
- spec-imageSkill
- teach-eli5Skill
- video-dubbingSkill
- wechat-article-writerSkill
- weitoutiao-creatorSkill
- workbuddy-context-handoffSkill
The file
Files
video-minutes: 智能视频纪要生成器
Purpose
把一段视频转成一份可直接使用的结构化纪要:提取音轨、ASR 转录、按视频类型套用模板,
产出要点、时间线与行动项,并把行动项按 @tags 派发给对应 skill。技能的价值在于
分类正确、模板选对、行动项可追踪,而不是把语音原样抄成文字。
When to Use
- 用户给出视频/录屏/录音文件,或会议录像、网课、访谈、播客、直播回放,要求整理成笔记或纪要。
- 用户要"总结这个视频""提取字幕""视频转笔记""会议纪要""网课笔记"。
- 需要从视频里抽出待办事项、决议、负责人,并希望后续自动跟进。
- 触发词:视频纪要、视频总结、视频转文字、提取视频字幕、录屏整理、培训视频归档、 meeting minutes、video summary、transcribe video。
When NOT to Use
- 只想把语音转成文字、不需要总结或分类 -> 直接用 whisper,不必走本技能。
- 需要把视频翻译并配上配音/双语字幕 -> 交给
video-dubbing。 - 需要给视频生成封面或配图 -> 交给
image-design/mckinsey-cover。 - 视频无音轨、或音轨损坏到无法识别。
- 需要实时/流式转写(本技能是离线批处理,须先录制)。
- 时长超过 4 小时的视频,先分段再处理。
Workflow
- 检测配置(阻塞):按
scripts/config_manager.py的优先级查找./.opencode/skills/video-minutes/config.yaml->~/.opencode/skills/video-minutes/config.yaml-> legacy~/.video-minutes-config.json。命中则读取;命中 legacy 则迁移;全部未命中时 必须先完成首次设置向导并等待用户回答,否则不得继续。详见references/config/first-time-setup.md。 - 确定视频类型:用户指定了
--type就用它;否则运行分类器,把检测到的类型和置信度 明确告知用户,再继续。 - 执行处理:运行主入口脚本,传入视频路径与所需参数(见
## Scripts)。 - 读取并核对输出:从返回的
output_path打开纪要,确认要点、时间线、行动项非空且 与字幕一致;缺项时回退到类型模板补齐,不要编造视频中不存在的内容。 - 行动项分发:把提取到的行动项与
@tags展示给用户,等确认后再派发;目标 skill 不可用时 降级为本地 TODO 清单(见references/task-dispatch.md)。 - 交付:用
present_files展示生成的纪要文件,并附一句类型、时长与输出路径说明。
Decision Rules
视频类型路由(--type auto 时由分类器判定,模板位于 references/templates/):
| 类型 | 识别特征 | 输出重点 | 模板 |
meeting | 多人、任务分配、决策 | 决议 + 行动项负责人 + 时间节点 | meeting.md |
lecture | 单/双主讲、知识点密集 | 知识图谱 + 章节 + 重点摘录 | lecture.md |
interview | 问答、双方观点 | Q&A 整理 + 观点对比 | interview.md |
presentation | PPT、数据展示 | 金字塔论点 + 关键数据 | presentation.md |
podcast | 轻松对话、话题跳跃 | 话题索引 + 金句 + 高光片段 | podcast.md |
tutorial | 步骤演示、屏幕录制 | 步骤清单 + 截图提示 + 踩坑点 | tutorial.md |
note | 自言自语、碎片想法 | 格式化文本 + 标签 + 待办 | note.md |
其余分流:
- 分类置信度低于阈值,或分类结果为空 -> 回退
note,并向用户说明可手动指定--type。 - 只想要字幕、不要纪要 -> 加
--transcript-only,产出<视频名>-transcript.txt。 - 精度不够/专有名词识别差 -> 提升
--model(如small/medium/large)。 - 时长 > 4 小时或处理频繁超时 -> 加
--segment-duration 1800分段。 - 不确定是否需要完整流水线 -> 短视频(<= 2h)可考虑多模态直接理解,见
references/background.md。 - 用户指定输出格式 ->
--format markdown|obsidian|notion|lark,落盘细节见references/output-formats.md。
Constraints
- 配置未就绪不得继续:未检测到配置文件时,首次设置是阻塞步骤,禁止跳过或臆造默认值。
- 不得编造内容:要点、时间戳、决议、行动项必须可追溯到 ASR 字幕;不确定就标注不确定。
- 不臆造分发目标:
content-publisher/cron/gcal/calendar/image-gen/agent-swarm等兄弟技能多数环境未安装,缺失时只输出本地 TODO,不得声称已派发。 - 分发前必须确认:除非 tag 命中
dispatch.auto_dispatch_tags(默认@reminder) 或用户显式--skip-confirm,否则先征求确认。 - 隐私:原始视频与字幕默认不出本机,除非用户明确要求上传或同步到 Notion/飞书。
- 模板路径由代码约定:模板固定放在
references/templates/<type>.md,不要散落到别处。
Priority
- 首次设置阻塞 > 一切处理动作:配置未就绪时,任何转写请求都先被向导拦住。
- 类型准确性 > 处理速度:分类不确定时宁可问用户或降级到
note,不要套错模板。 - 用户确认 > 自动分发:确认机制永远优先于自动派发,除非标签在自动白名单内。
- 内容忠实 > 输出完整度:宁可缺项并标注,也不要补写视频里没有的内容。
Verification
交付前逐项确认:
- 配置已加载,或首次设置向导已完成(未命中配置时)。
- 视频类型与置信度已向用户说明,或已按
--type显式指定。 output_path存在且可打开;类型、时长与文件名一致。- 行动项已展示,分发前已获得确认(或命中自动白名单)。
- 未安装的兄弟技能没有被谎报为"已分发",降级路径为本地 TODO。
- 长视频未一次性硬跑,已按需分段。
Output
- Outcome:一份结构化 Markdown 纪要(默认落到
output.directory,默认~/Documents/video-minutes),含摘要、要点、时间线、行动项与可选折叠字幕。 - Done when:纪要文件已生成并可读、类型判定有依据、行动项已展示、分发(如需)已确认。
- Evidence:
output_path实际存在;内容可回溯到 ASR 字幕;文首记录类型与置信度; 未分发项以本地 TODO 形式列出。
References
按需加载,不要预先全读:
references/video-types.md— 需要理解或调整分类结果、查看分类维度与时长区间时读。references/task-dispatch.md— 要把行动项派发出去、或判断某数据源是否被支持时读。references/output-formats.md— 用户切换 Markdown/Obsidian/Notion/飞书,或要确认落盘路径与命名时读。references/transcription-engine.md— 需要换模型、调精度、排转录失败、装依赖时读。references/background.md— 用户问版本差异、能力边界,或要评估是否值得走完整流水线时读。references/config/config-schema.md— 要逐项修改config.yaml、确认字段默认值时读。references/config/first-time-setup.md— 命中"未检测到配置"分支、需要执行设置向导时读。references/templates/meeting.md、references/templates/lecture.md、references/templates/interview.md、references/templates/presentation.md、references/templates/podcast.md、references/templates/tutorial.md、references/templates/note.md— 生成对应类型纪要时由脚本按video_type取用;仅在查看或修改某类型版式时人工打开。
Scripts
<skill>/scripts/generate_minutes.py— 主入口。用法python3 <skill>/scripts/generate_minutes.py <视频路径> [--type T] [--language zh] [--model medium] [--format obsidian] [--transcript-only] [--batch] [--segment-duration 1800] [-o 输出] [--no-dispatch|--skip-confirm] [-v]; 返回处理结果字典,含output_path、transcript、action_items。<skill>/scripts/video_processor.py— 被主入口调用的流水线协调器(抽音轨 -> 转录 -> 分类 -> 套模板 -> 存盘 -> 提行动项);一般不由人直接运行。<skill>/scripts/insanely_fast_transcriber.py— faster-whisper 封装;python3 <skill>/scripts/insanely_fast_transcriber.py <音频文件>可独立转录并打印结果。<skill>/scripts/classifier.py— 启发式类型分类器,返回{type, confidence, reasoning, scores}。<skill>/scripts/config_manager.py— 配置加载/保存/校验与录制目录探测;被主入口自动调用。<skill>/scripts/dispatcher.py— 行动项解析与 @tag 分发;dispatch_batch()批量派发, 未实现的目标返回success: false。
Troubleshooting
- 模型下载失败 -> 设
HF_ENDPOINT=https://hf-mirror.com后重试。 - 视频无音频 -> 用
ffprobe检查音轨;确认 ffmpeg 已安装。 - 分类不准 -> 手动
--type,或调整classification.confidence_threshold。 - 处理超时 ->
--segment-duration 1800。 - 更多失败模式与参数细节见
references/transcription-engine.md。
Related Skills
video-dubbing— 视频翻译 + 配音 + 双语字幕,本技能不做配音。transcribe— 纯转录、无总结;只需文字时优先它。mlx-tts— 本机 TTS,可为纪要生成语音摘要。content-publisher/cron/gcal/agent-swarm— 可选分发目标,缺失时降级为本地 TODO。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

