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
Ready-to-paste message
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-notetakerOr 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.mdTechnical 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
slidesarray. - Body holds the full transcript as
[HH:MM:SS] textlines. _media/holds slide images, namespaced per video as<youtube_id>-slide-NN.jpgto avoid collisions between videos.
- One markdown file per video, filename slug = YouTube id (e.g.
- Server:
scripts/serve.py, a single stdlib + PyYAML file. Start it with:
It serves the artifact atpython3 scripts/serve.py --dir ~/video-deepdives --port 8000/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-deepdivesURL namespace is local to the bundled server.
- Artifact:
reference/artifact.html, served byserve.pyat/. A clean reference copy; only rewrite it if the user wants a UI change. For new videos, leave it alone.
Requirements
yt-dlpandffmpegon PATH (download + frame/scene extraction).- Python 3 with
Pillow(contact sheet) andPyYAML(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.
Popularity
- GitHub stars
- 48k
- Ranking position
- #4615
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
intent-driven-development
Helps your agent turn ideas into clear, testable plans. Defines criteria to ensure changes are made correctly and safely.
affaan-m/ECC
product-capability
Guides your agent in turning product ideas into clear plans. It defines what needs to be done, the limits, and decisions before development.
affaan-m/ECC
article-writing
Writes long-form content like articles, guides, and blog posts with a unique style. It's useful when you need well-written texts with a consistent voice and credibility.
affaan-m/ECC