mcpField
T
tavily-web

tavily-web

github.com/benedictking生产力2400 次安装27 周前更新
代码仓库

关于 tavily-web

tavily-web 是一个用于选择并调用 Tavily 端点的技能,支持网页搜索、内容提取、爬取、站点映射和结构化研究。它面向需要将用户请求整理为 API 参数,并交由子技能执行 HTTP 调用的 Agent。

主要功能

  1. 01按意图选择端点
  2. 02网页搜索与来源发现
  3. 03页面提取和站点爬取
  4. 04映射站点页面结构
  5. 05按 Schema 发起研究请求
  6. 06通过独立子技能执行 API

适用场景

  1. 01查找最新信息和来源
  2. 02总结给定 URL 的内容
  3. 03发现网站中的相关页面
  4. 04按指定 Schema 输出研究结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/benedictking/tavily-web --skill tavily-web

安装后在 Claude Code 中输入/tavily-web确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
.gitignore
tavily-api.cjs
tavily-fetcher.md

详细介绍

Tavily Web 技能

触发条件与端点选择

根据用户意图选择 Tavily 端点:

  • search:需要“搜索网页/最新信息/查找来源/查找链接”
  • extract:给定 URL,需要提取/总结内容
  • crawl:需要按照说明遍历网站并抓取页面内容
  • map:需要发现网站的页面列表/结构(不含完整内容,或仅获取元数据)
  • research:需要按照给定的 output_schema 生成结构化研究结果

推荐架构(主技能 + 子技能)

此技能采用两阶段架构:

  1. 主技能(当前上下文):理解用户问题 → 选择端点 → 组装 JSON 负载
  2. 子技能(分叉上下文):仅负责执行 HTTP 调用,避免对话历史浪费 token

执行方式

使用 Task 工具调用 tavily-fetcher 子技能,并传入命令和 JSON(stdin):

Task parameters:
- subagent_type: Bash
- description: "Call Tavily API"
- prompt: cat <<'JSON' | node .claude/skills/tavily-web/tavily-api.cjs <search|extract|crawl|map|research>
  { ...payload... }
  JSON

负载示例(基于提供的 curl)

1)搜索网页
cat <<'JSON' | node .claude/skills/tavily-web/tavily-api.cjs search
{
  "query": "who is Leo Messi?",
  "auto_parameters": false,
  "topic": "general",
  "search_depth": "basic",
  "chunks_per_source": 3,
  "max_results": 1,
  "time_range": null,
  "start_date": "2025-02-09",
  "end_date": "2025-12-29",
  "include_answer": false,
  "include_raw_content": false,
  "include_images": false,
  "include_image_descriptions": false,
  "include_favicon": false,
  "include_domains": [],
  "exclude_domains": [],
  "country": null,
  "include_usage": false
}
JSON
2)提取网页内容
cat <<'JSON' | node .claude/skills/tavily-web/tavily-api.cjs extract
{
  "urls": "https://en.wikipedia.org/wiki/Artificial_intelligence",
  "query": "<string>",
  "chunks_per_source": 3,
  "extract_depth": "basic",
  "include_images": false,
  "include_favicon": false,
  "format": "markdown",
  "timeout": "None",
  "include_usage": false
}
JSON
3)抓取网页
cat <<'JSON' | node .claude/skills/tavily-web/tavily-api.cjs crawl
{
  "url": "docs.tavily.com",
  "instructions": "Find all pages about the Python SDK",
  "chunks_per_source": 3,
  "max_depth": 1,
  "max_breadth": 20,
  "limit": 50,
  "select_paths": null,
  "select_domains": null,
  "exclude_paths": null,
  "exclude_domains": null,
  "allow_external": true,
  "include_images": false,
  "extract_depth": "basic",
  "format": "markdown",
  "include_favicon": false,
  "timeout": 150,
  "include_usage": false
}
JSON
4)映射网页
cat <<'JSON' | node .claude/skills/tavily-web/tavily-api.cjs map
{
  "url": "docs.tavily.com",
  "instructions": "Find all pages about the Python SDK",
  "max_depth": 1,
  "max_breadth": 20,
  "limit": 50,
  "select_paths": null,
  "select_domains": null,
  "exclude_paths": null,
  "exclude_domains": null,
  "allow_external": true,
  "timeout": 150,
  "include_usage": false
}
JSON
5)创建研究任务
cat <<'JSON' | node .claude/skills/tavily-web/tavily-api.cjs research
{
  "input": "What are the latest developments in AI?",
  "model": "auto",
  "stream": false,
  "output_schema": {
    "properties": {
      "company": {
        "type": "string",
        "description": "The name of the company"
      },
      "key_metrics": {
        "type": "array",
        "description": "List of key performance metrics",
        "items": {
          "type": "string"
        }
      },
      "financial_details": {
        "type": "object",
        "description": "Detailed financial breakdown",
        "properties": {
          "operating_income": {
            "type": "number",
            "description": "Operating income for the period"
          }
        }
      }
    },
    "required": [
      "company"
    ]
  },
  "citation_format": "numbered"
}
JSON

环境变量与 API 密钥

配置 API 密钥有两种方式(优先级:环境变量 > .env):

  1. 环境变量:TAVILY_API_KEY
  2. .env 文件:放置于 .claude/skills/tavily-web/.env,可从 .env.example 复制

评论

支持 Markdown