defuddle-skill
A Claude Code skill that pulls a clean article from a web page into Markdown with metadata and saves the file
- 112 ★ on the repository
- Last commit
Extended access
Why this level
- The installer runs `npm install -g defuddle jsdom` and copies a file into `~/.claude/skills/`
- The agent opens any link you give it and writes files into the chosen directory
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/defuddle-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The installer runs `npm install -g defuddle jsdom` and copies a file into `~/.claude/skills/`
- The agent opens any link you give it and writes files into the chosen directory
This is third-party code. Review the repository files before installing.
What it does
defuddle-skill wraps the defuddle command-line utility into a skill for Claude Code. Given a link or a local HTML file, the agent runs `defuddle parse "<url>" -m -j` and gets the main text as Markdown, without ads, sidebars and navigation, together with metadata: title, author, publication date, domain and word count. It then shows the title, author, source, word count and the start of the text. On first use in a conversation the skill asks which directory to save to and writes a Markdown file with a header of the `title`, `author`, `source`, `date`, `clipped` and `wordCount` fields. The file name comes from the article title with special characters replaced by spaces. Before working the skill checks that `defuddle` exists and, if it does not, installs `defuddle` and `jsdom` globally through `npm`. The `npx defuddle-skill` installer copies `SKILL.md` into `~/.claude/skills/defuddle/`.
Who it is for. People who collect articles and documentation into notes and want clean Markdown without ads and navigation from a link right inside a Claude Code session.
Good fit when
- A blog article should become a Markdown note file with author, date and source
- The agent has to read documentation from a link without the page noise
- A single field such as the author or publication date is pulled from a page with the `-p` flag
- A local HTML file is cleaned of navigation and ad blocks
Not a fit when
- The page is built entirely with JavaScript: the author warns that SPAs and WeChat articles need browser rendering
- You need to crawl a whole site or search it: the skill reads one page at a time
- You need PDF and Office file parsing: the catalog has other tools for that, for example MarkItDown
Example request
Extract the article at this link into Markdown, show the author and word count and save the file to my notes folderLimitations
Node.js and npm are required, and `jsdom` installs as a mandatory dependency. The skill reads article-style pages best: blogs, news and documentation. It is not designed to handle JavaScript pages and SPAs. The last commit in the repository was made in March 2026. The file is written only after you choose a directory, and its name is built from the article title, so long titles give long names. The installer runs `npm install -g` without asking if `defuddle` is not found, and parsing will not start without `jsdom`.
How to disable. Delete the `~/.claude/skills/defuddle/` folder and, if you no longer need the utility, remove the packages with `npm uninstall -g defuddle jsdom`.
FAQ
How do I install defuddle-skill?
With `npx defuddle-skill`: it installs `defuddle` if missing and copies the skill into `~/.claude/skills/defuddle/`. Alternatives are `npx skills add joeseesun/defuddle-skill` or `bash install.sh` from a cloned repository.
Which phrases trigger the skill?
The words "defuddle", "extract article", "clean this page", "get content from URL" and similar requests to extract an article from a link, clean a page or get clean Markdown.
What ends up in the file?
A header with the `title`, `author`, `source`, `date`, `clipped` and `wordCount` fields, then a first-level heading and the article text in Markdown. The `date` field takes "Unknown" when no publication date was found.
Can I take just one field from a page?
Yes, with the `-p` flag: for example `defuddle parse <url> -p author` returns the author, and `title`, `description`, `domain`, `published`, `wordCount` and `content` are available too.
Why did the skill fail on a page?
Most likely the page is built with JavaScript: the author names such cases, SPAs and WeChat articles, which need browser rendering. For ordinary article pages of blogs and documentation the result is stable.
Discussion
No questions or reviews yet.
Related
SkillsA skill that reads a link and hands the agent the full text as Markdown, picking a separate route for WeChat pages, Feishu docs, PDFs and arXiv papers
A Claude Code skill that turns "research this topic" into a multi-phase investigation: hypotheses, parallel search, a file per source and citation checks
Deep Research
Deep Research Skill for Claude Code
A deep research skill for Claude Code: multi-phase search, claim verification and cited reports in Markdown, HTML and PDF
Six OpenClaw skills: four-source search, page extraction to Markdown, GitHub repository analysis and dependency checks.
A skill that turns a link into clean Markdown via Scrapling with a Jina Reader fallback, incl. WeChat, Juejin and CSDN articles
The browse skill from the Stagehand repository teaches an agent to open, read and click pages through the browse CLI.
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| defuddle-skill (this card) | no | 112 | ||
| MarkItDown | yes | not required | 195,008 | converts PDF, Word, Excel and HTML files to Markdown and is not built for web pages |
| Firecrawl CLI | no | 684 | cloud scraping, site crawling and URL maps, while this skill reads one page locally |
README in short
The documentation lists three install methods, lists trigger phrases and sample requests, gives a reference for the `defuddle parse` flags (`-m`, `-j`, `-o`, `-p`, `--debug`) and names the defuddle utility as its base.
README badge
Original SKILL.md
--- 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: ```bash 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: ```bash defuddle parse "<url>" -m -j ``` ### Step 2: Present a summary to the user Show the user: - **Title**: from JSON `title` field - **Author**: from JSON `author` field - **Source**: domain - **Word count**: from JSON `wordCount` field - A brief preview (first 2-3 sentences) ### Step 3: Ask where to save