9Router 网页搜索技能
通过 9Router 的 /v1/search 接口聚合 Tavily、Exa、Brave 等 11 家搜索源,让 AI 编程助手直接联网搜索网页和 X 帖子。
技能本身只是对本地 9Router 服务的 curl/JS 调用说明,不含代码执行、无文件写入、无破坏性默认行为;密钥通过环境变量传递且未硬编码。扣分:未说明 NINEROUTER_KEY 的存储与泄露风险、无用户确认与回滚机制,数据流(查询会发送给 Tavily/Exa 等第三方)仅在文档中间接体现,未做明确隐私披露。
文档内部自洽:发现端点、请求表、示例与响应形状一致,参数表与 provider quirks 表相互印证。扣分:全部为静态文档,无测试、无针对错误输入(缺密钥、无效 model id、上游 401/超时)的错误处理与失败反馈说明,Xquik 计费分页仅描述未验证。
description 明确触发场景(网页搜索、找文章、X 搜索),字段表和 provider 支持矩阵界定了输入范围与非适用边界,语义触发较精确。扣分:核心功能依赖境外搜索服务(Tavily/Brave/Xquik 等),未评估中国大陆网络可达性,亦无中文语言支持说明。
SKILL.md 分层清晰(发现→端点→示例→响应→quirks),frontmatter 命名与描述一致,仓库有 MIT 许可证。扣分:技能自身无版本号、无变更日志、无 FAQ/已知限制章节,安装依赖被外包给另一 SKILL.md 的外部链接,维护责任未明确。
若 9Router 已运行,curl 示例格式可直接使用,响应形状给出可直接解析的 JSON,边际价值高于手工拼装各 provider API。扣分:核心前提(本地服务运行、provider 密钥配置)未在本文档内闭环,产出正确性无执行证据,Xquik 计费成本对用户是额外负担。
响应示例含具体字段与 usage/metrics 结构,看似来自真实实现。扣分:均为作者自述示例,无第三方执行证据、无 CI 覆盖该技能关键路径、无独立可复现的验证材料,无法区分事实与推断。
- 本评估为纯静态源码审阅,未执行任何请求,能力与响应形状均为作者声称。
- 功能依赖本地运行的 9Router 及第三方搜索服务密钥(Tavily/Brave/Xquik 等),中国大陆网络可达性未经验证。
- Xquik 按返回帖子计费(1 credit/帖),使用前应确认成本。
- 发布者未通过 FollowSkills 企业注册库验证,身份未知;技能无独立版本号与变更日志。
- API 密钥通过环境变量传递,注意避免在 shell 历史与日志中泄露。
这个 Skill 能做什么,适合哪些场景?
这是 decolua/9router 仓库(MIT 许可的免费 AI 路由器)中捆绑的 9 个技能之一,位于 skills/9router-web-search/SKILL.md。它教 AI 代理调用 9Router 的统一搜索端点 POST /v1/search,通过 Tavily、Exa、Brave、Serper、SearXNG、Google PSE、Linkup、SearchAPI、You.com、Perplexity 和 Xquik 等提供商执行网页、新闻或 X/Twitter 搜索。技能本体只是一份说明文档,真正的搜索能力来自已在本地运行的 9Router 实例(默认 http://localhost:20128)。前提是先安装并运行 9Router,再配置 NINEROUTER_URL 环境变量(启用鉴权时还需 NINEROUTER_KEY)。适合希望代理能'查资料、找文章、搜公开推文'的用户。
指导代理先用 GET $NINEROUTER_URL/v1/models/web 发现可用的搜索模型(ID 形如 tavily/search),用 /v1/models/info 查看各提供商参数;然后向 POST $NINEROUTER_URL/v1/search 发送包含 model、query、max_results、search_type(web/news/x)、country、language、time_range、domain_filter 等字段的 JSON 请求;支持 Xquik 的 X/Twitter 搜索(含 from: 等操作符、queryType: Latest/Top、cursor 分页);combo 类型的 owned_by:"combo" 模型可跨提供商自动回退;返回结构化结果(title、url、snippet、score、citation、usage、metrics)。
- 使用 Claude Code 或 Codex 的开发者想让代理在写代码时查最新文档或文章
- 需要在代理对话中检索公开 X 帖子(如查某项目的发布动态)的研究者
- 自建 SearXNG、希望代理走无鉴权本地搜索的用户
- 想在多家搜索源间自动回退、避免单一 API 限额或故障的团队
这个 Skill 有哪些优点和局限?
- 单一端点聚合 11 家搜索提供商,切换只需换 model 字段
- 结构化响应含引用、排名、耗时与用量统计,便于代理引用溯源
- combo 模型支持跨提供商自动回退,提高可用性
- 支持网页、新闻、X 三种搜索类型及国家/语言/时间/域名过滤
- 强依赖本地已运行的 9Router 实例,不能独立使用
- 多数搜索提供商需要各自的 API key 或账号(SearXNG 需自建,Xquik 按帖收积分)
- Google PSE 必须提供 cx,Linkup 需指定 depth,各提供商参数差异需查 /v1/models/info
- 源材料未包含该技能本身的测试或基准数据
如何安装这个 Skill?
1) 先安装并运行 9Router:npm install -g 9router && 9router(仪表盘在 http://localhost:20128);2) 将 skills/9router-web-search/ 文件夹放入你的 Agent Skills 目录(如 Claude Code 的 ~/.claude/skills/);3) 在代理环境中设置 export NINEROUTER_URL=http://localhost:20128,若开启了鉴权再设置 NINEROUTER_KEY。SKILL.md 未提供独立的安装脚本,安装方式遵循通用 Agent Skills 惯例。
如何使用这个 Skill?
代理读到触发词('搜索网页'、'找文章'、'搜公开 X 帖子')后按 SKILL.md 执行。手动验证示例:curl -X POST $NINEROUTER_URL/v1/search -H "Authorization: Bearer $NINEROUTER_KEY" -H "Content-Type: application/" -d '{"model":"tavily","query":"9Router open source","max_results":5}'。X 搜索:model 设为 xquik,加 provider_options.queryType,并用 pagination.next_cursor 翻页(Xquik 每条返回帖收 1 积分,需在 9Router 提供商设置中填入其 API key)。google-pse 必须通过 providerOptions 提供 cx。