网络研究助手

基于MCP的网络研究工具集,支持搜索、爬取与分析,需配置API密钥。

已扫描
适合谁
开发者、技术研究员
不适合谁
无网络环境用户、无法获取API密钥的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @cainingnk/xby-web-research-assistant

Skill 说明

命令、参数、文件名以原文为准

网络研究助手

一个提供网络研究和发现功能的综合模型上下文协议(MCP)服务器,包含13种工具,用于搜索、爬取和分析网络内容。


⚠️ 强制要求:API 密钥

此 Skill 必须配置 API 密钥才能使用。

  • 首次使用时,如果 .env 中没有 XBY_APIKEY必须使用 AskUserQuestion 工具向用户询问 API 密钥
  • 拿到用户提供的密钥后,调用 scripts.config.set_api_key(api_key) 保存,然后继续处理
  • 获取 API 密钥:https://xiaobenyang.com
  • 禁止在缺少 API 密钥时自行搜索或编造数据

工作流程(必须遵守)

你(大模型)是路由层,负责理解用户意图、选择工具、提取参数。代码只负责调用 API。

用户输入 → 你选择工具 → 提取该工具需要的参数 → 调用 scripts.tools 中的函数 → 返回结果给用户

步骤

  1. 检查 API 密钥:如果 scripts.config.settings.api_key 为空,使用 AskUserQuestion 询问用户,拿到后调用 scripts.config.set_api_key(key) 保存
  2. 选择工具:根据用户意图从下方工具列表中选择对应的工具函数
  3. 提取参数:根据选中的工具,提取该工具需要的参数
  4. 调用工具:使用关键字参数调用 scripts.tools 中的函数,例如 scripts.tools.search_schools(score='520', province='北京', category='综合')
  5. 返回结果:将工具返回的 raw 数据整理后展示给用户

工具选择规则

根据用户意图选择对应的工具函数:

用户意图工具函数
使用本地 SearXNG 实例获取最新的网页搜索结果。scripts.tools.web_search
当需要实际页面文本用于引用或分析时,使用 crawl4ai 抓取指定 URL 内容。scripts.tools.crawl_url
从 npm、PyPI、crates.io 或 Go 模块中查询包信息。<br>返回版本号、下载量、许可证、依赖项、安全状态及仓库链接。<br>可用于快速评估库在项目中引入前的适用性。<br><br>示例:<br>- package_info("express", reasoning="需要 Web 框架", registry="npm")<br>- package_info("requests", reasoning="API 的 HTTP 客户端", registry="pypi")<br>- package_info("serde", reasoning="JSON 序列化", registry="crates")scripts.tools.package_info
搜索代码示例、教程和技术文章。<br>优化用于查找实用示例和学习资源。可选择性按时间范围筛选最新内容。<br>适用于学习新 API、发现使用模式或了解他人如何解决特定技术问题。<br><br>内容类型:<br>- 'code':GitHub 仓库、代码片段、Gists、Stack Overflow 代码示例<br>- 'articles':博客文章、教程、文档、技术文章<br>- 'both':代码与文字内容混合(默认)<br><br>时间范围:<br>- 'all':搜索所有可用内容(默认,推荐用于最佳结果)<br>- 'year'、'month'、'week'、'day':仅筛选最近内容<br><br>示例:<br>- search_examples("FastAPI 依赖注入示例", content_type="code")<br>- search_examples("React Hooks 教程", content_type="articles", time_range="year")<br>- search_examples("Rust 生命周期示例", content_type="both")scripts.tools.search_examples
使用 Pixabay 搜索高质量图片。<br>返回无版权图片,可安全用于项目、演示或设计工作。<br>适用于寻找照片、插图或矢量图形。<br><br>图片类型:<br>- 'photo':真实照片<br>- 'illustration':数字插画与艺术作品<br>- 'vector':矢量图形(支持 SVG 格式)<br>- 'all':所有类型(默认)<br><br>示例:<br>- search_images("山地景观", image_type="photo")<br>- search_images("商务图标", image_type="vector")<br>- search_images("科技背景", orientation="horizontal")scripts.tools.search_images
通过关键词或描述在注册表中搜索包。<br>用于发现满足特定需求但不知道具体包名的库。<br>适用于在已知功能需求但未知名称时进行探索。<br><br>示例:<br>- package_search("Web 框架", reasoning="需要后端框架", registry="npm")<br>- package_search("JSON 解析", reasoning="数据处理", registry="pypi")scripts.tools.package_search
获取 GitHub 仓库的信息与健康度指标。<br>返回星标数、分支数、问题数、近期活动、编程语言、许可证及描述。<br>可用于在使用前评估开源项目。<br><br>示例:<br>- github_repo("microsoft/vscode", reasoning="评估编辑器项目")<br>- github_repo("https://github.com/facebook/react", reasoning="研究 UI 框架")scripts.tools.github_repo
从 Stack Overflow 和 GitHub 中查找错误消息和堆栈跟踪的解决方案。<br>接收错误信息或堆栈跟踪,自动检测语言和框架,提取关键错误信息,并搜索相关解决方案,按投票数和相关性排序。<br><br>适用于:<br>- 调试生产环境错误<br>- 理解晦涩的错误提示<br>- 找到可运行的修复代码<br>- 学习类似问题的处理方式<br><br>示例:<br>- translate_error("TypeError: Cannot read property 'map' of undefined", reasoning="调试 React 应用崩溃")<br>- translate_error("CORS policy: No 'Access-Control-Allow-Origin' header", reasoning="修复 API 集成", framework="FastAPI")<br>- translate_error("error[E0382]: borrow of moved value", reasoning="学习 Rust 所有权", language="rust")scripts.tools.translate_error
搜索并获取官方 API 文档,包含示例与说明。<br>采用文档优先策略:抓取人工编写的文档,提供上下文、示例和最佳实践。<br>比 OpenAPI 规范更实用。<br><br>发现策略:<br>1. 尝试常见 URL 模式(docs.{api}.com, {api}.com/docs 等)<br>2. 若模式失败,则搜索 "{api} API 官方文档"<br>3. 抓取发现的文档并提取相关内容<br><br>不硬编码 URL —— 可动态发现任意 API 的文档。<br><br>示例:<br>- api_docs("stripe", "创建客户", reasoning="设置支付功能")<br>- api_docs("github", "创建仓库", reasoning="自动化仓库创建")<br>- api_docs("spartan", "按钮组件", reasoning="学习 UI 库")scripts.tools.api_docs
从网页中提取结构化数据。<br>提取表格、列表或特定字段,返回结构化数据。<br>相比解析完整页面文本,效率更高。scripts.tools.extract_structured_data

技能:网络研究助手

版本:1.0.0

分块:2/3

提取类型

  • table:将 HTML 表格提取为字典列表
  • list:将列表(ul/ol/dl)提取为结构化列表
  • fields:使用 CSS 选择器提取特定元素
  • json-ld:提取 JSON-LD 结构化数据
  • auto:自动检测并提取结构化内容

使用示例

  • extract_data("https://pypi.org/project/fastapi/", reasoning="获取包信息")
  • extract_data("https://github.com/user/repo/releases", reasoning="获取发布记录", extract_type="list")
  • `extract_data(

"https://example.com/product",

reasoning="提取产品详情",

extract_type="fields",

selectors={"price": ".price", "title": "h1.product-name"}

)`

工具函数说明
scripts.tools.extract_data从网页中提取结构化数据

技术对比功能

比较多种技术、框架或库的优劣,提供结构化对比结果,帮助做出更明智的选择。

支持类别

  • framework:Web 框架(如 React、Vue、Angular 等)
  • library:JavaScript/Python 等语言的库
  • database:数据库(如 PostgreSQL、MongoDB 等)
  • language:编程语言(如 Python、Go、Rust 等)
  • tool:构建工具、CLI 工具等(如 Webpack、Vite 等)
  • auto:自动识别类别

使用示例

  • compare_tech(["React", "Vue", "Svelte"], reasoning="为新项目选择框架")
  • compare_tech(["PostgreSQL", "MongoDB"], category="database", reasoning="用户数据存储方案")
  • compare_tech(["FastAPI", "Flask"], aspects=["性能", "学习曲线"], reasoning="Python Web 框架选型")
工具函数说明
scripts.tools.compare_tech多技术对比分析
工具函数说明
scripts.tools.get_changelog获取包的更新日志与发布说明
scripts.tools.check_service_status检查 API 服务或平台是否出现故障

若参数不完整,将使用 AskUserQuestion 向用户询问缺失信息。


工具函数说明


工具描述:通过本地 SearXNG 实例执行网络搜索,获取最新网页结果。

参数定义

参数名称参数类型是否必填默认值描述
querystring搜索关键词
reasoningstring使用此工具的原因
categorystring"general"搜索类别(如 general, news, images)
max_resultsinteger5最大返回结果数

scripts.tools.crawl_url

工具描述:使用 crawl4ai 获取目标 URL 的实际页面文本,适用于引用或分析。

参数定义

参数名称参数类型是否必填默认值描述
urlstring目标网页地址
reasoningstring使用此工具的原因
max_charsinteger8000最大抓取字符数

scripts.tools.package_info

工具描述:从 npm、PyPI、crates.io 或 Go modules 查询包信息。

返回版本号、下载量、许可证、依赖项、安全状态及仓库链接。可用于快速评估库在项目中的适用性。

使用示例

  • package_info("express", reasoning="需要一个 Web 框架", registry="npm")
  • package_info("requests", reasoning="用于调用 API 的 HTTP 客户端", registry="pypi")
  • package_info("serde", reasoning="JSON 序列化需求", registry="crates")

参数定义

参数名称参数类型是否必填默认值描述
namestring包名
reasoningstring使用此工具的原因
registrystring"npm"包注册表(npm/pypi/crates/go)

scripts.tools.search_examples

工具描述:搜索代码示例、教程和技术文章。

专为查找实用示例和学习资源优化。可按时间范围筛选,获取最新内容。适合学习新 API、发现使用模式或了解他人如何解决特定技术问题。

内容类型

  • code:GitHub 仓库、代码片段、Gist、Stack Overflow 中的代码示例
  • articles:博客文章、教程、文档、技术文章
  • both:混合类型(默认)

时间范围

  • all:搜索所有可用内容(默认,推荐)
  • yearmonthweekday:仅限近期内容

使用示例

  • search_examples("FastAPI 依赖注入示例", content_type="code")
  • search_examples("React Hooks 教程", content_type="articles", time_range="year")
  • search_examples("Rust 生命周期示例", content_type="both")

参数定义

参数名称参数类型是否必填默认值描述
querystring搜索关键词
reasoningstring使用此工具的原因
content_typestring"both"内容类型(code/articles/both)
time_rangestring"all"时间范围(all/year/month/week/day)
max_resultsinteger5最大返回结果数

scripts.tools.search_images

工具描述:使用 Pixabay 搜索高质量免版权图片。

返回可安全使用的免版税图像,适用于项目、演示文稿或设计工作。

图像类型

  • photo:真实照片
  • illustration:数字插画与艺术作品
  • vector:矢量图形(支持 SVG 格式)
  • all:所有类型(默认)

使用示例

  • search_images("山地景观", image_type="photo")
  • search_images("商务图标", image_type="vector")
  • search_images("科技背景", orientation="horizontal")

参数定义

参数名称参数类型是否必填默认值描述
querystring搜索关键词
reasoningstring使用此工具的原因
image_typestring"all"图像类型(photo/illustration/vector/all)
orientationstring"all"图像方向(vertical/horizontal/square/all)
max_resultsinteger10最大返回结果数

工具描述:在多个注册表中根据关键词或描述搜索包。

用于发现满足特定需求但尚不知具体名称的库。适合在明确功能需求但不确定包名时使用。

使用示例

  • package_search("Web 框架", reasoning="需要后端框架", registry="npm")
  • package_search("JSON 解析", reasoning="数据处理需求", registry="pypi")

参数定义

参数名称参数类型是否必填默认值描述
querystring搜索关键词
reasoningstring使用此工具的原因
registrystring"npm"包注册表(npm/pypi/crates/go)
max_resultsinteger5最大返回结果数

scripts.tools.github_repo

工具描述:获取 GitHub 仓库的信息与健康度指标。

技能:网络研究助手

版本:1.0.0

分块:3/3

返回项目星标数、分支数、问题数、近期活动、编程语言、许可证信息和项目描述。

可用于在使用前评估开源项目。

示例:

  • github_repo("microsoft/vscode", reasoning="评估代码编辑器项目")
  • github_repo("https://github.com/facebook/react", reasoning="研究 UI 框架")

参数定义

参数名称参数类型是否必填默认值描述
repostring仓库地址或 owner/repo 格式
reasoningstring使用目的说明
include_commitsbooleantrue是否包含提交记录

scripts.tools.translate_error

工具描述:

针对来自 Stack Overflow 和 GitHub 的错误信息与堆栈跟踪,查找解决方案。

接收错误信息或堆栈跟踪,自动识别语言与框架,提取关键错误内容,并搜索高票数且相关性高的解决方案,附带代码示例。

适用于:

  • 调试生产环境错误
  • 理解晦涩的错误提示
  • 寻找可运行的修复代码
  • 学习类似问题的处理方式

示例:

  • translate_error("TypeError: Cannot read property 'map' of undefined", reasoning="调试 React 应用崩溃")
  • translate_error("CORS policy: No 'Access-Control-Allow-Origin' header", reasoning="修复 API 集成问题", framework="FastAPI")
  • translate_error("error[E0382]: borrow of moved value", reasoning="学习 Rust 所有权机制", language="rust")

参数定义

参数名称参数类型是否必填默认值描述
error_messagestring错误信息或堆栈跟踪文本
reasoningstring使用目的说明
languagenull明确指定语言(如 rust、python)
frameworknull明确指定框架(如 FastAPI、React)
max_resultsinteger5返回结果数量上限

scripts.tools.api_docs

工具描述:

搜索并获取官方 API 文档,包含示例与解释。

采用文档优先策略:获取人工编写的文档内容,包含上下文、示例与最佳实践,远比仅依赖 OpenAPI 规范更有价值。

发现策略:

  1. 尝试常见 URL 模式(docs.{api}.com, {api}.com/docs 等)
  2. 若模式不匹配,则搜索 "{api} API 官方文档"
  3. 爬取发现的文档页面,提取相关内容

无需硬编码 URL,可动态发现任意 API 的文档。

示例:

  • api_docs("stripe", "create customer", reasoning="设置支付功能")
  • api_docs("github", "create repository", reasoning="自动化仓库创建")
  • api_docs("spartan", "button component", reasoning="学习 UI 库组件")

参数定义

参数名称参数类型是否必填默认值描述
api_namestringAPI 名称(如 stripe、github)
reasoningstring使用目的说明
topicstring查询主题(如“创建用户”、“上传文件”)
max_resultsinteger2返回结果数量上限

scripts.tools.extract_data

工具描述:

从网页中提取结构化数据。

从 HTML 页面中提取表格、列表或特定字段,返回结构化数据。相比解析全文本更高效。

支持提取类型:

  • "table":将 HTML 表格转换为字典列表
  • "list":提取无序列表、有序列表或定义列表为结构化列表
  • "fields":通过 CSS 选择器提取特定元素
  • "json-ld":提取 JSON-LD 结构化数据
  • "auto":自动检测并提取结构化内容

示例:

  • extract_data("https://pypi.org/project/fastapi/", reasoning="获取包信息")
  • extract_data("https://github.com/user/repo/releases", reasoning="获取发布版本", extract_type="list")
  • extract_data(

"https://example.com/product",

reasoning="提取产品详情",

extract_type="fields",

selectors={"price": ".price", "title": "h1.product-name"}

)

参数定义

参数名称参数类型是否必填默认值描述
urlstring目标网页 URL
reasoningstring使用目的说明
extract_typestring"auto"提取类型(见上文)
selectorsnullCSS 选择器映射(用于 fields 类型)
max_itemsinteger100最多提取条目数量

scripts.tools.compare_tech

工具描述:

对多个技术、框架或库进行横向对比。

自动收集各项技术信息,并以结构化方式呈现对比结果,帮助做出明智决策。

支持类别:

  • "framework":Web 框架(React、Vue、Angular 等)
  • "library":JavaScript/Python 等语言库
  • "database":数据库(PostgreSQL、MongoDB 等)
  • "language":编程语言(Python、Go、Rust 等)
  • "tool":构建工具、CLI 工具等(Webpack、Vite 等)
  • "auto":自动识别类别

示例:

  • compare_tech(["React", "Vue", "Svelte"], reasoning="为新项目选择框架")
  • compare_tech(["PostgreSQL", "MongoDB"], category="database", reasoning="用户数据存储方案选择")
  • compare_tech(["FastAPI", "Flask"], aspects=["performance", "learning_curve"], reasoning="Python Web 框架选型")

参数定义

参数名称参数类型是否必填默认值描述
technologiesarray技术名称列表
reasoningstring使用目的说明
categorystring"auto"对比类别
aspectsnull特性维度(如性能、学习曲线)
max_results_per_techinteger3每项技术最多获取结果数

scripts.tools.get_changelog

工具描述:获取某个包的变更日志与发布说明。

参数定义

参数名称参数类型是否必填默认值描述
packagestring包名(如 fastapi、requests)
reasoningstring使用目的说明
registrystring"auto"包注册源(如 pypi、npm)
max_releasesinteger5最多返回的发布版本数

scripts.tools.check_service_status

工具描述:检查某个 API 服务或平台是否出现故障。

参数定义

参数名称参数类型是否必填默认值描述
servicestring服务名称(如 GitHub、Stripe、AWS)
reasoningstring使用目的说明

返回值处理

工具函数返回 dict 对象:

  • result["raw"] - API 原始返回数据(JSON),请直接整理后展示给用户
  • result["success"] - 是否成功(True/False)
  • result["message"] - 状态消息

项目结构

xiaobenyang_gaokao_skill/
├── scripts/
│   ├── __init__.py
│   ├── config.py       # 配置管理 + set_api_key()
│   ├── call_api.py      # API 客户端 + call_api()
│   └── tools.py         # 工具函数(直接调用)
├── requirements.txt
└── SKILL.md

注意事项

  1. 必须提供 API 密钥,若无密钥,应通过 AskUserQuestion 向用户询问
  2. 禁止在缺少 API 密钥时自行搜索或虚构数据
C
@cainingnk

已收录 1 个 Skill

相关推荐