SKILL.md
readonly只读
name
web-content-fetcher
description
从任意URL提取文章内容,输出干净的Markdown格式。 主要使用Scrapling脚本(自动从快速模式回退到隐身模式), 对于简单页面则使用Jina Reader作为备选。 保留标题、链接、图片、列表和代码块。 当用户想要获取、阅读、提取、抓取或总结URL内容时—— 包括博客文章、新闻文章、微信公众号文章、 文档页面或任何网页——请使用此技能。 当用户说“帮我读一下这篇文章”、“抓取这个网页”、“提取正文” 或“read this page for me”时,也应触发。
Web Content Fetcher
给定一个URL,将其主要内容返回为干净的Markdown——保留标题、链接、图片、列表和代码块。
提取策略
始终对每个URL只尝试一种方法——不要盲目级联。提前选择正确的方法。
URL
│
├─ 1. Scrapling脚本(首选)
│ 运行fetch.py——根据域名路由表决定使用快速模式还是--stealth。
│ 适用于大多数网站。直接返回干净的Markdown。
│
└─ 2. Jina Reader(备选——仅当Scrapling失败或依赖未安装时)
web_fetch("https://r.jina.ai/<url>")
免费版:每天200次请求。快速(约1-2秒),Markdown输出良好。
不适用于:微信公众号(403)、某些中文平台。
Scrapling脚本
python3 <SKILL_DIR>/scripts/fetch.py "<url>" [max_chars] [--stealth]
<SKILL_DIR> 是此SKILL.md所在的目录。在调用脚本前解析它。
脚本内置两种模式:
- 默认(快速): HTTP获取,约1-3秒,适用于大多数网站
--stealth: 无头浏览器,约5-15秒,适用于JS渲染或反爬虫网站
当不使用--stealth运行时,如果快速模式结果内容太少,脚本会自动回退到隐身模式。因此很少需要手动指定--stealth——唯一需要强制使用的情况是当你已经知道该网站需要它时(参见路由表),这样可以节省首次快速尝试的时间。
域名路由
使用此表在首次调用时选择正确的模式:
| 域名 | 命令 | 原因 |
|---|---|---|
mp.weixin.qq.com |
fetch.py <url> --stealth |
JS渲染内容 |
zhuanlan.zhihu.com |
fetch.py <url> --stealth |
反爬虫 + JS |
juejin.cn |
fetch.py <url> --stealth |
JS渲染的SPA |
sspai.com |
fetch.py <url> |
静态HTML |
blog.csdn.net |
fetch.py <url> |
静态HTML |
ruanyifeng.com |
fetch.py <url> |
静态博客 |
openai.com |
fetch.py <url> |
静态HTML |
blog.google |
fetch.py <url> |
静态HTML |
| 其他所有 | fetch.py <url> |
自动回退处理 |
脚本选项
# 基本——自动选择快速或隐身模式
python3 <SKILL_DIR>/scripts/fetch.py "https://sspai.com/post/73145"
# 对已知JS密集型网站强制使用隐身模式
python3 <SKILL_DIR>/scripts/fetch.py "https://mp.weixin.qq.com/s/xxx" --stealth
# 限制输出为15000个字符(默认:30000)
python3 <SKILL_DIR>/scripts/fetch.py "https://example.com/article" 15000
# JSON输出,包含元数据(url, mode, selector, content_length)
python3 <SKILL_DIR>/scripts/fetch.py "https://example.com" --json
安装依赖
仅首次使用——脚本会检查并告知缺少什么:
pip install scrapling html2text
如果使用系统管理的Python(macOS/Linux),请添加--break-system-packages或使用虚拟环境。
失败规则
- 同一URL失败一次→放弃,告知用户“无法从该URL提取内容”
- 不要重试——每次失败的调用都会浪费上下文令牌






