AugmentClaude

YouTube Fetcher

Convert YouTube videos into searchable Markdown notes with transcripts and metadata.

Installation

  1. Make sure Claude is on your device and in your terminal.

    Skills load from ~/.claude/skills/ when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then run claude in any terminal to verify.

    One-time setup
    npm i -g @anthropic-ai/claude-code

    Already have it? Skip ahead.

  2. Paste into Claude Code or into your terminal.

    This copies the whole skill folder into ~/.claude/skills/youtube-fetcher-jimmysadek/ — the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.

    Faster alternative (instruction-only skills)

    Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.

    Quick install (SKILL.md only)
    Sign up to copy
  3. Restart Claude Code.

    Quit and reopen Claude Code (or any other agent that loads from ~/.claude/skills/). New skills are picked up on startup.

  4. Just ask Claude.

    Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.

Prefer to read the source first? Open on GitHub.

When Claude uses it

Turn a YouTube video into a structured, Obsidian-ready archival Markdown note containing its transcript, creator metadata, description, chapters, language, and capture provenance. Use when a user shares a YouTube URL or video ID and wants transcripts, captions, subtitles, notes, a knowledge-base record, summarization, analysis of what was said, or YouTube content saved to Markdown. When a user pastes only a YouTube link, fetch the note and report where it was saved.

What this skill does

YouTube Fetcher

Turn one YouTube link into one queryable Markdown knowledge note. The bundled script uses youtube-transcript-api for captions, optionally uses yt-dlp for richer metadata, and needs no API key.

Workflow

  1. Resolve scripts/fetch_transcript.py relative to this SKILL.md. Do not assume a particular Codex, Claude, Skillshare, or home-directory install path.
  2. If the request is only a YouTube link, run the script with its defaults.
  3. Use --stdout when the user wants the transcript in the conversation rather than a saved note.
  4. Use --output-dir when the user names an Obsidian vault or notes directory. A specific --output file takes precedence.
  5. Report the saved path and any language-fallback warning. Read the result only when the user also wants a summary, analysis, or follow-up work.

Typical invocation, where SKILL_DIR is the directory containing this file:

python3 "$SKILL_DIR/scripts/fetch_transcript.py" "https://youtu.be/VIDEO_ID"

Safe Agent Behavior

  • Run without --force first. Exit code 3 means an existing note was found and left unchanged; report that outcome and ask before overwriting.
  • Never install Python packages, Homebrew packages, or yt-dlp automatically. If exit code 2 reports a missing required dependency, show the user the suggested command and ask for permission before changing their system.
  • Do not claim the requested language was used when the script reports a fallback. The saved note records the actual selected caption language.
  • Do not silently change the output directory. The precedence is: --output, then --output-dir, then YOUTUBE_FETCHER_DIR, then ~/yt_transcripts/.

Useful Options

# Put notes in an Obsidian vault or another directory
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --output-dir ~/Notes/Vault

# Save to one exact file
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --output ~/Notes/video.md

# Print Markdown instead of saving it
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --stdout

# Request captions in a language, with truthful English fallback
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --lang es

# Include timestamps or export raw JSON/SRT
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --timestamps
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --format json
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --format srt

# Inspect available caption languages or dependencies
python3 "$SKILL_DIR/scripts/fetch_transcript.py" URL --list
python3 "$SKILL_DIR/scripts/fetch_transcript.py" --check-deps

Other useful flags are --source, --no-description, and --force.

Capabilities and Boundaries

  • Network: contacts YouTube caption endpoints and the YouTube oEmbed API. When available, yt-dlp contacts YouTube for descriptions, chapters, upload dates, and duration.
  • Filesystem: reads only existing Markdown notes in the resolved output directory for duplicate detection and writes the requested Markdown, JSON, or SRT result there.
  • Subprocess: invokes the locally installed yt-dlp executable for metadata.
  • Dependencies: requires youtube-transcript-api and requests; yt-dlp is optional. The script reports missing dependencies but does not install them.
  • Limits: requires captions that YouTube makes accessible. It does not download video, run Whisper, identify speakers, or translate captions.

Exit Codes

CodeMeaning
0Success
1Invalid input or fetch failure
2Missing required dependency
3Existing note preserved; overwrite not approved

Related skills