pm-search について
pm-searchは、プロダクトマネージャー向けに市場調査、競合分析、業界データ、評判調査、コンプライアンス確認を支援するスキルです。AnySearch、Exa MCP、WebSearchの順で検索手段を選び、複数分野の調査を並列実行してレポートにまとめられます。
主な機能
- 015種類のプロダクト調査
- 02優先順位に沿った検索手段の選択
- 03検索結果の全文抽出
- 04並列調査とレポート統合
- 05保存前のパスと書き込み方法の確認
活用シーン
- 01市場規模、トレンド、ユーザー像の調査
- 02競合の機能や価格の比較
- 03業界データや評判の収集
- 04業界規制やコンプライアンス要件の確認
MCP 対応
AnySearchが利用できない場合の検索手段としてExa MCPを使い、Exa MCPも使えない場合はWebSearchに切り替えます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ konglong87/ superpm --skill pm-searchインストール後、Claude Code で/pm-searchを入力して読み込まれたか確認します。
詳細
Preamble (run first)
# 自动发现 AnySearch CLI 安装位置
# 支持 Claude Code / OpenCode / OpenClaw / Cursor / pip install / 手动克隆等多种安装方式
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
# pip install 方式
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
# which 方式
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 ""
写入时边界
只讨论时不写文件,启动检查不创建目录。用户要求保存产物时,先确认当前产品、精确输出路径及已有文件的覆盖/追加选择;确认后仅在实际 Write 前创建该输出文件的父目录。完整安装可参见 skills/_shared/artifact-policy.md,单独安装本 skill 也按本段执行。
搜索工具优先级(核心规则)
所有搜索必须按以下优先级选择工具,不得跳级:
| 优先级 | 工具 | 适用场景 | 调用方式 |
|---|---|---|---|
| 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 工具 |
跨 Agent 交互规则
当流程要求与用户交互时:
- 如果当前环境支持 AskUserQuestion,使用 AskUserQuestion(最佳体验)。
- 如果当前环境不支持 AskUserQuestion,必须用普通聊天消息提出同样问题。
- 一次只问一个问题。
- 提问后必须停止当前回合,等待用户回答(STOP and WAIT)。
- 不得在用户回答前生成文档、写入 docs。
- 已有 docs 文件不能替代本轮用户回答。
执行流程
步骤 0: 参数解析(自动路由)
如果调用时携带 --type=xxx 参数(如 /pm-search --type=competitor),直接映射到对应搜索类型,跳过步骤 1 的交互选择:
| 参数 | 搜索类型 | 执行路径 |
|---|---|---|
--type=market | 市场调研 | 步骤 2A - 市场调研 |
--type=competitor | 竞品分析 | 步骤 2A - 竞品分析 |
--type=data | 行业数据 | 步骤 2A - 行业数据 |
--type=opinion | 舆情监控 | 步骤 2A - 舆情监控 |
--type=legal | 合规检查 | 步骤 2A - 合规检查 |
--type=all | 综合搜索 | 步骤 2B - 综合并发搜索 |
解析到类型后,直接跳转对应执行路径,无需询问用户。
如果 --type 值不在上述映射中,视为未知参数,降级到步骤 1 的交互选择。
注意:如果当前对话中用户未明确提及产品/行业领域,应先询问确认后再执行搜索。
如果未携带 --type 参数(用户直接输入 /pm-search 或自然语言触发),继续步骤 1 的交互选择。
步骤 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 と 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 プロンプトテンプレート
市場調査 Subagent プロンプト
你是市场调研专家。执行以下任务:
【搜索工具优先级 - 必须遵守】
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 - 市場調査をより効率的かつ包括的に 🔍
出力品質の比較
✅ 良い例:
- 有数据引用:「根据 Q4 数据,留存率从 35% 降至 28%」
- 有验证来源:「数据来源:Google Analytics, 2025-12-01」
- 有明确建议:「建议将新手引导步骤从 5 步减少至 3 步」
❌ 悪い例:
- 模糊结论:「数据表明留存率有所下降」
- 无来源:「根据经验,这个功能很重要」
- 没有行动建议:「留存是个问题」
よくある誤り / Red Flags — STOP
以下の状況が発生した場合は、直ちに停止して手順を見直してください:
| 誤り | 正しい対応 |
|---|---|
| 「はずです」「おそらく」「~のようです」を結論に使う | 実際のデータと検証に基づく必要があります |
| チェックを実行せずに完了したと主張する | まず検証し、その後に報告します |
| 時間がないことを理由に重要な手順を省略する | 例外はありません。時間がないときこそ厳密に進めます |
| 「今回は問題ないはず」と考える | 毎回、改めて検証する必要があります |
| まず AnySearch を試さず、直接 WebSearch を使う | 優先順位に従ってフォールバックする必要があります。手順を飛ばしてはいけません |
| anysearch_cli.py のパスを固定する | Preamble が自動的に検出します。subagent は一般的なパスの一覧から自分で場所を特定します |
成果物の品質チェック / Verification Checklist
- 前提条件を満たしている(入力ドキュメント/データを収集済み)
- 重要な手順をすべて実行済み
- 出力ドキュメントを
docs/ディレクトリに生成済み - すべての判断にデータ/証拠の裏付けがある
- 検索ツールを優先順位に従って使用済み(AnySearch → Exa MCP → WebSearch)
- 次のステップとして 2~3 個の skill を推奨済み
⚠️ いずれかの項目が未達成の場合 → 完了とする前に補完してください。