关于 9router-web-fetch
9router-web-fetch 是通过 9Router 调用网页提取服务的技能,面向需要从 URL 获取页面内容的工作流。它支持多个提供方、输出格式选择、字符截断,以及 fetch-combo 自动回退。
主要功能
- 01发现可用网页提取模型
- 02按 URL 提取网页内容
- 03选择 Markdown、文本或 HTML
- 04设置输出字符上限
- 05使用 fetch-combo 自动回退
适用场景
- 01提取网页供后续处理
- 02为动态渲染页面选择 Firecrawl
- 03批量提取页面原始内容
- 04获取页面标题和发现的链接
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ decolua/ 9router --skill 9router-web-fetch安装后在 Claude Code 中输入/9router-web-fetch确认已加载。
详细介绍
9Router — 网页抓取
需要设置 NINEROUTER_URL(若启用了鉴权,还需设置 NINEROUTER_KEY)。安装配置请参阅 https://raw.githubusercontent.com/decolua/9router/refs/heads/master/skills/9router/SKILL.md。
发现
curl $NINEROUTER_URL/v1/models/web | jq '.data[] | select(.kind=="webFetch") | .id'
# Per-provider params
curl "$NINEROUTER_URL/v1/models/info?id=firecrawl/fetch"
ID 以 /fetch 结尾(例如 firecrawl/fetch、jina/fetch)。fetch-combo 会串联多个服务商并自动回退。
端点
POST $NINEROUTER_URL/v1/web/fetch
| 字段 | 是否必填 | 说明 |
|---|---|---|
model(或 provider) | 是 | 来自 /v1/models/web(例如 firecrawl 或 jina-reader) |
url | 是 | 需要提取内容的 URL |
format | 否 | markdown(默认)/ text / html |
max_characters | 否 | 截断输出 |
示例
Jina Reader
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"jina-reader","url":"https://9router.com","format":"markdown"}'
Exa
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"exa","url":"https://example.com","format":"markdown","max_characters":0}'
Firecrawl
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"firecrawl","url":"https://example.com","format":"markdown","max_characters":0}'
Tavily
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"tavily","url":"https://example.com","format":"markdown","max_characters":0}'
Ollama Cloud
使用已有 ollama 连接中的 API 密钥。
curl -X POST $NINEROUTER_URL/v1/web/fetch \
-H "Authorization: Bearer $NINEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"ollama","url":"https://example.com","format":"markdown"}'
JS:
const r = await fetch(`${process.env.NINEROUTER_URL}/v1/web/fetch`, {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.NINEROUTER_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ model: "fetch-combo", url: "https://example.com", format: "markdown", max_characters: 5000 }),
});
const { data } = await r.json();
console.log(data.title, data.content.length);
响应结构
{
"provider": "jina-reader",
"url": "...",
"title": "...",
"content": { "format": "markdown", "text": "...", "length": 1234 },
"links": ["https://example.com/related"],
"metadata": { "author": null, "published_at": null, "language": null },
"usage": { "fetch_cost_usd": 0 },
"metrics": { "response_time_ms": 850, "upstream_latency_ms": 700 }
}
当上游服务商返回发现的页面链接时(目前仅 Ollama Cloud),响应中会包含 links。
服务商特性
| 服务商 | 鉴权 | 适用场景 |
|---|---|---|
firecrawl | Bearer | 需要 JS 渲染的页面,format=markdown/html |
jina-reader | Bearer(可选) | 免费额度(约每月 100 万字符);纯 Markdown 速度最快 |
tavily | Bearer | 批量提取;返回 raw_content |
exa | x-api-key | 已预先索引的页面;快速文本提取 |
ollama | Bearer | Markdown 以及页面标题和发现的链接;使用 Ollama Cloud 密钥 |
评论
支持 Markdown