发布日期:2026-05-25 | 适用版本:Claude Code v2.1+ / Agent SDK 最新版
Claude Code Skills 接入搜索 API,指在 SKILL.md 文件中通过声明 allowed-tools、Bash 调用外部接口、或 !cmd 动态注入三种机制,让 Skill 在执行时具备实时网页检索能力,覆盖内置 WebSearch 工具和七牛云、Tavily 等第三方搜索 API。
- 最简接入:在 SKILL.md frontmatter 加
allowed-tools: WebSearch,Claude 自动获得内置联网搜索权限,无需任何 API Key !cmd动态注入语法在 Claude 读取 Skill 内容前执行 shell 命令,将搜索结果内联到 prompt,适合固定检索场景- 七牛云 Baidu Search API 端点为
POST https://api.qnaigc.com/v1/search/web,支持time_filter(week/month/year)和最多 20 个site_filter域名过滤,每条结果附带authority_score权威度评分 ${CLAUDE_SKILL_DIR}变量指向 Skill 目录,可用于引用scripts/子目录中的搜索脚本,路径在个人/项目/插件三个层级下均能正确解析allowed-tools字段只授权 Claude 无需人工确认即可使用对应工具,并不限制其他工具的调用
适用场景:构建联网 AI Agent、RAG 知识库实时补充、自动化新闻摘要 Skill、代码技术文档检索

Claude Code Skills 是定义在 SKILL.md 文件中的可复用能力包,Claude 在对话中自动识别触发时机并加载对应 Skill。一个 Skill 默认只能访问 Claude 内置的上下文推理能力,接入搜索 API 后,它便能在每次触发时主动获取最新网页内容,让 Skill 的输出不再受限于训练数据截止日期。
三种接入路径对比
| 方式 | 核心机制 | 需要 API Key | 适合场景 |
|---|---|---|---|
| 内置 WebSearch | allowed-tools: WebSearch |
否(Anthropic 托管) | 快速启用、通用搜索 |
| Bash + 外部 API | allowed-tools: Bash + curl/python |
是 | 指定搜索引擎、中文内容 |
!cmd 动态注入 |
预执行 shell,结果嵌入 prompt | 视 API 而定 | 固定检索、每次触发必搜 |
三种方式可以组合使用:用 !cmd 预先注入今日热点,再用 WebSearch 让 Claude 在推理时按需补充细节。
方式一:声明内置 WebSearch 工具(5 分钟上手)
最快的接入路径——在 frontmatter 的 allowed-tools 字段里加上 WebSearch,Claude 即可在 Skill 执行时自主发起联网搜索,无需任何 API Key 或额外配置。
示例:技术动态速报 Skill
mkdir -p ~/.claude/skills/tech-digest
保存到 ~/.claude/skills/tech-digest/SKILL.md:
---
name: tech-digest
description: 搜索并汇总最近 24 小时的 AI/技术热点,生成三条简报。当用户问"今天有什么新闻"、"AI 有什么动态"时触发。
allowed-tools: WebSearch WebFetch
---## 任务用 WebSearch 搜索以下主题,每个主题各找 2-3 条近 24 小时内容:
1. "AI 大模型 最新发布 $ARGUMENTS"
2. "开源项目 GitHub trending 本周"整理为三条简报,格式:
- **标题**(来源 · 时间)
- 一句话摘要如果 $ARGUMENTS 为空,聚焦 AI 领域通用热点。
触发方式:
- 直接输入
/tech-digest获取通用 AI 热点 - 输入
/tech-digest Claude Code聚焦特定关键词
注意事项:
WebSearch使用 Anthropic 托管的搜索,无法指定底层引擎(Google/Bing/百度)- 中文内容覆盖相对有限;若需要国内网站,请用方式二接入专用搜索 API
方式二:Bash 调用外部搜索 API

通过 allowed-tools: Bash 授权 Claude 使用终端命令,在 Skill 执行时用 curl 或 python3 调用任意第三方搜索 API,完整控制搜索引擎、结果数量、时间范围和来源过滤。
接入七牛云 Baidu Search API
七牛云全网搜索 API 封装百度搜索,对中文新闻、技术社区(知乎、掘金、CSDN)和政策文件的收录深度远优于 Google / Bing,适合面向国内受众的 Agent。
接入信息:
| 字段 | 值 |
|---|---|
| 端点 | POST https://api.qnaigc.com/v1/search/web |
| 认证 | Authorization: Bearer <API_KEY> |
| 结果字段 | title / url / content / authority_score / date |
示例 Skill:中文技术热点
mkdir -p ~/.claude/skills/cn-tech-search/scripts
保存到 ~/.claude/skills/cn-tech-search/scripts/search.py:
#!/usr/bin/env python3
import sys
import json
import os
import requestsquery = " ".join(sys.argv[1:]) if len(sys.argv) > 1 else "AI 技术"
api_key = os.environ.get("QINIU_API_KEY", "")resp = requests.post("https://api.qnaigc.com/v1/search/web",headers={"Authorization": f"Bearer {api_key}","Content-Type": "application/json"},json={"query": query,"max_results": 8,"search_type": "web","time_filter": "week"},timeout=15
)if not resp.ok:print(f"搜索失败: {resp.status_code}")sys.exit(1)results = resp.json().get("data", {}).get("results", [])
for r in results[:5]:print(f"【{r.get('title', '')}】")print(f" URL: {r.get('url', '')}")print(f" 摘要: {r.get('content', '')[:120]}")print(f" 权威度: {r.get('authority_score', 0):.2f} | 时间: {r.get('date', '')}")print()
保存到 ~/.claude/skills/cn-tech-search/SKILL.md:
---
name: cn-tech-search
description: 用百度搜索检索中文技术内容、国内新闻或指定关键词。当用户要搜索中文内容、国内网站或需要近期新闻时触发。
allowed-tools: Bash(python3 *) Bash(pip3 *)
---## 使用方式先确认 `requests` 库已安装:```bash
pip3 install requests -q
然后执行搜索脚本:
QINIU_API_KEY=你的Key python3 ${CLAUDE_SKILL_DIR}/scripts/search.py $ARGUMENTS
后续处理
根据搜索结果:
- 去除权威度低于 0.3 的条目
- 按用户需求整理:摘要 / 列表 / 深度分析
- 对需要全文的链接,用 WebFetch 抓取详情
**API Key 配置建议:** 将 Key 写入 `~/.zshrc` 避免每次手动传入:```bash
export QINIU_API_KEY=your-api-key
接入 Tavily API
Tavily 是 LangChain 生态的默认搜索工具,免费套餐 1,000 积分/月,英文内容覆盖优秀:
---
name: tavily-search
description: 用 Tavily 搜索英文技术文档和国际新闻。
allowed-tools: Bash(python3 *) Bash(pip3 *)
---安装依赖:```bash
pip3 install tavily-python -q
执行搜索:
python3 -c "
from tavily import TavilyClient
import os, sys
client = TavilyClient(api_key=os.environ['TAVILY_API_KEY'])
result = client.search(query=' '.join(sys.argv[1:]) if len(sys.argv)>1 else '$ARGUMENTS',search_depth='basic',max_results=5,include_answer=True
)
print(result.get('answer',''))
for r in result.get('results',[]):print(f'- {r[\"title\"]} ({r[\"url\"]})')print(f' {r[\"content\"][:100]}')
" $ARGUMENTS
整理上述结果,回答用户问题。
---## 方式三:`!cmd` 动态注入(预执行搜索)`!cmd` 语法在 Claude 读取 Skill 内容之前执行 shell 命令,将输出直接嵌入 prompt——Claude 看到的是已经包含搜索结果的完整指令,而非"去搜一下"的委托。**适合场景:** 每次触发都需要搜索固定内容(今日热点、某股票价格、仓库最新 Release)。**示例:今日 AI 热点自动注入**```yaml
---
name: ai-daily
description: 每日 AI 热点速报,自动抓取最新动态。当用户问"今天 AI 有什么新闻"时触发。
allowed-tools: Bash(curl *)
---## 今日热点数据(自动抓取)```!
curl -s "https://r.jina.ai/https://tldr.tech/ai" 2>/dev/null | head -100
任务
基于上方自动抓取的内容,整理今日最重要的 3 条 AI 动态:
- 标题:一句话说明事件
- 影响:为什么值得关注(一句话)
- 来源:文中提及的链接
如果抓取内容为空,告知用户网络不可达并建议手动查看 tldr.tech/ai。
**`!cmd` 使用要点:**1. `!` 必须在行首或空白字符后,紧跟反引号命令;`KEY=!cmd` 这种写法不会被执行
2. 多行命令用 ` ```! ``` ` 代码块形式
3. 命令输出是纯文本内联,不会被二次解析
4. 适合幂等查询,**不要在此处放置写入操作**(删文件、发消息等)---## 完整案例:每日竞品动态监控 Skill以下是一个结合三种方式的完整工程示例——监控竞品官网更新,自动对比近 7 天变化:```bash
mkdir -p ~/.claude/skills/competitor-watch/scripts
scripts/fetch_news.sh:
#!/bin/bash
# 调用七牛云搜索 API,抓取指定公司近 7 天内容
COMPANY=${1:-"Anthropic"}
curl -s -X POST "https://api.qnaigc.com/v1/search/web" \-H "Authorization: Bearer ${QINIU_API_KEY}" \-H "Content-Type: application/json" \-d "{\"query\":\"${COMPANY} 新产品 发布\",\"max_results\":5,\"time_filter\":\"week\"}" \| python3 -c "
import json,sys
d=json.load(sys.stdin)
for r in d.get('data',{}).get('results',[]):print(f'- {r[\"title\"]} ({r[\"date\"]})')print(f' {r[\"content\"][:80]}')
"
SKILL.md:
---
name: competitor-watch
description: 监控竞品近期动态,对比变化,生成简报。输入公司名触发。
argument-hint: [公司名]
allowed-tools: Bash(bash *) Bash(python3 *)
---## 竞品:$ARGUMENTS### 近 7 天新闻(自动搜索)!`bash ${CLAUDE_SKILL_DIR}/scripts/fetch_news.sh "$ARGUMENTS"`### 你的任务1. 分析上方搜索结果,提炼 2-3 个值得关注的信号
2. 判断是否有产品发布、价格变动或组织调整
3. 给出一句话结论:"$ARGUMENTS 本周最重要的变化是……"如果搜索结果为空,说明近 7 天无重大动态。
使用方式:/competitor-watch OpenAI
常见问题
Q:allowed-tools: WebSearch 和 allowed-tools: Bash 授权有什么区别?
WebSearch 是 Claude 内置工具,授权后 Claude 可自主决定何时搜索、搜什么,不需要在 Skill 里写搜索命令。Bash 是通用 shell 权限,需要你在 Skill 指令中明确写出调用哪个脚本或 API,搜索逻辑完全由 Skill 控制。前者更灵活,后者更精确。
Q:!cmd 执行失败会怎样?
命令输出为空时,Claude 会看到一个空白区块——Skill 不会中断,但 Claude 会基于空结果给出"无内容"的回应。建议在命令末尾加 || echo "[搜索失败]" 提供明确的降级提示,避免 Claude 凭空推断。
Q:Skill 的 allowed-tools 和 Agent SDK 的 allowed_tools 有什么关系?
SKILL.md 中的 allowed-tools 只在 CLI 模式下有效——CLI 会根据此字段自动放行对应工具。通过 Agent SDK 调用 Skills 时,allowed-tools frontmatter 不生效,工具权限由 SDK 的 allowedTools 参数统一管理,Skill 本身的声明会被忽略。
Q:如何在 Skill 里安全存放 API Key?
不要将 Key 硬编码进 SKILL.md(会被 git 追踪)。推荐做法:写入 ~/.zshrc 作为环境变量(export QINIU_API_KEY=xxx),Skill 中通过 $QINIU_API_KEY 或 os.environ.get("QINIU_API_KEY") 读取。个人 Skills(~/.claude/skills/)不进 git,相对安全;项目 Skills(.claude/skills/)会进版本控制,严禁在此硬编码 Key。
Q:能否在 Skill 里同时调用多个搜索 API?
可以。一个 Skill 可以先用 !cmd 调七牛云百度搜索预注入中文结果,再在指令里让 Claude 用 WebSearch 补充英文来源,最后用 WebFetch 抓取具体页面全文。三者组合即可覆盖中英文双语搜索需求,allowed-tools 字段里声明所有需要的工具权限即可。
延伸资源
- Claude Code Skills 官方文档:code.claude.com/docs/en/skills
- Agent SDK Skills 接入:code.claude.com/docs/en/agent-sdk/skills
- 申请七牛云 API Key:qiniu.com/ai/models
本文内容基于 2026 年 5 月 Claude Code 官方文档,建议访问 code.claude.com 获取最新版本信息。

Claude Code Skills 接入搜索 API,指在 `SKILL.md` 文件中通过声明 `allowed-tools`、`Bash` 调用外部接口、或 `!cmd` 动态注入三种机制,让 Skill 在执行时具备实时网页检索能力,覆盖内置 WebSearch 工具和七牛云、Tavily 等第三方搜索 API。