{"id":"630e4cd8-adb7-42b3-85e5-ef169b385429","entityType":"agent","slug":"clawhub-kaimomo99-video-notes","name":"Video Notes","canonicalUrl":"https://www.xpersona.co/agent/clawhub-kaimomo99-video-notes","canonicalPath":"/agent/clawhub-kaimomo99-video-notes","generatedAt":"2026-10-11T08:40:48.973Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T06:11:48.195Z","emptyReason":null},"description":"把 YouTube / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provi... Skill: Video Notes Owner: kaimomo99 Summary: 把 YouTube / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provi... Tags: latest:1.1.0 Version history: v1.1.0 | 2026-05-28T03:20:15.737Z | auto Version 1.1.0 brings Bilibili support, better subtitle extraction, and detailed language guidelines: - Added support for Bilibili vid","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s170qqwf1etn89fqe8qwef10qx87410q:video-notes","sourceUrl":"https://clawhub.ai/kaimomo99/video-notes","homepage":"https://clawhub.ai/kaimomo99/skills/video-notes","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/kaimomo99/video-notes","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/kaimomo99/skills/video-notes","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"把 YouTube / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user prov"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:11:48.195Z","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-11T06:11:48.195Z","emptyReason":null},"stars":null,"forks":null,"downloads":1137,"packageName":null,"latestVersion":"1.1.0","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:11:48.183Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T06:11:48.195Z","lastCrawledAt":"2026-10-11T06:11:48.183Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T06:11:48.183Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.0","createdAt":"2026-05-28T03:20:15.737Z","changelog":"Version 1.1.0 brings Bilibili support, better subtitle extraction, and detailed language guidelines: - Added support for Bilibili videos: subtitle extraction and note generation now work for both YouTube and BiliBili URLs. - Enhanced YouTube subtitle script: supports browser cookie authentication for age-restricted/login-required videos, with clear usage instructions. - Improved fallback strategies for subtitle formats (VTT/SRT) and built-in heuristics for reliable extraction. - Updated documentation with detailed workflow for Chinese/English videos and clarified requirements for UI language matching the user's request. - No breaking changes to existing YouTube functionality; base workflow remains the same.","fileCount":9,"zipByteSize":19907},{"version":"1.0.0","createdAt":"2026-05-21T10:15:45.423Z","changelog":"Initial release — convert any YouTube video into a structured, searchable HTML notes document. - Automatically extracts subtitles and identifies key moments with screenshots. - Generates executive summary (~300 words) and main arguments, with emphasis formatting. - Creates structured note sections using grids, timelines, quote blocks, and SVG diagrams. - Includes a gallery of keyframes and a searchable subtitle panel with timestamp navigation. - Outputs a single, self-contained HTML file with sidebar navigation and scroll-spy.","fileCount":8,"zipByteSize":15672}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170qqwf1etn89fqe8qwef10qx87410q:video-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-kaimomo99-video-notes/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-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-11T08:40:48.972Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-notes/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kaimomo99-video-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-11T06:11:48.195Z","emptyReason":null},"readme":"Skill: Video Notes\n\nOwner: kaimomo99\n\nSummary: 把 YouTube / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provi...\n\nTags: latest:1.1.0\n\nVersion history:\n\nv1.1.0 | 2026-05-28T03:20:15.737Z | auto\n\nVersion 1.1.0 brings Bilibili support, better subtitle extraction, and detailed language guidelines:\n\n- Added support for Bilibili videos: subtitle extraction and note generation now work for both YouTube and BiliBili URLs.\n- Enhanced YouTube subtitle script: supports browser cookie authentication for age-restricted/login-required videos, with clear usage instructions.\n- Improved fallback strategies for subtitle formats (VTT/SRT) and built-in heuristics for reliable extraction.\n- Updated documentation with detailed workflow for Chinese/English videos and clarified requirements for UI language matching the user's request.\n- No breaking changes to existing YouTube functionality; base workflow remains the same.\n\nv1.0.0 | 2026-05-21T10:15:45.423Z | auto\n\nInitial release — convert any YouTube video into a structured, searchable HTML notes document.\n\n- Automatically extracts subtitles and identifies key moments with screenshots.\n- Generates executive summary (~300 words) and main arguments, with emphasis formatting.\n- Creates structured note sections using grids, timelines, quote blocks, and SVG diagrams.\n- Includes a gallery of keyframes and a searchable subtitle panel with timestamp navigation.\n- Outputs a single, self-contained HTML file with sidebar navigation and scroll-spy.\n\nArchive index:\n\nArchive v1.1.0: 9 files, 19907 bytes\n\nFiles: assets/note-template.html (10687b), CHANGELOG.md (1354b), README.md (2001b), scripts/capture_keyframes.py (8843b), scripts/extract_subtitles.py (9688b), skill-card.md (2321b), skill.json (663b), SKILL.md (7956b), _meta.json (130b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: video-notes\nslug: video-notes\nversion: 1.1.0\nauthor: 2992638402-art\ndescription: 把 YouTube / 哔哩哔哩视频变成一份精美的结构化笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provides a YouTube or Bilibili URL and asks to take notes, summarize a video, or create a study document from video content.\n---\n\n# Video Notes Skill\n\nConvert any YouTube / Bilibili video into a polished, self-contained HTML notes document with:\n- **Executive summary** (~300 words) capturing the core arguments\n- AI-generated structured notes with SVG diagrams\n- **Keyframe gallery** — screenshots auto-captured at key moments, each linking back to the video\n- Fixed sidebar navigation with scroll-spy\n- Searchable raw subtitle panel (click any line → jump to that timestamp)\n\n## Workflow\n\n### Step 1: Extract Subtitles\n\n```bash\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> --output /tmp/subs.json\n```\n\n**语言参数：**\n- YouTube 英文视频（默认）：不加 `--lang`\n- YouTube / B站 中文视频：`--lang zh` 或 `--lang zh-Hans`\n\n**YouTube 认证问题（常见！）：**\n\n若直接运行报错 `Sign in to confirm you're not a bot` 或 `No subtitles found`，需要传入浏览器 cookies：\n\n```bash\n# 使用 Chrome cookies（推荐）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> \\\n  --output /tmp/subs.json \\\n  --cookies-from-browser chrome\n\n# 或使用已导出的 cookies 文件\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> \\\n  --output /tmp/subs.json \\\n  --cookies /tmp/yt-cookies.txt\n```\n\n**脚本内置降级策略（自动执行，无需手动干预）：**\n\n1. **快速路径**：`--skip-download` 直接获取字幕（速度最快）\n2. **降级路径**：若快速路径失败，自动导出 cookies 后用 `-f sb3`（storyboard 格式，YouTube 始终可用）触发字幕下载，解析 VTT 格式\n3. **格式兼容**：优先 VTT（支持内联时间标签），失败则回退 SRT\n\n**哔哩哔哩支持：**\n\nB站视频直接传 URL，yt-dlp 原生支持：\n\n```bash\n# B站视频（中文字幕）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \\\n  \"https://www.bilibili.com/video/BVxxxxxxxx\" \\\n  --lang zh --output /tmp/subs.json\n\n# 需要登录的 B站视频（会员内容等）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \\\n  \"https://www.bilibili.com/video/BVxxxxxxxx\" \\\n  --lang zh --cookies-from-browser chrome --output /tmp/subs.json\n```\n\n> **注意**：B站部分视频有人工上传字幕（非 AI 生成），脚本已同时尝试 `--write-subs` 和 `--write-auto-subs`，两种都能获取。没有任何字幕的视频（纯口播无字幕）会返回错误，此时需告知用户。\n\nOutput: `[{\"t\": \"mm:ss\", \"s\": 123.4, \"text\": \"...\"}]`\n\n### Step 2: Capture Keyframes (requires ffmpeg)\n\nRun the keyframe script. It scores subtitles using heuristics, selects the most important moments (spaced ≥60s apart), downloads only those short video sections, and extracts frames:\n\n```bash\npython3 ~/.claude/skills/video-notes/scripts/capture_keyframes.py \\\n  <youtube_url> /tmp/subs.json \\\n  --max-frames 8 \\\n  --output-json /tmp/keyframes.json\n```\n\nOutput: `[{\"t\": \"mm:ss\", \"s\": 123.4, \"text\": \"...\", \"score\": 0.5, \"image_b64\": \"...\"}]`\n\n- If ffmpeg is not installed, skip this step and set `{{KEYFRAMES_JSON}}` to `[]` in the template — the gallery section will auto-hide.\n- Default `--max-frames` is 8; reduce for faster generation or increase for longer videos.\n\n### Step 3: Read and Understand the Content\n\nRead the subtitle text to understand:\n- The video's main topic and overall structure\n- Key concepts, arguments, frameworks, and terminology\n- Any notable quotes or memorable lines\n- Natural section boundaries (topic shifts)\n\n### Step 4: Generate HTML Notes\n\nUse `assets/note-template.html` as the foundation. Fill in each placeholder:\n\n| Placeholder | Content |\n|---|---|\n| `{{TITLE}}` | Page `<title>` tag |\n| `{{SIDEBAR_NAV}}` | `.sb-logo` block + `.nav-a` links for each section |\n| `{{SUMMARY}}` | Executive summary HTML (see below) |\n| `{{MAIN_CONTENT}}` | Hero block + all note sections |\n| `{{SUBTITLE_SEC_NUM}}` | Section number for the subtitle panel (e.g. `6`) |\n| `{{VIDEO_URL}}` | Full YouTube URL |\n| `{{VIDEO_ID}}` | YouTube video ID (e.g. `dQw4w9WgXcQ`) |\n| `{{SUBTITLE_JSON}}` | Full JSON array from Step 1 |\n| `{{KEYFRAMES_JSON}}` | Full JSON array from Step 2 (or `[]` if skipped) |\n| `{{SECTION_IDS}}` | JS array: `['hero','summary','s1','s2','keyframes','subtitles']` |\n\n#### Executive Summary (`{{SUMMARY}}`)\n\nWrite ~300 words of HTML paragraphs inside `<p>` tags. Structure:\n1. **One-sentence core thesis** — what is the speaker's central claim?\n2. **Main argument 1** — first major thread (2–3 sentences)\n3. **Main argument 2** — second major thread\n4. **Main argument 3** — third major thread (if applicable)\n5. **Closing** — key prediction, implication, or call to action\n\nUse `<strong style=\"color:var(--text)\">` for emphasis. Keep line-height loose (`line-height:2`).\n\n#### Hero Section\n\nAlways include a hero section (`id=\"hero\"`) with:\n- `.hero-badge`: speaker name + event/source\n- `<h1>`: video title (concise, impactful)\n- `.hero-sub`: speaker · role · note type\n- `.chips`: 3–5 topic tags\n- `.hero-quote`: the single most memorable quote\n\n#### Note Sections\n\nFor each major topic area, create `<div class=\"sec\" id=\"sN\">` with:\n- `.sec-hd` header (numbered `.sec-n` + `.sec-title`)\n- Content using: `.card`, `.g2`/`.g3` grids, `.diag` SVG diagrams, `.tl` timelines, `.ql` quotes\n\n#### SVG Diagrams (`.diag` blocks)\n\nGenerate SVGs for comparisons, progressions, and architectures:\n\n```\nBackground: rgba(R,G,B,.4) fill + rgba(R,G,B,.3) stroke\nLabels: fill=\"#fff\" font-weight=\"700\"; sublabels: fill=\"#aaa\" font-size=\"9-10\"\nArrows: › in <text>, colored to match the row\nConnectors: stroke=\"rgba(255,255,255,.12)\" stroke-dasharray=\"3,3\"\n```\n\nColor palette:\n- Blue flow: `#5b8dee` → `#9b7cf4` | Green flow: `#3ecf8e` → `#5b8dee`\n- Old/danger: `rgba(244,63,94,.4)` | Mid: `rgba(240,169,70,.4)` | New: `rgba(62,207,142,.4)`\n\n#### Sidebar Navigation\n\n```html\n<div class=\"sb-logo\">\n  <div class=\"sb-logo-icon\">🎬</div>\n  <h2>{{Short Title}}</h2>\n  <p>{{Speaker}} · {{Source}}</p>\n</div>\n<a class=\"nav-a active\" href=\"#hero\"><span class=\"nav-icon\">🏠</span>概览</a>\n<a class=\"nav-a\" href=\"#summary\"><span class=\"nav-icon\">✦</span>核心总结</a>\n<!-- one .nav-a per note section -->\n<div class=\"nav-sep\"></div>\n<a class=\"nav-a\" href=\"#keyframes\"><span class=\"nav-icon\">🎬</span>关键画面</a>\n<a class=\"nav-a\" href=\"#subtitles\"><span class=\"nav-icon\">📄</span>原始字幕</a>\n```\n\n### Step 5: Save and Open\n\n```bash\nopen /tmp/<video-id>-notes.html   # macOS\n```\n\nTell the user: save path, subtitle entry count, keyframe count, sections covered.\n\n## Quality Guidelines\n\n- **Summary is mandatory** — always write the executive summary; it's the first thing readers see.\n- **Keyframes add context** — when ffmpeg is available, always capture frames; they anchor abstract concepts to real visuals.\n- **Depth over breadth** — 4–7 well-developed sections beat 12 shallow ones.\n- **Diagrams are mandatory** when content has comparisons, progressions, or architectures.\n- **Language matching (MANDATORY)** — The notes UI language MUST match the user's request language, regardless of the video's language. If the user writes in Chinese, ALL generated text (summary, section titles, card content, quotes, sidebar nav, hero text, diagram labels, takeaways) MUST be in Chinese. English video + Chinese request = Chinese notes. Never default to English just because the video is in English.\n\nFile v1.1.0:README.md\n\n# video-notes\n\n> 把任何 YouTube 视频变成一份精美的结构化笔记\n\n粘贴一个 YouTube 链接，几分钟后你会得到一份带图表、截图和逐字稿的精美文档——不需要手动记一个字。\n\n## 效果预览\n\n输入：一个 YouTube 链接\n输出：一份自包含的 HTML 文档，包含：\n\n- **核心论点总结**（~300 字）：一句话主张 + 三条主线论据 + 关键预言\n- **章节结构笔记**：SVG 图表、对比卡片、时间线\n- **关键帧画廊**：自动截取重要时刻的视频截图，点击跳回 YouTube 原位置\n- **全文字幕搜索**：实时高亮，点击任意一行跳到对应时间点\n\n## 使用方式\n\n在 Claude Code 里说：\n\n```\n帮我给这个视频做笔记 https://youtube.com/watch?v=...\n```\n\n## 依赖\n\n- Python 3.8+\n- `yt-dlp`（脚本自动安装）\n- `ffmpeg`（关键帧截图需要，可选）\n\nmacOS 安装 ffmpeg：\n\n```bash\nbrew install ffmpeg\n```\n\n## 适用场景\n\n| 场景 | 说明 |\n|---|---|\n| 技术演讲 / 大会分享 | AI Ascent、TED、Google I/O 等 |\n| 网课 / 公开课 | Coursera、MIT OpenCourseWare |\n| 播客 / 长访谈 | Lex Fridman、各类深度对话 |\n| 产品发布会 | WWDC、OpenAI DevDay 等 |\n| 论文解读 | 作者在 YouTube 讲自己的论文 |\n| 公司内部分享 | 录制视频归档为可搜索文档 |\n\n## 文件结构\n\n```\nvideo-notes/\n├── SKILL.md                    # Claude Code skill 定义和工作流\n├── skill.json                  # ClawHub 元数据\n├── scripts/\n│   ├── extract_subtitles.py    # 字幕提取和去重\n│   └── capture_keyframes.py    # 关键帧识别和截取\n└── assets/\n    └── note-template.html      # HTML 文档模板\n```\n\n## 迭代历程\n\n- **v1**：字幕提取 + AI 结构化总结\n- **v2**：SVG 图表 + 精美 HTML 文档 + 侧边导航\n- **v3**：关键帧自动截图（仅下载关键片段，不下载完整视频）\n- **v4**：执行摘要 + 完整阅读层次\n\n## License\n\nMIT\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn78df9ttfk0wnhmn3nrf5wdfn874dn7\",\n  \"slug\": \"video-notes\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1779938415737\n}\n\nFile v1.1.0:CHANGELOG.md\n\n# Changelog\n\n## [1.1.0] - 2026-05-27\n\n### Added\n- Bilibili support: extract subtitles from B站 videos (including `ai-zh` format), with automatic cookie-based authentication\n- Chinese keyframe scoring: added Chinese heuristic rules covering domain terms like \"第X部分/外观/续航/底盘/续航\", fixing zero-score issue on Chinese videos\n\n### Fixed\n- Language matching now strictly enforced: notes UI language always matches the user's request language, not the video language (e.g. English video + Chinese request → Chinese notes)\n\n### Changed\n- `SKILL.md`: upgraded Language matching from soft guideline to mandatory rule with explicit examples\n\n## [1.0.0] - 2026-05-21\n\n### Added\n- `extract_subtitles.py`: Downloads and deduplicates YouTube auto-generated subtitles via yt-dlp, outputs clean JSON with timestamps\n- `capture_keyframes.py`: Identifies key moments using heuristic scoring, downloads only relevant video sections, extracts frames with ffmpeg, outputs base64-encoded JPEG images\n- `assets/note-template.html`: Self-contained HTML template with dark theme, sidebar navigation, scroll-spy, SVG diagram components, keyframe gallery (auto-hides if empty), subtitle search viewer\n- `SKILL.md`: Full workflow documentation covering subtitle extraction, keyframe capture, executive summary writing, HTML generation, and quality guidelines\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nVideo Notes turns YouTube and Bilibili videos into self-contained HTML notes with extracted subtitles, structured summaries, keyframes, SVG diagrams, sidebar navigation, and transcript search.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[kaimomo99](https://clawhub.ai/user/kaimomo99)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, students, researchers, and knowledge workers use this skill to convert public or authenticated YouTube and Bilibili videos into searchable study notes, summaries, diagrams, and timestamped keyframe galleries.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Browser-cookie mode can expose active browser sessions or leave exported cookies in temporary files.\n\nMitigation: Avoid using private, paid, or sensitive accounts; run in an isolated environment; and delete /tmp/yt-cookies-export.txt after any cookie-based run.\n\nRisk: The subtitle and keyframe scripts may install or run video-download tooling locally.\n\nMitigation: Review the scripts before use and run them with pinned dependencies in an isolated Python environment.\n\nRisk: Generated HTML may include content derived from untrusted captions.\n\nMitigation: Treat generated HTML as active content, inspect it before sharing, and open it in a constrained local environment when processing untrusted videos.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/kaimomo99/skills/video-notes)\n- [ClawHub Publisher Profile](https://clawhub.ai/user/kaimomo99)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration]\n\n**Output Format:** [Markdown guidance with shell commands and generated single-file HTML output; subtitle and keyframe intermediates are JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Keyframe capture requires ffmpeg; browser-cookie mode may create temporary cookie files under /tmp.]\n\n## Skill Version(s):\n\n1.1.0 (source: frontmatter, skill.json, changelog, ClawHub 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\nFile v1.1.0:skill.json\n\n{\n  \"name\": \"video-notes\",\n  \"slug\": \"video-notes\",\n  \"version\": \"1.1.0\",\n  \"author\": \"KAImomo99\",\n  \"description\": \"把 YouTube / B站视频自动转成结构化 HTML 笔记。提取字幕、截关键帧、生成 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML。支持中英文，用中文提问即出中文笔记。\",\n  \"tags\": [\"youtube\", \"bilibili\", \"notes\", \"summarization\", \"video\", \"productivity\", \"中文\"],\n  \"license\": \"MIT\",\n  \"requirements\": {\n    \"python\": \">=3.8\",\n    \"system\": [\"ffmpeg\"]\n  },\n  \"scripts\": {\n    \"extract_subtitles\": \"scripts/extract_subtitles.py\",\n    \"capture_keyframes\": \"scripts/capture_keyframes.py\"\n  }\n}\n\nArchive v1.0.0: 8 files, 15672 bytes\n\nFiles: assets/note-template.html (10687b), CHANGELOG.md (712b), README.md (2001b), scripts/capture_keyframes.py (8843b), scripts/extract_subtitles.py (4405b), skill.json (644b), SKILL.md (6031b), _meta.json (130b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: video-notes\nslug: video-notes\nversion: 1.0.0\nauthor: 2992638402-art\ndescription: 把任何 YouTube 视频变成一份精美的结构化笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provides a YouTube URL and asks to take notes, summarize a video, or create a study document from video content.\n---\n\n# Video Notes Skill\n\nConvert any YouTube video into a polished, self-contained HTML notes document with:\n- **Executive summary** (~300 words) capturing the core arguments\n- AI-generated structured notes with SVG diagrams\n- **Keyframe gallery** — screenshots auto-captured at key moments, each linking back to YouTube\n- Fixed sidebar navigation with scroll-spy\n- Searchable raw subtitle panel (click any line → jump to that timestamp)\n\n## Workflow\n\n### Step 1: Extract Subtitles\n\n```bash\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <youtube_url> --output /tmp/subs.json\n```\n\n- Default language: `en`. Pass `--lang zh` or `--lang zh-Hans` for Chinese.\n- On HTTP 429 errors, retry after a few seconds or try a different language.\n- If the video has no auto-generated captions, inform the user and stop.\n\nOutput: `[{\"t\": \"mm:ss\", \"s\": 123.4, \"text\": \"...\"}]`\n\n### Step 2: Capture Keyframes (requires ffmpeg)\n\nRun the keyframe script. It scores subtitles using heuristics, selects the most important moments (spaced ≥60s apart), downloads only those short video sections, and extracts frames:\n\n```bash\npython3 ~/.claude/skills/video-notes/scripts/capture_keyframes.py \\\n  <youtube_url> /tmp/subs.json \\\n  --max-frames 8 \\\n  --output-json /tmp/keyframes.json\n```\n\nOutput: `[{\"t\": \"mm:ss\", \"s\": 123.4, \"text\": \"...\", \"score\": 0.5, \"image_b64\": \"...\"}]`\n\n- If ffmpeg is not installed, skip this step and set `{{KEYFRAMES_JSON}}` to `[]` in the template — the gallery section will auto-hide.\n- Default `--max-frames` is 8; reduce for faster generation or increase for longer videos.\n\n### Step 3: Read and Understand the Content\n\nRead the subtitle text to understand:\n- The video's main topic and overall structure\n- Key concepts, arguments, frameworks, and terminology\n- Any notable quotes or memorable lines\n- Natural section boundaries (topic shifts)\n\n### Step 4: Generate HTML Notes\n\nUse `assets/note-template.html` as the foundation. Fill in each placeholder:\n\n| Placeholder | Content |\n|---|---|\n| `{{TITLE}}` | Page `<title>` tag |\n| `{{SIDEBAR_NAV}}` | `.sb-logo` block + `.nav-a` links for each section |\n| `{{SUMMARY}}` | Executive summary HTML (see below) |\n| `{{MAIN_CONTENT}}` | Hero block + all note sections |\n| `{{SUBTITLE_SEC_NUM}}` | Section number for the subtitle panel (e.g. `6`) |\n| `{{VIDEO_URL}}` | Full YouTube URL |\n| `{{VIDEO_ID}}` | YouTube video ID (e.g. `dQw4w9WgXcQ`) |\n| `{{SUBTITLE_JSON}}` | Full JSON array from Step 1 |\n| `{{KEYFRAMES_JSON}}` | Full JSON array from Step 2 (or `[]` if skipped) |\n| `{{SECTION_IDS}}` | JS array: `['hero','summary','s1','s2','keyframes','subtitles']` |\n\n#### Executive Summary (`{{SUMMARY}}`)\n\nWrite ~300 words of HTML paragraphs inside `<p>` tags. Structure:\n1. **One-sentence core thesis** — what is the speaker's central claim?\n2. **Main argument 1** — first major thread (2–3 sentences)\n3. **Main argument 2** — second major thread\n4. **Main argument 3** — third major thread (if applicable)\n5. **Closing** — key prediction, implication, or call to action\n\nUse `<strong style=\"color:var(--text)\">` for emphasis. Keep line-height loose (`line-height:2`).\n\n#### Hero Section\n\nAlways include a hero section (`id=\"hero\"`) with:\n- `.hero-badge`: speaker name + event/source\n- `<h1>`: video title (concise, impactful)\n- `.hero-sub`: speaker · role · note type\n- `.chips`: 3–5 topic tags\n- `.hero-quote`: the single most memorable quote\n\n#### Note Sections\n\nFor each major topic area, create `<div class=\"sec\" id=\"sN\">` with:\n- `.sec-hd` header (numbered `.sec-n` + `.sec-title`)\n- Content using: `.card`, `.g2`/`.g3` grids, `.diag` SVG diagrams, `.tl` timelines, `.ql` quotes\n\n#### SVG Diagrams (`.diag` blocks)\n\nGenerate SVGs for comparisons, progressions, and architectures:\n\n```\nBackground: rgba(R,G,B,.4) fill + rgba(R,G,B,.3) stroke\nLabels: fill=\"#fff\" font-weight=\"700\"; sublabels: fill=\"#aaa\" font-size=\"9-10\"\nArrows: › in <text>, colored to match the row\nConnectors: stroke=\"rgba(255,255,255,.12)\" stroke-dasharray=\"3,3\"\n```\n\nColor palette:\n- Blue flow: `#5b8dee` → `#9b7cf4` | Green flow: `#3ecf8e` → `#5b8dee`\n- Old/danger: `rgba(244,63,94,.4)` | Mid: `rgba(240,169,70,.4)` | New: `rgba(62,207,142,.4)`\n\n#### Sidebar Navigation\n\n```html\n<div class=\"sb-logo\">\n  <div class=\"sb-logo-icon\">🎬</div>\n  <h2>{{Short Title}}</h2>\n  <p>{{Speaker}} · {{Source}}</p>\n</div>\n<a class=\"nav-a active\" href=\"#hero\"><span class=\"nav-icon\">🏠</span>概览</a>\n<a class=\"nav-a\" href=\"#summary\"><span class=\"nav-icon\">✦</span>核心总结</a>\n<!-- one .nav-a per note section -->\n<div class=\"nav-sep\"></div>\n<a class=\"nav-a\" href=\"#keyframes\"><span class=\"nav-icon\">🎬</span>关键画面</a>\n<a class=\"nav-a\" href=\"#subtitles\"><span class=\"nav-icon\">📄</span>原始字幕</a>\n```\n\n### Step 5: Save and Open\n\n```bash\nopen /tmp/<video-id>-notes.html   # macOS\n```\n\nTell the user: save path, subtitle entry count, keyframe count, sections covered.\n\n## Quality Guidelines\n\n- **Summary is mandatory** — always write the executive summary; it's the first thing readers see.\n- **Keyframes add context** — when ffmpeg is available, always capture frames; they anchor abstract concepts to real visuals.\n- **Depth over breadth** — 4–7 well-developed sections beat 12 shallow ones.\n- **Diagrams are mandatory** when content has comparisons, progressions, or architectures.\n- **Language matching** — write in the same language as the user's request, regardless of the video's language.\n\nFile v1.0.0:README.md\n\n# video-notes\n\n> 把任何 YouTube 视频变成一份精美的结构化笔记\n\n粘贴一个 YouTube 链接，几分钟后你会得到一份带图表、截图和逐字稿的精美文档——不需要手动记一个字。\n\n## 效果预览\n\n输入：一个 YouTube 链接\n输出：一份自包含的 HTML 文档，包含：\n\n- **核心论点总结**（~300 字）：一句话主张 + 三条主线论据 + 关键预言\n- **章节结构笔记**：SVG 图表、对比卡片、时间线\n- **关键帧画廊**：自动截取重要时刻的视频截图，点击跳回 YouTube 原位置\n- **全文字幕搜索**：实时高亮，点击任意一行跳到对应时间点\n\n## 使用方式\n\n在 Claude Code 里说：\n\n```\n帮我给这个视频做笔记 https://youtube.com/watch?v=...\n```\n\n## 依赖\n\n- Python 3.8+\n- `yt-dlp`（脚本自动安装）\n- `ffmpeg`（关键帧截图需要，可选）\n\nmacOS 安装 ffmpeg：\n\n```bash\nbrew install ffmpeg\n```\n\n## 适用场景\n\n| 场景 | 说明 |\n|---|---|\n| 技术演讲 / 大会分享 | AI Ascent、TED、Google I/O 等 |\n| 网课 / 公开课 | Coursera、MIT OpenCourseWare |\n| 播客 / 长访谈 | Lex Fridman、各类深度对话 |\n| 产品发布会 | WWDC、OpenAI DevDay 等 |\n| 论文解读 | 作者在 YouTube 讲自己的论文 |\n| 公司内部分享 | 录制视频归档为可搜索文档 |\n\n## 文件结构\n\n```\nvideo-notes/\n├── SKILL.md                    # Claude Code skill 定义和工作流\n├── skill.json                  # ClawHub 元数据\n├── scripts/\n│   ├── extract_subtitles.py    # 字幕提取和去重\n│   └── capture_keyframes.py    # 关键帧识别和截取\n└── assets/\n    └── note-template.html      # HTML 文档模板\n```\n\n## 迭代历程\n\n- **v1**：字幕提取 + AI 结构化总结\n- **v2**：SVG 图表 + 精美 HTML 文档 + 侧边导航\n- **v3**：关键帧自动截图（仅下载关键片段，不下载完整视频）\n- **v4**：执行摘要 + 完整阅读层次\n\n## License\n\nMIT\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn78df9ttfk0wnhmn3nrf5wdfn874dn7\",\n  \"slug\": \"video-notes\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779358545423\n}\n\nFile v1.0.0:CHANGELOG.md\n\n# Changelog\n\n## [1.0.0] - 2026-05-21\n\n### Added\n- `extract_subtitles.py`: Downloads and deduplicates YouTube auto-generated subtitles via yt-dlp, outputs clean JSON with timestamps\n- `capture_keyframes.py`: Identifies key moments using heuristic scoring, downloads only relevant video sections, extracts frames with ffmpeg, outputs base64-encoded JPEG images\n- `assets/note-template.html`: Self-contained HTML template with dark theme, sidebar navigation, scroll-spy, SVG diagram components, keyframe gallery (auto-hides if empty), subtitle search viewer\n- `SKILL.md`: Full workflow documentation covering subtitle extraction, keyframe capture, executive summary writing, HTML generation, and quality guidelines\n\nFile v1.0.0:skill.json\n\n{\n  \"name\": \"video-notes\",\n  \"slug\": \"video-notes\",\n  \"version\": \"1.0.0\",\n  \"author\": \"2992638402-art\",\n  \"description\": \"把任何 YouTube 视频变成一份精美的结构化笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。\",\n  \"tags\": [\"youtube\", \"notes\", \"summarization\", \"video\", \"productivity\"],\n  \"license\": \"MIT\",\n  \"requirements\": {\n    \"python\": \">=3.8\",\n    \"system\": [\"ffmpeg\"]\n  },\n  \"scripts\": {\n    \"extract_subtitles\": \"scripts/extract_subtitles.py\",\n    \"capture_keyframes\": \"scripts/capture_keyframes.py\"\n  }\n}","readmeExcerpt":"Skill: Video Notes Owner: kaimomo99 Summary: 把 YouTube / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provi... Tags: latest:1.1.0 Version history: v1.1.0 | 2026-05-28T03:20:15.737Z | auto Version 1.1.0 brings Bilibili support, better subtitle extraction, and detailed language guidelines: - Added support for Bilibili vid","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"python3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> --output /tmp/subs.json"},{"language":"bash","snippet":"# 使用 Chrome cookies（推荐）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> \\\n  --output /tmp/subs.json \\\n  --cookies-from-browser chrome\n\n# 或使用已导出的 cookies 文件\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> \\\n  --output /tmp/subs.json \\\n  --cookies /tmp/yt-cookies.txt"},{"language":"bash","snippet":"# B站视频（中文字幕）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \\\n  \"https://www.bilibili.com/video/BVxxxxxxxx\" \\\n  --lang zh --output /tmp/subs.json\n\n# 需要登录的 B站视频（会员内容等）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \\\n  \"https://www.bilibili.com/video/BVxxxxxxxx\" \\\n  --lang zh --cookies-from-browser chrome --output /tmp/subs.json"},{"language":"bash","snippet":"python3 ~/.claude/skills/video-notes/scripts/capture_keyframes.py \\\n  <youtube_url> /tmp/subs.json \\\n  --max-frames 8 \\\n  --output-json /tmp/keyframes.json"},{"language":"text","snippet":"Background: rgba(R,G,B,.4) fill + rgba(R,G,B,.3) stroke\nLabels: fill=\"#fff\" font-weight=\"700\"; sublabels: fill=\"#aaa\" font-size=\"9-10\"\nArrows: › in <text>, colored to match the row\nConnectors: stroke=\"rgba(255,255,255,.12)\" stroke-dasharray=\"3,3\""},{"language":"html","snippet":"<div class=\"sb-logo\">\n  <div class=\"sb-logo-icon\">🎬</div>\n  <h2>{{Short Title}}</h2>\n  <p>{{Speaker}} · {{Source}}</p>\n</div>\n<a class=\"nav-a active\" href=\"#hero\"><span class=\"nav-icon\">🏠</span>概览</a>\n<a class=\"nav-a\" href=\"#summary\"><span class=\"nav-icon\">✦</span>核心总结</a>\n<!-- one .nav-a per note section -->\n<div class=\"nav-sep\"></div>\n<a class=\"nav-a\" href=\"#keyframes\"><span class=\"nav-icon\">🎬</span>关键画面</a>\n<a class=\"nav-a\" href=\"#subtitles\"><span class=\"nav-icon\">📄</span>原始字幕</a>"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: video-notes\nslug: video-notes\nversion: 1.1.0\nauthor: 2992638402-art\ndescription: 把 YouTube / 哔哩哔哩视频变成一份精美的结构化笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provides a YouTube or Bilibili URL and asks to take notes, summarize a video, or create a study document from video content.\n---\n\n# Video Notes Skill\n\nConvert any YouTube / Bilibili video into a polished, self-contained HTML notes document with:\n- **Executive summary** (~300 words) capturing the core arguments\n- AI-generated structured notes with SVG diagrams\n- **Keyframe gallery** — screenshots auto-captured at key moments, each linking back to the video\n- Fixed sidebar navigation with scroll-spy\n- Searchable raw subtitle panel (click any line → jump to that timestamp)\n\n## Workflow\n\n### Step 1: Extract Subtitles\n\n```bash\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> --output /tmp/subs.json\n```\n\n**语言参数：**\n- YouTube 英文视频（默认）：不加 `--lang`\n- YouTube / B站 中文视频：`--lang zh` 或 `--lang zh-Hans`\n\n**YouTube 认证问题（常见！）：**\n\n若直接运行报错 `Sign in to confirm you're not a bot` 或 `No subtitles found`，需要传入浏览器 cookies：\n\n```bash\n# 使用 Chrome cookies（推荐）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> \\\n  --output /tmp/subs.json \\\n  --cookies-from-browser chrome\n\n# 或使用已导出的 cookies 文件\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py <url> \\\n  --output /tmp/subs.json \\\n  --cookies /tmp/yt-cookies.txt\n```\n\n**脚本内置降级策略（自动执行，无需手动干预）：**\n\n1. **快速路径**：`--skip-download` 直接获取字幕（速度最快）\n2. **降级路径**：若快速路径失败，自动导出 cookies 后用 `-f sb3`（storyboard 格式，YouTube 始终可用）触发字幕下载，解析 VTT 格式\n3. **格式兼容**：优先 VTT（支持内联时间标签），失败则回退 SRT\n\n**哔哩哔哩支持：**\n\nB站视频直接传 URL，yt-dlp 原生支持：\n\n```bash\n# B站视频（中文字幕）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \\\n  \"https://www.bilibili.com/video/BVxxxxxxxx\" \\\n  --lang zh --output /tmp/subs.json\n\n# 需要登录的 B站视频（会员内容等）\npython3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \\\n  \"https://www.bilibili.com/video/BVxxxxxxxx\" \\\n  --lang zh --cookies-from-browser chrome --output /tmp/subs.json\n```\n\n> **注意**：B站部分视频有人工上传字幕（非 AI 生成），脚本已同时尝试 `--write-subs` 和 `--write-auto-subs`，两种都能获取。没有任何字幕的视频（纯口播无字幕）会返回错误，此时需告知用户。\n\nOutput: `[{\"t\": \"mm:ss\", \"s\": 123.4, \"text\": \"...\"}]`\n\n### Step 2: Capture Keyframes (requires ffmpeg)\n\nRun the keyframe script. It scores subtitles using heuristics, selects the most important moments (spaced ≥60s apart), downloads only those short video sections, and extracts frames:\n\n```bash\npython3 ~/.claude/skills/video-notes/scripts/capture_keyframes.py \\\n  <youtube_url> /tmp/subs.json \\\n  --max-frames 8 \\\n  --output-json /tmp/keyframes.json\n```\n\nOutput: `[{\"t\": \"mm:ss\", \"s\": 123.4, \"text\": \"...\", \"score\": 0.5, \"image_b64\": \"...\"}]`\n\n- If ffmpeg is not installed, skip this step and set `{{KEYFRAMES_JSON}}` to `[]` in the template — the gallery section will auto-hide.\n- Default `--max-frames` is 8; reduce for faster generation or increase for "},{"path":"README.md","content":"# video-notes\n\n> 把任何 YouTube 视频变成一份精美的结构化笔记\n\n粘贴一个 YouTube 链接，几分钟后你会得到一份带图表、截图和逐字稿的精美文档——不需要手动记一个字。\n\n## 效果预览\n\n输入：一个 YouTube 链接\n输出：一份自包含的 HTML 文档，包含：\n\n- **核心论点总结**（~300 字）：一句话主张 + 三条主线论据 + 关键预言\n- **章节结构笔记**：SVG 图表、对比卡片、时间线\n- **关键帧画廊**：自动截取重要时刻的视频截图，点击跳回 YouTube 原位置\n- **全文字幕搜索**：实时高亮，点击任意一行跳到对应时间点\n\n## 使用方式\n\n在 Claude Code 里说：\n\n```\n帮我给这个视频做笔记 https://youtube.com/watch?v=...\n```\n\n## 依赖\n\n- Python 3.8+\n- `yt-dlp`（脚本自动安装）\n- `ffmpeg`（关键帧截图需要，可选）\n\nmacOS 安装 ffmpeg：\n\n```bash\nbrew install ffmpeg\n```\n\n## 适用场景\n\n| 场景 | 说明 |\n|---|---|\n| 技术演讲 / 大会分享 | AI Ascent、TED、Google I/O 等 |\n| 网课 / 公开课 | Coursera、MIT OpenCourseWare |\n| 播客 / 长访谈 | Lex Fridman、各类深度对话 |\n| 产品发布会 | WWDC、OpenAI DevDay 等 |\n| 论文解读 | 作者在 YouTube 讲自己的论文 |\n| 公司内部分享 | 录制视频归档为可搜索文档 |\n\n## 文件结构\n\n```\nvideo-notes/\n├── SKILL.md                    # Claude Code skill 定义和工作流\n├── skill.json                  # ClawHub 元数据\n├── scripts/\n│   ├── extract_subtitles.py    # 字幕提取和去重\n│   └── capture_keyframes.py    # 关键帧识别和截取\n└── assets/\n    └── note-template.html      # HTML 文档模板\n```\n\n## 迭代历程\n\n- **v1**：字幕提取 + AI 结构化总结\n- **v2**：SVG 图表 + 精美 HTML 文档 + 侧边导航\n- **v3**：关键帧自动截图（仅下载关键片段，不下载完整视频）\n- **v4**：执行摘要 + 完整阅读层次\n\n## License\n\nMIT"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn78df9ttfk0wnhmn3nrf5wdfn874dn7\",\n  \"slug\": \"video-notes\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1779938415737\n}"},{"path":"CHANGELOG.md","content":"# Changelog\n\n## [1.1.0] - 2026-05-27\n\n### Added\n- Bilibili support: extract subtitles from B站 videos (including `ai-zh` format), with automatic cookie-based authentication\n- Chinese keyframe scoring: added Chinese heuristic rules covering domain terms like \"第X部分/外观/续航/底盘/续航\", fixing zero-score issue on Chinese videos\n\n### Fixed\n- Language matching now strictly enforced: notes UI language always matches the user's request language, not the video language (e.g. English video + Chinese request → Chinese notes)\n\n### Changed\n- `SKILL.md`: upgraded Language matching from soft guideline to mandatory rule with explicit examples\n\n## [1.0.0] - 2026-05-21\n\n### Added\n- `extract_subtitles.py`: Downloads and deduplicates YouTube auto-generated subtitles via yt-dlp, outputs clean JSON with timestamps\n- `capture_keyframes.py`: Identifies key moments using heuristic scoring, downloads only relevant video sections, extracts frames with ffmpeg, outputs base64-encoded JPEG images\n- `assets/note-template.html`: Self-contained HTML template with dark theme, sidebar navigation, scroll-spy, SVG diagram components, keyframe gallery (auto-hides if empty), subtitle search viewer\n- `SKILL.md`: Full workflow documentation covering subtitle extraction, keyframe capture, executive summary writing, HTML generation, and quality guidelines"},{"path":"skill-card.md","content":"## Description:\n\nVideo Notes turns YouTube and Bilibili videos into self-contained HTML notes with extracted subtitles, structured summaries, keyframes, SVG diagrams, sidebar navigation, and transcript search.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[kaimomo99](https://clawhub.ai/user/kaimomo99)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, students, researchers, and knowledge workers use this skill to convert public or authenticated YouTube and Bilibili videos into searchable study notes, summaries, diagrams, and timestamped keyframe galleries.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Browser-cookie mode can expose active browser sessions or leave exported cookies in temporary files.\n\nMitigation: Avoid using private, paid, or sensitive accounts; run in an isolated environment; and delete /tmp/yt-cookies-export.txt after any cookie-based run.\n\nRisk: The subtitle and keyframe scripts may install or run video-download tooling locally.\n\nMitigation: Review the scripts before use and run them with pinned dependencies in an isolated Python environment.\n\nRisk: Generated HTML may include content derived from untrusted captions.\n\nMitigation: Treat generated HTML as active content, inspect it before sharing, and open it in a constrained local environment when processing untrusted videos.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/kaimomo99/skills/video-notes)\n- [ClawHub Publisher Profile](https://clawhub.ai/user/kaimomo99)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration]\n\n**Output Format:** [Markdown guidance with shell commands and generated single-file HTML output; subtitle and keyframe intermediates are JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Keyframe capture requires ffmpeg; browser-cookie mode may create temporary cookie files under /tmp.]\n\n## Skill Version(s):\n\n1.1.0 (source: frontmatter, skill.json, changelog, ClawHub 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 / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provi... Skill: Video Notes Owner: kaimomo99 Summary: 把 YouTube / 哔哩哔哩视频变成一份精美的结构化HTML笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表，输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provi... Tags: latest:1.1.0 Version history: v1.1.0 | 2026-05-28T03:20:15.737Z | auto Version 1.1.0 brings Bilibili support, better subtitle extraction, and detailed language guidelines: - Added support for Bilibili vid","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1246,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T06:11:48.195Z","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-11T06:11:48.195Z","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-11T08:40:48.973Z","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"}]}}}