← Back to Skills Marketplace
kaimomo99

Video Notes

by KAImomo99 · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ pending
39
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install video-notes
Description
把任何 YouTube 视频变成一份精美的结构化笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表,输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provides...
README (SKILL.md)

Video Notes Skill

Convert any YouTube video into a polished, self-contained HTML notes document with:

  • Executive summary (~300 words) capturing the core arguments
  • AI-generated structured notes with SVG diagrams
  • Keyframe gallery — screenshots auto-captured at key moments, each linking back to YouTube
  • Fixed sidebar navigation with scroll-spy
  • Searchable raw subtitle panel (click any line → jump to that timestamp)

Workflow

Step 1: Extract Subtitles

python3 ~/.claude/skills/video-notes/scripts/extract_subtitles.py \x3Cyoutube_url> --output /tmp/subs.json
  • Default language: en. Pass --lang zh or --lang zh-Hans for Chinese.
  • On HTTP 429 errors, retry after a few seconds or try a different language.
  • If the video has no auto-generated captions, inform the user and stop.

Output: [{"t": "mm:ss", "s": 123.4, "text": "..."}]

Step 2: Capture Keyframes (requires ffmpeg)

Run 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:

python3 ~/.claude/skills/video-notes/scripts/capture_keyframes.py \
  \x3Cyoutube_url> /tmp/subs.json \
  --max-frames 8 \
  --output-json /tmp/keyframes.json

Output: [{"t": "mm:ss", "s": 123.4, "text": "...", "score": 0.5, "image_b64": "..."}]

  • If ffmpeg is not installed, skip this step and set {{KEYFRAMES_JSON}} to [] in the template — the gallery section will auto-hide.
  • Default --max-frames is 8; reduce for faster generation or increase for longer videos.

Step 3: Read and Understand the Content

Read the subtitle text to understand:

  • The video's main topic and overall structure
  • Key concepts, arguments, frameworks, and terminology
  • Any notable quotes or memorable lines
  • Natural section boundaries (topic shifts)

Step 4: Generate HTML Notes

Use assets/note-template.html as the foundation. Fill in each placeholder:

Placeholder Content
{{TITLE}} Page \x3Ctitle> tag
{{SIDEBAR_NAV}} .sb-logo block + .nav-a links for each section
{{SUMMARY}} Executive summary HTML (see below)
{{MAIN_CONTENT}} Hero block + all note sections
{{SUBTITLE_SEC_NUM}} Section number for the subtitle panel (e.g. 6)
{{VIDEO_URL}} Full YouTube URL
{{VIDEO_ID}} YouTube video ID (e.g. dQw4w9WgXcQ)
{{SUBTITLE_JSON}} Full JSON array from Step 1
{{KEYFRAMES_JSON}} Full JSON array from Step 2 (or [] if skipped)
{{SECTION_IDS}} JS array: ['hero','summary','s1','s2','keyframes','subtitles']

Executive Summary ({{SUMMARY}})

Write ~300 words of HTML paragraphs inside \x3Cp> tags. Structure:

  1. One-sentence core thesis — what is the speaker's central claim?
  2. Main argument 1 — first major thread (2–3 sentences)
  3. Main argument 2 — second major thread
  4. Main argument 3 — third major thread (if applicable)
  5. Closing — key prediction, implication, or call to action

Use \x3Cstrong style="color:var(--text)"> for emphasis. Keep line-height loose (line-height:2).

Hero Section

Always include a hero section (id="hero") with:

  • .hero-badge: speaker name + event/source
  • \x3Ch1>: video title (concise, impactful)
  • .hero-sub: speaker · role · note type
  • .chips: 3–5 topic tags
  • .hero-quote: the single most memorable quote

Note Sections

For each major topic area, create \x3Cdiv class="sec" id="sN"> with:

  • .sec-hd header (numbered .sec-n + .sec-title)
  • Content using: .card, .g2/.g3 grids, .diag SVG diagrams, .tl timelines, .ql quotes

SVG Diagrams (.diag blocks)

Generate SVGs for comparisons, progressions, and architectures:

Background: rgba(R,G,B,.4) fill + rgba(R,G,B,.3) stroke
Labels: fill="#fff" font-weight="700"; sublabels: fill="#aaa" font-size="9-10"
Arrows: › in \x3Ctext>, colored to match the row
Connectors: stroke="rgba(255,255,255,.12)" stroke-dasharray="3,3"

Color palette:

  • Blue flow: #5b8dee#9b7cf4 | Green flow: #3ecf8e#5b8dee
  • Old/danger: rgba(244,63,94,.4) | Mid: rgba(240,169,70,.4) | New: rgba(62,207,142,.4)

Sidebar Navigation

\x3Cdiv class="sb-logo">
  \x3Cdiv class="sb-logo-icon">🎬\x3C/div>
  \x3Ch2>{{Short Title}}\x3C/h2>
  \x3Cp>{{Speaker}} · {{Source}}\x3C/p>
\x3C/div>
\x3Ca class="nav-a active" href="#hero">\x3Cspan class="nav-icon">🏠\x3C/span>概览\x3C/a>
\x3Ca class="nav-a" href="#summary">\x3Cspan class="nav-icon">✦\x3C/span>核心总结\x3C/a>
\x3C!-- one .nav-a per note section -->
\x3Cdiv class="nav-sep">\x3C/div>
\x3Ca class="nav-a" href="#keyframes">\x3Cspan class="nav-icon">🎬\x3C/span>关键画面\x3C/a>
\x3Ca class="nav-a" href="#subtitles">\x3Cspan class="nav-icon">📄\x3C/span>原始字幕\x3C/a>

Step 5: Save and Open

open /tmp/\x3Cvideo-id>-notes.html   # macOS

Tell the user: save path, subtitle entry count, keyframe count, sections covered.

Quality Guidelines

  • Summary is mandatory — always write the executive summary; it's the first thing readers see.
  • Keyframes add context — when ffmpeg is available, always capture frames; they anchor abstract concepts to real visuals.
  • Depth over breadth — 4–7 well-developed sections beat 12 shallow ones.
  • Diagrams are mandatory when content has comparisons, progressions, or architectures.
  • Language matching — write in the same language as the user's request, regardless of the video's language.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install video-notes
  3. After installation, invoke the skill by name or use /video-notes
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
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.
Metadata
Slug video-notes
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Video Notes?

把任何 YouTube 视频变成一份精美的结构化笔记。自动提取字幕、识别关键时刻并截图、生成核心论点总结和 SVG 图表,输出带侧边导航和全文搜索的单文件 HTML 文档。适用于技术演讲、公开课、播客、产品发布会等场景。This skill should be used when a user provides... It is an AI Agent Skill for Claude Code / OpenClaw, with 39 downloads so far.

How do I install Video Notes?

Run "/install video-notes" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Video Notes free?

Yes, Video Notes is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Video Notes support?

Video Notes is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Video Notes?

It is built and maintained by KAImomo99 (@kaimomo99); the current version is v1.0.0.

💬 Comments