Summarize learning videos
Turn Bilibili and YouTube learning videos into detailed, timestamped Obsidian study notes with a mandatory quality gate.
npx -y skills add zccyes/summarize-learning-videosAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 22 days oldThe repository was created 22 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Convert Bilibili, YouTube, and other accessible learning-video links into detailed, timestamped Chinese study notes and save them as Obsidian-compatible Markdown. Always use this skill when the user includes the standalone alias "SLV" in any letter case (for example, SLV, slv, or Slv) to request work on a video; treat the alias as an explicit invocation of summarize-learning-videos. Also use when the user provides a video URL or local video and asks for a comprehensive summary, structured extraction, study notes, review material, transcript-backed analysis, or export to their Obsidian vault. Handle subtitles, local speech transcription, visual-heavy videos, metadata, source-quality disclosure, and note archiving.
SKILL.md
8.9 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Summarize Learning Videos
Turn accessible videos into complete, traceable learning notes. Prefer source coverage and accuracy over speed. Do not present a page description or another person's summary as if it covered the full video.
Recognize the SLV alias
Treat the standalone token SLV, case-insensitively, as an explicit request to use this skill. When the request includes SLV and a video URL or local video, run the complete workflow unless the user explicitly narrows the requested output. When SLV is present but no video source is provided, ask for the URL or local video instead of substituting another workflow.
Load configuration
- Read the path in
VIDEO_NOTES_CONFIGwhen that environment variable is set. - Otherwise look for
project-config.yamlin the current workspace. - Use its output path, retention choices, language, and note defaults.
- If no configuration exists, ask for the Obsidian vault and target folder before the first export. Use
references/project-config.example.yamlas the schema. - Ask only when a required choice is missing or writing would overwrite an existing note.
Acquire the source
Use this priority order:
- Author-provided subtitles.
- Platform-generated subtitles.
- Local audio transcription with MLX Whisper.
- Page metadata only as supplementary context, never as a substitute for the video.
Prefer one invocation of scripts/run_pipeline.py. It must collect metadata, choose the best subtitle, fall back to audio only when subtitles are unavailable, run the configured MLX Whisper model, normalize timestamps, create a complete chapter-organized reading file, and record stage timings. Pass --language zh for clearly Chinese audio; otherwise omit language to allow detection. Add --cookies-from-browser chrome only when public access fails and the user has authorized use of their logged-in browser state.
Use scripts/prepare_video.py, scripts/normalize_transcript.py, and scripts/chapterize_transcript.py separately only for recovery or debugging. Do not fetch metadata twice merely to discover that audio is needed.
Preserve the full source coverage in the internal chapter reading file. Keep the source language there; summarize in Chinese unless the user requests another language.
Never bypass DRM, payment, private access controls, or platform permissions. State the limitation when the source cannot be accessed.
Inspect visual information
Treat the transcript as insufficient when the video relies on slides, diagrams, screen demonstrations, equations, code, product interfaces, or silent visual examples.
For those videos:
- Inspect representative frames at chapter boundaries and major topic changes.
- Capture additional frames around phrases such as “看这里”, “如图”, “这个界面”, or “这段代码”.
- Describe only information visible in the inspected frames.
- Store retained images under the configured attachment folder and use Obsidian embeds.
Build the note in two passes
Pass 1: coverage map
- Read the complete
chapterized.md, preferably in one combined read when it fits the context. - Divide the video by topic changes rather than fixed time intervals.
- Map every substantial segment to a chapter.
- Extract the main claim, explanation, evidence, example, caveat, and conclusion for each chapter.
- Record names and technical terms that require verification.
Pass 2: detailed synthesis
- Follow
references/summary-template.md. - Adapt the structure using
references/video-type-guides.md. - Paraphrase copyrighted content; include only short excerpts when wording itself matters.
- Separate the creator's claims from established facts and from the summarizer's inference.
- Preserve important original-language terms in parentheses.
- Make length proportional to information density, not merely runtime.
- Give each core concept its own plain-text heading, normally formatted as
中文概念(English term). Immediately below it, runscripts/render_search_buttons.py --term "<complete concept heading>"to add one logo-only Baidu button and one logo-only Google button. The Baidu button must search only the Chinese text before the parentheses; the Google button must search only the English text inside the parentheses. Never append explanatory, disambiguating, or topical keywords. When a proper noun or abbreviation has no meaningful bilingual split, omit the parentheses and let both buttons search the unchanged term. Never use an unresolved wikilink as the concept heading. - Add a
知识图谱关键词section containing normalized Obsidian tags. Reuse the same tag spelling across notes so shared topics form graph nodes. - Keep the machine-readable YAML frontmatter at the beginning of the Markdown file, but finish the visible note with a
笔记属性section generated byscripts/render_note_properties.py. Never move YAML frontmatter to the bottom because Obsidian would stop treating it as properties.
Pass the mandatory quality gate
Treat quality review as a required third pass, not an optional final glance.
- Draft the note in the temporary work area before final Obsidian export.
- Re-read the complete
chapterized.mdand the finished draft side by side. - Apply every critical item in
references/quality-checklist.mdas pass or fail. - Run
scripts/validate_note.pywith the known duration and official chapter count. - If any critical semantic or structural item fails, revise the draft and repeat both checks.
- Export only after the quality gate passes. Then read the exported file back and confirm it matches the approved draft.
Do not waive a failed check to save time. If source limitations make a check impossible, disclose the limitation, lower the source grade where appropriate, and avoid claiming complete coverage.
Do not claim “complete” coverage when:
- the transcript has material gaps;
- the video is visual-heavy but frames were not inspected;
- only metadata, description, or search snippets were available;
- speaker attribution or important terminology remains unreliable.
Include a source-quality statement in every note.
Optimize without reducing quality
- Keep the configured
large-v3-turbomodel for subtitle-free videos. Do not switch to a smaller model merely to save time. - Use the single-pass pipeline and the complete chapter-organized reading file to reduce tool round trips, not source coverage.
- Batch uncertain current facts into one primary-source verification pass after building the coverage map.
- Inspect frames only when visual information is material; do not download full-resolution video for a language-led podcast.
- Read
timings.jsonafter each run and report evidence-based bottlenecks. Do not promise a fixed runtime. - Never skip chapters, caveats, terminology checks, or final read-back validation for speed.
- Never skip the mandatory quality gate or its revision loop for speed.
Save to Obsidian
- Save the main note in the configured target folder as
<clean video title>.md. - Do not overwrite an existing file without explicit permission. Use a disambiguating suffix when the video is different.
- Save a cleaned transcript only when configuration requests it; otherwise keep it temporary for analysis and remove it after validation.
- Use YAML properties, normalized tags, and relative attachment embeds. Keep YAML at the file beginning for Obsidian indexing, then run
scripts/render_note_properties.py --write <note>so the human-readable property table is the final section. Use[[wikilinks]]only for notes that already resolve in the current vault; use graph keywords as tags rather than nonexistent note links. - Use clickable timestamp links when the platform supports them.
- Recommend Obsidian's Settings → Editor → Properties in document → Hidden presentation setting when the user wants the article to begin directly with its content. Treat this as a vault preference, not a reason to delete YAML.
- Update the configured index note after a successful save; create it on first use if absent.
- Delete temporary audio and video after successful output unless configuration says otherwise.
Report the saved note path, transcript path if any, source quality, quality-gate result, and any important coverage limitation.
Gives 0 of the 12 instructions most note taking skills give in ~1.7k tokens
Counted across 686 of the 876 authors here whose files we hold, read 2026-08-06
- include a visual element on every slidein 44 of 686, across 13 files
- use wikilinks for internal vault linksin 35 of 686, across 11 files
- commit to a single visual motif across every slidein 34 of 686, across 9 files
- read pptxgenjs guide before creating presentations from scratchin 30 of 686, across 6 files
- keep 0.5 inch minimum marginsin 30 of 686, across 7 files
- use subagents to visually inspect rendered slidesin 30 of 686, across 6 files
- re-verify affected slides after every fixin 27 of 686, across 5 files
- run content QA checks before declaring successin 26 of 686, across 3 files
- Use Markdown links for external URLs onlyin 26 of 686, across 10 files
- pick a bold topic specific color palettein 24 of 686, across 2 files
- read editing guide before editing existing presentationsin 23 of 686, across 1 file
- use one dominant color across all slidesin 23 of 686, across 1 file
Said here and by no other author read
- treat SLV as an explicit invocation
- read configuration from VIDEO_NOTES_CONFIG
- prefer author-provided subtitles over generated subtitles
- run scripts/run_pipeline.py for processing
- inspect visual frames when video relies on visuals
- build notes in two passes
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.