Skip to content
Skillpedia
Writing48k · #4615

youtube-notetaker

Turns YouTube videos into study notes. Includes slides, transcripts, and allows edits, helping organize learning.

What it does

Turns YouTube videos into local study notes. It saves slide snapshots, full transcripts, editable notes, and a viewer.

When to use it

  • ✓When you want to create a personal study archive of YouTube videos.
  • ✓When organizing lectures or classes for future reference.
  • ✓To have an editable record of important video information.

Example of what to ask your AI

“Turn this YouTube video into study notes: [video link]”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/youtube-notetaker/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/youtube-notetaker/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The program downloads the video, extracts slides and transcripts, and organizes everything into a simple text file (markdown). You can then edit notes and view everything on a local website.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill youtube-notetaker

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/youtube-notetaker/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

YouTube Notetaker

When to Use

Use when this workflow matches the user request: >

Source: dair-ai/dair-academy-plugins (MIT).

Build a personal library of YouTube talks you study with. Each video becomes one plain markdown file: slide snapshots at their timestamps, a full timestamped transcript, and editable notes. A small bundled server renders the library as an interactive deep-dive in the browser. No database, no cloud service. Everything is files on disk you fully own.

Architecture (read this first)

The markdown library is the single source of truth. The artifact is a thin HTML shell that fetches from the server and writes notes back. Never hardcode video data into the HTML.

  • Library: a plain folder, set by VIDEO_LIBRARY_DIR (default ~/video-deepdives/).
    • One markdown file per video, filename slug = YouTube id (e.g. RtywqDFBYnQ.md).
    • Frontmatter holds video metadata + a slides array.
    • Body holds the full transcript as [HH:MM:SS] text lines.
    • _media/ holds slide images, namespaced per video as <youtube_id>-slide-NN.jpg to avoid collisions between videos.
  • Server: scripts/serve.py, a single stdlib + PyYAML file. Start it with:
    python3 scripts/serve.py --dir ~/video-deepdives --port 8000
    
    It serves the artifact at / and a small API the artifact talks to:
    • GET /api/video-deepdives (front page fetches this) lists every video.
    • GET /api/video-deepdives/<id> returns one video {meta, body}.
    • GET /api/video-deepdives/_media/<file> serves a slide image.
    • PATCH /api/video-deepdives/<id> with {fields:{slides:[...]}} writes notes back.
    • It picks up new videos automatically the moment a markdown file exists. Adding a video means writing a markdown file + media; you almost never touch the HTML.
    • The /api/video-deepdives URL namespace is local to the bundled server.
  • Artifact: reference/artifact.html, served by serve.py at /. A clean reference copy; only rewrite it if the user wants a UI change. For new videos, leave it alone.

Requirements

  • yt-dlp and ffmpeg on PATH (download + frame/scene extraction).
  • Python 3 with Pillow (contact sheet) and PyYAML (markdown file + server).
    pip install yt-dlp pillow pyyaml      # ffmpeg via your package manager
    

Adding a video — the pipeline

All helper scripts are in scripts/. setup.sh creates a private, unpredictable scratch directory; copy the printed SCRATCH path into a shell variable, then copy final assets into the library. Set VIDEO_LIBRARY_DIR once per shell if you don't want the default. Do not use em dashes (—) or arrows (→) in notes/titles.

1. Resolve the id and check embeddability

bash scripts/setup.sh "<youtube_url_or_id>"

Prints the 11-char YTID, the scratch dir, the target library path, and whether YouTube embedding is allowed (oembed 200) or blocked (oembed 401, e.g. some university talks). If blocked, inline playback won't work but the artifact degrades gracefully to an "open at this moment on YouTube" link, so proceed normally.

Copy the exact unpredictable path printed by the command before continuing:

SCRATCH="/path/printed/by/setup.sh"

2. Download video + subtitles

bash scripts/download.sh "<YTID>" "$SCRATCH"

Uses yt-dlp to grab the video (≤720p is plenty for slide frames) and the best available subtitles (manual if present, else auto-captions) as .vtt. Also fetches title/uploader.

3. Detect candidate slide timestamps

bash scripts/detect_slides.sh "$SCRATCH/video.mp4" "$SCRATCH"

Runs ffmpeg scene detection (select='gt(scene,0.3)') and writes scene_times.txt (seconds). 0.3 is a good default; lower it (0.2) for subtle slide decks, raise it (0.4) for busy video.

4. Build a contact sheet and CURATE

python3 scripts/contact_sheet.py "$SCRATCH/video.mp4" "$SCRATCH/scene_times.txt" "$SCRATCH/contact.jpg"

Read contact.jpg (labeled with index + timestamp). This is the human-judgment step: keep frames that are real content slides; drop talking-head shots, transitions, duplicates, and blurry mid-animation frames. Save the kept timestamps (seconds) to $SCRATCH/keep.txt, one per line. Typical talk yields 15-25 slides.

5. Extract the curated slides at full quality and install to _media


…
FAQ

Do I need to install anything?

Yes, you need to install tools like yt-dlp, ffmpeg, Pillow, and PyYAML on your computer.

What is 'markdown'?

Markdown is a simple way to format text, like using bold or lists, that is easy to read and write.

What if the YouTube video doesn't allow embedding?

The program still works, but instead of playing the video within the viewer, it will provide a link to open the video directly on YouTube at that specific moment.

Details

Original description by the author

Turn YouTube talks into local study notes with slides, transcripts, editable annotations, and a markdown-backed viewer.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#4615
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills