| name | pm-search |
| version | 2.1.1 |
| description | Use when: 需要进行市场调研数据收集、竞品信息采集、行业舆情监控、合规政策检查
Do NOT use when: 已有完整数据无需补充、仅需内部数据分析无需外部信息
|
| allowed-tools | ["Read","Write","AskUserQuestion","Agent","Bash","WebSearch","mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"] |
Preamble (run first)
bash "$(dirname "${BASH_SOURCE[0]}")"/check-update.sh 2>/dev/null || true
mkdir -p docs/01-需求调研
ANYSEARCH_CLI=""
for candidate in \
"$HOME/.claude/skills/anysearch/scripts/anysearch_cli.py" \
"$HOME/.opencode/skills/anysearch/scripts/anysearch_cli.py" \
"$HOME/.openclaw/skills/anysearch/scripts/anysearch_cli.py" \
"$HOME/.cursor/skills/anysearch/scripts/anysearch_cli.py" \
"$HOME/skills/anysearch/scripts/anysearch_cli.py" \
"$HOME/.anysearch/scripts/anysearch_cli.py" \
"/usr/local/bin/anysearch_cli.py" \
"$HOME/bin/anysearch_cli.py"; do
if [ -f "$candidate" ]; then
ANYSEARCH_CLI="$candidate"
break
fi
done
if [ -z "$ANYSEARCH_CLI" ]; then
PIP_LOCATION=$(python3 -c "import importlib.util; spec=importlib.util.find_spec('anysearch'); print(spec.submodule_search_locations[0] if spec and spec.submodule_search_locations else '')" 2>/dev/null)
if [ -n "$PIP_LOCATION" ] && [ -f "$PIP_LOCATION/scripts/anysearch_cli.py" ]; then
ANYSEARCH_CLI="$PIP_LOCATION/scripts/anysearch_cli.py"
fi
fi
if [ -z "$ANYSEARCH_CLI" ]; then
WHICH_CLI=$(which anysearch_cli.py 2>/dev/null)
if [ -n "$WHICH_CLI" ] && [ -f "$WHICH_CLI" ]; then
ANYSEARCH_CLI="$WHICH_CLI"
fi
fi
echo "🔍 PM-Search V2.1 - 联网搜索整合工具"
echo "搜索优先级:AnySearch → Exa MCP → WebSearch"
echo "支持并发搜索:市场调研 | 竞品分析 | 行业数据 | 舆情监控 | 合规检查"
if [ -n "$ANYSEARCH_CLI" ]; then
echo "✅ AnySearch: $ANYSEARCH_CLI"
else
echo "⚠️ AnySearch 未安装,将自动降级到 Exa MCP / WebSearch"
echo " 安装: git clone https://github.com/konglong87/anysearch.git ~/.claude/skills/anysearch"
fi
echo ""
搜索工具优先级(核心规则)
所有搜索必须按以下优先级选择工具,不得跳级:
| 优先级 | 工具 | 适用场景 | 调用方式 |
|---|
| 1(首选) | AnySearch | 中文搜索、垂直领域、批量搜索、全文提取 | Bash 调用 anysearch_cli.py(路径由 Preamble 自动发现,见上方输出) |
| 2(备选) | Exa MCP | 英文/代码/公司搜索、语义搜索 | mcp__exa__web_search_exa 工具 |
| 3(降级) | WebSearch | 仅当 AnySearch 和 Exa 都不可用时 | WebSearch 工具 |
AnySearch 调用规范:
- 搜索:
python3 <anysearch_cli路径> search "查询词" --max_results 5
- 垂直域搜索:
python3 <anysearch_cli路径> search "查询词" --domain finance --sub_domain finance.cn_stock
- 全文提取:
python3 <anysearch_cli路径> extract "URL"
- 批量搜索:
python3 <anysearch_cli路径> batch_search --query "q1" --query "q2"
- 列出子域:
python3 <anysearch_cli路径> list_domains --domain finance
AnySearch 垂直域配置
垂直域使用优先级:
- 先查完整域映射 — Read
skills/_shared/anysearch-pm-domains.md,按当前 PM 场景找推荐垂直域组合
- 列出可用子域 —
python3 <anysearch_cli路径> list_domains --domain {domain} 查看域的最新子域和参数 schema
- 执行垂直搜索 —
python3 <anysearch_cli路径> search "查询词" --max_results 5 --domain {domain} --sub_domain {sub_domain}
pm-search 五种搜索类型的默认垂直域:
| 搜索类型 | 推荐垂直域 | 子域 | 适用原因 |
|---|
| 市场调研 | finance | finance.us_stock, finance.cn_stock, finance.news | 上市对标公司数据、行业新闻 |
| 竞品分析 | business + finance | business.company, finance.cn_stock | 公司注册信息、财务数据 |
| 行业数据 | finance | finance.news, finance.cn_stock | 行业新闻、市场规模 |
| 舆情监控 | 通用搜索 | 无垂直域 | 社交媒体、用户评价覆盖广 |
| 合规检查 | legal | legal.statute, legal.case | 法律法规、司法案例 |
💡 完整 17 域 × 37 技能 × 11 行业 PM 场景的垂直域映射见 skills/_shared/anysearch-pm-domains.md。
降级判断规则
- AnySearch 不可用:脚本未安装、API key 缺失、网络超时 → 降级到 Exa MCP
- Exa MCP 不可用:工具调用返回错误 → 降级到 WebSearch
- 使用 WebSearch 时:在报告中标注「⚠️ 数据来源:WebSearch(降级模式),建议配置 AnySearch 以提升中文搜索质量」
全文提取优先级
| 优先级 | 工具 | 调用方式 |
|---|
| 1 | AnySearch extract | python3 <anysearch_cli路径> extract "URL" |
| 2 | Exa MCP fetch | mcp__exa__web_fetch_exa 工具 |
| 3 | WebFetch | WebFetch 工具 |
执行流程
步骤 1: 确定搜索类型(主 agent - 用户交互)
使用 AskUserQuestion 询问:
🔍 联网搜索整合工具 - 选择搜索类型
请选择您需要进行的研究类型(可多选):
A) 市场调研 - 市场规模、趋势、用户画像
B) 竞品分析 - 竞品功能、定价、策略
C) 行业数据 - 行业报告、统计数据
D) 舆情监控 - 用户评价、媒体报道
E) 合规检查 - 政策法规、行业标准
F) 综合搜索 - 以上全部(并发执行)
G) 其他(请手动输入)
用户选择后,根据选择执行不同流程。
Subagent 并发搜索架构
步骤 2A: 单一类型搜索(主 agent 直接执行)
如果用户选择单个搜索类型,直接执行:
⚠️ 所有搜索必须遵循「搜索工具优先级」规则,首选 AnySearch,降级到 Exa MCP,最后才用 WebSearch。
市场调研
按搜索优先级执行:
搜索关键词:"{产品领域} 市场规模 2026"
搜索关键词:"{产品领域} 市场趋势"
搜索关键词:"{产品领域} 用户画像"
首选 AnySearch(带垂直域 --domain finance --sub_domain finance.cn_stock),
调用方式参考「搜索工具优先级」章节。失败则降级到 Exa MCP,最后才用 WebSearch。
数据源优先级:
1. 艾瑞咨询、易观分析、QuestMobile(权威报告)
2. 36氪、虎嗅(行业媒体)
3. 工信部、网信办(政策法规)
整合结果 → 生成:docs/01-需求调研/市场调研报告.md
竞品分析
按搜索优先级执行:
搜索关键词:"{产品领域} 主要竞品"
搜索关键词:"{竞品名称} 产品功能"
搜索关键词:"{竞品名称} 定价策略"
首选 AnySearch(带垂直域 --domain finance --sub_domain finance.cn_stock),
失败则降级到 Exa MCP,最后才用 WebSearch。
数据源:
- 七麦数据、蝉妈妈(应用数据)
- 官网、App Store、产品评测
整合结果 → 生成:docs/01-需求调研/竞品分析报告.md
行业数据
按搜索优先级执行:
搜索关键词:"{行业} 行业报告 2026"
搜索关键词:"{行业} 统计数据"
搜索关键词:"{行业} 发展趋势"
首选 AnySearch(带垂直域 --domain finance --sub_domain finance.cn_stock),
失败则降级到 Exa MCP,最后才用 WebSearch。
数据源:
- 国家统计局
- 行业协会官网
- 咨询公司报告
整合结果 → 生成:docs/01-需求调研/行业数据报告.md
舆情监控
按搜索优先级执行:
搜索关键词:"{产品/品牌} 用户评价"
搜索关键词:"{产品/品牌} 媒体报道"
搜索关键词:"{产品/品牌} 微博热搜"
首选 AnySearch(通用搜索,无垂直域),
失败则降级到 Exa MCP,最后才用 WebSearch。
数据源:
- 微博、知乎、小红书(用户评价)
- 新闻媒体(报道)
- 黑猫投诉(投诉信息)
整合结果 → 生成:docs/01-需求调研/舆情监控报告.md
合规检查
按搜索优先级执行:
搜索关键词:"{行业} 政策法规 2026"
搜索关键词:"{行业} 监管要求"
搜索关键词:"{行业} 合规标准"
首选 AnySearch(通用搜索,无垂直域),
失败则降级到 Exa MCP,最后才用 WebSearch。
数据源:
- 政府官网(工信部、网信办、市场监管总局)
- 法律法规数据库
- 行业协会合规指南
整合结果 → 生成:docs/01-需求调研/合规检查报告.md
步骤 2B: 综合并发搜索(Subagent 并行执行)
如果用户选择"综合搜索"或选择多个类型,使用 Agent tool 并发执行:
⚠️ 每个 subagent prompt 必须包含「搜索工具优先级」自发现指令(subagent 看不到主 agent 的 Preamble)。
搜索工具优先级块(嵌入每个 subagent prompt)
以下块必须原样嵌入每个 subagent 的 prompt 开头:
【搜索工具优先级 - 必须遵守】
1. 首选 AnySearch:先定位 anysearch_cli.py。
常见安装路径(按顺序尝试):
~/.claude/skills/anysearch/scripts/anysearch_cli.py
~/.opencode/skills/anysearch/scripts/anysearch_cli.py
~/.openclaw/skills/anysearch/scripts/anysearch_cli.py
~/.cursor/skills/anysearch/scripts/anysearch_cli.py
~/.anysearch/scripts/anysearch_cli.py
$(which anysearch_cli.py 2>/dev/null)
或 pip show anysearch 查找安装位置。
找到后 Bash 调用 python3 <路径> search "查询词" --max_results 5。
市场/竞品/行业类搜索加 --domain finance --sub_domain finance.cn_stock。
2. AnySearch 不可用(脚本不存在/API报错/超时)→ 降级到 mcp__exa__web_search_exa
3. Exa 不可用 → 降级到 WebSearch,并在输出中标注「⚠️ 降级模式」
执行命令
使用 Agent tool 并发派发 5 个 subagent:
**Subagent 1: Market Research**
- type: "general-purpose"
- prompt: "【搜索工具优先级块】+ 执行市场调研搜索,产品领域:{产品领域},搜索市场规模/趋势/用户画像,输出到 docs/01-需求调研/market-research.md"
**Subagent 2: Competitor Analysis**
- type: "general-purpose"
- prompt: "【搜索工具优先级块】+ 执行竞品分析搜索,产品领域:{产品领域},搜索主要竞品/功能/定价,输出到 docs/01-需求调研/competitor-analysis.md"
**Subagent 3: Industry Data**
- type: "general-purpose"
- prompt: "【搜索工具优先级块】+ 执行行业数据搜索,行业:{行业},搜索行业报告/统计数据/趋势,输出到 docs/01-需求调研/industry-data.md"
**Subagent 4: Public Opinion**
- type: "general-purpose"
- prompt: "【搜索工具优先级块】+ 执行舆情监控搜索,关键词:{产品/品牌},搜索用户评价/媒体报道/社交媒体,输出到 docs/01-需求调研/public-opinion.md"
**Subagent 5: Compliance Check**
- type: "general-purpose"
- prompt: "【搜索工具优先级块】+ 执行合规检查搜索,行业:{行业},搜索政策法规/监管要求/合规标准,输出到 docs/01-需求调研/compliance-check.md"
**并发执行:在单个消息中调用 5 次 Agent tool**
Agent 调用示例
**在一条消息中并发调用:**
[Agent tool call 1 - Market Research]
[Agent tool call 2 - Competitor Analysis]
[Agent tool call 3 - Industry Data]
[Agent tool call 4 - Public Opinion]
[Agent tool call 5 - Compliance Check]
**等待所有 subagent 完成**
步骤 3: 主 Agent 整合结果
读取所有 subagent 生成的报告:
read docs/01-需求调研/market-research.md
read docs/01-需求调研/competitor-analysis.md
read docs/01-需求调研/industry-data.md
read docs/01-需求调研/public-opinion.md
read docs/01-需求调研/compliance-check.md
整合成综合报告:
使用 Write 生成:docs/01-需求调研/市场调研报告.md
报告结构:
# 综合市场调研报告
## 一、市场规模与趋势
[来自 market-research.md]
## 二、竞品分析
[来自 competitor-analysis.md]
## 三、行业数据
[来自 industry-data.md]
## 四、舆情监控
[来自 public-opinion.md]
## 五、合规检查
[来自 compliance-check.md]
## 六、综合结论与建议
### 市场机会
- [综合分析]
### 风险提示
- [综合分析]
### 下一步建议
1. 执行 /pm-priority - 需求优先级排序
2. 执行 /pm-mvp - MVP 方案规划
3. 执行 /pm-docs - 文档生成
---
**生成时间**: 2026-XX-XX
**数据来源**: [标注实际使用的搜索工具:AnySearch / Exa MCP / WebSearch]
性能对比
V1 vs V2.1 性能
| 指标 | V1(顺序执行) | V2.1(并发+优先级搜索) | 提升 |
|---|
| 执行时间 | ~10 分钟 | ~2.5 分钟 | 4x |
| 主 Agent 上下文 | ~50,000 tokens | ~10,000 tokens | 节省 80% |
| 搜索类型 | 1-5 个顺序 | 5 个并发 | - |
| 中文搜索质量 | WebSearch(差) | AnySearch(优) | ✅ |
| 报告质量 | 单一视角 | 多维度整合 | ✅ |
使用示例
示例 1: 单一搜索
用户: 我需要了解生鲜电商的市场规模
AI: 🎯 执行市场调研搜索
[AnySearch 搜索中... → 成功]
✅ 生成报告: docs/01-需求调研/市场调研报告.md
示例 2: AnySearch 降级场景
用户: 我需要了解生鲜电商的市场规模
AI: 🎯 执行市场调研搜索
[AnySearch 搜索中... → 未安装,降级]
[Exa MCP 搜索中... → 成功]
✅ 生成报告: docs/01-需求调研/市场调研报告.md
⚠️ 数据来源:Exa MCP(降级模式)
示例 3: 综合并发搜索
用户: 我想全面了解在线教育市场
AI: 🎯 执行综合并发搜索
[并发派发 5 个 subagent...]
⏳ Subagent 1: Market Research - 完成 ✅
⏳ Subagent 2: Competitor Analysis - 完成 ✅
⏳ Subagent 3: Industry Data - 完成 ✅
⏳ Subagent 4: Public Opinion - 完成 ✅
⏳ Subagent 5: Compliance Check - 完成 ✅
🔧 整合分析结果...
✅ 生成综合报告: docs/01-需求调研/市场调研报告.md
💡 建议下一步:
1. /pm-priority - 需求优先级排序
2. /pm-mvp - MVP 方案规划
Subagent Prompt 模板
Market Research Subagent Prompt
你是市场调研专家。执行以下任务:
【搜索工具优先级 - 必须遵守】
1. 首选 AnySearch:先定位 anysearch_cli.py。
常见安装路径(按顺序尝试):
~/.claude/skills/anysearch/scripts/anysearch_cli.py
~/.opencode/skills/anysearch/scripts/anysearch_cli.py
~/.openclaw/skills/anysearch/scripts/anysearch_cli.py
~/.cursor/skills/anysearch/scripts/anysearch_cli.py
~/.anysearch/scripts/anysearch_cli.py
$(which anysearch_cli.py 2>/dev/null)
或 pip show anysearch 查找安装位置。
找到后 Bash 调用 python3 <路径> search "查询词" --max_results 5。
市场调研类搜索加 --domain finance --sub_domain finance.cn_stock。
2. AnySearch 不可用 → 降级到 mcp__exa__web_search_exa
3. Exa 不可用 → 降级到 WebSearch,并在输出中标注「⚠️ 降级模式」
**目标**: 调研 {产品领域} 的市场规模、趋势、用户画像
**搜索策略**:
1. 市场规模:搜索 "{产品领域} 市场规模 2026"
2. 市场趋势:搜索 "{产品领域} 市场趋势"
3. 用户画像:搜索 "{产品领域} 用户画像"
**数据源优先级**:
- 艾瑞咨询、易观分析、QuestMobile(权威报告)
- 36氪、虎嗅(行业媒体)
- 工信部、网信办(政策法规)
**输出要求**:
生成结构化报告到:docs/01-需求调研/market-research.md
包含章节:
1. 市场规模(总量、增长率)
2. 市场趋势(发展动向)
3. 用户画像(目标用户特征)
4. 市场机会点
完成后立即返回结果。
注意事项
数据源可信度评估
高可信度:
- 政府官方数据
- 权威咨询公司报告(艾瑞、易观、麦肯锡)
- 行业协会统计
中可信度:
- 科技媒体报道(36氪、虎嗅)
- 应用数据平台(七麦数据、蝉妈妈)
低可信度:
搜索结果整合原则
- 交叉验证 - 同一数据点至少 2 个来源确认
- 时效性 - 优先使用 2026 年数据
- 权威性 - 政府数据 > 咨询公司 > 媒体报道
- 完整性 - 多维度覆盖,避免单一视角
下一步建议
完成市场调研后,推荐执行:
- /pm-priority - 需求优先级排序
- /pm-mvp - MVP 方案规划
- /pm-docs - 生成 PRD 文档
Super-PM - 让市场调研更高效、更全面 🔍
输出质量对比
✅ Good 示例:
- 有数据引用:「根据 Q4 数据,留存率从 35% 降至 28%」
- 有验证来源:「数据来源:Google Analytics, 2025-12-01」
- 有明确建议:「建议将新手引导步骤从 5 步减少至 3 步」
❌ Bad 示例:
- 模糊结论:「数据表明留存率有所下降」
- 无来源:「根据经验,这个功能很重要」
- 没有行动建议:「留存是个问题」
常见误区 / Red Flags — STOP
出现以下情况立即停止并回溯:
| 误区 | 正确做法 |
|---|
| 使用"应该"、"大概"、"看起来"做结论 | 必须基于实际数据和验证 |
| 未运行检查就声称已完成 | 先验证,再陈述 |
| 因时间紧迫跳过关键步骤 | 没有例外,时间紧更要严格 |
| "这次应该没问题"的想法 | 每次都要重新验证 |
| 直接用 WebSearch 而不先尝试 AnySearch | 必须按优先级降级,不得跳级 |
| 写死 anysearch_cli.py 的路径 | Preamble 已自动发现;subagent 按常见路径列表自行定位 |
产出质量检查 / Verification Checklist
⚠️ 任何一项未通过 → 补全后再标记完成。