测试
10,000 个网页
US$3.75
US$0.38/千页
- 用你的真实 URL 试一试
- 与最大积分包使用同一个 API
- 积分永不过期
用例 · AI agent · 工具名 read_url
一个能搜索但读不了答案正文的 agent,只能引用摘要片段。给它一个能把任意公开 URL 转成简短、干净 Markdown 的工具,它就能读取来源、引用并注明出处,而且在你设定的预算之内。
快速回答
给 AI agent 配上网页抓取工具的最佳方式是什么?
把网页读取 API 封装成一个工具,接收 URL,返回页面主内容的 Markdown,并按设定长度截断。WebReaderAPI 负责读取,需要时渲染 JavaScript,遵守 robots.txt,每页从 US$0.07/千页 起计一个积分(截至 2026 年 10 月)。现成的工具代码涵盖 MCP、OpenAI function calling、LangChain、n8n 和 OpenClaw。无需 KYC;加密货币支付。
| 工具 | read_url(url, max_chars) 调用 https://webreaderapi.com/api/v1/read |
|---|---|
| 返回 | 主内容的 Markdown,外加标题、作者、日期和字数 |
| 长度上限 | max_chars,每页 1,000 到 500,000 字符 |
| JavaScript 页面 | 页面需要时在无头浏览器中渲染 JavaScript(render=auto),或始终渲染,或从不渲染 |
| 拒绝 | 以明确的错误返回,绝不收费 |
| 集成 | MCP、OpenAI、LangChain 和 LlamaIndex、n8n、OpenClaw |
| 价格 | US$3.75 仅需 10,000 个网页;积分永不过期 |
因为原始 HTML 会把上下文窗口浪费在模型并不需要的东西上。一篇新闻文章或一个文档页到达时,外面裹着导航、脚本、同意横幅和相关链接。原样传进去,它会挤占对话空间,还会让模型引用菜单。
阅读器一次解决三个问题。它只保留正文,它能渲染那些 JavaScript 运行前空白的页面,它还能把 PDF 转成文本。agent 得到的是一个紧凑的 Markdown 块,附上可引用的标题和日期。
主要是因为网站拒绝自动化流量。自 2025 年 7 月 1 日起,Cloudflare 默认阻止 AI 爬虫访问新域名,而从 2026 年 9 月 15 日起,其预设在新域名的广告支持页面上阻止“Agent”流量。编码 agent 和助手里的内置工具遇到这些拒绝时,和其他任何客户端一样。
其他失败是技术性的。OpenClaw 的文档(2026 年 10 月 22 日查阅)称,其内置的 web_fetch 用 Readability 提取内容,不运行 JavaScript,输出上限为 20,000 个字符。在浏览器中构建的页面、长文档、慢速服务器和 rate limit 都会让这类工具出错。能渲染页面的阅读器解决了 JavaScript 这一种情况;缓存和耐心解决其余的。拒绝是站长的决定。我们的网页抓取 403 错误指南 逐一解释了每种情况。
为了避免和 agent 已有的工具冲突。Claude Code 和 OpenClaw 都自带一个名为 web_fetch 的内置工具。同名工具会让模型搞不清自己在调用哪一个。把我们的命名为 read_url 可以让两者都可用:agent 可以用内置 fetcher 做快速检查,需要干净的 Markdown、PDF 或 JavaScript 页面时用 read_url。
我们文档页上的工具定义都用这个名字,所以你可以切换框架而不用改 prompt。
import os
import requests
API = "https://webreaderapi.com/api/v1/read"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}
def read_url(url: str, max_chars: int = 12000) -> str:
"""Return a web page as Markdown for a model, or a short reason it was not read."""
resp = requests.get(API, headers=HEADERS, params={"url": url, "max_chars": max_chars}, timeout=90)
data = resp.json()
if resp.status_code != 200:
err = data.get("error", {})
return "Not read (" + err.get("code", "error") + "): " + err.get("message", "")
head = "# " + (data.get("title") or url) + "\nSource: " + data["final_url"]
if data.get("published_at"):
head += " | Published: " + data["published_at"]
return head + "\n\n" + data["markdown"]
if __name__ == "__main__":
print(read_url("https://example.com/blog/pour-over-coffee", max_chars=2000)[:500])
给它一个预算和一条规则。三个习惯可以控制成本和上下文:
max_chars 设在 10,000 到 15,000 个字符左右;只有当 word_count 显示答案可能更靠后时才调高。上面的工具会把拒绝返回成一句简单的话,这样模型可以向用户解释。
每页一个积分,页面需要浏览器时两个。一个每天回答 100 个问题、每个问题读 4 页的助手,一个月大约读 12,000 页。截至 2026 年 10 月,50,000 个网页(US$14.25)够用四个月。
积分永不过期,所以一个这周忙、下周闲的 agent 不会浪费月度配额。失败或被 robots.txt 拒绝的页面不收费。
在 10,000 个网页 上做原型;当 agent 服务真实用户时,升级到 50,000 个网页 或 100,000 个网页。积分永不过期。
10,000 个网页
US$3.75
US$0.38/千页
50,000 个网页
US$14.25
US$0.28/千页
100,000 个网页
US$21.75
US$0.22/千页
所有套餐均包含: 正文提取 · 需要时渲染 JavaScript · 失败和被拒绝的页面不收费 · 积分永不过期
可以,通过一个暴露 read_url 的小型 MCP server。MCP 页面 上有代码和配置片段;你的 API 密钥放在环境变量里。
可以,作为 MCP server 放在 OpenClaw 内置的 web_fetch 旁边。OpenClaw 页面 展示了 OpenClaw 自己文档里的命令。
不能。如果 robots.txt 不允许该页面,API 返回 blocked_by_robots;如果网站拒绝,它返回 target_refused 并带上该网站的状态。两者都不收费,我们也从不试图绕过拒绝。
设置 max_chars。Markdown 会在该长度处截断,word_count 会告诉 agent 整页有多长,这样它只在需要时请求更多。
不需要。WebReaderAPI 不要求身份证、自拍、证件或银行卡。以 BTC, USDT, USDC, ETH, SOL, LTC 支付,最低充值 US$25。
低至 US$0.07/千页 · 无需 KYC
获取 API 密钥