Agent skill

defuddle

Strip clutter from web pages before ingesting into the wiki. Removes ads, navigation, headers, footers, and boilerplate: leaving clean readable markdown that saves 40-60% tokens. Triggers on: defuddle, clean this page, strip this url, fetch and clean, clean web content before ingesting, strip ads, remove clutter, clean URL content, readable markdown from URL.

Stars 573
Forks 58

Install this agent skill to your Project

npx add-skill https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/defuddle

SKILL.md

defuddle: Web Page Cleaner

Defuddle extracts the meaningful content from a web page and drops everything else: ads, cookie banners, nav bars, related articles, footers, social sharing buttons. What remains is the article body as clean markdown.

Use this before any URL ingestion. It is optional but strongly recommended. It cuts token usage by 40-60% on typical web articles and produces cleaner wiki pages.


Install

bash
npm install -g defuddle-cli

Verify: defuddle --version


Usage

Clean a URL directly

bash
defuddle https://example.com/article

Outputs clean markdown to stdout.

Save to .raw/

bash
defuddle https://example.com/article > .raw/articles/article-slug-$(date +%Y-%m-%d).md

Add frontmatter header after saving

After running defuddle, prepend the source URL and fetch date:

bash
SLUG="article-slug-$(date +%Y-%m-%d)"
{ echo "---"; echo "source_url: https://example.com/article"; echo "fetched: $(date +%Y-%m-%d)"; echo "---"; echo ""; defuddle https://example.com/article; } > .raw/articles/$SLUG.md

Clean a local HTML file

bash
defuddle page.html

When to Use

Use defuddle when:

  • Ingesting a news article, blog post, or documentation page from a URL
  • The page has a lot of surrounding content (most web pages do)
  • You want to stay within token budget on a long article

Skip defuddle when:

  • The source is already a clean markdown or PDF file
  • The page is a dashboard, app, or structured data (defuddle expects article-style content)
  • defuddle is not installed and the article is short enough to process raw

Fallback

If defuddle is not installed, check:

bash
which defuddle 2>/dev/null || echo "not installed"

If not installed: use WebFetch directly. The content will be less clean but still workable.


Integration with /wiki-ingest

The /wiki-ingest skill checks for defuddle automatically when a URL is passed. You do not need to run defuddle manually before ingesting a URL. The ingest skill will call it if available.

To manually clean a page and save before ingesting:

  1. Run the save command above
  2. Then: ingest .raw/articles/[slug].md

Expand your agent's capabilities with these related and highly-rated skills.

AgriciDaniel/claude-obsidian

obsidian-markdown

Write correct Obsidian Flavored Markdown: wikilinks, embeds, callouts, properties, tags, highlights, math, and canvas syntax. Reference this when creating or editing any wiki page. Triggers on: write obsidian note, obsidian syntax, wikilink, callout, embed, obsidian markdown, wikilink format, callout syntax, embed syntax, obsidian formatting, how to write obsidian markdown.

573 58
Explore
AgriciDaniel/claude-obsidian

wiki-ingest

Ingest sources into the Obsidian wiki vault. Reads a source, extracts entities and concepts, creates or updates wiki pages, cross-references, and logs the operation. Supports files, URLs, and batch mode. Triggers on: ingest, process this source, add this to the wiki, read and file this, batch ingest, ingest all of these, ingest this url.

573 58
Explore
AgriciDaniel/claude-obsidian

obsidian-bases

Create and edit Obsidian Bases (.base files): Obsidian's native database layer for dynamic tables, card views, list views, filters, formulas, and summaries over vault notes. Triggers on: create a base, add a base file, obsidian bases, base view, filter notes, formula, database view, dynamic table, task tracker base, reading list base.

573 58
Explore
AgriciDaniel/claude-obsidian

canvas

Visual layer of the wiki. Add images, text cards, PDFs, and wiki pages to Obsidian canvas files with auto-positioning inside zones. Integrates with /banana for image capture. Triggers on: /canvas, canvas new, canvas add image, canvas add text, canvas add pdf, canvas add note, canvas zone, canvas list, canvas from banana, add to canvas, put this on the canvas, open canvas, create canvas.

573 58
Explore
AgriciDaniel/claude-obsidian

save

Save the current conversation, answer, or insight into the Obsidian wiki vault as a structured note. Analyzes the chat, determines the right note type, creates frontmatter, files it in the correct wiki folder, and updates index, log, and hot cache. Triggers on: "save this", "save that answer", "/save", "file this", "save to wiki", "save this session", "file this conversation", "keep this", "save this analysis", "add this to the wiki".

573 58
Explore
AgriciDaniel/claude-obsidian

autoresearch

Autonomous iterative research loop. Takes a topic, runs web searches, fetches sources, synthesizes findings, and files everything into the wiki as structured pages. Based on Karpathy's autoresearch pattern: program.md configures objectives and constraints, the loop runs until depth is reached, output goes directly into the knowledge base. Triggers on: "/autoresearch", "autoresearch", "research [topic]", "deep dive into [topic]", "investigate [topic]", "find everything about [topic]", "research and file", "go research", "build a wiki on".

573 58
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results