mcpField
T
tinyfish

tinyfish

github.com/tinyfish-io数据与数据库109 次安装
代码仓库

关于 tinyfish

tinyfish 是一项通过 TinyFish API 执行网页数据提取的技能,供 Claude 使用。它要求提供 API 密钥,并支持指定 JSON 输出结构、隐身浏览器模式和代理配置。

主要功能

  1. 01通过 API 提取网页数据
  2. 02按指定结构返回 JSON
  3. 03支持隐身浏览器模式
  4. 04可配置代理国家
  5. 05独立来源可分别并行提取

适用场景

  1. 01从网页提取产品名称与价格
  2. 02批量整理网页中的商品列表
  3. 03比较多个网站上的价格数据
  4. 04从受保护或地区限制的网站提取数据

安装

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

$npx skills add https://github.com/tinyfish-io/skills --skill tinyfish

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

附带文件scripts/extract.sh

详细介绍

TinyFish Web Agent

需要:TINYFISH_API_KEY 环境变量

预检(必需)

进行任何 API 调用前,务必先运行此项,以确认密钥可用:

[ -n "$TINYFISH_API_KEY" ] && echo "TINYFISH_API_KEY is set" || echo "TINYFISH_API_KEY is NOT set"

如果未设置密钥,必须停止并询问用户,让其添加 API 密钥。不要改用其他工具或方法——此任务需要 TinyFish。

告知用户:

你需要 TinyFish API 密钥。请在此处获取:https://agent.tinyfish.ai/api-keys

然后进行设置,以便 Agent 使用:

选项 1 — 环境变量(适用于所有环境):

export TINYFISH_API_KEY="your-key-here"

选项 2 — Claude Code 设置(仅限 Claude Code): 添加到 ~/.claude/settings.local.json:

{
  "env": {
    "TINYFISH_API_KEY": "your-key-here"
  }
}

确认密钥可用之前,不要继续操作。

最佳实践

  1. 指定 JSON 格式:始终描述你希望返回的确切结构
  2. 并行调用:从多个互不相关的网站提取数据时,分别并行调用,不要合并到一个提示词中

基本提取/抓取

从页面提取数据。指定所需的 JSON 结构:

curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "goal": "Extract product info as JSON: {\"name\": str, \"price\": str, \"in_stock\": bool}"
  }'

多个项目

按明确的结构提取数据列表:

curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/products",
    "goal": "Extract all products as JSON array: [{\"name\": str, \"price\": str, \"url\": str}]"
  }'

隐身模式

对于有机器人防护的网站,在请求正文中添加 "browser_profile": "stealth":

curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com",
    "goal": "Extract product data as JSON: {\"name\": str, \"price\": str, \"description\": str}",
    "browser_profile": "stealth"
  }'

代理

在正文中添加 "proxy_config",通过特定国家/地区路由:

curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://geo-restricted-site.com",
    "goal": "Extract pricing data as JSON: {\"item\": str, \"price\": str, \"currency\": str}",
    "browser_profile": "stealth",
    "proxy_config": {"enabled": true, "country_code": "US"}
  }'

输出

SSE 流会返回 data: {...} 行。最终结果是 type == "COMPLETE" 且 status == "COMPLETED" 的事件——提取的数据位于 resultJson 字段中。Claude 会直接读取原始 SSE 输出;无需在脚本端进行解析。

并行提取

从多个互不相关的来源提取数据时,分别并行执行 curl 调用,不要合并到一个提示词中:

推荐 - 并行调用:

# Compare pizza prices - run these simultaneously
curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://pizzahut.com",
    "goal": "Extract pizza prices as JSON: [{\"name\": str, \"price\": str}]"
  }'

curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://dominos.com",
    "goal": "Extract pizza prices as JSON: [{\"name\": str, \"price\": str}]"
  }'

不推荐 - 单个合并调用:

# Don't do this - less reliable and slower
curl -N -s -X POST "https://agent.tinyfish.ai/v1/automation/run-sse" \
  -H "X-API-Key: $TINYFISH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://pizzahut.com",
    "goal": "Extract prices from Pizza Hut and also go to Dominos..."
  }'

每个独立的提取任务都应单独进行一次 API 调用。这样速度更快(并行执行),也更可靠。

评论

支持 Markdown