# claude-defuddle

A Claude Code skill that extracts clean markdown notes from web pages, YouTube videos, Apple Podcasts, and academic papers, then saves them into an Obsidian vault with proper frontmatter.

**Why it exists:** Claude Code's built-in WebFetch dumps raw HTML into the context window, which wastes tokens and often includes junk. Defuddle strips and processes content externally — via the [defuddle](https://www.npmjs.com/package/defuddle) CLI for articles, yt-dlp for YouTube transcripts, and PDF converters for papers — so Claude never sees the raw page. Summarization is offloaded to a separate LLM call (Gemini, OpenAI, or Ollama), keeping Claude's context clean.

**What it handles:**

- **Web pages** — strips ads and clutter, generates summaries and heading indexes, produces Obsidian-formatted notes
- **YouTube** — pulls full transcripts with timestamps, extracts or generates chapter markers, adds summaries
- **Apple Podcasts** — transcript extraction with timestamps and auto-generated chapters (macOS only)
- **Academic papers** — accepts DOI and arXiv URLs, fetches PDFs from open access or Datalab API, extracts abstracts and keywords
- **Images** — optionally downloads and compresses referenced images locally with pngquant/jpegoptim

**Usage:** paste a URL in a Claude Code conversation. The skill intercepts it, processes externally, and offers to save the result to your vault.

**Setup:** install as a Claude Code skill in `~/.claude/skills/defuddle/`. Requires defuddle CLI (`npm install -g defuddle`), yt-dlp, Python 3.8+. Configure vault path and AI provider (Gemini free tier works) in the script.

**Relevance to this wiki:** this solves a similar problem to the inbox workflow here — capturing web content into an Obsidian vault. The token-efficiency approach (process outside Claude's context, only show clean markdown) is worth considering if the wiki's ingest workflow hits context limits on large pages.

**Repo:** https://github.com/spaceage64/claude-defuddle — 23 stars, MIT license.
