pm-selfcheck
Use when: 需要检查super-pm skills健康状态、定期维护审计、验证元数据完整性 Do NOT use when: 正在使用某个功能skill、仅需执行产品管理任务
Use when: 需要进行市场调研数据收集、竞品信息采集、行业舆情监控、合规政策检查 Do NOT use when: 已有完整数据无需补充、仅需内部数据分析无需外部信息
$ npx -y skills add konglong87/superPM --skill pm-search --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/pm-searchContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when: 需要进行市场调研数据收集、竞品信息采集、行业舆情监控、合规政策检查 Do NOT use when: 已有完整数据无需补充、仅需内部数据分析无需外部信息
name: pm-search 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
bash "$(dirname "${BASH_SOURCE[0]}")/../../check-update.sh" 2>/dev/null || true
# 创建需求调研目录
mkdir -p docs/01-需求调研
# 自动发现 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 ""---
**所有搜索必须按以下优先级选择工具,不得跳级:**
| 优先级 | 工具 | 适用场景 | 调用方式 | |--------|------|---------|---------| | **1(首选)** | **AnySearch** | 中文搜索、垂直领域、批量搜索、全文提取 | Bash 调用 `anysearch_cli.py`(路径由 Preamble 自动发现,见上方输出) | | **2(备选)** | **Exa MCP** | 英文/代码/公司搜索、语义搜索 | `mcp__exa__web_search_exa` 工具 | | **3(降级)** | **WebSearch** | 仅当 AnySearch 和 Exa 都不可用时 | `WebSearch` 工具 |
**AnySearch 调用规范**:
**垂直域使用优先级**: 1. **先查完整域映射** — Read `skills/_shared/anysearch-pm-domains.md`,按当前 PM 场景找推荐垂直域组合 2. **列出可用子域** — `python3 <anysearch_cli路径> list_domains --domain {domain}` 查看域的最新子域和参数 schema 3. **执行垂直搜索** — `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`。
1. **AnySearch 不可用**:脚本未安装、API key 缺失、网络超时 → 降级到 Exa MCP 2. **Exa MCP 不可用**:工具调用返回错误 → 降级到 WebSearch 3. **使用 WebSearch 时**:在报告中标注「⚠️ 数据来源:WebSearch(降级模式),建议配置 AnySearch 以提升中文搜索质量」
| 优先级 | 工具 | 调用方式 | |--------|------|---------| | **1** | AnySearch extract | `python3 <anysearch_cli路径> extract "URL"` | | **2** | Exa MCP fetch | `mcp__exa__web_fetch_exa` 工具 | | **3** | WebFetch | `WebFetch` 工具 |
---
当流程要求与用户交互时:
1. 如果当前环境支持 AskUserQuestion,使用 AskUserQuestion(最佳体验)。 2. 如果当前环境不支持 AskUserQuestion,必须用普通聊天消息提出同样问题。 3. 一次只问一个问题。 4. 提问后必须停止当前回合,等待用户回答(STOP and WAIT)。 5. 不得在用户回答前生成文档、写入 docs。 6. 已有 docs 文件不能替代本轮用户回答。
---
如果调用时携带 `--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 的交互选择。
---
使用 AskUserQuestion 询问:
> 🔍 联网搜索整合工具 - 选择搜索类型 > > 请选择您需要进行的研究类型(可多选): > > A) 市场调研 - 市场规模、趋势、用户画像 > B) 竞品分析 - 竞品功能、定价、策略 > C) 行业数据 - 行业报告、统计数据 > D) 舆情监控 - 用户评价、媒体报道 > E) 合规检查 - 政策法规、行业标准 > F) 综合搜索 - 以上全部(并发执行) > G) 其他(请手动输入)
**用户选择后,根据选择执行不同流程。**
---
---
**如果用户选择单个搜索类型,直接执行:**
**⚠️ 所有搜索必须遵循「搜索工具优先级」规则,首选 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按搜索优先级执行: 搜索关键词
Repo: konglong87/superPM
Use when: 需要检查super-pm skills健康状态、定期维护审计、验证元数据完整性 Do NOT use when: 正在使用某个功能skill、仅需执行产品管理任务
Use when: 需要创意方案、探索产品方向、发散思维、本质问题分析 用户说"我想做一个XX""帮我规划XX产品""帮我设计一下需求" 用户给出新产品方向,但尚未完成本轮 brainstorm 交互确认 新产品从0到1的第一步 Do NOT use when: 用户明确说"跳过 brainstorm /…
Use when: 有初步需求清单需要细化细节、需明确需求场景和边界条件、需求描述模糊需要结构化 Do NOT use when: 需求已足够详细可直达开发、仅需快速立项无需深入
Use when: 需要持续监控竞品动态、建立竞品情报预警、定期输出竞品监控月报、追踪竞品版本/定价/功能/舆情/融资异动 Do NOT use when: 仅需一次性竞品调研(用 pm-market / pm-search --type=competitor);产品尚无明确竞品
Use when: 已完成 /pm-brainstorm 后,需要系统化收集需求、验证产品想法真伪、分析用户痛点 用户明确要求"需求调研""需求验证""验证痛点""分析用户痛点" 用户明确选择跳过 brainstorm,直接进入需求调研 Do NOT auto-select when:…
Use when: 需要设计用户访谈/用户调研方案、编写访谈提纲、规划样本与招募、制定访谈执行与分析方法 Do NOT use when: 仅做案头需求调研(用 pm-demand);已有明确结论只需验证单一假设且无需访谈