defuddle
joeseesun/defuddle-skill
Extract clean article content from web pages, removing ads and clutter to get readable Markdown with metadata.
What is defuddle?
Defuddle extracts the main article content from web pages or local HTML files, stripping away ads, sidebars, navigation, and other noise. Use it when you need to convert web pages into clean, readable Markdown with structured metadata like title, author, and word count.
- Extract article text from URLs or local HTML files with clutter removal
- Output clean Markdown content with frontmatter metadata (title, author, publication date, word count)
- Retrieve structured JSON metadata including title, author, description, domain, featured image, and parse time
- Save extracted content to user-specified directories with sanitized filenames
- Support single-property extraction for targeted data retrieval
How to install defuddle
npx skills add https://github.com/joeseesun/defuddle-skill --skill defuddle- Node.js and npm installed
- Install defuddle globally: npm install -g defuddle jsdom
How to use defuddle
- 1.Run defuddle parse with both markdown and JSON flags: defuddle parse "<url>" -m -j
- 2.Review the extracted metadata (title, author, source, word count) and content preview
- 3.Specify a directory to save the file (e.g., ~/Documents, ~/Desktop)
- 4.Defuddle saves the file with frontmatter metadata and full Markdown content using the article title as the filename
- 5.Confirm the saved file path
Use cases
- Save blog posts or news articles as clean Markdown files for offline reading or archiving
- Extract article text from web pages to feed into downstream processing or analysis
- Batch convert multiple web pages to structured Markdown with consistent metadata
- Retrieve metadata (author, publication date, word count) from articles programmatically
- Strip ads and navigation from documentation pages to focus on core content
- Content researchers and archivists
- Developers building content processing pipelines
- Knowledge workers managing research materials
- Documentation readers wanting clean offline copies
defuddle FAQ
Article-style pages like blogs, news sites, and documentation work best. JavaScript-heavy single-page applications and pages requiring browser rendering (e.g., WeChat articles) are not well-supported.
Yes, use the -p or --property flag to extract a single field: defuddle parse "<url>" -p title (options: title, description, domain, author, published, wordCount, content).
Filenames are based on the article title with special characters replaced by spaces and whitespace trimmed. For example, an article titled 'The Shape of the Essay Field' becomes 'The Shape of the Essay Field.md'.
Saved files include frontmatter with title, author, source URL, publication date, clipping date, and word count, followed by the full extracted Markdown content.
Yes, you can pass a local file path instead of a URL to defuddle parse.
Full instructions (SKILL.md)
Source of truth, from joeseesun/defuddle-skill.
name: defuddle description: Extract clean article content from web pages or local HTML files. Removes clutter (ads, sidebars, nav) and returns readable content with metadata. trigger: Use when user wants to extract/clean web page content, strip clutter from HTML, get article text from a URL, or convert web pages to clean markdown. Triggers include "defuddle", "extract article", "clean this page", "get content from URL", "strip clutter", "web extract".
Defuddle - Web Content Extraction
Extract main article content from web pages, removing ads, sidebars, navigation, and other clutter. Output clean Markdown with metadata.
Prerequisites
Before first use, check if defuddle is installed:
command -v defuddle >/dev/null 2>&1 || npm install -g defuddle jsdom
Default Workflow
When user provides a URL, follow this workflow:
Step 1: Extract content as Markdown + JSON metadata
Always use both -m and -j flags to get markdown content with full metadata:
defuddle parse "<url>" -m -j
Step 2: Present a summary to the user
Show the user:
- Title: from JSON
titlefield - Author: from JSON
authorfield - Source: domain
- Word count: from JSON
wordCountfield - A brief preview (first 2-3 sentences)
Step 3: Ask where to save
If this is the first time using defuddle in this conversation, ask the user:
"Save to which directory? (e.g.
~/Documents,~/Desktop, or a custom path)"
Remember the user's chosen directory for subsequent uses in the same conversation.
Step 4: Save as Markdown file
Write the file with frontmatter + full content:
---
title: {title}
author: {author}
source: {url}
date: {published or "Unknown"}
clipped: {today's date YYYY-MM-DD}
wordCount: {wordCount}
---
# {title}
{markdown content}
File naming: Use the article title as filename, sanitized for filesystem:
- Replace special characters with spaces
- Trim whitespace
- Example:
The Shape of the Essay Field.md
Step 5: Confirm to user
Tell the user the file path where it was saved.
CLI Reference
defuddle parse <source> [options]
Arguments:
<source>— URL (https://...) or local HTML file path
Options:
| Flag | Description |
|---|---|
-m, --markdown | Convert content to Markdown |
-j, --json | Output as JSON with full metadata |
-o, --output <file> | Write to file instead of stdout |
-p, --property <name> | Extract single property (title, description, domain, author, published, wordCount, content) |
--debug | Verbose logging |
JSON Response Fields
When using -j, the response includes:
title— Article titleauthor— Author namepublished— Publication datedescription— Meta descriptioncontent— Extracted Markdown (when-mused)domain— Source domainfavicon— Favicon URLimage— Featured image URLsite— Site namewordCount— Word countparseTime— Processing time in ms
Notes
- Requires Node.js and npm
jsdomis required as a peer dependency- Works best with article-style pages (blogs, news, documentation)
- Not designed for SPAs or JavaScript-heavy pages (e.g. WeChat articles need browser rendering)
Related skills
More from joeseesun/defuddle-skill and the wider catalog.

knowledge-site-creator
一句话生成任何领域的知识学习网站。AI自动理解主题、创作内容、生成页面、部署上线。适用于任何需要系统学习的知识领域:进化心理学、大模型术语、化学元素、历史事件等。

qiaomu-markdown-proxy
|

opencli
CLI tool to browse and interact with 20+ social/content sites using Chrome login—no credentials needed.

qiaomu-goal-meta-skill
|

qiaomu-mondo-poster-design
Generate master-level posters and covers in Mondo's iconic screen-print aesthetic using AI—no design skills needed.

opencli
Agent skill from joeseesun/qiaomu-opencli-skills.