mcpField
E
extract

extract

github.com/tavily-ai数据与数据库4914.8k 次安装8 周前更新
代码仓库

关于 extract

Extract 是从指定 URL 提取清洁内容的技能,支持单页和批量处理。它可按查询聚焦内容,并提供适用于 JavaScript 页面和结构化数据的基础或高级提取模式。

主要功能

  1. 01单次提取最多 20 个 URL
  2. 02按查询聚焦结果
  3. 03选择基础或高级提取
  4. 04输出 Markdown 或纯文本
  5. 05包含图片 URL

适用场景

  1. 01获取已知文章 URL 的内容
  2. 02从文档中提取相关片段
  3. 03处理 JavaScript 密集型页面
  4. 04批量处理多个页面

MCP 相关

此技能通过 Tavily MCP 服务使用 OAuth,也可使用 Tavily API 密钥。

安装

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

$npx skills add https://github.com/tavily-ai/skills --skill extract

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

附带文件scripts/extract.sh

详细介绍

提取内容

从指定 URL 中提取干净的内容。适合已确定要提取哪些页面的情况。

身份验证

该脚本通过 Tavily MCP 服务使用 OAuth。无需手动设置——首次运行时,它会:

  1. 检查 ~/.mcp-auth/ 中是否有现有令牌
  2. 如果没有,则自动打开浏览器进行 OAuth 身份验证

**注意:**你必须拥有现有的 Tavily 账号。OAuth 流程仅支持登录,无法通过此流程创建账号。如果你还没有账号,请先在 tavily.com 注册。

替代方案:API 密钥

如果你更愿意使用 API 密钥,可在 https://tavily.com 获取一个,并添加到 ~/.claude/settings.json:

{
  "env": {
    "TAVILY_API_KEY": "tvly-your-api-key-here"
  }
}

快速开始

使用脚本
./scripts/extract.sh '<json>'

示例:

# Single URL
./scripts/extract.sh '{"urls": ["https://example.com/article"]}'

# Multiple URLs
./scripts/extract.sh '{"urls": ["https://example.com/page1", "https://example.com/page2"]}'

# With query focus and chunks
./scripts/extract.sh '{"urls": ["https://example.com/docs"], "query": "authentication API", "chunks_per_source": 3}'

# Advanced extraction for JS pages
./scripts/extract.sh '{"urls": ["https://app.example.com"], "extract_depth": "advanced", "timeout": 60}'
基本提取
curl --request POST \
  --url https://api.tavily.com/extract \
  --header "Authorization: Bearer $TAVILY_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "urls": ["https://example.com/article"]
  }'
带查询焦点的多个 URL
curl --request POST \
  --url https://api.tavily.com/extract \
  --header "Authorization: Bearer $TAVILY_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "urls": [
      "https://example.com/ml-healthcare",
      "https://example.com/ai-diagnostics"
    ],
    "query": "AI diagnostic tools accuracy",
    "chunks_per_source": 3
  }'

API 参考

端点
POST https://api.tavily.com/extract
标头
标头值
AuthorizationBearer <TAVILY_API_KEY>
Content-Typeapplication/json
请求正文
字段类型默认值说明
urls数组必填要提取的 URL(最多 20 个)
query字符串null根据相关性重新排列内容块
chunks_per_source整数3每个 URL 的内容块数(1-5,需要提供 query)
extract_depth字符串"basic"basic 或 advanced(适用于 JS 页面)
format字符串"markdown"markdown 或 text
include_images布尔值false包含图片 URL
timeout浮点数不定最长等待时间(1-60 秒)
响应格式
{
  "results": [
    {
      "url": "https://example.com/article",
      "raw_content": "# Article Title\n\nContent..."
    }
  ],
  "failed_results": [],
  "response_time": 2.3
}

提取深度

深度适用情况
basic简单文本提取,速度更快
advanced动态/JS 渲染页面、表格、结构化数据

示例

提取单个 URL
curl --request POST \
  --url https://api.tavily.com/extract \
  --header "Authorization: Bearer $TAVILY_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "urls": ["https://docs.python.org/3/tutorial/classes.html"],
    "extract_depth": "basic"
  }'
使用查询进行定向提取
curl --request POST \
  --url https://api.tavily.com/extract \
  --header "Authorization: Bearer $TAVILY_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "urls": [
      "https://example.com/react-hooks",
      "https://example.com/react-state"
    ],
    "query": "useState and useEffect patterns",
    "chunks_per_source": 2
  }'
JavaScript 内容较多的页面
curl --request POST \
  --url https://api.tavily.com/extract \
  --header "Authorization: Bearer $TAVILY_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "urls": ["https://app.example.com/dashboard"],
    "extract_depth": "advanced",
    "timeout": 60
  }'
批量提取
curl --request POST \
  --url https://api.tavily.com/extract \
  --header "Authorization: Bearer $TAVILY_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "urls": [
      "https://example.com/page1",
      "https://example.com/page2",
      "https://example.com/page3",
      "https://example.com/page4",
      "https://example.com/page5"
    ],
    "extract_depth": "basic"
  }'

提示

  • 每个请求最多 20 个 URL——较长的列表请分批处理
  • 使用 query + chunks_per_source,仅获取相关内容
  • 先尝试 basic,如果缺少内容,再改用 advanced
  • 对于加载缓慢的页面,设置更长的 timeout(最长 60 秒)
  • 检查 failed_results,查看无法提取的 URL

评论

支持 Markdown