360 Secure SkillHub
360 安全技能中心

Webfetch Md

通过 Node CLI 或 OpenClaw 工具抓取指定 URL 的 HTML,使用 cheerio 智能提取正文并过滤导航、广告等元素,再用 turndown 转为 Markdown 并保留图片链接,输出含 title、markdown、images 的 JSON。

shijianwen
shijianwen
热度 90.93
最近更新 2026-05-17 12:02:35
分类:效率依赖:代码执行 / 第三方 API应用场景:文件转换 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add webfetch-md
Metadata
name
webfetch-md
version
1.1.0
description
抓取网页并转换为 Markdown,保留图片链接
author
ShiJianwen
metadata
{"openclaw":{"requires":{"bins":["node"]},"tools":[{"name":"webfetch-md","description":"抓取任意网页并转换为 Markdown 格式,自动保留图片链接","command":"node cli.js --url {{url}}","parameters":{"url":{"type":"string","description":"要抓取的网页 URL","required":true}}}]}}

WebFetch MD - 网页转 Markdown

抓取任意网页,转换为干净的 Markdown 格式,保留图片链接。

使用方法

作为 OpenClaw 工具调用

webfetch-md url="https://example.com"

CLI 使用

# 基本使用(输出 JSON 格式)
npx webfetch-md https://example.com

# 或使用 --url 参数
npx webfetch-md --url https://example.com

# 提取 Markdown 内容(配合 jq)
npx webfetch-md https://example.com | jq -r '.markdown'

# 保存到文件
npx webfetch-md https://example.com | jq -r '.markdown' > article.md

输出格式

CLI 和工具都输出统一的 JSON 格式:

{
  "success": true,
  "title": "文章标题",
  "markdown": "# 文章标题\n\n正文内容...",
  "images": ["https://example.com/img1.png"],
  "imageCount": 1,
  "contentLength": 1523
}

作为模块使用

const { fetchAsMarkdown } = require('./index');
const result = await fetchAsMarkdown('https://example.com');
console.log(result.markdown);

功能特点

  • ✅ 抓取任意网页 HTML
  • ✅ 智能提取正文内容(过滤导航、广告等)
  • ✅ 保留图片链接(转换为 ![alt](url) 格式)
  • ✅ 自动转换相对路径为绝对路径
  • ✅ 输出干净的 Markdown

依赖

  • turndown: HTML to Markdown 转换
  • cheerio: HTML 解析和提取

技术实现

核心流程

  1. 网页抓取:使用 fetch API 获取 HTML,模拟浏览器 User-Agent
  2. HTML解析:使用 cheerio 加载和解析 HTML 内容
  3. 内容提取:智能识别正文区域,过滤无关元素
  4. URL处理:将相对路径转换为绝对路径
  5. Markdown转换:使用 turndown 转换为标准 Markdown 格式

智能内容提取算法

按优先级选择正文容器:

  1. article 标签
  2. main 标签
  3. [role="main"] 属性
  4. .post-content / .entry-content 类
  5. .content / .post 类
  6. #content / #main ID
  7. 回退到 body 标签

自动过滤的元素

  • 脚本和样式标签
  • 导航、页眉、页脚
  • 侧边栏和广告区域
  • 评论区

错误处理

工具返回统一的 JSON 格式,包含 success 字段标识操作状态:

{
  "success": false,
  "error": "错误信息"
}

开发说明

项目结构

webfetch-md/
├── index.js          # 核心功能模块
├── cli.js           # CLI 和 OpenClaw 工具入口
├── package.json     # 依赖配置
├── test.js          # 测试脚本
└── SKILL.md         # 技能文档

测试

# 运行测试
npm test

# 或直接测试
node test.js https://example.com

版本历史

  • v1.1.0 (当前): 统一 CLI 和 OpenClaw 工具入口,优化错误处理
  • v1.0.1: 基础功能实现,支持网页抓取和 Markdown 转换
  • v1.0.0: 初始版本发布