Install
openclaw skills install @pangolinfo/pangolinfo-ai-serpUse when: 用户要"Google 搜一下" / "看 AI Overview / SGE 怎么说" / "抓搜索结果带引文来源" / "监控某关键词的 SERP" / "做站外需求/舆情调研" / "Reddit/Quora 上大家怎么吐槽 X" / "我的内容会不会被 AI 搜索引用" / "compare A vs B 的热度趋势" / "search Google for X" / "AI mode 多轮追问". Covers: 程序化抓 Google SERP + AI Overviews(SGE),两种模式 overview / ai_mode(多轮 followups),可选截图;外加 Google Trends 关键词热度对比(时间序列 + 地区热力 + Breakout 上升词)。给 Agent 做"消除幻觉的实时联网感知层",引文可回溯。 NOT for: Amazon 站内搜索(用 pangolinfo-amazon-scraper 的 search_amazon)/ 深爬某网站内页(本 skill 只做 Google SERP)/ Amazon 类目利基筛选(用 pangolinfo-amazon-niche)。
openclaw skills install @pangolinfo/pangolinfo-ai-serp跑前必读 / Read first: 本文件末尾《核心规则 / Core Rules》章节(鉴权、双档时效 R-4、错误处理 R-9、R-11 先查 capabilities)——已内联,自包含。 MCP-native skill:无本地脚本、无 Python、无 API key 环境变量。老
pangolinfo.py --mode用法已映射到 MCP tool。
✅ 触发场景 / Trigger:
❌ 不要用 / Do NOT use:
search_amazon(pangolinfo-amazon-scraper)。pangolinfo-amazon-niche。| 能力 / Capability | 老 pangolinfo.py 用法 | MCP tool |
|---|---|---|
| AI Mode 多轮搜索 | --mode ai-mode --follow-up ... | ai_search (mode: "ai_mode" + followups[]) |
| 标准 SERP + AI Overview | --mode serp | ai_search (mode: "overview") |
| 截图 | --screenshot | ai_search (screenshot: true) |
| 关键词热度 / 趋势对比 | (新增能力) | keyword_trends |
ai_search (overview)单次查询首选 overview(更便宜,~2 积点 / ~30s):
{ "name": "ai_search", "arguments": {
"query": "best AI agents 2026",
"mode": "overview",
"screenshot": false
}}
Extract: data.json.items[],每个 item 带 type:
type: "ai_overview" → items[].content[](AI 生成段落) + items[].references[]({title,url,domain} 引文来源)。type: "organic" → items[].{title,url,text}(自然结果)。type: "related_searches" → items[](相关搜索词)。data.results_num / data.ai_overview / data.screenshot(请求截图时)/ data.taskId。坑: AI Overview 不是每个查询都触发。缺失时优雅降级到 organic 结果,别编造(R-2)。
ai_search (ai_mode)⚠️ 预算 + 时效告知(R-4a / R-4d):
ai_mode慢(30-60s)。Fast 档禁用 ai_mode;只在用户明确要"深挖 / 多轮"时用,且先告知耗时。followups 强烈建议 ≤5,每多一个明显加时延。
{ "name": "ai_search", "arguments": {
"query": "python web frameworks",
"mode": "ai_mode",
"followups": ["compare flask vs django", "which is better for beginners"]
}}
Extract: 同 overview 的 data.json.items[] 结构,按每轮 followup 分解返回。
ai_search (overview)把 Google 高级搜索语法塞进 query 抓真实使用场景 / 痛点 / 商标冲突:
// 站外使用场景
{ "name": "ai_search", "arguments": {
"query": "intitle:\"<seed_keyword>\" (\"best for\" OR \"used for\") -site:amazon.com",
"mode": "overview"
}}
// 文字商标初筛(设计专利走 wipo_search USID,文字商标走这里)
{ "name": "ai_search", "arguments": {
"query": "\"<brand_or_word>\" trademark (USPTO OR \"registered\" OR \"™\" OR \"®\")",
"mode": "overview"
}}
Extract: AI Overview content[] + references[].url → 提炼 2-3 个站外信号。这是初步风险雷达,不是正式法律清关(R-8)。
keyword_trends{ "name": "keyword_trends", "arguments": {
"keywords": ["wireless earbuds", "bluetooth earbuds"],
"timeRange": "today 12-m",
"region": "US"
}}
Extract:
data.json.timelineData[] → 时间序列(最新值 vs N 月前的相对变化)。data.json.keywordsGeoData[] → 地区热力(哪些州/国热度高)。data.json.keywordsRankData[].rankList[].rankedKeyword[] → 上升 / Breakout 相关词(可回喂 search_amazon 或 filter_niches 探新机会)。硬规则: 一次最多 5 个 keywords;趋势是 0-100 相对值,不是绝对搜索量(绝对量去 filter_niches)。timeRange 常用 today 12-m(默认) / today 3-m / today 5-y / all;region 用 ISO 国家码或 WORLD。
[标题](url) 形式),不贴原始 JSON。ai_search mode=ai_mode —— 30-60s 超时效预算;Fast 档最多 1 次 overview(R-4a)。keyword_trends 的 0-100 值当绝对搜索量汇报 —— 它是相对热度。keyword_trends / >5 个 followups 给 ai_search —— 会拒/严重拖慢。pangolinfo_capabilities。以下规则对所有 Pangolinfo skill 通用。本文件已内联,单独加载即生效。
Pangolinfo 有两套独立的 key 注入路径,对应两种运行形态:
PANGOLINFO_API_KEY 读取 key。这是 skill 默认的 key 来源——由用户在运行环境里设好,AI 直接读、不要反复追问用户。--api-key=pgl_xxx / 同名 env PANGOLINFO_API_KEY / ~/.pangolinfo/config.json / hosted URL ?api_key=pgl_xxx 或 HTTP 头 Authorization: Bearer pgl_xxx)。两者互相独立:skill 侧改 env var 不会影响已连上的 MCP server,反之亦然。key 前缀均为 pgl_。
若 pangolinfo_capabilities 探针发现工具未注册,或任一 tool 直接返回 AUTH,说明 key 尚未配好。此时停止跑 SOP,引导用户:
pgl_ 开头;新用户有免费额度)。export PANGOLINFO_API_KEY="pgl_xxx"。~/.pangolinfo/config.json,或 MCP URL ?api_key=pgl_xxx,或头 Authorization: Bearer pgl_xxx。marketplaceId: "US" / site: "amz_us";US 邮编默认 "10041"(纽约)。除非用户明示其他站点。get_amazon_product.data.json[0].data.results[0].star)。第一次接入时调一次 pangolinfo_capabilities { detail: "summary" }(0 积点 / 2ms),拿到当前的 tool 清单 + workflows + tips。工具数量与名称会随版本变化,以本次返回为准,不要钉死数字、不要凭旧记忆调 tool。该调用同时是连接健康探针:工具未注册或返回 AUTH → 转 R-1 first-time setup。
每个 SOP 强制提供两档:
| 档位 | 触发条件 | 总耗时 | 总积点 | 总 tool 调用次数 |
|---|---|---|---|---|
| Fast | 默认 / 用户没明说"详细/深度/完整报告" | ≤ 90 秒 | ≤ 8 积点 | ≤ 6 次 |
| Full | 用户明说"详细 / 完整 / 深度 / 全面" | ≤ 5 分钟 | ≤ 30 积点 | ≤ 15 次 |
跑 Fast 档时禁止调下列慢/贵 tool:
get_amazon_reviews(5pt/页 + 10s/次)ai_search mode='ai_mode'(30-60s)ai_search mode='overview' 最多 1 次跑 Full 档时各项上限:
get_amazon_reviews ≤ 3 个 ASIN × pageCount=1ai_search ai_mode ≤ 1 次,overview ≤ 2 次wipo_search ≤ 3 次独立的 tool 调用应在同一回合并发发送,但受 scrapeApi 速率限制约束。
pangolinfo_capabilities 不走后端,可任意并发search_amazon 会有至少 1 个返回业务码 9200 "Scrape failed: no content returned"| 总调用数 N | 节奏 |
|---|---|
| N ≤ 2 | 一回合 2 并发 |
| 3 ≤ N ≤ 6 | 分多回合:每回合 2 并发,回合之间间隔 ~1s |
| N ≥ 7 | 重新设计 SOP,先早返再决定是否继续 |
收到 [RATE_LIMIT] 错误:等 ~1s 重试该 1 个 tool(不要全部重试),其余已成功的别动。连续 2 次 RATE_LIMIT 或业务码 9200 说明 QPS 节流,降到每回合 1 并发(完全串行)。
任一步骤拿到"足够下结论"的数据后立即生成报告,不要为凑齐 SOP 强跑:
| 触发 | 立即返回 |
|---|---|
filter_niches 返回 0 条 | "无符合条件的 niche,建议放宽 X、Y 参数" + 给出参数建议清单 |
wipo_search 命中红线(status='ACT' 且 hol 是大公司) | 该方向淘汰,跳过后续单品深拆 |
| 用户主 ASIN 在 SERP Top 3 + 无新 BSR 异动 | 给"健康"判定,跳过评论挖掘 |
get_amazon_product upstream 404 ("url not found") | 告知 ASIN 失效,跳过后续 |
调下列 tool 前必须在用户消息里报"将花 X 积点 / 约 Y 秒",让用户有机会取消:
get_amazon_reviews(5pt/页)ai_search ai_mode(30-60s)AI 的回答里不要贴原始 tool 返回。结构化呈现:
用户问简单单步查询时不要强行跑完整 SOP,直接调对应单 tool 给结果:
| 用户说 | 直接调 | 不要跑 SOP |
|---|---|---|
| "查 ASIN B0XXX" | get_amazon_product | ❌ product-discovery |
| "X 类目 best sellers" | list_bestsellers | ❌ |
| "Apple 在美国的专利" | wipo_search source=USID hol='Apple' | ❌ ip-clearance SOP |
| "wireless earbuds 热度趋势" | keyword_trends | ❌ |
| "B0XXX 的差评" | get_amazon_reviews filterByStar=critical pageCount=1 | ❌ amazon-listing-optimization |
不主动提 Keepa / SellerSprite / Helium 10 / Jungle Scout 等竞品。用户问起再说"本工具不直接提供 X 能力,可考虑 ..."。
MCP server 已把每个错误渲染成结构化三行([CODE] + 可否重试 + 用户动作)。AI 的职责是按 CODE 语义正确反应,别瞎重试、别原地打转。6 类错误:
| Code | 可否重试 | 处理 |
|---|---|---|
AUTH | ❌ terminal | key 无效/缺失/过期。用同一个 key 重试一定还失败 → 绝不重试。停止 SOP,按 R-1 first-time setup 引导用户:复制正确 key(https://www.pangolinfo.com)→ 写进 env PANGOLINFO_API_KEY 或 MCP 配置 → 重启/重连(不热加载)。AI 无法替用户改配置或重连。⚠️ 坑:invalid key 在后端是 bizCode 1004(不是 HTTP 401),别因为"不是 401"就误判成别的错。 |
QUOTA | ❌ terminal | 积分不足 / 套餐过期,重试无用。提示用户去 https://www.pangolinfo.com 充值或升级,停止本次 SOP。 |
BAD_INPUT | ❌ terminal | 参数有误,重试相同参数无用。检查参数名/值(marketplaceId 非 marketplace_id、ASIN、zipcode、parserName 等,见 R-10),修正后才重试。 |
RATE_LIMIT | ✅ 临时 | 含业务码 9200("no content")/4029/4030。等 ~1-5s 重试该一个请求;同时降回合并发到 1。连续 2 次仍失败则跳过本步。 |
SERVER | ✅ 临时 | 服务端临时错误(含 9100/9101)。重试 1 次;仍失败告知用户跳过本步,继续 SOP。 |
NETWORK | ✅ 临时 | 网络异常。提示用户检查到 www.pangolinfo.com 的连接后重试。 |
总则:terminal 类(AUTH/QUOTA/BAD_INPUT)重试是浪费,直接停或修参数;transient 类(RATE_LIMIT/SERVER/NETWORK)才重试,且只重试失败的那一个、别全批重发。
| ❌ 错(直觉常写的) | ✅ 对(真实字段) |
|---|---|
marketplace_id | marketplaceId (值是 ISO 站点码 "US"/"UK"/"DE",不是 Amazon merchant ID ATVPDKIKX0DER) |
niche_title | nicheTitle |
search_volume_t90_min | searchVolumeT90Min |
top5_brands_click_share_max | top5ProductsClickShareT360Max(products 不是 brands) |
return_rate_t360_max | returnRateT360Max |
monthly_sales_min | (不存在)→ 用 minimumUnitsSoldT360 |
opportunity_score | (不存在)→ 自己算 |
category_id | browseNodeId(amzscope 系列) |
categories[] | data.items.data[] |
products[].organic_rank | results[].rank |
products[].sp_rank | results[].sponsored |
negative_reviews_top5 | 不存在 → 用 get_amazon_reviews filterByStar='critical' |
positive_reviews_top5 | 不存在 → 用 get_amazon_reviews filterByStar='positive' |
bullet_points | features[] |
a_plus_modules | productDescription[] |
selling_rank | bestSellersRankItems[] |
category_path | breadCrumbs |
buy_box_seller | seller.name |
search_amazon 抓 BSR | ❌ → 用 list_bestsellers |
search_amazon 抓 New Releases | ❌ → 用 list_new_releases |
search_amazon 传 limit | ❌ 没有,分页用 page |
search_amazon_alexa 传 marketplaceId | ❌ 不支持,固定 amz_us;只接受 prompts: string[] + 可选 screenshot |
bsr_category_path | ❌ 不存在;用 bestSellersRankItems[] 数组 + category_id 顶层字段 |
monthlySoldVolume | ❌ 不存在;search_amazon 用 sales 字段(live 月销字符串) |
完整字段对照见 MCP 各 tool 的 Returns: 段落,或调 pangolinfo_capabilities { detail: "full" }。
在告诉用户"这个数据拿不到""这个是付费功能""只能估算"之前,必须先调 pangolinfo_capabilities { detail: "summary" }(免费,0 积点)或翻看具体 tool 的 description / inputSchema 确认。Pangolinfo MCP 实际能筛/能返回的字段超出大多数 AI 训练时的常识范围,包括但不限于:
filter_niches.returnRateT360Max 筛选 + 返回字段 returnRateT360 (具体数值)filter_categories.netShippedGmsSum + niche 维度可用 unitSoldSum × avgPrice 推算top5ProductsClickShareT360 / top20BrandsClickShareT360newBrandCountT90 / newProductsLaunchedT180avgAdSpendPerClick凭直觉先说"做不到"再实际能查到 → 用户直接失去信任。先查 capabilities,再下结论。
下面是所有 Pangolinfo MCP tool 的通用防呆清单,每条都对应一个真实会被后端拒/扣冤枉积点的坑。调任何 tool 前对照一遍。
| 坑 | ❌ 错 | ✅ 对 |
|---|---|---|
| 市场码 | marketplaceId="ATVPDKIKX0DER"(merchant id) | ISO 站点码 "US"/"UK"/"DE" |
| 邮编跨国 | amz_jp + 美国邮编 10001 | 邮编必须匹配 site 国家(amz_us→美国邮编 / amz_jp→日本邮编);不确定就别传,后端按国家随机挑 |
| 关键词参数 | keywords(复数) | search_amazon.keyword(单数,REQUIRED) |
| 分页 | search_amazon 传 limit | 用 page(无 limit 参数) |
| filter 系列 size | size: 50 | filter_categories/filter_niches 的 size/page 后端硬上限 10(filter_niches 默认 3),超出被截 |
| filter 必填 | filter_categories 漏 timeRange/sampleScope | 二者必填(常用 l7d + all_asin);filter_niches 必填 marketplaceId |
| filter_niches 入参 | 传 categoryId | 只认 nicheId/nicheTitle;0-1 小数字段(top5ProductsClickShareT360Max/returnRateT360Max)别传整数 |
| alexa | search_amazon_alexa 传 marketplaceId | 固定 amz_us,只接受 prompts: string[] + 可选 screenshot;强制每次 1 条 prompt(6 积点/条,60-90s,多条线性叠加可能 >200s) |
| scrape_url | 同时传 / 都不传 content 和 url | 二选一(互斥);筛选/排序/翻页只能走 url 模式;parserName 必须匹配页面类型 |
| wipo_search | source="USTM" 查文字商标 / 漏 source | source 必填;文字商标走 ai_search,设计专利用 source="USID";CNID + hol/prod 模糊查必须再配 id/rd/status/lcs 之一(否则后端拒全表扫);USID 无 status 字段 |
| ai_search | 一次塞 >5 个 followups | query 必填(min 1);followups ≤5;Fast 档禁 ai_mode(30-60s) |
| keyword_trends | 把 0-100 当绝对搜索量 / 传 1 个词 | 那是相对热度;一次 ≤5 词;绝对量去 filter_niches |
| 返回情形 | 防呆动作 |
|---|---|
results=[] / recsList 空 / niche 0 条 | 空结果不一定扣积点但 search 系列扣;按各 SOP 早返(剥词重试 / 放宽筛选 / 换站点),别空手编数据(R-2) |
业务码 9200 "no content"(含 Akamai 挑战) | 归 SERVER/RATE_LIMIT,可重试:等 1-5s 重试该一个,降并发到 1;连续 2 次失败跳过本步 |
recsList(bestsellers/new_releases) | 它是 JSON 字符串数组,必须二次 JSON.parse,别当普通数组用 |
get_amazon_product 头部自营品 PDP 退化 | bestSellersRankItems=[]+brand=""+category_id="" → 不阻塞,从 search_amazon 的 title/price/star/rating/sales/badge 兜底 |
twentyFourHourOldSalesRank/percentageChange 空串 | 后端没抓到 24h delta,不可依赖,改看 BSR 绝对值 |
| AI Overview 未触发 | SGE 不是每次都有,缺失时降级 organic 结果,别硬编引文 |
| upstream 404 / "url not found" | ASIN/页面失效,告知用户跳过,别重试 |
PANGOLINFO_API_KEY;MCP 侧走 CLI/config/URL(?api_key=pgl_xxx 或 Authorization: Bearer pgl_xxx)。前缀均 pgl_。https://www.pangolinfo.com 拿 key → 写 env/config → 重启/重连(不热加载;agent 无法替用户改配置或重连)。详见 R-1 / R-9。get_amazon_product;类目榜→list_bestsellers;趋势→keyword_trends;差评→get_amazon_reviews filterByStar=critical。search_amazon(用 list_bestsellers/list_new_releases);要 niche 别用 filter_categories(用 filter_niches);要具体商品别用 filter 系列(用 list_category_products/search_amazon)。amazon-product-explorer;日常监控→amazon-daily-competitor-radar;写 Listing→amazon-listing-optimization;站内抓取→pangolinfo-amazon-scraper;Google/SGE→pangolinfo-ai-serp;类目利基→pangolinfo-amazon-niche。