mcpField
D
defuddle

defuddle

github.com/joeseesun生产力1121.3k 次安装34 周前更新
代码仓库

关于 defuddle

defuddle 是用于提取网页内容的技能,可将文章页面整理为带元数据的 Markdown,并指导 Agent 展示文章信息及保存文件。

主要功能

  1. 01提取文章内容为 Markdown
  2. 02以 JSON 返回文章元数据
  3. 03展示标题、作者、来源和字数
  4. 04将内容连同 frontmatter 保存为 Markdown 文件
  5. 05支持 URL 或本地 HTML 文件

适用场景

  1. 01剪藏博客或新闻文章
  2. 02提取网页文档内容
  3. 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 — 网站图标 URL
  • image — 特色图片 URL
  • site — 网站名称
  • wordCount — 字数
  • parseTime — 处理时间(毫秒)

注意事项

  • 需要 Node.js 和 npm
  • 需要将 jsdom 作为同级依赖
  • 最适合文章类页面(博客、新闻、文档)
  • 不适用于 SPA 或 JavaScript 密集型页面(例如,微信公众号文章需要使用浏览器渲染)

评论

支持 Markdown