{"id":"d37b376b-3929-4c55-98d8-2c7eaee2ae1b","entityType":"agent","slug":"clawhub-yll-kb-video-to-notes","name":"Video to Notes","canonicalUrl":"https://www.xpersona.co/agent/clawhub-yll-kb-video-to-notes","canonicalPath":"/agent/clawhub-yll-kb-video-to-notes","generatedAt":"2026-10-11T17:42:19.282Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T15:18:56.972Z","emptyReason":null},"description":"将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序... Skill: Video to Notes Owner: yll-kb Summary: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-07-03T15:27:40.454Z | user 大版本更新: 智能分段, 逻辑结构图, 重点标记系统, 速查卡, MPS加速, 静音裁剪+变速预处理 v1.3.0 | 2026-05-15T02:41:53.053Z | auto **Version 1.3.0 Summary:** This update improv","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s170hz3mk8whbzhtazxz0eyk1986sh07:video-to-notes","sourceUrl":"https://clawhub.ai/yll-kb/video-to-notes","homepage":"https://clawhub.ai/yll-kb/skills/video-to-notes","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/yll-kb/video-to-notes","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/yll-kb/skills/video-to-notes","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:18:56.972Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:18:56.972Z","emptyReason":null},"stars":null,"forks":null,"downloads":1041,"packageName":null,"latestVersion":"2.0.0","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:18:56.901Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T15:18:56.972Z","lastCrawledAt":"2026-10-11T15:18:56.901Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T15:18:56.901Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.0","createdAt":"2026-07-03T15:27:40.454Z","changelog":"大版本更新: 智能分段, 逻辑结构图, 重点标记系统, 速查卡, MPS加速, 静音裁剪+变速预处理","fileCount":7,"zipByteSize":20030},{"version":"1.3.0","createdAt":"2026-05-15T02:41:53.053Z","changelog":"**Version 1.3.0 Summary:** This update improves dependency management and user confirmation before any software installation, and clarifies download/output paths. - Introduced strict dependency detection and explicit user confirmation before installing any required tools or Python packages. - Download and output directory for video files are now shown to the user in advance, with actions performed only after confirmation. - Updated privacy notes to remind users to review and potentially delete transcripts/notes containing sensitive content. - Clarified workflow steps and user interaction rules in documentation for greater transparency and safety. - Added _meta.json and updated workflow documentation.","fileCount":7,"zipByteSize":14451},{"version":"1.2.0","createdAt":"2026-05-15T02:20:04.617Z","changelog":"重构：用户零感知 —— 依赖自动检测安装，用户只需说'帮我把视频整理成笔记'","fileCount":6,"zipByteSize":12863},{"version":"1.1.0","createdAt":"2026-05-15T02:18:44.958Z","changelog":"新增：依赖检查引导 + metadata 声明 python3/ffmpeg/whisper 依赖","fileCount":6,"zipByteSize":14643},{"version":"1.0.0","createdAt":"2026-05-15T02:14:00.797Z","changelog":"Initial release: 视频转学习笔记，支持本地文件/网络链接，4种笔记模板自适应","fileCount":6,"zipByteSize":14009}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170hz3mk8whbzhtazxz0eyk1986sh07:video-to-notes","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T17:42:19.280Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yll-kb-video-to-notes/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T15:18:56.972Z","emptyReason":null},"readme":"Skill: Video to Notes\n\nOwner: yll-kb\n\nSummary: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序...\n\nTags: latest:2.0.0\n\nVersion history:\n\nv2.0.0 | 2026-07-03T15:27:40.454Z | user\n\n大版本更新: 智能分段, 逻辑结构图, 重点标记系统, 速查卡, MPS加速, 静音裁剪+变速预处理\n\nv1.3.0 | 2026-05-15T02:41:53.053Z | auto\n\n**Version 1.3.0 Summary:**  \nThis update improves dependency management and user confirmation before any software installation, and clarifies download/output paths.\n\n- Introduced strict dependency detection and explicit user confirmation before installing any required tools or Python packages.\n- Download and output directory for video files are now shown to the user in advance, with actions performed only after confirmation.\n- Updated privacy notes to remind users to review and potentially delete transcripts/notes containing sensitive content.\n- Clarified workflow steps and user interaction rules in documentation for greater transparency and safety.\n- Added _meta.json and updated workflow documentation.\n\nv1.2.0 | 2026-05-15T02:20:04.617Z | user\n\n重构：用户零感知 —— 依赖自动检测安装，用户只需说'帮我把视频整理成笔记'\n\nv1.1.0 | 2026-05-15T02:18:44.958Z | user\n\n新增：依赖检查引导 + metadata 声明 python3/ffmpeg/whisper 依赖\n\nv1.0.0 | 2026-05-15T02:14:00.797Z | user\n\nInitial release: 视频转学习笔记，支持本地文件/网络链接，4种笔记模板自适应\n\nArchive index:\n\nArchive v2.0.0: 7 files, 20030 bytes\n\nFiles: _meta.json (133b), references/note-templates.md (9031b), references/workflow.md (5485b), scripts/download_video.py (2283b), scripts/transcribe.py (11522b), skill-card.md (2918b), SKILL.md (10846b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: video-to-notes\ndescription: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序员、学生、职场进修者、知识爱好者。触发条件：用户提供视频路径/链接，或说\"把这个视频整理成笔记\"、\"帮我记笔记\"、\"转成学习笔记\"。支持中英文，一次 1-3 个文件。\nmetadata:\n  openclaw:\n    requires:\n      bins: [\"python3\", \"ffmpeg\", \"ffprobe\"]\n      pip:\n        - openai-whisper\n---\n\n# Video to Notes — 视频转学习笔记\n\n**看视频 ≠ 学会。笔记才是真正属于你的知识。**\n\n用户只需要说一句：\"帮我把这个视频整理成笔记\"。剩下的事 AI 自己搞定。\n\n---\n\n## 用户视角 —— 他们只需要知道这些\n\n用户不需要理解 Python、ffmpeg、whisper 是什么。他们只需要：\n\n1. **提供视频** — 给文件路径，或者发个链接（YouTube/B站等）\n2. **说明需求**（可选）— \"用英文\"、\"只要重点\"、\"按课堂笔记风格\"\n3. **等着拿笔记**\n\nAI 自动完成全部工作。\n\n---\n\n## AI 工作流\n\n### 第一步：检测 & 安装依赖\n\n用户说想转视频后，**AI 先静默检查环境**：\n\n```bash\n# 检查所有依赖，缺什么装什么\npython3 --version               # 缺 → brew install python3\nffmpeg -version                  # 缺 → brew install ffmpeg\npython3 -c \"import whisper\"      # 缺 → pip3 install openai-whisper\npip3 list 2>/dev/null | grep -q yt-dlp  # 缺 → pip3 install yt-dlp （可选，仅URL需要）\n```\n\n> ⚡ **依赖安装规则（必遵守）**\n>\n> 所有环境安装操作必须遵循以下步骤：\n>\n> 1. **先检测，再报告** — 运行检测后，明确告诉用户哪些工具/包缺失，用具体名称列出\n> 2. **必须征得用户明确同意** — 拿到 `yes` / `可以` / `装` 后再执行；不要直接后台静默安装\n> 3. **安装命令必须完整告知** — 例如 `pip3 install openai-whisper` 或 `brew install python3 ffmpeg`\n> 4. **没有例外** — 即使是 pip 包也需用户确认后再装\n\n### 第二步：获取视频\n\n| 来源 | AI 处理方式 |\n|------|------------|\n| **本地文件** | 直接读取路径 |\n| **URL（YouTube/B站等）** | 先告知用户要下载到哪个目录，确认后再执行 `python3 scripts/download_video.py <URL> --output-dir <目录>` |\n| **平台限制无法下载** | 礼貌告知用户：\"这个平台的视频有限制，能不能先下载到本地发给我？\" |\n\n### 第三步：转写\n\n```bash\npython3 scripts/transcribe.py <视频路径> [选项]\n```\n\n**参数选择逻辑：**\n\n| 场景 | 推荐参数 |\n|------|---------|\n| 普通视频 | `--model base`（默认，速度与精度平衡） |\n| 长视频（>1h） | `--model turbo` + `--speed 1.3`（快 ~50%） |\n| 中文视频 | 加 `--language zh` 提升准确率 |\n| 批量处理 | 多个路径一起传，最多 3 个 |\n| 超长视频（>2h） | 自动提示用户，建议只处理单个文件确保质量 |\n| 追求极致速度 | `--model turbo --strip-silence --speed 1.5`（快 ~70%） |\n| 精度优先 | `--model large` + `--no-strip-silence`（保留所有细节） |\n\n### 第四步：AI 生成学习笔记 ⭐ — 核心价值\n\n转写完成后，读取 `.txt` 文件，按以下流程生成笔记：\n\n---\n\n#### 4a. 智能分段（Semantic Chunking）\n\n转写稿是逐句时间戳文本，AI 先做一次**语义分章**，给笔记搭骨架：\n\n1. 扫描全文，根据话题切换、关键词、语气变化识别**逻辑段落**\n2. 为每个段落生成**章节标题**（概括该段核心内容）\n3. 输出分段大纲作为笔记的目录骨架\n\n```markdown\n示例输出：\n\n## 分段大纲\n\n| # | 章节 | 时间范围 | 核心内容 |\n|---|------|---------|---------|\n| 1 | 什么是状态管理 | 00:00-08:30 | 定义、为什么需要 |\n| 2 | useState 原理 | 08:30-20:15 | 工作机制、批量更新 |\n| 3 | useReducer 对比 | 20:15-35:00 | 适用场景、代码示例 |\n| 4 | Context 跨组件通信 | 35:00-45:00 | 使用模式、性能注意 |\n```\n\n> 分段粒度：一般 5-15 分钟一段。短于 3 分钟的和相邻段落合并。\n\n---\n\n#### 4b. 生成逻辑结构图（长内容）\n\n转录稿超过 **5000 字** 或视频 **>30 分钟**时，在笔记正文之前先生成一张**Mermaid 逻辑图**，作为内容的**知识地图**，帮助读者在深入前建立全局认知。\n\n**选择逻辑图类型：**\n\n| 内容结构 | 推荐图类型 | 示例 |\n|---------|-----------|------|\n| 层级/分类知识 | `mindmap` | 技术概念分类、知识体系 |\n| 流程/步骤 | `flowchart TD` | 操作流程、算法步骤、决策树 |\n| 时序/阶段 | `timeline` | 历史发展、项目阶段 |\n| 对比/分类 | `flowchart LR` | 方案选型、特征对比 |\n| 关系/网络 | `graph` | 概念关联、系统架构 |\n\n```mermaid\nmindmap\n  root((React 状态管理))\n    useState\n      组件本地状态\n      批量更新机制\n    useReducer\n      复杂状态逻辑\n      依赖前状态\n    Context\n      跨层级传递\n      性能注意事项\n    选型决策\n      80% 用 useState\n      复杂用 useReducer\n      跨组件用 Context\n```\n\n> **图在笔记最前面**，后面的详细内容按图展开。读者可以先看图再决定精读哪部分。\n\n---\n\n#### 4c. 重点标记系统\n\n笔记中引入三级标记，让重要内容一目了然：\n\n| 标记 | 含义 | 用于 |\n|------|------|------|\n| ⭐ **核心必记** | 定义、公式、关键结论 | 每个知识模块的 1-2 个最要点 |\n| 🔧 **实操要点** | 代码、命令、操作步骤 | 有实操价值的内容 |\n| ⚠️ **易错/注意** | 坑、边界情况、常见误解 | 容易犯错的地方 |\n\n**智能标记规则：**\n- 每个知识点模块下，用 `💡 核心提炼` 子节把该模块最重要的 1-3 个点浓缩成一句话\n- 标记不要滥用：正文中自然使用，不是每条都标\n- 复习时只看 ⭐ 标记的内容就能回忆 80% 关键信息\n\n```markdown\n### 1. useState — 基础状态管理\n\n**原理说明：**\n- ⭐ 每次 setState 触发重新渲染，React 通过 Fiber 协调更新\n- 批量更新合并同一事件循环中的多次 setState\n\n**注意事项：**\n- ⚠️ 状态更新是异步的，不能在 setState 后立即读取新值\n- 解决方案：使用 useEffect 监听状态变化\n\n> 💡 **核心提炼：** useState 适合 80% 的组件内简单状态，更新是异步且批量的。\n```\n\n---\n\n#### 4d. 生成速查卡（Quick Reference Card）\n\n笔记末尾追加一张**速查卡**，把核心概念浓缩成一览表，适合复习时快速翻阅：\n\n```markdown\n## 🃏 速查卡\n\n| 概念 | 一句话 | 标记 |\n|------|--------|:----:|\n| useState | 组件本地简单状态，更新异步批量 | ⭐ |\n| useReducer | 复杂状态逻辑，依赖前状态时用 | ⭐ |\n| Context | 跨层级传递，不是状态管理方案 | ⚠️ |\n| 批量更新 | 同一事件循环中合并多次 setState | 🔧 |\n```\n\n> 速查卡是笔记的**精华浓缩**，一页看完所有重点。\n\n---\n\n#### 4e. 组装完整笔记\n\n将上述结果按顺序组装：\n\n```\n1. [4b] 逻辑结构图（仅长内容）\n2. [4a] 分段大纲\n3. 完整笔记正文（匹配风格模板，含 ⭐🔧⚠️ 重点标记）\n4. [4d] 速查卡\n```\n\n**笔记风格自动匹配（同之前）：**\n\n| 内容类型 → | 自动选择风格 |\n|------------|-------------|\n| 编程/技术教程 | 📚 **标准学习笔记** — 带代码块、架构说明 |\n| 学生网课/公开课 | 🎓 **课堂笔记** — 考点、例题、易错点 |\n| TED/演讲/行业分享 | 🏢 **演讲笔记** — 核心观点、金句、行动项 |\n| 纪录片/科普 | 📰 **纪录片笔记** — 时间线、发现、数据 |\n| 一般教学/培训 | 📚 **标准学习笔记** — 知识要点结构化 |\n\n> 详细模板见 → [📖 笔记模板参考](references/note-templates.md)\n\n**笔记语言：** 默认用当前对话语言。用户可指定（\"用英文写\"、\"中日双语\"等）。\n\n**质量准则：**\n- 详细准确 / 结构化清晰 / 信息密度高\n- 忠实原文不编造 / 设计为可复习\n- ⭐🔧⚠️ 标记要自然融入，不是每条都标\n- 速查卡必须是最核心的 5-10 条，不含冗余\n\n---\n\n## 脚本参考（AI 用）\n\n### `scripts/transcribe.py`\n\n```bash\n# 日常\npython3 scripts/transcribe.py course.mp4\n\n# 长视频 + 中文\npython3 scripts/transcribe.py lecture.mp4 --model turbo --language zh\n\n# 长视频加速（静音裁剪 + 1.3x 变速）\npython3 scripts/transcribe.py lecture.mp4 --strip-silence --speed 1.3\n\n# 极限速度\npython3 scripts/transcribe.py long.mp4 --model turbo --strip-silence --speed 1.5\n\n# 批量\npython3 scripts/transcribe.py p1.mp4 p2.mp4 p3.mp4\n```\n\n### `scripts/download_video.py`\n\n```bash\npython3 scripts/download_video.py \"https://youtube.com/watch?v=xxx\" --output-dir 目录\n```\n\n---\n\n## 常见用户需求 & AI 应对\n\n| 用户说 | AI 怎么做 |\n|--------|----------|\n| \"帮我把这个视频整理成笔记\" | 检测依赖 → 转写 → 自动匹配风格生成笔记 |\n| \"把桌面上这三个视频都处理了\" | 批量转写，最多3个；如果是系列课程，跨文件整合成连贯知识体系 |\n| \"用英文写笔记\" | 转写保持原语言，笔记用英文生成 |\n| \"这个 TED 演讲帮我记一下\" | 识别为演讲类型 → 用演讲笔记模板 |\n| \"只要第二个部分的内容\" | 选择性转写/笔记，跳过无关内容 |\n| \"太长了，先处理这一个\" | 长视频自动建议只处理单个 |\n| \"这是 YouTube 链接\" | 下载 → 转写 → 笔记 |\n\n---\n\n## 注意事项\n\n- **隐私：** 转写稿和笔记可能包含敏感内容，完成后提醒用户检查并酌情删除\n- **版权：** 下载网络视频请遵守平台条款，仅用于个人学习\n- **文件清理：** 临时 `.wav` 自动删除，只留 `.txt` 和笔记\n- **输出路径：** 默认以视频文件所在目录或用户指定目录作为输出位置，生成前告知用户\n- **长视频：** >2h 自动提示，建议单文件处理\n- **失败处理：** 下载失败/转写出错 → 友好告知用户并提供替代建议\n\n---\n\n## 资源结构\n\n```\nvideo-to-notes/\n├── SKILL.md                      ← 本文\n├── scripts/\n│   ├── transcribe.py             ← 语音转文字\n│   └── download_video.py         ← 网络视频下载\n└── references/\n    ├── workflow.md               ← 详细工作流（AI 参考）\n    └── note-templates.md         ← 笔记模板 & 示例\n```\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7edjpjh5vn9pvddkg6t1481s86r67a\",\n  \"slug\": \"video-to-notes\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1783092460454\n}\n\nFile v2.0.0:references/note-templates.md\n\n# 笔记模板 & 示例\n\n本文件提供不同场景下的笔记模板和完整示例，供 AI 在生成笔记时参考。\n\nAI 应**根据视频内容类型自动选择**合适的模板，也可按用户要求切换。\n\n---\n\n## 📚 模板一：标准学习笔记（最常用）\n\n适合：技术教程、在线课程、讲座、深度内容\n\n```markdown\n# [视频标题]\n\n## 📋 视频信息\n- **时长：** XX分钟\n- **主题：** 一句话概括\n- **来源：** 视频链接/路径\n\n## 📖 内容概览\n\n用 2-3 句话概括视频核心内容。\n\n## 🧠 知识要点\n\n### 1. [核心概念/模块一]\n\n**关键定义：**\n- XXX：详细解释\n\n**原理说明：**\n- 机制/流程/逻辑\n\n**示例/类比：**\n- 帮助理解的例子\n\n### 2. [核心概念/模块二]\n\n...\n\n### 3. [核心概念/模块三]\n\n...\n\n## 💻 实战 / 代码（如有）\n\n\\`\\`\\`语言\n代码块\n\\`\\`\\`\n\n**关键代码解读：**\n- 第X行：作用说明\n\n## 📊 总结对比（如有）\n\n| 对比项 | A | B |\n|--------|---|---|\n| 特点 | | |\n| 适用 | | |\n| 优劣 | | |\n\n## 🎯 总结\n\n- 核心收获点 1\n- 核心收获点 2\n\n## 🔗 延伸思考\n\n- 值得进一步探索的方向\n- 与其他知识的关联\n- 实际应用建议\n```\n\n### 标准学习笔记 — 完整示例（虚构）\n\n```markdown\n# React 状态管理深度解析\n\n## 📋 视频信息\n- **时长：** 45分钟\n- **主题：** React 中 useState、useReducer 和 Context 的工作原理及选型\n- **来源：** 内部课程\n\n## 📖 内容概览\n\n视频深入讲解了 React 三种状态管理方案的底层机制，并通过对比分析给出了不同场景下的选型建议。核心观点是：没有银弹，选择取决于状态复杂度、更新频率和作用域。\n\n## 🧠 知识要点\n\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- 每次 setState 触发组件重新渲染\n- React 通过 Fiber 架构的\"双向循环\"协调更新\n- 批量更新（batching）合并同一事件循环中的多次 setState\n\n**关键特性：**\n- 适合：组件内部简单状态\n- 注意：状态更新是异步的，不能在 setState 后立即读取新值\n\n### 2. useReducer — 复杂状态逻辑\n\n**适用场景：**\n- 状态逻辑复杂，包含多个子值\n- 下一个状态依赖于前一个状态\n- 状态变更需要集中管理\n\n**模式对比：**\n```javascript\n// useState 方式\nconst [count, setCount] = useState(0)\nsetCount(c => c + 1)\n\n// useReducer 方式\nconst [state, dispatch] = useReducer(reducer, initialState)\ndispatch({ type: 'INCREMENT' })\n```\n\n### 3. Context + useReducer — 跨组件状态\n\n**架构模式：**\n- Context 负责\"传递\"（跨层级）\n- useReducer 负责\"管理\"（逻辑集中）\n- 组合使用可实现轻量级全局状态管理\n\n**性能注意事项：**\n- Context value 变化会触发所有消费者重渲染\n- 解决方案：拆分 Context、使用 memo\n\n## 🎯 选型决策树\n\n```\n简单组件内状态 → useState\n状态逻辑复杂 → useReducer\n跨组件共享 → Context + useReducer\n大规模全局 → Redux/Zustand 等外部库\n```\n\n## 💡 总结\n\n1. useState 是基础，80% 场景够用\n2. useReducer 在状态逻辑复杂时替代 useState\n3. Context 是\"传递\"机制，不是状态管理方案\n4. 组合使用前两者 + Context 可覆盖绝大多数场景\n\n## 🔗 延伸思考\n\n- React 19 的 use() Hook 会如何影响状态管理模式？\n- Signal（SolidJS 的方案）对比 React 的状态管理有什么不同？\n```\n\n---\n\n## 🎓 模板二：课堂笔记风格\n\n适合：学生网课、公开课、考试培训\n\n```markdown\n# [课程名称] — 第X讲\n\n## 📋 课程信息\n- **课程：** XXX\n- **讲师：** XXX\n- **时长：** XX分钟\n\n## 📌 本讲要点\n\n1. 要点一\n2. 要点二\n3. 要点三\n\n## 📝 知识点详解\n\n### [知识点1]\n- 定义/公式\n- 理解要点\n- 例题\n\n### [知识点2]\n...\n\n## ⚠️ 易错点 / 难点\n\n- 常见错误理解\n- 容易混淆的概念\n\n## 📖 例题解析\n\n**题目：** ...\n**解题思路：** ...\n**答案：** ...\n\n## 📑 课后思考\n\n- 课后习题\n- 延伸阅读\n\n## 📋 复习速查\n\n- [ ] 知识点1 理解了吗？\n- [ ] 知识点2 公式记住了吗？\n- [ ] 例题能独立做一遍吗？\n```\n\n---\n\n## 🏢 模板三：会议 / 演讲笔记\n\n适合：TED 演讲、行业分享、内部会议\n\n```markdown\n# [演讲/会议标题]\n\n## 📋 基本信息\n- **主讲人：** XXX\n- **背景：** 演讲/会议的背景信息\n- **时长：** XX分钟\n\n## 🎯 核心观点\n\n一句话概括演讲者的核心论点。\n\n## 🔑 关键要点\n\n### 1. [要点一]\n- 详细说明\n- 支持数据/案例\n\n### 2. [要点二]\n...\n\n## 📊 重要数据\n\n- 数据点1\n- 数据点2\n\n## 💬 金句摘录\n\n> \"引用原文金句\"\n\n## ✅ 启发 & 行动项\n\n- 可以做的 1-2-3\n- 值得深入思考的点\n\n## 🤔 批判性思考\n\n- 论点的局限性\n- 不同视角的补充\n```\n\n---\n\n## 📰 模板四：纪录片 / 科普笔记\n\n适合：纪录片、科普视频、深度分析、历史人文\n\n```markdown\n# [纪录片/科普标题]\n\n## 📋 背景介绍\n- 主题简介\n- 发布方/作者\n- 观看时间\n\n## ⏳ 时间线 / 发展脉络\n\n| 时间/阶段 | 事件/发现 | 意义 |\n|-----------|-----------|------|\n| ... | ... | ... |\n\n## 🔬 核心发现\n\n### 发现一：...\n- 证据/数据支持\n- 专家观点\n\n### 发现二：...\n...\n\n## 📊 关键数据 & 事实\n\n- 事实1\n- 统计数字\n\n## 🤔 个人思考\n\n- 对内容的思考\n- 与其他知识点的关联\n- 启发 & 疑惑\n\n## 📚 延伸资源\n\n- 片中提到的书籍/文章\n- 相关话题推荐\n```\n\n---\n\n## 🛠️ 模板选择逻辑\n\nAI 应按以下优先级选择笔记风格：\n\n1. **用户明确指定** → 按用户要求\n2. **内容类型自动识别**：\n   - 编程/技术内容 → 标准学习笔记（带代码块）\n   - 学术/考试内容 → 课堂笔记\n   - TED/演讲/分享 → 演讲笔记\n   - 纪录片/历史/科普 → 纪录片笔记\n   - 一般性教学/培训 → 标准学习笔记\n3. **混合内容** → 灵活组合多种风格元素\n\n## ⚙️ AI 自由度\n\n以上模板是参考框架，不是死规定。AI 应根据实际情况：\n- **增删章节** — 不需要的去掉，需要的加上\n- **调整顺序** — 以逻辑流畅为准\n- **改变深度** — 简短视频给精简版，长视频给详细版\n- **整合系列** — 批量处理时，可跨视频整合成连贯知识体系\n\n---\n\n## 🏷️ 通用：重点标记约定\n\n所有笔记模板中，正文内容使用三级标记突出重点：\n\n| 标记 | 含义 | 示例 |\n|------|------|------|\n| ⭐ **核心必记** | 定义、公式、关键结论 | `- ⭐ useState 每次 setState 触发重新渲染` |\n| 🔧 **实操要点** | 代码、命令、操作步骤 | `- 🔧 打包命令: pnpm build` |\n| ⚠️ **易错/注意** | 坑、边界情况、常见误解 | `- ⚠️ 状态更新是异步的，不能立即读取新值` |\n\n### 笔记内使用规则\n\n- 每个知识点模块下，添加 `💡 核心提炼` 小节，把该模块最重要的 1-3 个点浓缩成一句话\n- ⭐ 每个模块最多标 2 个，保证是真的核心\n- 标记自然融入正文，不要为了标记而标记\n- 复习时只读 ⭐ 内容就能回忆 80% 的关键信息\n\n```markdown\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- ⭐ 每次 setState 触发组件重新渲染，React 通过 Fiber 协调更新\n- 批量更新合并同一事件循环中的多次 setState\n\n**注意事项：**\n- ⚠️ 状态更新是异步的，不能立即读取新值\n- 🔧 使用 useEffect 监听状态变化\n\n> 💡 **核心提炼：** useState 适合 80% 的组件内简单状态，更新是异步且批量的。\n```\n\n---\n\n## 🃏 通用：速查卡模板\n\n所有笔记末尾追加速查卡。风格统一，内容来自笔记正文的提取：\n\n```markdown\n## 🃏 速查卡\n\n| 概念 | 一句话 | 标记 |\n|------|--------|:----:|\n| [核心概念1] | [一句话精华] | ⭐ |\n| [核心概念2] | [一句话精华] | ⭐ |\n| [实操技巧] | [一句话操作要点] | 🔧 |\n| [容易错的地方] | [一句话提醒] | ⚠️ |\n```\n\n**速查卡规则：**\n- 行数：5-10 行，不超过一屏\n- 每行必须是笔记中最重要的信息之一\n- ⭐ 优先于 🔧 优先于 ⚠️\n- 不要抄笔记原文，要**重新提炼**成一句话\n\n---\n\n## 🗺️ 通用：逻辑图放置指南\n\n长内容的笔记开头放置 Mermaid 逻辑图：\n\n```mermaid\nmindmap\n  root((主题))\n    模块A\n      子点1\n      子点2\n    模块B\n      子点1\n      子点2\n```\n\n### 图的类型由内容结构决定\n\n| 内容结构 | Mermaid 类型 | 示例用途 |\n|---------|-------------|---------|\n| 层级/分类 | `mindmap` | 知识体系、概念分类 |\n| 流程/操作 | `flowchart TD` | 步骤、算法、决策树 |\n| 时间序列 | `timeline` | 历史发展、项目阶段 |\n| 对比选型 | `flowchart LR` | A vs B 方案选型 |\n| 架构关系 | `graph` | 系统架构、概念关联 |\n\n> 图的作用是**帮助读者建立全局认知**，不是装饰。画不出来就别硬画。\n\nFile v2.0.0:references/workflow.md\n\n# 视频转笔记 — AI 工作流参考\n\n本文件为 AI 提供详细的技术参考。\n\n---\n\n## 依赖安装流程\n\nAI 在首次使用时检测环境，然后**列出缺失项并征得用户同意后再安装**。\n\n### 检查脚本\n\n```bash\n#!/bin/bash\n# 检测脚本（仅检测，不安装）\nMISSING=\"\"\n\npython3 --version >/dev/null 2>&1 || MISSING=\"$MISSING python3\"\nffmpeg -version >/dev/null 2>&1 || MISSING=\"$MISSING ffmpeg\"\npython3 -c \"import whisper\" >/dev/null 2>&1 || MISSING=\"$MISSING whisper\"\n\nif [ -n \"$MISSING\" ]; then\n  echo \"缺失依赖:$MISSING\"\n  echo \"需要用户确认后才能安装\"\nfi\n```\n\n> ⚡ **执行安装前必须做的事：**\n> 1. 告诉用户具体缺失哪些工具/包（如 \"python3, ffmpeg, openai-whisper\"）\n> 2. 展示完整安装命令（如 `brew install python3 ffmpeg && pip3 install openai-whisper`）\n> 3. 等待用户确认后再执行\n\n### 跨平台安装命令\n\n| 平台 | Python3 | ffmpeg | openai-whisper |\n|------|---------|--------|----------------|\n| **macOS** | `brew install python3` | `brew install ffmpeg` | `pip3 install openai-whisper` |\n| **Ubuntu/Debian** | `apt install python3` | `apt install ffmpeg` | `pip3 install openai-whisper` |\n| **Windows** | [python.org](https://python.org) 下载 | `winget install ffmpeg` | `pip install openai-whisper` |\n\n### yt-dlp（网络视频需要）\n\n```bash\npip3 install yt-dlp\n```\n\n---\n\n## 转写参数详解\n\n### `transcribe.py` 完整参数\n\n```\nusage: transcribe.py [-h] [--model {tiny,tiny.en,base,base.en,small,small.en,medium,medium.en,large,turbo}] [--language LANGUAGE] [--output-dir OUTPUT_DIR] [--device DEVICE] [--max-files MAX_FILES] videos [videos ...]\n```\n\n### 模型详情\n\n| 模型 | 大小 | 速度(相对) | 中文精度 | 推荐场景 |\n|------|------|-----------|---------|---------|\n| tiny | ~75MB | 1x | ⭐⭐ | 快速预览 |\n| base | ~150MB | 2x | ⭐⭐⭐ | 日常推荐 |\n| small | ~460MB | 4x | ⭐⭐⭐⭐ | 精度优先 |\n| medium | ~1.5GB | 8x | ⭐⭐⭐⭐⭐ | 重要内容 |\n| large | ~3GB | 16x | ⭐⭐⭐⭐⭐⭐ | 极致精度 |\n| turbo | ~1.5GB | 4x | ⭐⭐⭐⭐⭐ | ⭐ 长视频首选 |\n\n> **性能实测参考（MacBook Air M2, CPU）：**\n> - base 模型：约实时 1x（10分钟视频 ≈ 10分钟转写）\n> - turbo 模型：约实时 2x\n> - 首次运行会自动下载模型文件（后续复用缓存）\n\n### MPS 加速（Apple Silicon）\n\nM 系列芯片（M1/M2/M3/M4）可启用 Metal Performance Shaders 加速：\n\n```bash\n# 自动检测（推荐）：transcribe.py 会检测 torch 是否支持 MPS\n# 如可用则自动使用，无需手动指定\n\n# 手动指定：\npython3 scripts/transcribe.py course.mp4 --device mps\n```\n\n**加速效果（实测 M2 Air vs CPU）：**\n\n| 模型 | CPU | MPS | 加速比 |\n|------|-----|-----|-------|\n| base | 10min | ~2.5min | ~4x |\n| turbo | 20min | ~6min | ~3x |\n\n> **注意：** 首次使用 MPS 时 PyTorch 会编译一些 kernel，前几秒稍慢。后续会话复用缓存。\n\n### 音频预处理加速\n\n`transcribe.py` 在提取音频时做两件事来减少转写时间：\n\n#### 🔇 静音裁剪（默认开启）\n\n用 `--strip-silence` 控制（默认开启，`--no-strip-silence` 关闭）。\n\n- 裁剪首尾静音（开场白前的空白、结束后的留白）\n- 裁剪中间 >0.5s 的停顿（思考间隙、翻页停顿等）\n- 处理方式：ffmpeg `silenceremove` 滤镜，双向裁剪\n- **效果：** 演讲/课程类视频可减少 20-40% 音频时长\n- 对转写精度**无影响**（只去掉了空白，不压缩语速）\n\n#### ⏩ 变速（可选）\n\n用 `--speed 1.3` 开启。\n\n- 使用 ffmpeg `atempo` 滤镜，保持音调不变\n- 推荐值：**1.3x**（快 23%，精度几乎不变）\n- 极限值：**1.5x**（快 33%，语速极快时可能漏字）\n- 不推荐 >1.5x，会降低 Whisper 识别准确率\n\n#### 加速效果实测\n\n假设一个 60 分钟的中文讲座视频：\n\n| 配置 | 音频时长 | 转写耗时（base模型） | 总时间 | 加速比 |\n|------|---------|-------------------|-------|-------|\n| 默认 | 60min | ~60min | ~60min | 1x |\n| +strip-silence | ~40min | ~40min | ~40min | ~1.5x |\n| +strip-silence +speed 1.3 | ~30min | ~30min | ~30min | ~2x |\n| +turbo +strip-silence +speed 1.3 | ~30min | ~15min | ~15min | ~4x |\n\n### 输出格式\n\n```\n[00:00 -> 00:15] 大家好，今天我们来聊...\n[00:15 -> 00:30] 首先我们来介绍一下核心概念...\n[00:30 -> 00:45] 这里需要注意的一个点是...\n```\n\n输出文件：`<视频名>.txt`（与视频同目录）\n\n---\n\n## 已知问题 & 处理\n\n| 问题 | 原因 | AI 处理 |\n|------|------|---------|\n| 问题 | 原因 | AI 处理 |\n|------|------|---------|\n| 转写很慢 | CPU 模式，模型太大 | 改用 `--model base` 或 `turbo` |\n| 转写慢（M芯片） | 未启用 GPU | 检查 torch MPS 支持，建议改用 `--device mps` |\n| 转写慢（长视频） | 音频太长 | 开启 `--strip-silence` + `--speed 1.3`，可快 50%+ |\n| 语速过快识别差 | 本身说话快 | 不要用 `--speed >1.0`，关闭 `--no-strip-silence` |\n| 中文识别不准 | 未指定语言 | 加 `--language zh` |\n| 下载失败 | 平台限制/网络问题 | 告知用户，建议本地下载 |\n| 文件格式不支持 | 奇怪的视频格式 | 先用 ffmpeg 转码为 mp4 |\n| 内存不足 | 视频太大 | 先压缩或用更小模型 |\n| GPU 不可用 | 无 CUDA | 默认 CPU 模式，M芯片可用 MPS |\n| MPS 首次慢 | PyTorch kernel 编译 | 下次就快了，这是正常的 |\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nConverts user-provided local or online videos into transcripts and structured study notes using media extraction, Whisper transcription, and agent-generated Markdown note templates.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[yll-kb](https://clawhub.ai/user/yll-kb)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nStudents, self-directed learners, developers, and professionals use this skill to turn lectures, tutorials, talks, meetings, and documentaries into structured study notes. Agents can transcribe up to a small batch of videos, segment the transcript, and produce review-oriented Markdown with summaries, diagrams, key points, and quick-reference tables.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Videos, transcripts, and notes may contain sensitive personal, meeting, course, or business information.\n\nMitigation: Process only videos the user explicitly provides, tell the user where transcripts and notes will be saved, and remind them to review or delete generated files when privacy matters.\n\nRisk: Online video download can implicate platform rules, copyright, or access restrictions.\n\nMitigation: Download online videos only after user approval, ask the user to confirm they have rights to use the content, and fall back to a local file when a platform blocks download.\n\nRisk: Installing transcription and media dependencies can increase supply-chain exposure.\n\nMitigation: Show missing dependencies and full install commands before installation, wait for explicit user approval, and recommend virtual environments with pinned dependency versions for stronger control.\n\nRisk: Transcription and summarization can miss words, mishear technical terms, or over-compress important details.\n\nMitigation: Use language hints and higher-accuracy Whisper models for important content, keep timestamped transcript output, and ask the user to review generated notes before relying on them.\n\n## Reference(s):\n\n- [Workflow Reference](references/workflow.md)\n- [Note Templates](references/note-templates.md)\n- [ClawHub Skill Page](https://clawhub.ai/yll-kb/skills/video-to-notes)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown notes plus timestamped transcript text and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create transcript text files beside the source video or in a selected output directory; temporary audio files are removed after transcription.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.3.0: 7 files, 14451 bytes\n\nFiles: _meta.json (133b), references/note-templates.md (6382b), references/workflow.md (3121b), scripts/download_video.py (2283b), scripts/transcribe.py (7763b), skill-card.md (2682b), SKILL.md (6351b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: video-to-notes\ndescription: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序员、学生、职场进修者、知识爱好者。触发条件：用户提供视频路径/链接，或说\"把这个视频整理成笔记\"、\"帮我记笔记\"、\"转成学习笔记\"。支持中英文，一次 1-3 个文件。\nmetadata:\n  openclaw:\n    requires:\n      bins: [\"python3\", \"ffmpeg\", \"ffprobe\"]\n      pip:\n        - openai-whisper\n---\n\n# Video to Notes — 视频转学习笔记\n\n**看视频 ≠ 学会。笔记才是真正属于你的知识。**\n\n用户只需要说一句：\"帮我把这个视频整理成笔记\"。剩下的事 AI 自己搞定。\n\n---\n\n## 用户视角 —— 他们只需要知道这些\n\n用户不需要理解 Python、ffmpeg、whisper 是什么。他们只需要：\n\n1. **提供视频** — 给文件路径，或者发个链接（YouTube/B站等）\n2. **说明需求**（可选）— \"用英文\"、\"只要重点\"、\"按课堂笔记风格\"\n3. **等着拿笔记**\n\nAI 自动完成全部工作。\n\n---\n\n## AI 工作流\n\n### 第一步：检测 & 安装依赖\n\n用户说想转视频后，**AI 先静默检查环境**：\n\n```bash\n# 检查所有依赖，缺什么装什么\npython3 --version               # 缺 → brew install python3\nffmpeg -version                  # 缺 → brew install ffmpeg\npython3 -c \"import whisper\"      # 缺 → pip3 install openai-whisper\npip3 list 2>/dev/null | grep -q yt-dlp  # 缺 → pip3 install yt-dlp （可选，仅URL需要）\n```\n\n> ⚡ **依赖安装规则（必遵守）**\n>\n> 所有环境安装操作必须遵循以下步骤：\n>\n> 1. **先检测，再报告** — 运行检测后，明确告诉用户哪些工具/包缺失，用具体名称列出\n> 2. **必须征得用户明确同意** — 拿到 `yes` / `可以` / `装` 后再执行；不要直接后台静默安装\n> 3. **安装命令必须完整告知** — 例如 `pip3 install openai-whisper` 或 `brew install python3 ffmpeg`\n> 4. **没有例外** — 即使是 pip 包也需用户确认后再装\n\n### 第二步：获取视频\n\n| 来源 | AI 处理方式 |\n|------|------------|\n| **本地文件** | 直接读取路径 |\n| **URL（YouTube/B站等）** | 先告知用户要下载到哪个目录，确认后再执行 `python3 scripts/download_video.py <URL> --output-dir <目录>` |\n| **平台限制无法下载** | 礼貌告知用户：\"这个平台的视频有限制，能不能先下载到本地发给我？\" |\n\n### 第三步：转写\n\n```bash\npython3 scripts/transcribe.py <视频路径> [选项]\n```\n\n**参数选择逻辑：**\n\n| 场景 | 推荐参数 |\n|------|---------|\n| 普通视频 | `--model base`（默认，速度与精度平衡） |\n| 长视频（>1h） | `--model turbo`（速度快，精度接近 large） |\n| 中文视频 | 加 `--language zh` 提升准确率 |\n| 批量处理 | 多个路径一起传，最多 3 个 |\n| 超长视频（>2h） | 自动提示用户，建议只处理单个文件确保质量 |\n\n### 第四步：AI 生成学习笔记 ⭐ — 核心价值\n\n转写完成后，读取 `.txt` 文件，自动生成结构化学习笔记。\n\n**笔记风格自动匹配：**\n\n| 内容类型 → | 自动选择风格 |\n|------------|-------------|\n| 编程/技术教程 | 📚 **标准学习笔记** — 带代码块、架构说明 |\n| 学生网课/公开课 | 🎓 **课堂笔记** — 考点、例题、易错点 |\n| TED/演讲/行业分享 | 🏢 **演讲笔记** — 核心观点、金句、行动项 |\n| 纪录片/科普 | 📰 **纪录片笔记** — 时间线、发现、数据 |\n| 一般教学/培训 | 📚 **标准学习笔记** — 知识要点结构化 |\n\n> 详细模板见 → [📖 笔记模板参考](references/note-templates.md)\n\n**笔记语言：** 默认用当前对话语言。用户可指定（\"用英文写\"、\"中日双语\"等）。\n\n**质量准则：** 详细准确 / 结构化清晰 / 信息密度高 / 忠实原文不编造 / 设计为可复习\n\n---\n\n## 脚本参考（AI 用）\n\n### `scripts/transcribe.py`\n\n```bash\n# 日常\npython3 scripts/transcribe.py course.mp4\n\n# 长视频 + 中文\npython3 scripts/transcribe.py lecture.mp4 --model turbo --language zh\n\n# 批量\npython3 scripts/transcribe.py p1.mp4 p2.mp4 p3.mp4\n```\n\n### `scripts/download_video.py`\n\n```bash\npython3 scripts/download_video.py \"https://youtube.com/watch?v=xxx\" --output-dir 目录\n```\n\n---\n\n## 常见用户需求 & AI 应对\n\n| 用户说 | AI 怎么做 |\n|--------|----------|\n| \"帮我把这个视频整理成笔记\" | 检测依赖 → 转写 → 自动匹配风格生成笔记 |\n| \"把桌面上这三个视频都处理了\" | 批量转写，最多3个；如果是系列课程，跨文件整合成连贯知识体系 |\n| \"用英文写笔记\" | 转写保持原语言，笔记用英文生成 |\n| \"这个 TED 演讲帮我记一下\" | 识别为演讲类型 → 用演讲笔记模板 |\n| \"只要第二个部分的内容\" | 选择性转写/笔记，跳过无关内容 |\n| \"太长了，先处理这一个\" | 长视频自动建议只处理单个 |\n| \"这是 YouTube 链接\" | 下载 → 转写 → 笔记 |\n\n---\n\n## 注意事项\n\n- **隐私：** 转写稿和笔记可能包含敏感内容，完成后提醒用户检查并酌情删除\n- **版权：** 下载网络视频请遵守平台条款，仅用于个人学习\n- **文件清理：** 临时 `.wav` 自动删除，只留 `.txt` 和笔记\n- **输出路径：** 默认以视频文件所在目录或用户指定目录作为输出位置，生成前告知用户\n- **长视频：** >2h 自动提示，建议单文件处理\n- **失败处理：** 下载失败/转写出错 → 友好告知用户并提供替代建议\n\n---\n\n## 资源结构\n\n```\nvideo-to-notes/\n├── SKILL.md                      ← 本文\n├── scripts/\n│   ├── transcribe.py             ← 语音转文字\n│   └── download_video.py         ← 网络视频下载\n└── references/\n    ├── workflow.md               ← 详细工作流（AI 参考）\n    └── note-templates.md         ← 笔记模板 & 示例\n```\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7edjpjh5vn9pvddkg6t1481s86r67a\",\n  \"slug\": \"video-to-notes\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1778812913053\n}\n\nFile v1.3.0:references/note-templates.md\n\n# 笔记模板 & 示例\n\n本文件提供不同场景下的笔记模板和完整示例，供 AI 在生成笔记时参考。\n\nAI 应**根据视频内容类型自动选择**合适的模板，也可按用户要求切换。\n\n---\n\n## 📚 模板一：标准学习笔记（最常用）\n\n适合：技术教程、在线课程、讲座、深度内容\n\n```markdown\n# [视频标题]\n\n## 📋 视频信息\n- **时长：** XX分钟\n- **主题：** 一句话概括\n- **来源：** 视频链接/路径\n\n## 📖 内容概览\n\n用 2-3 句话概括视频核心内容。\n\n## 🧠 知识要点\n\n### 1. [核心概念/模块一]\n\n**关键定义：**\n- XXX：详细解释\n\n**原理说明：**\n- 机制/流程/逻辑\n\n**示例/类比：**\n- 帮助理解的例子\n\n### 2. [核心概念/模块二]\n\n...\n\n### 3. [核心概念/模块三]\n\n...\n\n## 💻 实战 / 代码（如有）\n\n\\`\\`\\`语言\n代码块\n\\`\\`\\`\n\n**关键代码解读：**\n- 第X行：作用说明\n\n## 📊 总结对比（如有）\n\n| 对比项 | A | B |\n|--------|---|---|\n| 特点 | | |\n| 适用 | | |\n| 优劣 | | |\n\n## 🎯 总结\n\n- 核心收获点 1\n- 核心收获点 2\n\n## 🔗 延伸思考\n\n- 值得进一步探索的方向\n- 与其他知识的关联\n- 实际应用建议\n```\n\n### 标准学习笔记 — 完整示例（虚构）\n\n```markdown\n# React 状态管理深度解析\n\n## 📋 视频信息\n- **时长：** 45分钟\n- **主题：** React 中 useState、useReducer 和 Context 的工作原理及选型\n- **来源：** 内部课程\n\n## 📖 内容概览\n\n视频深入讲解了 React 三种状态管理方案的底层机制，并通过对比分析给出了不同场景下的选型建议。核心观点是：没有银弹，选择取决于状态复杂度、更新频率和作用域。\n\n## 🧠 知识要点\n\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- 每次 setState 触发组件重新渲染\n- React 通过 Fiber 架构的\"双向循环\"协调更新\n- 批量更新（batching）合并同一事件循环中的多次 setState\n\n**关键特性：**\n- 适合：组件内部简单状态\n- 注意：状态更新是异步的，不能在 setState 后立即读取新值\n\n### 2. useReducer — 复杂状态逻辑\n\n**适用场景：**\n- 状态逻辑复杂，包含多个子值\n- 下一个状态依赖于前一个状态\n- 状态变更需要集中管理\n\n**模式对比：**\n```javascript\n// useState 方式\nconst [count, setCount] = useState(0)\nsetCount(c => c + 1)\n\n// useReducer 方式\nconst [state, dispatch] = useReducer(reducer, initialState)\ndispatch({ type: 'INCREMENT' })\n```\n\n### 3. Context + useReducer — 跨组件状态\n\n**架构模式：**\n- Context 负责\"传递\"（跨层级）\n- useReducer 负责\"管理\"（逻辑集中）\n- 组合使用可实现轻量级全局状态管理\n\n**性能注意事项：**\n- Context value 变化会触发所有消费者重渲染\n- 解决方案：拆分 Context、使用 memo\n\n## 🎯 选型决策树\n\n```\n简单组件内状态 → useState\n状态逻辑复杂 → useReducer\n跨组件共享 → Context + useReducer\n大规模全局 → Redux/Zustand 等外部库\n```\n\n## 💡 总结\n\n1. useState 是基础，80% 场景够用\n2. useReducer 在状态逻辑复杂时替代 useState\n3. Context 是\"传递\"机制，不是状态管理方案\n4. 组合使用前两者 + Context 可覆盖绝大多数场景\n\n## 🔗 延伸思考\n\n- React 19 的 use() Hook 会如何影响状态管理模式？\n- Signal（SolidJS 的方案）对比 React 的状态管理有什么不同？\n```\n\n---\n\n## 🎓 模板二：课堂笔记风格\n\n适合：学生网课、公开课、考试培训\n\n```markdown\n# [课程名称] — 第X讲\n\n## 📋 课程信息\n- **课程：** XXX\n- **讲师：** XXX\n- **时长：** XX分钟\n\n## 📌 本讲要点\n\n1. 要点一\n2. 要点二\n3. 要点三\n\n## 📝 知识点详解\n\n### [知识点1]\n- 定义/公式\n- 理解要点\n- 例题\n\n### [知识点2]\n...\n\n## ⚠️ 易错点 / 难点\n\n- 常见错误理解\n- 容易混淆的概念\n\n## 📖 例题解析\n\n**题目：** ...\n**解题思路：** ...\n**答案：** ...\n\n## 📑 课后思考\n\n- 课后习题\n- 延伸阅读\n\n## 📋 复习速查\n\n- [ ] 知识点1 理解了吗？\n- [ ] 知识点2 公式记住了吗？\n- [ ] 例题能独立做一遍吗？\n```\n\n---\n\n## 🏢 模板三：会议 / 演讲笔记\n\n适合：TED 演讲、行业分享、内部会议\n\n```markdown\n# [演讲/会议标题]\n\n## 📋 基本信息\n- **主讲人：** XXX\n- **背景：** 演讲/会议的背景信息\n- **时长：** XX分钟\n\n## 🎯 核心观点\n\n一句话概括演讲者的核心论点。\n\n## 🔑 关键要点\n\n### 1. [要点一]\n- 详细说明\n- 支持数据/案例\n\n### 2. [要点二]\n...\n\n## 📊 重要数据\n\n- 数据点1\n- 数据点2\n\n## 💬 金句摘录\n\n> \"引用原文金句\"\n\n## ✅ 启发 & 行动项\n\n- 可以做的 1-2-3\n- 值得深入思考的点\n\n## 🤔 批判性思考\n\n- 论点的局限性\n- 不同视角的补充\n```\n\n---\n\n## 📰 模板四：纪录片 / 科普笔记\n\n适合：纪录片、科普视频、深度分析、历史人文\n\n```markdown\n# [纪录片/科普标题]\n\n## 📋 背景介绍\n- 主题简介\n- 发布方/作者\n- 观看时间\n\n## ⏳ 时间线 / 发展脉络\n\n| 时间/阶段 | 事件/发现 | 意义 |\n|-----------|-----------|------|\n| ... | ... | ... |\n\n## 🔬 核心发现\n\n### 发现一：...\n- 证据/数据支持\n- 专家观点\n\n### 发现二：...\n...\n\n## 📊 关键数据 & 事实\n\n- 事实1\n- 统计数字\n\n## 🤔 个人思考\n\n- 对内容的思考\n- 与其他知识点的关联\n- 启发 & 疑惑\n\n## 📚 延伸资源\n\n- 片中提到的书籍/文章\n- 相关话题推荐\n```\n\n---\n\n## 🛠️ 模板选择逻辑\n\nAI 应按以下优先级选择笔记风格：\n\n1. **用户明确指定** → 按用户要求\n2. **内容类型自动识别**：\n   - 编程/技术内容 → 标准学习笔记（带代码块）\n   - 学术/考试内容 → 课堂笔记\n   - TED/演讲/分享 → 演讲笔记\n   - 纪录片/历史/科普 → 纪录片笔记\n   - 一般性教学/培训 → 标准学习笔记\n3. **混合内容** → 灵活组合多种风格元素\n\n## ⚙️ AI 自由度\n\n以上模板是参考框架，不是死规定。AI 应根据实际情况：\n- **增删章节** — 不需要的去掉，需要的加上\n- **调整顺序** — 以逻辑流畅为准\n- **改变深度** — 简短视频给精简版，长视频给详细版\n- **整合系列** — 批量处理时，可跨视频整合成连贯知识体系\n\nFile v1.3.0:references/workflow.md\n\n# 视频转笔记 — AI 工作流参考\n\n本文件为 AI 提供详细的技术参考。\n\n---\n\n## 依赖安装流程\n\nAI 在首次使用时检测环境，然后**列出缺失项并征得用户同意后再安装**。\n\n### 检查脚本\n\n```bash\n#!/bin/bash\n# 检测脚本（仅检测，不安装）\nMISSING=\"\"\n\npython3 --version >/dev/null 2>&1 || MISSING=\"$MISSING python3\"\nffmpeg -version >/dev/null 2>&1 || MISSING=\"$MISSING ffmpeg\"\npython3 -c \"import whisper\" >/dev/null 2>&1 || MISSING=\"$MISSING whisper\"\n\nif [ -n \"$MISSING\" ]; then\n  echo \"缺失依赖:$MISSING\"\n  echo \"需要用户确认后才能安装\"\nfi\n```\n\n> ⚡ **执行安装前必须做的事：**\n> 1. 告诉用户具体缺失哪些工具/包（如 \"python3, ffmpeg, openai-whisper\"）\n> 2. 展示完整安装命令（如 `brew install python3 ffmpeg && pip3 install openai-whisper`）\n> 3. 等待用户确认后再执行\n\n### 跨平台安装命令\n\n| 平台 | Python3 | ffmpeg | openai-whisper |\n|------|---------|--------|----------------|\n| **macOS** | `brew install python3` | `brew install ffmpeg` | `pip3 install openai-whisper` |\n| **Ubuntu/Debian** | `apt install python3` | `apt install ffmpeg` | `pip3 install openai-whisper` |\n| **Windows** | [python.org](https://python.org) 下载 | `winget install ffmpeg` | `pip install openai-whisper` |\n\n### yt-dlp（网络视频需要）\n\n```bash\npip3 install yt-dlp\n```\n\n---\n\n## 转写参数详解\n\n### `transcribe.py` 完整参数\n\n```\nusage: transcribe.py [-h] [--model {tiny,tiny.en,base,base.en,small,small.en,medium,medium.en,large,turbo}] [--language LANGUAGE] [--output-dir OUTPUT_DIR] [--device DEVICE] [--max-files MAX_FILES] videos [videos ...]\n```\n\n### 模型详情\n\n| 模型 | 大小 | 速度(相对) | 中文精度 | 推荐场景 |\n|------|------|-----------|---------|---------|\n| tiny | ~75MB | 1x | ⭐⭐ | 快速预览 |\n| base | ~150MB | 2x | ⭐⭐⭐ | 日常推荐 |\n| small | ~460MB | 4x | ⭐⭐⭐⭐ | 精度优先 |\n| medium | ~1.5GB | 8x | ⭐⭐⭐⭐⭐ | 重要内容 |\n| large | ~3GB | 16x | ⭐⭐⭐⭐⭐⭐ | 极致精度 |\n| turbo | ~1.5GB | 4x | ⭐⭐⭐⭐⭐ | ⭐ 长视频首选 |\n\n> **性能实测参考（MacBook Air M2, CPU）：**\n> - base 模型：约实时 1x（10分钟视频 ≈ 10分钟转写）\n> - turbo 模型：约实时 2x\n> - 首次运行会自动下载模型文件（后续复用缓存）\n\n### 输出格式\n\n```\n[00:00 -> 00:15] 大家好，今天我们来聊...\n[00:15 -> 00:30] 首先我们来介绍一下核心概念...\n[00:30 -> 00:45] 这里需要注意的一个点是...\n```\n\n输出文件：`<视频名>.txt`（与视频同目录）\n\n---\n\n## 已知问题 & 处理\n\n| 问题 | 原因 | AI 处理 |\n|------|------|---------|\n| 转写很慢 | CPU 模式，模型太大 | 改用 `--model base` 或 `turbo` |\n| 中文识别不准 | 未指定语言 | 加 `--language zh` |\n| 下载失败 | 平台限制/网络问题 | 告知用户，建议本地下载 |\n| 文件格式不支持 | 奇怪的视频格式 | 先用 ffmpeg 转码为 mp4 |\n| 内存不足 | 视频太大 | 先压缩或用更小模型 |\n| GPU 不可用 | 无 CUDA | 默认 CPU 模式 |\n\nFile v1.3.0:skill-card.md\n\n## Description: <br>\nVideo To Notes turns local or linked videos into transcripts and structured study notes using ffmpeg and Whisper, with note styles for courses, lectures, tutorials, talks, documentaries, and meetings. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[yll-kb](https://clawhub.ai/user/yll-kb) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nLearners, students, professionals, and knowledge workers use this skill to convert videos or video URLs into reviewable transcripts and structured notes. The agent checks required tools, optionally downloads supported video URLs after confirmation, transcribes audio, and produces notes tailored to the content type. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Video transcripts and notes may contain private or sensitive content. <br>\nMitigation: Review generated files after processing and delete transcripts or notes when the source video contains private information. <br>\nRisk: URL downloads and local transcription require user-visible local processing and may involve platform or copyright restrictions. <br>\nMitigation: Only process videos the user is allowed to use, confirm any URL download and output directory before execution, and follow platform terms. <br>\nRisk: Dependency installation can add local tools or Python packages. <br>\nMitigation: Detect missing dependencies first, show the exact tools or packages and installation commands, and proceed only after explicit user approval. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/yll-kb/video-to-notes) <br>\n- [Workflow Reference](artifact/references/workflow.md) <br>\n- [Note Templates Reference](artifact/references/note-templates.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, code, configuration, guidance] <br>\n**Output Format:** [Markdown notes and timestamped text transcripts, with shell commands and setup guidance when dependencies or downloads are needed.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Transcript files are written as .txt beside the source video or in the requested output directory; generated notes are derived from the transcript and the selected note style.] <br>\n\n## Skill Version(s): <br>\n1.3.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.2.0: 6 files, 12863 bytes\n\nFiles: references/note-templates.md (6382b), references/workflow.md (3076b), scripts/download_video.py (2283b), scripts/transcribe.py (7763b), SKILL.md (6056b), _meta.json (133b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: video-to-notes\ndescription: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序员、学生、职场进修者、知识爱好者。触发条件：用户提供视频路径/链接，或说\"把这个视频整理成笔记\"、\"帮我记笔记\"、\"转成学习笔记\"。支持中英文，一次 1-3 个文件。\nmetadata:\n  openclaw:\n    requires:\n      bins: [\"python3\", \"ffmpeg\", \"ffprobe\"]\n      pip:\n        - openai-whisper\n---\n\n# Video to Notes — 视频转学习笔记\n\n**看视频 ≠ 学会。笔记才是真正属于你的知识。**\n\n用户只需要说一句：\"帮我把这个视频整理成笔记\"。剩下的事 AI 自己搞定。\n\n---\n\n## 用户视角 —— 他们只需要知道这些\n\n用户不需要理解 Python、ffmpeg、whisper 是什么。他们只需要：\n\n1. **提供视频** — 给文件路径，或者发个链接（YouTube/B站等）\n2. **说明需求**（可选）— \"用英文\"、\"只要重点\"、\"按课堂笔记风格\"\n3. **等着拿笔记**\n\nAI 自动完成全部工作。\n\n---\n\n## AI 工作流\n\n### 第一步：检测 & 安装依赖\n\n用户说想转视频后，**AI 先静默检查环境**：\n\n```bash\n# 检查所有依赖，缺什么装什么\npython3 --version               # 缺 → brew install python3\nffmpeg -version                  # 缺 → brew install ffmpeg\npython3 -c \"import whisper\"      # 缺 → pip3 install openai-whisper\npip3 list 2>/dev/null | grep -q yt-dlp  # 缺 → pip3 install yt-dlp （可选，仅URL需要）\n```\n\n> ⚡ **应该让用户等一下，还是直接后台装？**\n> 如果只是缺 pip 包（whisper、yt-dlp），直接 `pip3 install` 装，装完告诉用户一声。\n> 如果缺 python3 或 ffmpeg，需要用户授权安装（`brew install`），问一句\"需要装一些工具，可以吗？\"。\n> **整个过程中用户不需要知道这些工具的名字**，你只需要说\"正在准备环境，需要安装一些必要的组件\"。\n\n### 第二步：获取视频\n\n| 来源 | AI 处理方式 |\n|------|------------|\n| **本地文件** | 直接读取路径 |\n| **URL（YouTube/B站等）** | `python3 scripts/download_video.py <URL>`（自动安装 yt-dlp） |\n| **平台限制无法下载** | 礼貌告知用户：\"这个平台的视频有限制，能不能先下载到本地发给我？\" |\n\n### 第三步：转写\n\n```bash\npython3 scripts/transcribe.py <视频路径> [选项]\n```\n\n**参数选择逻辑：**\n\n| 场景 | 推荐参数 |\n|------|---------|\n| 普通视频 | `--model base`（默认，速度与精度平衡） |\n| 长视频（>1h） | `--model turbo`（速度快，精度接近 large） |\n| 中文视频 | 加 `--language zh` 提升准确率 |\n| 批量处理 | 多个路径一起传，最多 3 个 |\n| 超长视频（>2h） | 自动提示用户，建议只处理单个文件确保质量 |\n\n### 第四步：AI 生成学习笔记 ⭐ — 核心价值\n\n转写完成后，读取 `.txt` 文件，自动生成结构化学习笔记。\n\n**笔记风格自动匹配：**\n\n| 内容类型 → | 自动选择风格 |\n|------------|-------------|\n| 编程/技术教程 | 📚 **标准学习笔记** — 带代码块、架构说明 |\n| 学生网课/公开课 | 🎓 **课堂笔记** — 考点、例题、易错点 |\n| TED/演讲/行业分享 | 🏢 **演讲笔记** — 核心观点、金句、行动项 |\n| 纪录片/科普 | 📰 **纪录片笔记** — 时间线、发现、数据 |\n| 一般教学/培训 | 📚 **标准学习笔记** — 知识要点结构化 |\n\n> 详细模板见 → [📖 笔记模板参考](references/note-templates.md)\n\n**笔记语言：** 默认用当前对话语言。用户可指定（\"用英文写\"、\"中日双语\"等）。\n\n**质量准则：** 详细准确 / 结构化清晰 / 信息密度高 / 忠实原文不编造 / 设计为可复习\n\n---\n\n## 脚本参考（AI 用）\n\n### `scripts/transcribe.py`\n\n```bash\n# 日常\npython3 scripts/transcribe.py course.mp4\n\n# 长视频 + 中文\npython3 scripts/transcribe.py lecture.mp4 --model turbo --language zh\n\n# 批量\npython3 scripts/transcribe.py p1.mp4 p2.mp4 p3.mp4\n```\n\n### `scripts/download_video.py`\n\n```bash\npython3 scripts/download_video.py \"https://youtube.com/watch?v=xxx\" --output-dir 目录\n```\n\n---\n\n## 常见用户需求 & AI 应对\n\n| 用户说 | AI 怎么做 |\n|--------|----------|\n| \"帮我把这个视频整理成笔记\" | 检测依赖 → 转写 → 自动匹配风格生成笔记 |\n| \"把桌面上这三个视频都处理了\" | 批量转写，最多3个；如果是系列课程，跨文件整合成连贯知识体系 |\n| \"用英文写笔记\" | 转写保持原语言，笔记用英文生成 |\n| \"这个 TED 演讲帮我记一下\" | 识别为演讲类型 → 用演讲笔记模板 |\n| \"只要第二个部分的内容\" | 选择性转写/笔记，跳过无关内容 |\n| \"太长了，先处理这一个\" | 长视频自动建议只处理单个 |\n| \"这是 YouTube 链接\" | 下载 → 转写 → 笔记 |\n\n---\n\n## 注意事项\n\n- **隐私：** 转写稿可能含敏感信息，提示用户本地处理\n- **版权：** 下载网络视频请遵守平台条款，仅用于个人学习\n- **文件清理：** 临时 `.wav` 自动删除，只留 `.txt` 和笔记\n- **长视频：** >2h 自动提示，建议单文件处理\n- **失败处理：** 下载失败/转写出错 → 友好告知用户并提供替代建议\n\n---\n\n## 资源结构\n\n```\nvideo-to-notes/\n├── SKILL.md                      ← 本文\n├── scripts/\n│   ├── transcribe.py             ← 语音转文字\n│   └── download_video.py         ← 网络视频下载\n└── references/\n    ├── workflow.md               ← 详细工作流（AI 参考）\n    └── note-templates.md         ← 笔记模板 & 示例\n```\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7edjpjh5vn9pvddkg6t1481s86r67a\",\n  \"slug\": \"video-to-notes\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1778811604617\n}\n\nFile v1.2.0:references/note-templates.md\n\n# 笔记模板 & 示例\n\n本文件提供不同场景下的笔记模板和完整示例，供 AI 在生成笔记时参考。\n\nAI 应**根据视频内容类型自动选择**合适的模板，也可按用户要求切换。\n\n---\n\n## 📚 模板一：标准学习笔记（最常用）\n\n适合：技术教程、在线课程、讲座、深度内容\n\n```markdown\n# [视频标题]\n\n## 📋 视频信息\n- **时长：** XX分钟\n- **主题：** 一句话概括\n- **来源：** 视频链接/路径\n\n## 📖 内容概览\n\n用 2-3 句话概括视频核心内容。\n\n## 🧠 知识要点\n\n### 1. [核心概念/模块一]\n\n**关键定义：**\n- XXX：详细解释\n\n**原理说明：**\n- 机制/流程/逻辑\n\n**示例/类比：**\n- 帮助理解的例子\n\n### 2. [核心概念/模块二]\n\n...\n\n### 3. [核心概念/模块三]\n\n...\n\n## 💻 实战 / 代码（如有）\n\n\\`\\`\\`语言\n代码块\n\\`\\`\\`\n\n**关键代码解读：**\n- 第X行：作用说明\n\n## 📊 总结对比（如有）\n\n| 对比项 | A | B |\n|--------|---|---|\n| 特点 | | |\n| 适用 | | |\n| 优劣 | | |\n\n## 🎯 总结\n\n- 核心收获点 1\n- 核心收获点 2\n\n## 🔗 延伸思考\n\n- 值得进一步探索的方向\n- 与其他知识的关联\n- 实际应用建议\n```\n\n### 标准学习笔记 — 完整示例（虚构）\n\n```markdown\n# React 状态管理深度解析\n\n## 📋 视频信息\n- **时长：** 45分钟\n- **主题：** React 中 useState、useReducer 和 Context 的工作原理及选型\n- **来源：** 内部课程\n\n## 📖 内容概览\n\n视频深入讲解了 React 三种状态管理方案的底层机制，并通过对比分析给出了不同场景下的选型建议。核心观点是：没有银弹，选择取决于状态复杂度、更新频率和作用域。\n\n## 🧠 知识要点\n\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- 每次 setState 触发组件重新渲染\n- React 通过 Fiber 架构的\"双向循环\"协调更新\n- 批量更新（batching）合并同一事件循环中的多次 setState\n\n**关键特性：**\n- 适合：组件内部简单状态\n- 注意：状态更新是异步的，不能在 setState 后立即读取新值\n\n### 2. useReducer — 复杂状态逻辑\n\n**适用场景：**\n- 状态逻辑复杂，包含多个子值\n- 下一个状态依赖于前一个状态\n- 状态变更需要集中管理\n\n**模式对比：**\n```javascript\n// useState 方式\nconst [count, setCount] = useState(0)\nsetCount(c => c + 1)\n\n// useReducer 方式\nconst [state, dispatch] = useReducer(reducer, initialState)\ndispatch({ type: 'INCREMENT' })\n```\n\n### 3. Context + useReducer — 跨组件状态\n\n**架构模式：**\n- Context 负责\"传递\"（跨层级）\n- useReducer 负责\"管理\"（逻辑集中）\n- 组合使用可实现轻量级全局状态管理\n\n**性能注意事项：**\n- Context value 变化会触发所有消费者重渲染\n- 解决方案：拆分 Context、使用 memo\n\n## 🎯 选型决策树\n\n```\n简单组件内状态 → useState\n状态逻辑复杂 → useReducer\n跨组件共享 → Context + useReducer\n大规模全局 → Redux/Zustand 等外部库\n```\n\n## 💡 总结\n\n1. useState 是基础，80% 场景够用\n2. useReducer 在状态逻辑复杂时替代 useState\n3. Context 是\"传递\"机制，不是状态管理方案\n4. 组合使用前两者 + Context 可覆盖绝大多数场景\n\n## 🔗 延伸思考\n\n- React 19 的 use() Hook 会如何影响状态管理模式？\n- Signal（SolidJS 的方案）对比 React 的状态管理有什么不同？\n```\n\n---\n\n## 🎓 模板二：课堂笔记风格\n\n适合：学生网课、公开课、考试培训\n\n```markdown\n# [课程名称] — 第X讲\n\n## 📋 课程信息\n- **课程：** XXX\n- **讲师：** XXX\n- **时长：** XX分钟\n\n## 📌 本讲要点\n\n1. 要点一\n2. 要点二\n3. 要点三\n\n## 📝 知识点详解\n\n### [知识点1]\n- 定义/公式\n- 理解要点\n- 例题\n\n### [知识点2]\n...\n\n## ⚠️ 易错点 / 难点\n\n- 常见错误理解\n- 容易混淆的概念\n\n## 📖 例题解析\n\n**题目：** ...\n**解题思路：** ...\n**答案：** ...\n\n## 📑 课后思考\n\n- 课后习题\n- 延伸阅读\n\n## 📋 复习速查\n\n- [ ] 知识点1 理解了吗？\n- [ ] 知识点2 公式记住了吗？\n- [ ] 例题能独立做一遍吗？\n```\n\n---\n\n## 🏢 模板三：会议 / 演讲笔记\n\n适合：TED 演讲、行业分享、内部会议\n\n```markdown\n# [演讲/会议标题]\n\n## 📋 基本信息\n- **主讲人：** XXX\n- **背景：** 演讲/会议的背景信息\n- **时长：** XX分钟\n\n## 🎯 核心观点\n\n一句话概括演讲者的核心论点。\n\n## 🔑 关键要点\n\n### 1. [要点一]\n- 详细说明\n- 支持数据/案例\n\n### 2. [要点二]\n...\n\n## 📊 重要数据\n\n- 数据点1\n- 数据点2\n\n## 💬 金句摘录\n\n> \"引用原文金句\"\n\n## ✅ 启发 & 行动项\n\n- 可以做的 1-2-3\n- 值得深入思考的点\n\n## 🤔 批判性思考\n\n- 论点的局限性\n- 不同视角的补充\n```\n\n---\n\n## 📰 模板四：纪录片 / 科普笔记\n\n适合：纪录片、科普视频、深度分析、历史人文\n\n```markdown\n# [纪录片/科普标题]\n\n## 📋 背景介绍\n- 主题简介\n- 发布方/作者\n- 观看时间\n\n## ⏳ 时间线 / 发展脉络\n\n| 时间/阶段 | 事件/发现 | 意义 |\n|-----------|-----------|------|\n| ... | ... | ... |\n\n## 🔬 核心发现\n\n### 发现一：...\n- 证据/数据支持\n- 专家观点\n\n### 发现二：...\n...\n\n## 📊 关键数据 & 事实\n\n- 事实1\n- 统计数字\n\n## 🤔 个人思考\n\n- 对内容的思考\n- 与其他知识点的关联\n- 启发 & 疑惑\n\n## 📚 延伸资源\n\n- 片中提到的书籍/文章\n- 相关话题推荐\n```\n\n---\n\n## 🛠️ 模板选择逻辑\n\nAI 应按以下优先级选择笔记风格：\n\n1. **用户明确指定** → 按用户要求\n2. **内容类型自动识别**：\n   - 编程/技术内容 → 标准学习笔记（带代码块）\n   - 学术/考试内容 → 课堂笔记\n   - TED/演讲/分享 → 演讲笔记\n   - 纪录片/历史/科普 → 纪录片笔记\n   - 一般性教学/培训 → 标准学习笔记\n3. **混合内容** → 灵活组合多种风格元素\n\n## ⚙️ AI 自由度\n\n以上模板是参考框架，不是死规定。AI 应根据实际情况：\n- **增删章节** — 不需要的去掉，需要的加上\n- **调整顺序** — 以逻辑流畅为准\n- **改变深度** — 简短视频给精简版，长视频给详细版\n- **整合系列** — 批量处理时，可跨视频整合成连贯知识体系\n\nFile v1.2.0:references/workflow.md\n\n# 视频转笔记 — AI 工作流参考\n\n本文件为 AI 提供详细的技术参考。**用户不需要知道这些内容。**\n\n---\n\n## 依赖自动安装流程\n\nAI 在首次使用时静默检查环境，缺什么装什么。\n\n### 检查脚本\n\n```bash\n#!/bin/bash\n# 一键检查 + 安装（macOS）\nMISSING=\"\"\n\npython3 --version >/dev/null 2>&1 || MISSING=\"$MISSING python3\"\nffmpeg -version >/dev/null 2>&1 || MISSING=\"$MISSING ffmpeg\"\npython3 -c \"import whisper\" >/dev/null 2>&1 || MISSING=\"$MISSING whisper\"\n\nif [ -n \"$MISSING\" ]; then\n  echo \"需要安装:$MISSING\"\n  # 检查 Homebrew\n  if command -v brew >/dev/null 2>&1; then\n    echo \"$MISSING\" | grep -q \"python3\" && brew install python3\n    echo \"$MISSING\" | grep -q \"ffmpeg\" && brew install ffmpeg\n  fi\n  echo \"$MISSING\" | grep -q \"whisper\" && pip3 install openai-whisper\nfi\n```\n\n### 跨平台安装命令\n\n| 平台 | Python3 | ffmpeg | openai-whisper |\n|------|---------|--------|----------------|\n| **macOS** | `brew install python3` | `brew install ffmpeg` | `pip3 install openai-whisper` |\n| **Ubuntu/Debian** | `apt install python3` | `apt install ffmpeg` | `pip3 install openai-whisper` |\n| **Windows** | [python.org](https://python.org) 下载 | `winget install ffmpeg` | `pip install openai-whisper` |\n\n### yt-dlp（网络视频需要）\n\n```bash\npip3 install yt-dlp\n```\n\n---\n\n## 转写参数详解\n\n### `transcribe.py` 完整参数\n\n```\nusage: transcribe.py [-h] [--model {tiny,tiny.en,base,base.en,small,small.en,medium,medium.en,large,turbo}] [--language LANGUAGE] [--output-dir OUTPUT_DIR] [--device DEVICE] [--max-files MAX_FILES] videos [videos ...]\n```\n\n### 模型详情\n\n| 模型 | 大小 | 速度(相对) | 中文精度 | 推荐场景 |\n|------|------|-----------|---------|---------|\n| tiny | ~75MB | 1x | ⭐⭐ | 快速预览 |\n| base | ~150MB | 2x | ⭐⭐⭐ | 日常推荐 |\n| small | ~460MB | 4x | ⭐⭐⭐⭐ | 精度优先 |\n| medium | ~1.5GB | 8x | ⭐⭐⭐⭐⭐ | 重要内容 |\n| large | ~3GB | 16x | ⭐⭐⭐⭐⭐⭐ | 极致精度 |\n| turbo | ~1.5GB | 4x | ⭐⭐⭐⭐⭐ | ⭐ 长视频首选 |\n\n> **性能实测参考（MacBook Air M2, CPU）：**\n> - base 模型：约实时 1x（10分钟视频 ≈ 10分钟转写）\n> - turbo 模型：约实时 2x\n> - 首次运行会自动下载模型文件（后续复用缓存）\n\n### 输出格式\n\n```\n[00:00 -> 00:15] 大家好，今天我们来聊...\n[00:15 -> 00:30] 首先我们来介绍一下核心概念...\n[00:30 -> 00:45] 这里需要注意的一个点是...\n```\n\n输出文件：`<视频名>.txt`（与视频同目录）\n\n---\n\n## 已知问题 & 处理\n\n| 问题 | 原因 | AI 处理 |\n|------|------|---------|\n| 转写很慢 | CPU 模式，模型太大 | 改用 `--model base` 或 `turbo` |\n| 中文识别不准 | 未指定语言 | 加 `--language zh` |\n| 下载失败 | 平台限制/网络问题 | 告知用户，建议本地下载 |\n| 文件格式不支持 | 奇怪的视频格式 | 先用 ffmpeg 转码为 mp4 |\n| 内存不足 | 视频太大 | 先压缩或用更小模型 |\n| GPU 不可用 | 无 CUDA | 默认 CPU 模式 |\n\nArchive v1.1.0: 6 files, 14643 bytes\n\nFiles: references/note-templates.md (6382b), references/workflow.md (4630b), scripts/download_video.py (2283b), scripts/transcribe.py (7763b), SKILL.md (8213b), _meta.json (133b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: video-to-notes\ndescription: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序员、学生、职场进修者、知识爱好者。触发条件：用户提供视频路径/链接，或说\"把这个视频整理成笔记\"、\"帮我记笔记\"、\"转成学习笔记\"。支持中英文，一次 1-3 个文件。\nmetadata:\n  openclaw:\n    requires:\n      bins: [\"python3\", \"ffmpeg\", \"ffprobe\"]\n      credentials:\n        - name: \"OPENAI_API_KEY\"\n          required: false\n          description: \"用于 AI 笔记生成（如果不设，由 Agent 自行处理）\"\n      pip:\n        - openai-whisper\n---\n\n# Video to Notes — 视频转学习笔记\n\n**看视频 ≠ 学会。笔记才是真正属于你的知识。**\n\n这个 skill 把任何视频内容变成结构化学习笔记，让你不用反复回看、随时复习重点。\n\n---\n\n## ⚠️ 使用前检查 — 依赖说明\n\n本 skill 需要以下工具在本地可用。AI 在每次使用前应自动检查：\n\n```bash\n# 1. Python 3（macOS 自带，Linux/Win 可能需要装）\npython3 --version\n\n# 2. ffmpeg（音频提取用）\n# macOS: brew install ffmpeg\n# Ubuntu: apt install ffmpeg\n# Win: choco install ffmpeg\nffmpeg -version\n\n# 3. openai-whisper（核心转写引擎）\npip3 install openai-whisper\n```\n\n**如果用户本地没有这些依赖怎么办？**\n\n| 依赖 | 如果缺失 |\n|------|---------|\n| python3 | 告知用户安装：[python.org](https://python.org) 或 `brew install python3` |\n| ffmpeg | `brew install ffmpeg`（macOS）或 `apt install ffmpeg`（Linux） |\n| whisper | AI 自动帮用户 `pip3 install openai-whisper` |\n\n> 💡 **大多数 OpenClaw 用户已经有了这些工具**（macOS 自带 Python3，开发者基本都有 ffmpeg）。\n> 如果实在不具备条件，AI 应**提前告知用户**缺失什么、怎么装，而不是直接报错。\n\n---\n\n## 核心价值\n\n```\n视频（1小时）→ 转写稿 → AI 笔记（5分钟读完）\n     ↓                       ↓\n  看过就忘                 随时回看、复习、检索\n```\n\n## 快速上手\n\n### 本地视频\n```bash\npython3 scripts/transcribe.py ~/Downloads/课程.mp4\n```\n在同目录生成 `.txt` 转写稿 → AI 读完直接产出笔记\n\n### 网络视频（需要 yt-dlp）\n```bash\npython3 scripts/download_video.py \"https://youtu.be/xxx\"\npython3 scripts/transcribe.py ./下载的文件.mp4\n```\n\n### 指定质量和语言\n```bash\npython3 scripts/transcribe.py 讲座.mp4 --model turbo --language zh\n```\n\n### 批量处理\n```bash\npython3 scripts/transcribe.py p1.mp4 p2.mp4 p3.mp4\n```\n\n> **长视频（>2小时）**：自动建议只处理单个文件，保证质量。\n\n---\n\n## 完整工作流\n\n详细步骤、模型选择、故障排查 → [📖 完整工作流指南](references/workflow.md)\n\n### 三步流程\n\n```\n① 获取视频 ── 本地路径 或 URL下载\n      ↓\n② 语音转文字 ── transcribe.py（whisper）\n      ↓\n③ AI 生成笔记 ── 读转写稿 → 结构化学习笔记\n```\n\n---\n\n## 脚本说明\n\n### `scripts/transcribe.py` — 语音转文字（核心）\n\n```bash\npython3 scripts/transcribe.py 视频.mp4 [选项]\n```\n\n**关键参数：**\n\n| 参数 | 默认 | 说明 |\n|------|------|------|\n| `--model` | `base` | tiny → 极速 / base → 推荐 / turbo → 长视频首选 / large → 最高精度 |\n| `--language` | 自动 | 指定语言提升准确率：`zh` / `en` / `ja` 等 |\n| `--max-files` | 3 | 一次最多处理文件数 |\n\n**模型选择指南：**\n\n- `tiny` — 最快，预览用（5分钟出）\n- `base` — 日常推荐，速度与精度平衡 👍\n- `small/medium` — 精度优先场景\n- `turbo` — ⭐ **长视频推荐**，速度与 large 级精度\n- `large` — 极致精度，慢\n\n### `scripts/download_video.py` — 网络视频下载\n\n```bash\npip3 install yt-dlp   # 先安装\npython3 scripts/download_video.py <URL> --output-dir <目录>\n```\n\n支持 YouTube、B站等 yt-dlp 支持的所有平台。\n\n---\n\n## 笔记生成 — 核心差异化 ✨\n\n**这是本 skill 区别于纯转写/摘要工具的核心价值。**\n\n转写完成后，AI 读取 `.txt` 文件，**主动分析内容、提取知识、结构化整理成学习笔记**。\n\n### 笔记风格选择\n\nAI 根据视频内容类型 **自动选择** 最合适的笔记风格。用户也可以手动指定。\n\n#### 📚 标准学习笔记（默认）\n适合：课程、讲座、技术教程\n\n```\n# 标题\n## 视频信息\n- 时长 / 主题 / 来源\n\n## 内容概览\n- 2-3句核心总结\n\n## 知识要点\n### 1. 核心概念\n- 定义、原理、关键点\n### 2. 重点分析\n- 深入解释、对比、案例\n### 3. ...（按内容自然展开）\n\n## 实战/代码/案例\n- 具体操作、代码片段、公式\n\n## 总结 & 思维导图\n- 逻辑结构梳理、要点回顾\n\n## 延伸思考\n- 值得深挖的点、关联知识、实践建议\n```\n\n#### 🎓 课堂笔记风格\n适合：学生网课、公开课、应试培训\n\n```\n# 课程笔记\n## 课程基本信息\n## 重点知识点（按章节）\n### 考点/核心公式/定义\n### 例题解析\n## 易错点提醒\n## 课后思考题\n## 复习要点速览\n```\n\n#### 🏢 会议/演讲笔记风格\n适合：内部会议、TED演讲、行业分享\n\n```\n# 演讲/会议笔记\n## 基本信息（主讲人、时间、背景）\n## 核心观点\n## 关键数据 / 案例\n## 启发 & 行动项\n## 金句摘录\n```\n\n#### 📰 纪录片/科普笔记风格\n适合：纪录片、科普视频、深度分析\n\n```\n# 纪录片笔记\n## 背景介绍\n## 时间线/发展脉络\n## 核心发现/论点\n## 数据 & 证据\n## 个人思考 & 批判\n```\n\n### 笔记语言\n- **默认**：使用当前对话语言\n- **用户指定**：按用户要求（如\"用英文写笔记\"）\n- **双语视频**：保留原文术语，注释说明\n\n### 质量准则 🎯\n\n| 原则 | 说明 |\n|------|------|\n| **详细准确** | 覆盖关键信息，不遗漏 |\n| **结构化** | 层级清晰，便于后续查阅/搜索 |\n| **高信息密度** | 去废话，保留干货 |\n| **忠实原文** | 不编造、不歪曲原内容 |\n| **可复习** | 笔记设计本身就是为了回头看的 |\n\n---\n\n## 适用场景（谁会用？）\n\n任何人需要从视频中学习的人：\n\n| 角色 | 场景 |\n|------|------|\n| 👨‍💻 **程序员** | 技术教程 → 笔记带代码、架构图说明 |\n| 👩‍🎓 **学生** | 网课/公开课 → 复习笔记、考点整理 |\n| 👔 **职场人** | 行业会议/培训 → 核心观点 + 行动项 |\n| 📚 **终身学习者** | 纪录片/科普/播客 → 知识结构化 |\n| 🎤 **内容创作者** | 自己的视频 → 快速出文案/摘要 |\n| 🧓 **银发族** | 养生/技能视频 → 清晰步骤笔记 |\n| 👪 **家长** | 育儿/教育视频 → 要点速查 |\n| ... | **任何想看视频记东西的人** |\n\n> **核心场景：** \"这个视频很重要，但我没时间/不想再看一遍。帮我把内容整理成笔记。\"\n\n---\n\n## 示例对话\n\n> **用户：** \"帮我看下这个视频整理成笔记\"\n> → 下载/转写 → 自动生成标准学习笔记\n\n> **用户：** \"把我桌面上这三个课程视频都处理了，用英文写笔记\"\n> → 批量转写 → 生成三份英文笔记\n\n> **用户：** \"这个 TED 演讲帮我记一下重点\"\n> → AI 自动识别为演讲风格 → 生成演讲笔记\n\n> **用户：** \"刚才那个视频太长了，主要记第二部分的内容，第一个部分太水了跳过\"\n> → AI 选择性笔记，只处理有效内容\n\n---\n\n## 资源结构\n\n```\nvideo-to-notes/\n├── SKILL.md                      ← 主入口（本文件）\n├── scripts/\n│   ├── transcribe.py             ← 语音转文字\n│   └── download_video.py         ← 网络视频下载\n└── references/\n    ├── workflow.md               ← 详细工作流\n    └── note-templates.md         ← 笔记模板 & 示例\n```\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7edjpjh5vn9pvddkg6t1481s86r67a\",\n  \"slug\": \"video-to-notes\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1778811524958\n}\n\nFile v1.1.0:references/note-templates.md\n\n# 笔记模板 & 示例\n\n本文件提供不同场景下的笔记模板和完整示例，供 AI 在生成笔记时参考。\n\nAI 应**根据视频内容类型自动选择**合适的模板，也可按用户要求切换。\n\n---\n\n## 📚 模板一：标准学习笔记（最常用）\n\n适合：技术教程、在线课程、讲座、深度内容\n\n```markdown\n# [视频标题]\n\n## 📋 视频信息\n- **时长：** XX分钟\n- **主题：** 一句话概括\n- **来源：** 视频链接/路径\n\n## 📖 内容概览\n\n用 2-3 句话概括视频核心内容。\n\n## 🧠 知识要点\n\n### 1. [核心概念/模块一]\n\n**关键定义：**\n- XXX：详细解释\n\n**原理说明：**\n- 机制/流程/逻辑\n\n**示例/类比：**\n- 帮助理解的例子\n\n### 2. [核心概念/模块二]\n\n...\n\n### 3. [核心概念/模块三]\n\n...\n\n## 💻 实战 / 代码（如有）\n\n\\`\\`\\`语言\n代码块\n\\`\\`\\`\n\n**关键代码解读：**\n- 第X行：作用说明\n\n## 📊 总结对比（如有）\n\n| 对比项 | A | B |\n|--------|---|---|\n| 特点 | | |\n| 适用 | | |\n| 优劣 | | |\n\n## 🎯 总结\n\n- 核心收获点 1\n- 核心收获点 2\n\n## 🔗 延伸思考\n\n- 值得进一步探索的方向\n- 与其他知识的关联\n- 实际应用建议\n```\n\n### 标准学习笔记 — 完整示例（虚构）\n\n```markdown\n# React 状态管理深度解析\n\n## 📋 视频信息\n- **时长：** 45分钟\n- **主题：** React 中 useState、useReducer 和 Context 的工作原理及选型\n- **来源：** 内部课程\n\n## 📖 内容概览\n\n视频深入讲解了 React 三种状态管理方案的底层机制，并通过对比分析给出了不同场景下的选型建议。核心观点是：没有银弹，选择取决于状态复杂度、更新频率和作用域。\n\n## 🧠 知识要点\n\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- 每次 setState 触发组件重新渲染\n- React 通过 Fiber 架构的\"双向循环\"协调更新\n- 批量更新（batching）合并同一事件循环中的多次 setState\n\n**关键特性：**\n- 适合：组件内部简单状态\n- 注意：状态更新是异步的，不能在 setState 后立即读取新值\n\n### 2. useReducer — 复杂状态逻辑\n\n**适用场景：**\n- 状态逻辑复杂，包含多个子值\n- 下一个状态依赖于前一个状态\n- 状态变更需要集中管理\n\n**模式对比：**\n```javascript\n// useState 方式\nconst [count, setCount] = useState(0)\nsetCount(c => c + 1)\n\n// useReducer 方式\nconst [state, dispatch] = useReducer(reducer, initialState)\ndispatch({ type: 'INCREMENT' })\n```\n\n### 3. Context + useReducer — 跨组件状态\n\n**架构模式：**\n- Context 负责\"传递\"（跨层级）\n- useReducer 负责\"管理\"（逻辑集中）\n- 组合使用可实现轻量级全局状态管理\n\n**性能注意事项：**\n- Context value 变化会触发所有消费者重渲染\n- 解决方案：拆分 Context、使用 memo\n\n## 🎯 选型决策树\n\n```\n简单组件内状态 → useState\n状态逻辑复杂 → useReducer\n跨组件共享 → Context + useReducer\n大规模全局 → Redux/Zustand 等外部库\n```\n\n## 💡 总结\n\n1. useState 是基础，80% 场景够用\n2. useReducer 在状态逻辑复杂时替代 useState\n3. Context 是\"传递\"机制，不是状态管理方案\n4. 组合使用前两者 + Context 可覆盖绝大多数场景\n\n## 🔗 延伸思考\n\n- React 19 的 use() Hook 会如何影响状态管理模式？\n- Signal（SolidJS 的方案）对比 React 的状态管理有什么不同？\n```\n\n---\n\n## 🎓 模板二：课堂笔记风格\n\n适合：学生网课、公开课、考试培训\n\n```markdown\n# [课程名称] — 第X讲\n\n## 📋 课程信息\n- **课程：** XXX\n- **讲师：** XXX\n- **时长：** XX分钟\n\n## 📌 本讲要点\n\n1. 要点一\n2. 要点二\n3. 要点三\n\n## 📝 知识点详解\n\n### [知识点1]\n- 定义/公式\n- 理解要点\n- 例题\n\n### [知识点2]\n...\n\n## ⚠️ 易错点 / 难点\n\n- 常见错误理解\n- 容易混淆的概念\n\n## 📖 例题解析\n\n**题目：** ...\n**解题思路：** ...\n**答案：** ...\n\n## 📑 课后思考\n\n- 课后习题\n- 延伸阅读\n\n## 📋 复习速查\n\n- [ ] 知识点1 理解了吗？\n- [ ] 知识点2 公式记住了吗？\n- [ ] 例题能独立做一遍吗？\n```\n\n---\n\n## 🏢 模板三：会议 / 演讲笔记\n\n适合：TED 演讲、行业分享、内部会议\n\n```markdown\n# [演讲/会议标题]\n\n## 📋 基本信息\n- **主讲人：** XXX\n- **背景：** 演讲/会议的背景信息\n- **时长：** XX分钟\n\n## 🎯 核心观点\n\n一句话概括演讲者的核心论点。\n\n## 🔑 关键要点\n\n### 1. [要点一]\n- 详细说明\n- 支持数据/案例\n\n### 2. [要点二]\n...\n\n## 📊 重要数据\n\n- 数据点1\n- 数据点2\n\n## 💬 金句摘录\n\n> \"引用原文金句\"\n\n## ✅ 启发 & 行动项\n\n- 可以做的 1-2-3\n- 值得深入思考的点\n\n## 🤔 批判性思考\n\n- 论点的局限性\n- 不同视角的补充\n```\n\n---\n\n## 📰 模板四：纪录片 / 科普笔记\n\n适合：纪录片、科普视频、深度分析、历史人文\n\n```markdown\n# [纪录片/科普标题]\n\n## 📋 背景介绍\n- 主题简介\n- 发布方/作者\n- 观看时间\n\n## ⏳ 时间线 / 发展脉络\n\n| 时间/阶段 | 事件/发现 | 意义 |\n|-----------|-----------|------|\n| ... | ... | ... |\n\n## 🔬 核心发现\n\n### 发现一：...\n- 证据/数据支持\n- 专家观点\n\n### 发现二：...\n...\n\n## 📊 关键数据 & 事实\n\n- 事实1\n- 统计数字\n\n## 🤔 个人思考\n\n- 对内容的思考\n- 与其他知识点的关联\n- 启发 & 疑惑\n\n## 📚 延伸资源\n\n- 片中提到的书籍/文章\n- 相关话题推荐\n```\n\n---\n\n## 🛠️ 模板选择逻辑\n\nAI 应按以下优先级选择笔记风格：\n\n1. **用户明确指定** → 按用户要求\n2. **内容类型自动识别**：\n   - 编程/技术内容 → 标准学习笔记（带代码块）\n   - 学术/考试内容 → 课堂笔记\n   - TED/演讲/分享 → 演讲笔记\n   - 纪录片/历史/科普 → 纪录片笔记\n   - 一般性教学/培训 → 标准学习笔记\n3. **混合内容** → 灵活组合多种风格元素\n\n## ⚙️ AI 自由度\n\n以上模板是参考框架，不是死规定。AI 应根据实际情况：\n- **增删章节** — 不需要的去掉，需要的加上\n- **调整顺序** — 以逻辑流畅为准\n- **改变深度** — 简短视频给精简版，长视频给详细版\n- **整合系列** — 批量处理时，可跨视频整合成连贯知识体系\n\nFile v1.1.0:references/workflow.md\n\n# 视频转笔记 — 完整工作流指南\n\n## 流程概览\n\n```\n用户输入（视频文件路径 或 URL）\n      │\n      ├── URL → download_video.py → 本地视频文件\n      │\n      ▼\n  transcribe.py (whisper 转写)\n      │\n      ▼\n  .txt 转写稿\n      │\n      ▼\n  AI 分析内容 → 选笔记模板 → 生成结构化 Markdown 学习笔记\n```\n\n---\n\n## 步骤 1: 获取视频文件\n\n### 方式 A：本地文件\n用户直接提供路径，直接进入转写。\n\n```bash\npython3 scripts/transcribe.py /path/to/video.mp4\n```\n\n### 方式 B：网络链接\n\n先下载到本地：\n\n```bash\n# 安装 yt-dlp（如果还没装）\npip3 install yt-dlp\n\n# 下载\npython3 scripts/download_video.py \"https://www.youtube.com/watch?v=xxx\" --output-dir ~/Downloads\n```\n\n**支持的平台：** yt-dlp 支持的所有网站（YouTube、B站、抖音、小红书等）\n\n> ⚠️ **注意：** 部分平台可能对视频下载有限制，如果下载失败，请用户自行下载后提供本地文件。\n\n---\n\n## 步骤 2: 语音转文字\n\n```bash\npython3 scripts/transcribe.py <视频路径> [选项]\n```\n\n### 模型选择\n\n| 模型 | 速度 | 精度 | 推荐场景 |\n|------|------|------|---------|\n| `tiny` | ⚡⚡⚡⚡⚡ | ⭐⭐ | 快速预览、试听 |\n| `base` | ⚡⚡⚡⚡ | ⭐⭐⭐ | ⭐ 日常推荐 |\n| `small` | ⚡⚡⚡ | ⭐⭐⭐⭐ | 需要更准确时 |\n| `medium` | ⚡⚡ | ⭐⭐⭐⭐⭐ | 重要内容 |\n| `turbo` | ⚡⚡⚡ | ⭐⭐⭐⭐⭐ | ⭐ 长视频首选（精度接近 large）|\n| `large` | ⚡ | ⭐⭐⭐⭐⭐⭐ | 极致精度，不计时间 |\n\n### 语言处理\n\n- `--language` 不指定 → 自动检测（推荐）\n- 中文视频强制 `--language zh` 可提升准确率\n- 默认按对话语言输出笔记；用户可要求切换\n\n### 批量与限制\n\n```bash\n# 一次处理 2-3 个文件（默认上限 3）\npython3 scripts/transcribe.py p1.mp4 p2.mp4\n\n# 长视频（>2h）自动提示，建议只处理单个\npython3 scripts/transcribe.py 超长讲座.mp4 --model turbo\n```\n\n### 耗时参考（CPU，base 模型）\n\n| 视频时长 | 预计耗时 |\n|---------|---------|\n| 10 分钟 | ~2-3 分钟 |\n| 30 分钟 | ~5-8 分钟 |\n| 1 小时 | ~12-15 分钟 |\n| 2 小时 | ~25-30 分钟 |\n\n> **建议：** 转写期间可以去做别的事，完成后 AI 会自动生成笔记。\n\n---\n\n## 步骤 3: AI 生成学习笔记 ⭐（核心差异化）\n\n转写完成后，AI 读取 `.txt` 文件并生成笔记。\n\n### 核心流程\n\n1. **分析转写稿** — 理解视频内容、结构、重点\n2. **确定笔记风格** — 根据内容自动选择模板（见下）\n3. **生成结构化笔记** — 层级清晰、信息密度高\n4. **用户确认/调整** — 可要求修改风格、补充内容\n\n### 笔记风格速查\n\n| 视频类型 | 推荐风格 |\n|---------|---------|\n| 编程/技术教程 | 📚 标准学习笔记（带代码块） |\n| 学生网课/公开课 | 🎓 课堂笔记（考点+例题） |\n| TED/行业演讲 | 🏢 演讲笔记（核心观点+金句） |\n| 纪录片/科普 | 📰 纪录片笔记（时间线+发现） |\n| 会议/汇报 | 🏢 会议笔记（行动项+决策） |\n| 技能/实操教程 | 📚 标准学习笔记（步骤拆解） |\n\n> 详细模板见 → [📖 笔记模板参考](references/note-templates.md)\n\n### AI 灵活度\n\n- 可根据视频实际情况**自由增删章节**\n- 可**跨视频整合**（批量处理系列课程时，合并成连贯知识体系）\n- 用户可**按需指定**（如\"只看第二部分\"、\"用表格对比\"）\n\n---\n\n## 完整示例流程\n\n```bash\n# 场景：想把手头 3 个视频教程转成笔记\n\n# 1. 转写\ncd ~/教程\npython3 ~/.openclaw/workspace/skills/video-to-notes/scripts/transcribe.py \\\n  chapter1.mp4 chapter2.mp4 chapter3.mp4 \\\n  --model turbo\n\n# 2. AI 读转写稿并生成笔记\n# （AI 自动分析内容 → 选择合适的笔记风格 → 生成 3 份独立笔记）\n# （如果是一个系列，AI 可跨文件融合，给出连贯的知识体系）\n\n# 3. 完成 — 笔记直接输出给用户\n```\n\n---\n\n## 注意事项\n\n### 🔒 隐私\n- 转录文本可能包含敏感信息\n- 不要随意分享 `.txt` 转写稿\n- 建议用户本地处理，不涉及云端传输\n\n### 📜 版权\n- 网络下载视频请遵守平台条款和版权法规\n- 本工具应用于个人学习用途\n\n### 🧹 文件清理\n- 临时 `.wav` 音频文件会自动删除\n- 只保留 `.txt` 转写稿（可手动清理）\n\n### 🔧 依赖检查\n```bash\n# 所有依赖一览\nffmpeg --version      # 必须\npython3 -c \"import whisper\"  # 必须\npip3 list | grep yt-dlp  # 网络下载时需要\n```\n\nArchive v1.0.0: 6 files, 14009 bytes\n\nFiles: references/note-templates.md (6382b), references/workflow.md (4630b), scripts/download_video.py (2283b), scripts/transcribe.py (7763b), SKILL.md (6918b), _meta.json (133b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: video-to-notes\ndescription: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序员、学生、职场进修者、知识爱好者。触发条件：用户提供视频路径/链接，或说\"把这个视频整理成笔记\"、\"帮我记笔记\"、\"转成学习笔记\"。支持中英文，一次 1-3 个文件。\n---\n\n# Video to Notes — 视频转学习笔记\n\n**看视频 ≠ 学会。笔记才是真正属于你的知识。**\n\n这个 skill 把任何视频内容变成结构化学习笔记，让你不用反复回看、随时复习重点。\n\n---\n\n## 核心价值\n\n```\n视频（1小时）→ 转写稿 → AI 笔记（5分钟读完）\n     ↓                       ↓\n  看过就忘                 随时回看、复习、检索\n```\n\n## 快速上手\n\n### 本地视频\n```bash\npython3 scripts/transcribe.py ~/Downloads/课程.mp4\n```\n在同目录生成 `.txt` 转写稿 → AI 读完直接产出笔记\n\n### 网络视频（需要 yt-dlp）\n```bash\npython3 scripts/download_video.py \"https://youtu.be/xxx\"\npython3 scripts/transcribe.py ./下载的文件.mp4\n```\n\n### 指定质量和语言\n```bash\npython3 scripts/transcribe.py 讲座.mp4 --model turbo --language zh\n```\n\n### 批量处理\n```bash\npython3 scripts/transcribe.py p1.mp4 p2.mp4 p3.mp4\n```\n\n> **长视频（>2小时）**：自动建议只处理单个文件，保证质量。\n\n---\n\n## 完整工作流\n\n详细步骤、模型选择、故障排查 → [📖 完整工作流指南](references/workflow.md)\n\n### 三步流程\n\n```\n① 获取视频 ── 本地路径 或 URL下载\n      ↓\n② 语音转文字 ── transcribe.py（whisper）\n      ↓\n③ AI 生成笔记 ── 读转写稿 → 结构化学习笔记\n```\n\n---\n\n## 脚本说明\n\n### `scripts/transcribe.py` — 语音转文字（核心）\n\n```bash\npython3 scripts/transcribe.py 视频.mp4 [选项]\n```\n\n**关键参数：**\n\n| 参数 | 默认 | 说明 |\n|------|------|------|\n| `--model` | `base` | tiny → 极速 / base → 推荐 / turbo → 长视频首选 / large → 最高精度 |\n| `--language` | 自动 | 指定语言提升准确率：`zh` / `en` / `ja` 等 |\n| `--max-files` | 3 | 一次最多处理文件数 |\n\n**模型选择指南：**\n\n- `tiny` — 最快，预览用（5分钟出）\n- `base` — 日常推荐，速度与精度平衡 👍\n- `small/medium` — 精度优先场景\n- `turbo` — ⭐ **长视频推荐**，速度与 large 级精度\n- `large` — 极致精度，慢\n\n### `scripts/download_video.py` — 网络视频下载\n\n```bash\npip3 install yt-dlp   # 先安装\npython3 scripts/download_video.py <URL> --output-dir <目录>\n```\n\n支持 YouTube、B站等 yt-dlp 支持的所有平台。\n\n---\n\n## 笔记生成 — 核心差异化 ✨\n\n**这是本 skill 区别于纯转写/摘要工具的核心价值。**\n\n转写完成后，AI 读取 `.txt` 文件，**主动分析内容、提取知识、结构化整理成学习笔记**。\n\n### 笔记风格选择\n\nAI 根据视频内容类型 **自动选择** 最合适的笔记风格。用户也可以手动指定。\n\n#### 📚 标准学习笔记（默认）\n适合：课程、讲座、技术教程\n\n```\n# 标题\n## 视频信息\n- 时长 / 主题 / 来源\n\n## 内容概览\n- 2-3句核心总结\n\n## 知识要点\n### 1. 核心概念\n- 定义、原理、关键点\n### 2. 重点分析\n- 深入解释、对比、案例\n### 3. ...（按内容自然展开）\n\n## 实战/代码/案例\n- 具体操作、代码片段、公式\n\n## 总结 & 思维导图\n- 逻辑结构梳理、要点回顾\n\n## 延伸思考\n- 值得深挖的点、关联知识、实践建议\n```\n\n#### 🎓 课堂笔记风格\n适合：学生网课、公开课、应试培训\n\n```\n# 课程笔记\n## 课程基本信息\n## 重点知识点（按章节）\n### 考点/核心公式/定义\n### 例题解析\n## 易错点提醒\n## 课后思考题\n## 复习要点速览\n```\n\n#### 🏢 会议/演讲笔记风格\n适合：内部会议、TED演讲、行业分享\n\n```\n# 演讲/会议笔记\n## 基本信息（主讲人、时间、背景）\n## 核心观点\n## 关键数据 / 案例\n## 启发 & 行动项\n## 金句摘录\n```\n\n#### 📰 纪录片/科普笔记风格\n适合：纪录片、科普视频、深度分析\n\n```\n# 纪录片笔记\n## 背景介绍\n## 时间线/发展脉络\n## 核心发现/论点\n## 数据 & 证据\n## 个人思考 & 批判\n```\n\n### 笔记语言\n- **默认**：使用当前对话语言\n- **用户指定**：按用户要求（如\"用英文写笔记\"）\n- **双语视频**：保留原文术语，注释说明\n\n### 质量准则 🎯\n\n| 原则 | 说明 |\n|------|------|\n| **详细准确** | 覆盖关键信息，不遗漏 |\n| **结构化** | 层级清晰，便于后续查阅/搜索 |\n| **高信息密度** | 去废话，保留干货 |\n| **忠实原文** | 不编造、不歪曲原内容 |\n| **可复习** | 笔记设计本身就是为了回头看的 |\n\n---\n\n## 适用场景（谁会用？）\n\n任何人需要从视频中学习的人：\n\n| 角色 | 场景 |\n|------|------|\n| 👨‍💻 **程序员** | 技术教程 → 笔记带代码、架构图说明 |\n| 👩‍🎓 **学生** | 网课/公开课 → 复习笔记、考点整理 |\n| 👔 **职场人** | 行业会议/培训 → 核心观点 + 行动项 |\n| 📚 **终身学习者** | 纪录片/科普/播客 → 知识结构化 |\n| 🎤 **内容创作者** | 自己的视频 → 快速出文案/摘要 |\n| 🧓 **银发族** | 养生/技能视频 → 清晰步骤笔记 |\n| 👪 **家长** | 育儿/教育视频 → 要点速查 |\n| ... | **任何想看视频记东西的人** |\n\n> **核心场景：** \"这个视频很重要，但我没时间/不想再看一遍。帮我把内容整理成笔记。\"\n\n---\n\n## 示例对话\n\n> **用户：** \"帮我看下这个视频整理成笔记\"\n> → 下载/转写 → 自动生成标准学习笔记\n\n> **用户：** \"把我桌面上这三个课程视频都处理了，用英文写笔记\"\n> → 批量转写 → 生成三份英文笔记\n\n> **用户：** \"这个 TED 演讲帮我记一下重点\"\n> → AI 自动识别为演讲风格 → 生成演讲笔记\n\n> **用户：** \"刚才那个视频太长了，主要记第二部分的内容，第一个部分太水了跳过\"\n> → AI 选择性笔记，只处理有效内容\n\n---\n\n## 资源结构\n\n```\nvideo-to-notes/\n├── SKILL.md                      ← 主入口（本文件）\n├── scripts/\n│   ├── transcribe.py             ← 语音转文字\n│   └── download_video.py         ← 网络视频下载\n└── references/\n    ├── workflow.md               ← 详细工作流\n    └── note-templates.md         ← 笔记模板 & 示例\n```\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7edjpjh5vn9pvddkg6t1481s86r67a\",\n  \"slug\": \"video-to-notes\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778811240797\n}\n\nFile v1.0.0:references/note-templates.md\n\n# 笔记模板 & 示例\n\n本文件提供不同场景下的笔记模板和完整示例，供 AI 在生成笔记时参考。\n\nAI 应**根据视频内容类型自动选择**合适的模板，也可按用户要求切换。\n\n---\n\n## 📚 模板一：标准学习笔记（最常用）\n\n适合：技术教程、在线课程、讲座、深度内容\n\n```markdown\n# [视频标题]\n\n## 📋 视频信息\n- **时长：** XX分钟\n- **主题：** 一句话概括\n- **来源：** 视频链接/路径\n\n## 📖 内容概览\n\n用 2-3 句话概括视频核心内容。\n\n## 🧠 知识要点\n\n### 1. [核心概念/模块一]\n\n**关键定义：**\n- XXX：详细解释\n\n**原理说明：**\n- 机制/流程/逻辑\n\n**示例/类比：**\n- 帮助理解的例子\n\n### 2. [核心概念/模块二]\n\n...\n\n### 3. [核心概念/模块三]\n\n...\n\n## 💻 实战 / 代码（如有）\n\n\\`\\`\\`语言\n代码块\n\\`\\`\\`\n\n**关键代码解读：**\n- 第X行：作用说明\n\n## 📊 总结对比（如有）\n\n| 对比项 | A | B |\n|--------|---|---|\n| 特点 | | |\n| 适用 | | |\n| 优劣 | | |\n\n## 🎯 总结\n\n- 核心收获点 1\n- 核心收获点 2\n\n## 🔗 延伸思考\n\n- 值得进一步探索的方向\n- 与其他知识的关联\n- 实际应用建议\n```\n\n### 标准学习笔记 — 完整示例（虚构）\n\n```markdown\n# React 状态管理深度解析\n\n## 📋 视频信息\n- **时长：** 45分钟\n- **主题：** React 中 useState、useReducer 和 Context 的工作原理及选型\n- **来源：** 内部课程\n\n## 📖 内容概览\n\n视频深入讲解了 React 三种状态管理方案的底层机制，并通过对比分析给出了不同场景下的选型建议。核心观点是：没有银弹，选择取决于状态复杂度、更新频率和作用域。\n\n## 🧠 知识要点\n\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- 每次 setState 触发组件重新渲染\n- React 通过 Fiber 架构的\"双向循环\"协调更新\n- 批量更新（batching）合并同一事件循环中的多次 setState\n\n**关键特性：**\n- 适合：组件内部简单状态\n- 注意：状态更新是异步的，不能在 setState 后立即读取新值\n\n### 2. useReducer — 复杂状态逻辑\n\n**适用场景：**\n- 状态逻辑复杂，包含多个子值\n- 下一个状态依赖于前一个状态\n- 状态变更需要集中管理\n\n**模式对比：**\n```javascript\n// useState 方式\nconst [count, setCount] = useState(0)\nsetCount(c => c + 1)\n\n// useReducer 方式\nconst [state, dispatch] = useReducer(reducer, initialState)\ndispatch({ type: 'INCREMENT' })\n```\n\n### 3. Context + useReducer — 跨组件状态\n\n**架构模式：**\n- Context 负责\"传递\"（跨层级）\n- useReducer 负责\"管理\"（逻辑集中）\n- 组合使用可实现轻量级全局状态管理\n\n**性能注意事项：**\n- Context value 变化会触发所有消费者重渲染\n- 解决方案：拆分 Context、使用 memo\n\n## 🎯 选型决策树\n\n```\n简单组件内状态 → useState\n状态逻辑复杂 → useReducer\n跨组件共享 → Context + useReducer\n大规模全局 → Redux/Zustand 等外部库\n```\n\n## 💡 总结\n\n1. useState 是基础，80% 场景够用\n2. useReducer 在状态逻辑复杂时替代 useState\n3. Context 是\"传递\"机制，不是状态管理方案\n4. 组合使用前两者 + Context 可覆盖绝大多数场景\n\n## 🔗 延伸思考\n\n- React 19 的 use() Hook 会如何影响状态管理模式？\n- Signal（SolidJS 的方案）对比 React 的状态管理有什么不同？\n```\n\n---\n\n## 🎓 模板二：课堂笔记风格\n\n适合：学生网课、公开课、考试培训\n\n```markdown\n# [课程名称] — 第X讲\n\n## 📋 课程信息\n- **课程：** XXX\n- **讲师：** XXX\n- **时长：** XX分钟\n\n## 📌 本讲要点\n\n1. 要点一\n2. 要点二\n3. 要点三\n\n## 📝 知识点详解\n\n### [知识点1]\n- 定义/公式\n- 理解要点\n- 例题\n\n### [知识点2]\n...\n\n## ⚠️ 易错点 / 难点\n\n- 常见错误理解\n- 容易混淆的概念\n\n## 📖 例题解析\n\n**题目：** ...\n**解题思路：** ...\n**答案：** ...\n\n## 📑 课后思考\n\n- 课后习题\n- 延伸阅读\n\n## 📋 复习速查\n\n- [ ] 知识点1 理解了吗？\n- [ ] 知识点2 公式记住了吗？\n- [ ] 例题能独立做一遍吗？\n```\n\n---\n\n## 🏢 模板三：会议 / 演讲笔记\n\n适合：TED 演讲、行业分享、内部会议\n\n```markdown\n# [演讲/会议标题]\n\n## 📋 基本信息\n- **主讲人：** XXX\n- **背景：** 演讲/会议的背景信息\n- **时长：** XX分钟\n\n## 🎯 核心观点\n\n一句话概括演讲者的核心论点。\n\n## 🔑 关键要点\n\n### 1. [要点一]\n- 详细说明\n- 支持数据/案例\n\n### 2. [要点二]\n...\n\n## 📊 重要数据\n\n- 数据点1\n- 数据点2\n\n## 💬 金句摘录\n\n> \"引用原文金句\"\n\n## ✅ 启发 & 行动项\n\n- 可以做的 1-2-3\n- 值得深入思考的点\n\n## 🤔 批判性思考\n\n- 论点的局限性\n- 不同视角的补充\n```\n\n---\n\n## 📰 模板四：纪录片 / 科普笔记\n\n适合：纪录片、科普视频、深度分析、历史人文\n\n```markdown\n# [纪录片/科普标题]\n\n## 📋 背景介绍\n- 主题简介\n- 发布方/作者\n- 观看时间\n\n## ⏳ 时间线 / 发展脉络\n\n| 时间/阶段 | 事件/发现 | 意义 |\n|-----------|-----------|------|\n| ... | ... | ... |\n\n## 🔬 核心发现\n\n### 发现一：...\n- 证据/数据支持\n- 专家观点\n\n### 发现二：...\n...\n\n## 📊 关键数据 & 事实\n\n- 事实1\n- 统计数字\n\n## 🤔 个人思考\n\n- 对内容的思考\n- 与其他知识点的关联\n- 启发 & 疑惑\n\n## 📚 延伸资源\n\n- 片中提到的书籍/文章\n- 相关话题推荐\n```\n\n---\n\n## 🛠️ 模板选择逻辑\n\nAI 应按以下优先级选择笔记风格：\n\n1. **用户明确指定** → 按用户要求\n2. **内容类型自动识别**：\n   - 编程/技术内容 → 标准学习笔记（带代码块）\n   - 学术/考试内容 → 课堂笔记\n   - TED/演讲/分享 → 演讲笔记\n   - 纪录片/历史/科普 → 纪录片笔记\n   - 一般性教学/培训 → 标准学习笔记\n3. **混合内容** → 灵活组合多种风格元素\n\n## ⚙️ AI 自由度\n\n以上模板是参考框架，不是死规定。AI 应根据实际情况：\n- **增删章节** — 不需要的去掉，需要的加上\n- **调整顺序** — 以逻辑流畅为准\n- **改变深度** — 简短视频给精简版，长视频给详细版\n- **整合系列** — 批量处理时，可跨视频整合成连贯知识体系\n\nFile v1.0.0:references/workflow.md\n\n# 视频转笔记 — 完整工作流指南\n\n## 流程概览\n\n```\n用户输入（视频文件路径 或 URL）\n      │\n      ├── URL → download_video.py → 本地视频文件\n      │\n      ▼\n  transcribe.py (whisper 转写)\n      │\n      ▼\n  .txt 转写稿\n      │\n      ▼\n  AI 分析内容 → 选笔记模板 → 生成结构化 Markdown 学习笔记\n```\n\n---\n\n## 步骤 1: 获取视频文件\n\n### 方式 A：本地文件\n用户直接提供路径，直接进入转写。\n\n```bash\npython3 scripts/transcribe.py /path/to/video.mp4\n```\n\n### 方式 B：网络链接\n\n先下载到本地：\n\n```bash\n# 安装 yt-dlp（如果还没装）\npip3 install yt-dlp\n\n# 下载\npython3 scripts/download_video.py \"https://www.youtube.com/watch?v=xxx\" --output-dir ~/Downloads\n```\n\n**支持的平台：** yt-dlp 支持的所有网站（YouTube、B站、抖音、小红书等）\n\n> ⚠️ **注意：** 部分平台可能对视频下载有限制，如果下载失败，请用户自行下载后提供本地文件。\n\n---\n\n## 步骤 2: 语音转文字\n\n```bash\npython3 scripts/transcribe.py <视频路径> [选项]\n```\n\n### 模型选择\n\n| 模型 | 速度 | 精度 | 推荐场景 |\n|------|------|------|---------|\n| `tiny` | ⚡⚡⚡⚡⚡ | ⭐⭐ | 快速预览、试听 |\n| `base` | ⚡⚡⚡⚡ | ⭐⭐⭐ | ⭐ 日常推荐 |\n| `small` | ⚡⚡⚡ | ⭐⭐⭐⭐ | 需要更准确时 |\n| `medium` | ⚡⚡ | ⭐⭐⭐⭐⭐ | 重要内容 |\n| `turbo` | ⚡⚡⚡ | ⭐⭐⭐⭐⭐ | ⭐ 长视频首选（精度接近 large）|\n| `large` | ⚡ | ⭐⭐⭐⭐⭐⭐ | 极致精度，不计时间 |\n\n### 语言处理\n\n- `--language` 不指定 → 自动检测（推荐）\n- 中文视频强制 `--language zh` 可提升准确率\n- 默认按对话语言输出笔记；用户可要求切换\n\n### 批量与限制\n\n```bash\n# 一次处理 2-3 个文件（默认上限 3）\npython3 scripts/transcribe.py p1.mp4 p2.mp4\n\n# 长视频（>2h）自动提示，建议只处理单个\npython3 scripts/transcribe.py 超长讲座.mp4 --model turbo\n```\n\n### 耗时参考（CPU，base 模型）\n\n| 视频时长 | 预计耗时 |\n|---------|---------|\n| 10 分钟 | ~2-3 分钟 |\n| 30 分钟 | ~5-8 分钟 |\n| 1 小时 | ~12-15 分钟 |\n| 2 小时 | ~25-30 分钟 |\n\n> **建议：** 转写期间可以去做别的事，完成后 AI 会自动生成笔记。\n\n---\n\n## 步骤 3: AI 生成学习笔记 ⭐（核心差异化）\n\n转写完成后，AI 读取 `.txt` 文件并生成笔记。\n\n### 核心流程\n\n1. **分析转写稿** — 理解视频内容、结构、重点\n2. **确定笔记风格** — 根据内容自动选择模板（见下）\n3. **生成结构化笔记** — 层级清晰、信息密度高\n4. **用户确认/调整** — 可要求修改风格、补充内容\n\n### 笔记风格速查\n\n| 视频类型 | 推荐风格 |\n|---------|---------|\n| 编程/技术教程 | 📚 标准学习笔记（带代码块） |\n| 学生网课/公开课 | 🎓 课堂笔记（考点+例题） |\n| TED/行业演讲 | 🏢 演讲笔记（核心观点+金句） |\n| 纪录片/科普 | 📰 纪录片笔记（时间线+发现） |\n| 会议/汇报 | 🏢 会议笔记（行动项+决策） |\n| 技能/实操教程 | 📚 标准学习笔记（步骤拆解） |\n\n> 详细模板见 → [📖 笔记模板参考](references/note-templates.md)\n\n### AI 灵活度\n\n- 可根据视频实际情况**自由增删章节**\n- 可**跨视频整合**（批量处理系列课程时，合并成连贯知识体系）\n- 用户可**按需指定**（如\"只看第二部分\"、\"用表格对比\"）\n\n---\n\n## 完整示例流程\n\n```bash\n# 场景：想把手头 3 个视频教程转成笔记\n\n# 1. 转写\ncd ~/教程\npython3 ~/.openclaw/workspace/skills/video-to-notes/scripts/transcribe.py \\\n  chapter1.mp4 chapter2.mp4 chapter3.mp4 \\\n  --model turbo\n\n# 2. AI 读转写稿并生成笔记\n# （AI 自动分析内容 → 选择合适的笔记风格 → 生成 3 份独立笔记）\n# （如果是一个系列，AI 可跨文件融合，给出连贯的知识体系）\n\n# 3. 完成 — 笔记直接输出给用户\n```\n\n---\n\n## 注意事项\n\n### 🔒 隐私\n- 转录文本可能包含敏感信息\n- 不要随意分享 `.txt` 转写稿\n- 建议用户本地处理，不涉及云端传输\n\n### 📜 版权\n- 网络下载视频请遵守平台条款和版权法规\n- 本工具应用于个人学习用途\n\n### 🧹 文件清理\n- 临时 `.wav` 音频文件会自动删除\n- 只保留 `.txt` 转写稿（可手动清理）\n\n### 🔧 依赖检查\n```bash\n# 所有依赖一览\nffmpeg --version      # 必须\npython3 -c \"import whisper\"  # 必须\npip3 list | grep yt-dlp  # 网络下载时需要\n```","readmeExcerpt":"Skill: Video to Notes Owner: yll-kb Summary: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-07-03T15:27:40.454Z | user 大版本更新: 智能分段, 逻辑结构图, 重点标记系统, 速查卡, MPS加速, 静音裁剪+变速预处理 v1.3.0 | 2026-05-15T02:41:53.053Z | auto **Version 1.3.0 Summary:** This update improv","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# 检查所有依赖，缺什么装什么\npython3 --version               # 缺 → brew install python3\nffmpeg -version                  # 缺 → brew install ffmpeg\npython3 -c \"import whisper\"      # 缺 → pip3 install openai-whisper\npip3 list 2>/dev/null | grep -q yt-dlp  # 缺 → pip3 install yt-dlp （可选，仅URL需要）"},{"language":"bash","snippet":"python3 scripts/transcribe.py <视频路径> [选项]"},{"language":"markdown","snippet":"示例输出：\n\n## 分段大纲\n\n| # | 章节 | 时间范围 | 核心内容 |\n|---|------|---------|---------|\n| 1 | 什么是状态管理 | 00:00-08:30 | 定义、为什么需要 |\n| 2 | useState 原理 | 08:30-20:15 | 工作机制、批量更新 |\n| 3 | useReducer 对比 | 20:15-35:00 | 适用场景、代码示例 |\n| 4 | Context 跨组件通信 | 35:00-45:00 | 使用模式、性能注意 |"},{"language":"mermaid","snippet":"mindmap\n  root((React 状态管理))\n    useState\n      组件本地状态\n      批量更新机制\n    useReducer\n      复杂状态逻辑\n      依赖前状态\n    Context\n      跨层级传递\n      性能注意事项\n    选型决策\n      80% 用 useState\n      复杂用 useReducer\n      跨组件用 Context"},{"language":"markdown","snippet":"### 1. useState — 基础状态管理\n\n**原理说明：**\n- ⭐ 每次 setState 触发重新渲染，React 通过 Fiber 协调更新\n- 批量更新合并同一事件循环中的多次 setState\n\n**注意事项：**\n- ⚠️ 状态更新是异步的，不能在 setState 后立即读取新值\n- 解决方案：使用 useEffect 监听状态变化\n\n> 💡 **核心提炼：** useState 适合 80% 的组件内简单状态，更新是异步且批量的。"},{"language":"markdown","snippet":"## 🃏 速查卡\n\n| 概念 | 一句话 | 标记 |\n|------|--------|:----:|\n| useState | 组件本地简单状态，更新异步批量 | ⭐ |\n| useReducer | 复杂状态逻辑，依赖前状态时用 | ⭐ |\n| Context | 跨层级传递，不是状态管理方案 | ⚠️ |\n| 批量更新 | 同一事件循环中合并多次 setState | 🔧 |"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: video-to-notes\ndescription: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序员、学生、职场进修者、知识爱好者。触发条件：用户提供视频路径/链接，或说\"把这个视频整理成笔记\"、\"帮我记笔记\"、\"转成学习笔记\"。支持中英文，一次 1-3 个文件。\nmetadata:\n  openclaw:\n    requires:\n      bins: [\"python3\", \"ffmpeg\", \"ffprobe\"]\n      pip:\n        - openai-whisper\n---\n\n# Video to Notes — 视频转学习笔记\n\n**看视频 ≠ 学会。笔记才是真正属于你的知识。**\n\n用户只需要说一句：\"帮我把这个视频整理成笔记\"。剩下的事 AI 自己搞定。\n\n---\n\n## 用户视角 —— 他们只需要知道这些\n\n用户不需要理解 Python、ffmpeg、whisper 是什么。他们只需要：\n\n1. **提供视频** — 给文件路径，或者发个链接（YouTube/B站等）\n2. **说明需求**（可选）— \"用英文\"、\"只要重点\"、\"按课堂笔记风格\"\n3. **等着拿笔记**\n\nAI 自动完成全部工作。\n\n---\n\n## AI 工作流\n\n### 第一步：检测 & 安装依赖\n\n用户说想转视频后，**AI 先静默检查环境**：\n\n```bash\n# 检查所有依赖，缺什么装什么\npython3 --version               # 缺 → brew install python3\nffmpeg -version                  # 缺 → brew install ffmpeg\npython3 -c \"import whisper\"      # 缺 → pip3 install openai-whisper\npip3 list 2>/dev/null | grep -q yt-dlp  # 缺 → pip3 install yt-dlp （可选，仅URL需要）\n```\n\n> ⚡ **依赖安装规则（必遵守）**\n>\n> 所有环境安装操作必须遵循以下步骤：\n>\n> 1. **先检测，再报告** — 运行检测后，明确告诉用户哪些工具/包缺失，用具体名称列出\n> 2. **必须征得用户明确同意** — 拿到 `yes` / `可以` / `装` 后再执行；不要直接后台静默安装\n> 3. **安装命令必须完整告知** — 例如 `pip3 install openai-whisper` 或 `brew install python3 ffmpeg`\n> 4. **没有例外** — 即使是 pip 包也需用户确认后再装\n\n### 第二步：获取视频\n\n| 来源 | AI 处理方式 |\n|------|------------|\n| **本地文件** | 直接读取路径 |\n| **URL（YouTube/B站等）** | 先告知用户要下载到哪个目录，确认后再执行 `python3 scripts/download_video.py <URL> --output-dir <目录>` |\n| **平台限制无法下载** | 礼貌告知用户：\"这个平台的视频有限制，能不能先下载到本地发给我？\" |\n\n### 第三步：转写\n\n```bash\npython3 scripts/transcribe.py <视频路径> [选项]\n```\n\n**参数选择逻辑：**\n\n| 场景 | 推荐参数 |\n|------|---------|\n| 普通视频 | `--model base`（默认，速度与精度平衡） |\n| 长视频（>1h） | `--model turbo` + `--speed 1.3`（快 ~50%） |\n| 中文视频 | 加 `--language zh` 提升准确率 |\n| 批量处理 | 多个路径一起传，最多 3 个 |\n| 超长视频（>2h） | 自动提示用户，建议只处理单个文件确保质量 |\n| 追求极致速度 | `--model turbo --strip-silence --speed 1.5`（快 ~70%） |\n| 精度优先 | `--model large` + `--no-strip-silence`（保留所有细节） |\n\n### 第四步：AI 生成学习笔记 ⭐ — 核心价值\n\n转写完成后，读取 `.txt` 文件，按以下流程生成笔记：\n\n---\n\n#### 4a. 智能分段（Semantic Chunking）\n\n转写稿是逐句时间戳文本，AI 先做一次**语义分章**，给笔记搭骨架：\n\n1. 扫描全文，根据话题切换、关键词、语气变化识别**逻辑段落**\n2. 为每个段落生成**章节标题**（概括该段核心内容）\n3. 输出分段大纲作为笔记的目录骨架\n\n```markdown\n示例输出：\n\n## 分段大纲\n\n| # | 章节 | 时间范围 | 核心内容 |\n|---|------|---------|---------|\n| 1 | 什么是状态管理 | 00:00-08:30 | 定义、为什么需要 |\n| 2 | useState 原理 | 08:30-20:15 | 工作机制、批量更新 |\n| 3 | useReducer 对比 | 20:15-35:00 | 适用场景、代码示例 |\n| 4 | Context 跨组件通信 | 35:00-45:00 | 使用模式、性能注意 |\n```\n\n> 分段粒度：一般 5-15 分钟一段。短于 3 分钟的和相邻段落合并。\n\n---\n\n#### 4b. 生成逻辑结构图（长内容）\n\n转录稿超过 **5000 字** 或视频 **>30 分钟**时，在笔记正文之前先生成一张**Mermaid 逻辑图**，作为内容的**知识地图**，帮助读者在深入前建立全局认知。\n\n**选择逻辑图类型：**\n\n| 内容结构 | 推荐图类型 | 示例 |\n|---------|-----------|------|\n| 层级/分类知识 | `mindmap` | 技术概念分类、知识体系 |\n| 流程/步骤 | `flowchart TD` | 操作流程、算法步骤、决策树 |\n| 时序/阶段 | `timeline` | 历史发展、项目阶段 |\n| 对比/分类 | `flowchart LR` | 方案选型、特征对比 |\n| 关系/网络 | `graph` | 概念关联、系统架构 |\n\n```mermaid\nmindmap\n  root((React 状态管理))\n    useState\n      组件本地状态\n      批量更新机制\n    useReducer\n      复杂状态逻辑\n      依赖前状态\n    Contex"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7edjpjh5vn9pvddkg6t1481s86r67a\",\n  \"slug\": \"video-to-notes\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1783092460454\n}"},{"path":"references/note-templates.md","content":"# 笔记模板 & 示例\n\n本文件提供不同场景下的笔记模板和完整示例，供 AI 在生成笔记时参考。\n\nAI 应**根据视频内容类型自动选择**合适的模板，也可按用户要求切换。\n\n---\n\n## 📚 模板一：标准学习笔记（最常用）\n\n适合：技术教程、在线课程、讲座、深度内容\n\n```markdown\n# [视频标题]\n\n## 📋 视频信息\n- **时长：** XX分钟\n- **主题：** 一句话概括\n- **来源：** 视频链接/路径\n\n## 📖 内容概览\n\n用 2-3 句话概括视频核心内容。\n\n## 🧠 知识要点\n\n### 1. [核心概念/模块一]\n\n**关键定义：**\n- XXX：详细解释\n\n**原理说明：**\n- 机制/流程/逻辑\n\n**示例/类比：**\n- 帮助理解的例子\n\n### 2. [核心概念/模块二]\n\n...\n\n### 3. [核心概念/模块三]\n\n...\n\n## 💻 实战 / 代码（如有）\n\n\\`\\`\\`语言\n代码块\n\\`\\`\\`\n\n**关键代码解读：**\n- 第X行：作用说明\n\n## 📊 总结对比（如有）\n\n| 对比项 | A | B |\n|--------|---|---|\n| 特点 | | |\n| 适用 | | |\n| 优劣 | | |\n\n## 🎯 总结\n\n- 核心收获点 1\n- 核心收获点 2\n\n## 🔗 延伸思考\n\n- 值得进一步探索的方向\n- 与其他知识的关联\n- 实际应用建议\n```\n\n### 标准学习笔记 — 完整示例（虚构）\n\n```markdown\n# React 状态管理深度解析\n\n## 📋 视频信息\n- **时长：** 45分钟\n- **主题：** React 中 useState、useReducer 和 Context 的工作原理及选型\n- **来源：** 内部课程\n\n## 📖 内容概览\n\n视频深入讲解了 React 三种状态管理方案的底层机制，并通过对比分析给出了不同场景下的选型建议。核心观点是：没有银弹，选择取决于状态复杂度、更新频率和作用域。\n\n## 🧠 知识要点\n\n### 1. useState — 基础状态管理\n\n**工作原理：**\n- 每次 setState 触发组件重新渲染\n- React 通过 Fiber 架构的\"双向循环\"协调更新\n- 批量更新（batching）合并同一事件循环中的多次 setState\n\n**关键特性：**\n- 适合：组件内部简单状态\n- 注意：状态更新是异步的，不能在 setState 后立即读取新值\n\n### 2. useReducer — 复杂状态逻辑\n\n**适用场景：**\n- 状态逻辑复杂，包含多个子值\n- 下一个状态依赖于前一个状态\n- 状态变更需要集中管理\n\n**模式对比：**\n```javascript\n// useState 方式\nconst [count, setCount] = useState(0)\nsetCount(c => c + 1)\n\n// useReducer 方式\nconst [state, dispatch] = useReducer(reducer, initialState)\ndispatch({ type: 'INCREMENT' })\n```\n\n### 3. Context + useReducer — 跨组件状态\n\n**架构模式：**\n- Context 负责\"传递\"（跨层级）\n- useReducer 负责\"管理\"（逻辑集中）\n- 组合使用可实现轻量级全局状态管理\n\n**性能注意事项：**\n- Context value 变化会触发所有消费者重渲染\n- 解决方案：拆分 Context、使用 memo\n\n## 🎯 选型决策树\n\n```\n简单组件内状态 → useState\n状态逻辑复杂 → useReducer\n跨组件共享 → Context + useReducer\n大规模全局 → Redux/Zustand 等外部库\n```\n\n## 💡 总结\n\n1. useState 是基础，80% 场景够用\n2. useReducer 在状态逻辑复杂时替代 useState\n3. Context 是\"传递\"机制，不是状态管理方案\n4. 组合使用前两者 + Context 可覆盖绝大多数场景\n\n## 🔗 延伸思考\n\n- React 19 的 use() Hook 会如何影响状态管理模式？\n- Signal（SolidJS 的方案）对比 React 的状态管理有什么不同？\n```\n\n---\n\n## 🎓 模板二：课堂笔记风格\n\n适合：学生网课、公开课、考试培训\n\n```markdown\n# [课程名称] — 第X讲\n\n## 📋 课程信息\n- **课程：** XXX\n- **讲师：** XXX\n- **时长：** XX分钟\n\n## 📌 本讲要点\n\n1. 要点一\n2. 要点二\n3. 要点三\n\n## 📝 知识点详解\n\n### [知识点1]\n- 定义/公式\n- 理解要点\n- 例题\n\n### [知识点2]\n...\n\n## ⚠️ 易错点 / 难点\n\n- 常见错误理解\n- 容易混淆的概念\n\n## 📖 例题解析\n\n**题目：** ...\n**解题思路：** ...\n**答案：** ...\n\n## 📑 课后思考\n\n- 课后习题\n- 延伸阅读\n\n## 📋 复习速查\n\n- [ ] 知识点1 理解了吗？\n- [ ] 知识点2 公式记住了吗？\n- [ ] 例题能独立做一遍吗？\n```\n\n---\n\n## 🏢 模板三：会议 / 演讲笔记\n\n适合：TED 演讲、行业分享、内部会议\n\n```markdown\n# [演讲/会议标题]\n\n## 📋 基本信息\n- **主讲人：** XXX\n- **背景：** 演讲/会议的背景信息\n- **时长：** XX分钟\n\n## 🎯 核心观点\n\n一句话概括演讲者的核心论点。\n\n## 🔑 关键要点\n\n### 1. [要点一]\n- 详细说明\n- 支持数据/案例\n\n### 2. [要点二]\n...\n\n## 📊 重要数据\n\n- 数据点1\n- 数据点2\n\n## 💬 金句摘录\n\n> \"引用原文金句\"\n\n## ✅ 启发 & 行动项\n\n- 可以做的 1-2-3\n- 值得深入思考的点\n\n## 🤔 批判性思考\n\n- 论点的局限性\n- 不同视角的补充\n```\n\n---\n\n## 📰 模板四：纪录片 / 科普笔记\n\n适合：纪录片、科普视频、深度分析、历史人文\n\n```markdown\n# [纪录片/科普标题]\n\n## 📋 背景介绍\n- 主题简介\n- 发布方/作者\n- 观看时间\n\n## ⏳ 时间线 / 发展脉络\n\n| 时间/阶段 | 事件/发现 | 意义 |\n|-----------|-----------|------|\n| ... | ... | ... |\n\n## 🔬 核心发现\n\n### 发现一：...\n- 证据/数据支持\n- 专家观点\n\n### 发现二：...\n...\n\n## 📊 关键数据 & 事实\n\n- 事实1\n- 统计数字\n\n## 🤔 个人思考\n\n- 对内容的思考\n- 与其他知识点的关联\n- 启发 & 疑惑\n\n## 📚 延伸资"},{"path":"references/workflow.md","content":"# 视频转笔记 — AI 工作流参考\n\n本文件为 AI 提供详细的技术参考。\n\n---\n\n## 依赖安装流程\n\nAI 在首次使用时检测环境，然后**列出缺失项并征得用户同意后再安装**。\n\n### 检查脚本\n\n```bash\n#!/bin/bash\n# 检测脚本（仅检测，不安装）\nMISSING=\"\"\n\npython3 --version >/dev/null 2>&1 || MISSING=\"$MISSING python3\"\nffmpeg -version >/dev/null 2>&1 || MISSING=\"$MISSING ffmpeg\"\npython3 -c \"import whisper\" >/dev/null 2>&1 || MISSING=\"$MISSING whisper\"\n\nif [ -n \"$MISSING\" ]; then\n  echo \"缺失依赖:$MISSING\"\n  echo \"需要用户确认后才能安装\"\nfi\n```\n\n> ⚡ **执行安装前必须做的事：**\n> 1. 告诉用户具体缺失哪些工具/包（如 \"python3, ffmpeg, openai-whisper\"）\n> 2. 展示完整安装命令（如 `brew install python3 ffmpeg && pip3 install openai-whisper`）\n> 3. 等待用户确认后再执行\n\n### 跨平台安装命令\n\n| 平台 | Python3 | ffmpeg | openai-whisper |\n|------|---------|--------|----------------|\n| **macOS** | `brew install python3` | `brew install ffmpeg` | `pip3 install openai-whisper` |\n| **Ubuntu/Debian** | `apt install python3` | `apt install ffmpeg` | `pip3 install openai-whisper` |\n| **Windows** | [python.org](https://python.org) 下载 | `winget install ffmpeg` | `pip install openai-whisper` |\n\n### yt-dlp（网络视频需要）\n\n```bash\npip3 install yt-dlp\n```\n\n---\n\n## 转写参数详解\n\n### `transcribe.py` 完整参数\n\n```\nusage: transcribe.py [-h] [--model {tiny,tiny.en,base,base.en,small,small.en,medium,medium.en,large,turbo}] [--language LANGUAGE] [--output-dir OUTPUT_DIR] [--device DEVICE] [--max-files MAX_FILES] videos [videos ...]\n```\n\n### 模型详情\n\n| 模型 | 大小 | 速度(相对) | 中文精度 | 推荐场景 |\n|------|------|-----------|---------|---------|\n| tiny | ~75MB | 1x | ⭐⭐ | 快速预览 |\n| base | ~150MB | 2x | ⭐⭐⭐ | 日常推荐 |\n| small | ~460MB | 4x | ⭐⭐⭐⭐ | 精度优先 |\n| medium | ~1.5GB | 8x | ⭐⭐⭐⭐⭐ | 重要内容 |\n| large | ~3GB | 16x | ⭐⭐⭐⭐⭐⭐ | 极致精度 |\n| turbo | ~1.5GB | 4x | ⭐⭐⭐⭐⭐ | ⭐ 长视频首选 |\n\n> **性能实测参考（MacBook Air M2, CPU）：**\n> - base 模型：约实时 1x（10分钟视频 ≈ 10分钟转写）\n> - turbo 模型：约实时 2x\n> - 首次运行会自动下载模型文件（后续复用缓存）\n\n### MPS 加速（Apple Silicon）\n\nM 系列芯片（M1/M2/M3/M4）可启用 Metal Performance Shaders 加速：\n\n```bash\n# 自动检测（推荐）：transcribe.py 会检测 torch 是否支持 MPS\n# 如可用则自动使用，无需手动指定\n\n# 手动指定：\npython3 scripts/transcribe.py course.mp4 --device mps\n```\n\n**加速效果（实测 M2 Air vs CPU）：**\n\n| 模型 | CPU | MPS | 加速比 |\n|------|-----|-----|-------|\n| base | 10min | ~2.5min | ~4x |\n| turbo | 20min | ~6min | ~3x |\n\n> **注意：** 首次使用 MPS 时 PyTorch 会编译一些 kernel，前几秒稍慢。后续会话复用缓存。\n\n### 音频预处理加速\n\n`transcribe.py` 在提取音频时做两件事来减少转写时间：\n\n#### 🔇 静音裁剪（默认开启）\n\n用 `--strip-silence` 控制（默认开启，`--no-strip-silence` 关闭）。\n\n- 裁剪首尾静音（开场白前的空白、结束后的留白）\n- 裁剪中间 >0.5s 的停顿（思考间隙、翻页停顿等）\n- 处理方式：ffmpeg `silenceremove` 滤镜，双向裁剪\n- **效果：** 演讲/课程类视频可减少 20-40% 音频时长\n- 对转写精度**无影响**（只去掉了空白，不压缩语速）\n\n#### ⏩ 变速（可选）\n\n用 `--speed 1.3` 开启。\n\n- 使用 ffmpeg `atempo` 滤镜，保持音调不变\n- 推荐值：**1.3x**（快 23%，精度几乎不变）\n- 极限值：**1.5x**（快 33%，语速极快时可能漏字）\n- 不推荐 >1.5x，会降低 Whisper 识别准确率\n\n#### 加速效果实测\n\n假设一个 60 分钟的中文讲座视频：\n\n| 配置 | 音频时长 | 转写耗时（base模型） | 总时间 | 加速比 |\n|------|---------|-------------------|-------|-------|\n| 默认 | 60min | ~60min | ~60min | 1x |\n| +strip-silence | ~40min | ~40min | ~40min | ~1.5x |\n| +strip-silence +speed 1.3 | ~30min | ~30min | ~30min | ~2x |\n| +turbo +strip-silence +speed 1.3 | ~30min | ~15min | ~15min | ~4x |\n\n###"},{"path":"skill-card.md","content":"## Description:\n\nConverts user-provided local or online videos into transcripts and structured study notes using media extraction, Whisper transcription, and agent-generated Markdown note templates.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[yll-kb](https://clawhub.ai/user/yll-kb)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nStudents, self-directed learners, developers, and professionals use this skill to turn lectures, tutorials, talks, meetings, and documentaries into structured study notes. Agents can transcribe up to a small batch of videos, segment the transcript, and produce review-oriented Markdown with summaries, diagrams, key points, and quick-reference tables.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Videos, transcripts, and notes may contain sensitive personal, meeting, course, or business information.\n\nMitigation: Process only videos the user explicitly provides, tell the user where transcripts and notes will be saved, and remind them to review or delete generated files when privacy matters.\n\nRisk: Online video download can implicate platform rules, copyright, or access restrictions.\n\nMitigation: Download online videos only after user approval, ask the user to confirm they have rights to use the content, and fall back to a local file when a platform blocks download.\n\nRisk: Installing transcription and media dependencies can increase supply-chain exposure.\n\nMitigation: Show missing dependencies and full install commands before installation, wait for explicit user approval, and recommend virtual environments with pinned dependency versions for stronger control.\n\nRisk: Transcription and summarization can miss words, mishear technical terms, or over-compress important details.\n\nMitigation: Use language hints and higher-accuracy Whisper models for important content, keep timestamped transcript output, and ask the user to review generated notes before relying on them.\n\n## Reference(s):\n\n- [Workflow Reference](references/workflow.md)\n- [Note Templates](references/note-templates.md)\n- [ClawHub Skill Page](https://clawhub.ai/yll-kb/skills/video-to-notes)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown notes plus timestamped transcript text and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create transcript text files beside the source video or in a selected output directory; temporary audio files are removed after transcription.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序... Skill: Video to Notes Owner: yll-kb Summary: 将视频内容（课程/讲座/教程/纪录片/会议/演讲等）自动转为高质量结构化学习笔记。核心价值：看视频容易忘、看一遍记不住 → 转成笔记随时回看。支持本地视频文件、YouTube/B站等网络链接。流程：提取音轨 → Whisper 语音转文字 → AI 生成结构化笔记。适用场景：任何想从视频中高效学习的人——自学程序... Tags: latest:2.0.0 Version history: v2.0.0 | 2026-07-03T15:27:40.454Z | user 大版本更新: 智能分段, 逻辑结构图, 重点标记系统, 速查卡, MPS加速, 静音裁剪+变速预处理 v1.3.0 | 2026-05-15T02:41:53.053Z | auto **Version 1.3.0 Summary:** This update improv","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1118,"uniquenessScore":56,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T15:18:56.972Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T15:18:56.972Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:42:19.282Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}