Skip to content
Content
Skill

/youtube-fetcher-to-markdown

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,

From plugin
youtube-fetcher-to-markdown
1951 skill
Install
$ npx -y skills add JimmySadek/youtube-fetcher-to-markdown --skill youtube-fetcher-to-markdown --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/youtube-fetcher-to-markdown

Context preview

The summary Claude sees to decide when to auto-load this skill.

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,

SKILL.md

youtube-fetcher-to-markdown.SKILL.md
name: youtube-fetcher
description: >-
  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.

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

| Code | Meaning | |------|---------| | `0` | Success | | `1` | Invalid input or fetch failure | | `2` | Missing required dependency | | `3` | Existing note preserved; overwrite not approved |

Read more
Ships withyoutube-fetcher-to-markdown

YouTube video in, structured archival Markdown note out. Capture the transcript, creator metadata, description, chapters, actual caption language, and provenance in one Obsidian-ready file—without an API key.

Get the whole plugin
Stats
195
Stars
15
Forks
Active
Maintenance
HTML
Language
MIT
License
7d ago
Last commit
5mo ago
Created

Repo: JimmySadek/youtube-fetcher-to-markdown