关于 defuddle
defuddle 是用于提取网页内容的技能,可将文章页面整理为带元数据的 Markdown,并指导 Agent 展示文章信息及保存文件。
主要功能
- 01提取文章内容为 Markdown
- 02以 JSON 返回文章元数据
- 03展示标题、作者、来源和字数
- 04将内容连同 frontmatter 保存为 Markdown 文件
- 05支持 URL 或本地 HTML 文件
适用场景
- 01剪藏博客或新闻文章
- 02提取网页文档内容
- 03保存附有来源和发布日期的文章
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ joeseesun/ defuddle-skill --skill defuddle安装后在 Claude Code 中输入/defuddle确认已加载。
详细介绍
Defuddle - 网页内容提取
从网页中提取主要文章内容,移除广告、侧边栏、导航和其他杂项。输出包含元数据的整洁 Markdown。
前置条件
首次使用前,检查是否已安装 defuddle:
command -v defuddle >/dev/null 2>&1 || npm install -g defuddle jsdom
默认工作流
用户提供 URL 时,按以下工作流操作:
步骤 1:将内容提取为 Markdown + JSON 元数据
始终同时使用 -m 和 -j 标志,以获取包含完整元数据的 Markdown 内容:
defuddle parse "<url>" -m -j
步骤 2:向用户展示摘要
向用户展示:
- 标题:来自 JSON 的
title字段 - 作者:来自 JSON 的
author字段 - 来源:域名
- 字数:来自 JSON 的
wordCount字段 - 简短预览(前 2-3 个句子)
步骤 3:询问保存位置
如果这是本次对话中首次使用 defuddle,请询问用户:
“要保存到哪个目录?(例如
~/Documents、~/Desktop或自定义路径)”
记住用户选择的目录,以便在本次对话后续使用时沿用。
步骤 4:保存为 Markdown 文件
使用 frontmatter + 完整内容写入文件:
---
title: {title}
author: {author}
source: {url}
date: {published or "Unknown"}
clipped: {today's date YYYY-MM-DD}
wordCount: {wordCount}
---
# {title}
{markdown content}
文件命名:使用文章标题作为文件名,并清理文件名以符合文件系统要求:
- 将特殊字符替换为空格
- 去除首尾空格
- 示例:
The Shape of the Essay Field.md
步骤 5:向用户确认
告知用户文件的保存路径。
CLI 参考
defuddle parse <source> [options]
参数:
<source>— URL(https://...)或本地 HTML 文件路径
选项:
| 标志 | 描述 |
|---|---|
-m, --markdown | 将内容转换为 Markdown |
-j, --json | 以 JSON 格式输出完整元数据 |
-o, --output <file> | 写入文件,而不是标准输出 |
-p, --property <name> | 提取单个属性(title、description、domain、author、published、wordCount、content) |
--debug | 详细日志 |
JSON 响应字段
使用 -j 时,响应包含:
title— 文章标题author— 作者姓名published— 发布日期description— 元描述content— 提取的 Markdown(使用-m时)domain— 来源域名favicon— 网站图标 URLimage— 特色图片 URLsite— 网站名称wordCount— 字数parseTime— 处理时间(毫秒)
注意事项
- 需要 Node.js 和 npm
- 需要将
jsdom作为同级依赖 - 最适合文章类页面(博客、新闻、文档)
- 不适用于 SPA 或 JavaScript 密集型页面(例如,微信公众号文章需要使用浏览器渲染)
评论
支持 Markdown