SKILL.md
readonly只读
name
search
description
通过 Bright Data CLI 搜索网络 — `bdata search` 用于 Google/Bing/Yandex 的 SERP 结果,`bdata discover` 用于基于意图排序的语义结果。当用户需要 SERP 结果、需要 URL 以进行抓取,或希望进行语义网络发现并可选获取页面内容时使用。一旦选定目标 URL,则转交给 `scrape`;当用户需要来自已知平台的结构化数据时,则转交给 `data-feeds`。需要 Bright Data CLI;主动引导安装和登录(如果缺失)。
Bright Data — 搜索
在网络上查找内容。此技能包含两个命令:
bdata search— 经典关键词 SERP(Google/Bing/Yandex)。最适合用于“关键词 X 的排名是什么”。bdata discover— 基于 AI 意图排序的发现,可选包含页面内容。最适合用于“关于主题 Y 且符合意图 Z 的页面”。
对于来自已知平台(Amazon、LinkedIn、TikTok 等)的结构化数据,请停止并使用 data-feeds。
设置检查(先运行)
if ! command -v bdata >/dev/null 2>&1; then
echo "bdata CLI 未安装 — 请参阅 bright-data-best-practices/references/cli-setup.md"
elif ! bdata zones >/dev/null 2>&1; then
echo "bdata 未认证 — 运行: bdata login (或: bdata login --device 用于 SSH)"
fi
如果任一检查失败,则停止并跳转到 skills/bright-data-best-practices/references/cli-setup.md。
选择路径
| 情况 | 操作 |
|---|---|
| 单个关键词查询,仅需 SERP | bdata search "<query>" --engine google --json --pretty |
| 分页 SERP(更多结果) | 循环 --page 0、--page 1……(从 0 开始) |
| 多个查询 | 对查询文件进行 shell 循环 |
| 意图排序/语义(非关键词) | bdata discover "<query>" --intent "<intent>" --num-results 20 |
| 一次获取结果和页面正文 | bdata discover ... --include-content |
| 新闻/图片/购物 SERP | bdata search "<query>" --type news(或 images、shopping) |
| 需要 Amazon/LinkedIn/TikTok/… 的结构化数据 | 停止 — 转交给 data-feeds |
| 有 URL,需要内容 | 转交给 scrape |
操作
核心命令:
# Google SERP,结构化 JSON
bdata search "site:example.com privacy policy" --engine google --json --pretty
# 本地化 Bing(德语结果,德语语言)
bdata search "datenschutz" --engine bing --country de --language de --json
# 第二页结果(从 0 开始)
bdata search "machine learning papers" --page 1 --json
# 移动端 SERP(排名与桌面端不同)
bdata search "best coffee shops" --device mobile --json
# 新闻垂直领域
bdata search "openai" --type news --json --pretty
# 意图排序发现
bdata discover "enterprise LLM platforms" \
--intent "vendor pages with pricing" \
--num-results 15 --json
# 发现并包含页面内容(Markdown 格式)
bdata discover "webhook best practices" \
--include-content --num-results 10 -o results.json
# 按日期过滤的发现
bdata discover "react server components" \
--start-date 2025-01-01 --end-date 2025-12-31 --num-results 20
完整标志参考:references/flags.md。
search 与 discover — 选择正确的命令
| 您想要 | 使用 |
|---|---|
| “Google 对这个确切关键词的排名是什么” | search |
| “符合此含义/意图的页面” | discover |
| “新闻/图片/购物垂直领域 SERP” | search --type <vertical> |
| “一次调用获取结果和页面正文” | discover --include-content |
| “跨查询去重/语义排序” | discover |
验证检查
- JSON 解析正常:
jq . <output>返回 0。 - 结果数组非空 — 如果为空,则查询确实无结果;放宽查询条件并重新运行。不要在没有告知用户的情况下声称空结果成功。
- 必需字段存在:
search:结果位于.organic[];每个结果包含title+linkdiscover:结果位于.results[];每个结果包含title+link;如果使用--include-content,还包含content
- 对于
discover --include-content:content字段中不得出现阻止页面签名(与 scrape 相同列表,不区分大小写):Access DeniedJust a momentAttention RequiredChecking your browsercaptchacf-browser-verificationcloudflare(且总正文小于 2KB)
- 地理合理性: 如果用户期望特定国家的结果,检查顶部结果的 TLD/语言。如果本地化错误,使用显式的
--country和--language重新运行。
红旗
- 使用
search从 Amazon、LinkedIn、TikTok 等获取内容,而data-feeds一次调用即可返回干净的结构化数据。 - 盲目抓取每个 SERP 结果 — 先过滤(域名白名单、标题中的关键词、相关性启发式)。
- 混淆
search(关键词)和discover(语义)。它们回答不同的问题。 - 在抓取前未对多个查询的结果集进行 URL 去重。
- 假设 SERP 顺序是通用的 — 它因地理位置和设备而异。始终显式设置
--country和--device以确保可重复性。 - 将
--page用作结果计数 — 它是页面索引,而非限制。每页返回约 10 个结果。 - 假设 SERP 结果位于
.results[]— 对于bdata search,它们位于.organic[]。(Discover 使用.results[]。) - 在
discover上硬编码--num-results 100,而未意识到管道会轮询直到找到那么多结果;可能很慢。
参考
references/flags.md—search和discover的完整标志及使用说明。references/patterns.md— 多查询去重、SERP → 过滤 → 抓取管道、search与discover决策、传统curl回退、共享验证清单。references/examples.md— (1) 单个 Google 查询,(2) 本地化 Bing,(3) 批量查询 + 去重为 URL 列表,(4)discover --include-content端到端。






