/ Directory / Playground / youtube-fetcher-to-markdown
● Community JimmySadek ⚡ Instant

youtube-fetcher-to-markdown

by JimmySadek · JimmySadek/youtube-fetcher-to-markdown

Turn any YouTube URL into a queryable Markdown note — YAML frontmatter, chapters, full transcript, Obsidian-ready.

JimmySadek/youtube-fetcher-to-markdown converts YouTube videos into structured Markdown in ~/yt_transcripts/. Accepts URLs in any format. Options: --timestamps (temporal markers), --lang (caption language), --format (json / srt), --source (project tag). Output includes YAML frontmatter (title, channel, id, date, duration, language), full description with links, chapter timestamps, and transcript. Frontmatter lets Obsidian Dataview query your entire transcript library.

Why use it

Key features

Live Demo

What it looks like in practice

youtube-fetcher-to-markdown-skill.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "youtube-fetcher-to-markdown-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/JimmySadek/youtube-fetcher-to-markdown",
        "~/.claude/skills/youtube-fetcher-to-markdown"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "youtube-fetcher-to-markdown-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/JimmySadek/youtube-fetcher-to-markdown",
        "~/.claude/skills/youtube-fetcher-to-markdown"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "youtube-fetcher-to-markdown-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/JimmySadek/youtube-fetcher-to-markdown",
        "~/.claude/skills/youtube-fetcher-to-markdown"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "youtube-fetcher-to-markdown-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/JimmySadek/youtube-fetcher-to-markdown",
        "~/.claude/skills/youtube-fetcher-to-markdown"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "youtube-fetcher-to-markdown-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/JimmySadek/youtube-fetcher-to-markdown",
        "~/.claude/skills/youtube-fetcher-to-markdown"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "youtube-fetcher-to-markdown-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/JimmySadek/youtube-fetcher-to-markdown",
          "~/.claude/skills/youtube-fetcher-to-markdown"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add youtube-fetcher-to-markdown-skill -- git clone https://github.com/JimmySadek/youtube-fetcher-to-markdown ~/.claude/skills/youtube-fetcher-to-markdown

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use youtube-fetcher-to-markdown

Archive a YouTube lecture series as a searchable Obsidian vault

👤 Self-learners and researchers ⏱ ~20 min beginner

When to use: You're studying from YouTube and want to search across 20+ videos later.

Prerequisites
  • Skill cloned — git clone https://github.com/JimmySadek/youtube-fetcher-to-markdown ~/.claude/skills/youtube-fetcher-to-markdown
  • yt-dlp or equivalent installed — brew install yt-dlp
Flow
  1. Fetch a playlist's transcripts
    youtube-fetcher-to-markdown — fetch every video in playlist <URL>, include timestamps, source=cs-course.✓ Copied
    → ~/yt_transcripts/ fills with per-video markdown files, all tagged source: cs-course
  2. Query via Dataview
    In Obsidian, write a Dataview query listing all cs-course videos sorted by upload date.✓ Copied
    → Dataview returns the set because the frontmatter is consistent

Outcome: A queryable knowledge base you can grep, tag, and cross-link.

Pitfalls
  • Some videos have no captions and the transcript is empty — Check the skill's log; fall back to Whisper locally for those
Combine with: filesystem

Turn a YouTube talk into a blog post draft

👤 Creators repurposing content ⏱ ~25 min beginner

When to use: Your talk went up; you want a written version for SEO.

Flow
  1. Fetch the transcript
    youtube-fetcher-to-markdown <URL> with chapters and timestamps.✓ Copied
    → Markdown with chapter-delimited sections
  2. Rewrite as blog
    Now draft a blog post from this transcript.✓ Copied
    → Structured post using the chapters as section anchors

Outcome: Draft-quality blog post based on your own talk.

Combinations

Pair with other MCPs for X10 leverage

youtube-fetcher-to-markdown-skill + filesystem

Route transcripts into a specific Obsidian vault folder with custom naming

Save fetched transcripts to ~/obsidian/sources/youtube/.✓ Copied
youtube-fetcher-to-markdown-skill + seo-blog-writer-claude-skill

Fetch transcript → generate blog post in one chain

Fetch the transcript for <URL>, then seo-blog-writer target keyword 'X'.✓ Copied
youtube-fetcher-to-markdown-skill + claude-content-writer-skill

Turn transcripts into newsletters in your brand voice

Fetch transcript, then claude-content-writer newsletter version in my voice profile.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
fetch_single URL + options (timestamps, lang, format, source) One video at a time 0
fetch_playlist playlist URL + options Bulk archiving 0
export_json URL You want the data in a non-markdown pipeline 0

Cost & Limits

What this costs to run

API quota
YouTube has no explicit scrape quota for captions but be reasonable
Tokens per call
Proportional to video length
Monetary
Free — skills are local files
Tip
For very long videos, use JSON export + snippet extraction instead of loading full transcripts into context.

Security

Permissions, secrets, blast radius

Credential storage: No credentials — pure prompts
Data egress: Fetches from YouTube. No data leaves your machine afterward.

Troubleshooting

Common errors and fixes

Skill not invoked — Claude summarizes without fetching

Say 'fetch the transcript using youtube-fetcher-to-markdown' explicitly.

Verify: ls ~/.claude/skills/youtube-fetcher-to-markdown/SKILL.md
SKILL.md frontmatter wrong

Re-clone; description drives activation.

Verify: head ~/.claude/skills/youtube-fetcher-to-markdown/SKILL.md
Wrong trigger keywords — transcript has no timestamps

Pass --timestamps explicitly in the prompt.

Alternatives

youtube-fetcher-to-markdown vs others

AlternativeWhen to use it insteadTradeoff
Whisper (local)No captions available on the videoNeeds GPU or patience; better accuracy on accented speech
Online transcript sitesOne-off copy-pasteNo Obsidian integration, no structured frontmatter

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills