| name | ai-pm-research |
| description | 竞品研究技能。分析市场同类产品,输出功能对比、差异化机会和市场定位建议。 当用户说「研究竞品」「分析竞争对手」「市场调研」「同类产品对比」「友商分析」「看看别人怎么做的」 「有哪些竞品」「竞争格局」「行业分析」时,立即使用此技能。 |
| argument-hint | [需求分析报告路径 | 产品方向描述] |
| allowed-tools | Read Write Edit Bash(mkdir) Bash(ls) Bash(mv) Bash(python3) Bash(rg) WebSearch WebFetch |
竞品研究
输入
- 主要:
{项目目录}/02-analysis-report.md(需求分析报告)
- 或:用户直接描述的产品方向
输出
所有项目统一用文件夹结构:{项目目录}/03-competitor-report/V{当前版本}.md + frontmatter(version / status / phase=竞品研究 / upstream-from / created)。
落盘前强制步骤:
- 查
05-prd/README.md 当前活跃版本号
- 确认
03-competitor-report/ 文件夹存在;不存在则 mkdir
- 临界点检查:如果文件夹外存在旧版
03-competitor-report.md(或 -V1.md 等 v1 后缀文件)→ 先 mv 到 03-competitor-report/V1.md 并补 V1 frontmatter
- 写入
03-competitor-report/V{当前版本}.md + frontmatter
- 同步 patch 根 README「上游产物版本归属」表
详见 templates/project-index/README.md 「0x 上游产物文件夹约定」段。
执行步骤
步骤1:读取需求分析 + 关联扫描 + 定靶子问题 + 判首次/增量
从需求分析中提取:产品类型、目标用户、核心功能方向,据此识别竞品范围。
竞品分类:
- 直接竞品:解决相同问题、面向相同用户
- 间接竞品:解决相同问题、方式不同
- 参考竞品:不同领域但有可借鉴之处
1.1 关联扫描兄弟项目(组合拳,扫不到≠没有)
竞品对比要有用,得先知道「我方现状」和「我方正在拍什么决策」——这两样都在兄弟项目里,不能凭印象。用三道组合找全(单靠 related-scan 会漏语义相关项目):
python3 scripts/related-scan.py "{项目名/主题}" —— 名字撞上的(如 考试答题卡 ↔ 考试阅卷/考试扫描)。若 /ai-pm 主控已在开工扫过,直接读其结果、不重复跑。
- 关键词
rg + 牵动链卡(templates/knowledge-base/chains/)—— 名字没撞但语义相关的(如 竞品分析 ↔ 学情/现网学情产品)。
- 必要时请用户点名关联项目。
三道都空,才能下"无兄弟项目"的结论。命中的项目先 ls/读其 PRD,把「我方现状/在途承接」坐实到功能点(别凭印象填对比表的"我们"列)。
1.2 定靶子问题(决定竞品分析有用还是白做)
竞品对比的深度标准 = 能回答我方当前正在拍的决策问题,不是"竞品有没有这功能"。
从兄弟项目的在途决策评审 PRD / 迭代排期里,把"我方要拍的决策点"翻译成探竞品的靶子问题:
- ❌ 浮皮潦草:"七天有没有报告分析" —— 答了也对决策没用
- ✅ 对到决策:"七天报告能不能下钻到空" —— 因我方正在拍《考试下游三级结构适配》,这才决定我方做不做、是不是追赶
带着靶子问题去步骤3,比无差别罗列竞品功能有用得多。
1.3 判首次轮 vs 增量轮
03-competitor-report/ 已有版本 → 增量轮,走四步(不要从零重做):
- 读旧版立基线:低风险结论(成立年份/资本属性/稳定规模等)不重跑。
- 只找基线之后的增量:时间窗写明确(如"4-6 月")。
- 按风险分级复核旧结论(依据步骤4 的结论字段筛):高风险(P0/P1)/ 决策相关 / 验证状态=反推或待验证 / 来源可疑 的旧结论必须重核,错的标勘误(实例:好分数归属"七天旗下"经重核勘误为"北京爱云校")。旧报告若无字段标签 → 该竞品降级为全量重核,不假装低风险沿用。
- 版本化:v3.0→v4.0,变更日志记「修正 / 新增 / 评级调整」三类。
无旧版 → 首次轮,走完整流程。
步骤2:询问用户补充
基于需求分析,我计划研究以下竞品:
{列出识别的竞品清单}
请问:
1. 有没有你特别关注的竞品需要深入分析?
2. 哪个竞品做得好?哪个有明显缺陷?
3. 有没有跨领域的优秀产品值得参考?
请直接告诉我,或回复"按你的分析来"。
步骤3:研究每个竞品
信息来源: 官网、应用商店(评分/评论)、行业报告、用户社区反馈
研究维度:
- 功能:核心功能、特色功能、功能完整度
- 体验:交互设计、易用性、视觉风格
- 商业:定价策略、盈利模式、用户规模
- 技术:技术路线、性能表现、创新点
Playwright MCP 调用策略
竞品探查分两种模式,按"拿不拿得到竞品真实账号"选:
- 模式 A:公开页抓取(默认,下面这套)—— 抓竞品官网/应用商店等公开页。
- 模式 B:登录态一手实探(高价值)—— 用户提供可登录的竞品账号 / 现场调研能登 / 试点校授权时,登进竞品生产系统做只读深探,拿一手真实数据(本能力价值大头:公开页只有宣传话术,登录态才看得到真实功能颗粒度、真实数据规模)。
- ⚠️ 开浏览器前必须获用户当次授权(复用项目既有"Playwright 未经允许禁止跑"纪律,非本 skill 另立);无授权只走模式 A。
- 默认走 Playwright MCP;要连用户日常 Chrome 登录态才上 CDP。
- 完整操作手册(只读安全纪律 / MCP-CDP 选型 / 降级决策表 / 证据归档 / MCP 避坑)见
.claude/skills/ai-pm-research/references/live-probe.md,走模式 B 前必读。
模式 A · 批量抓取模式(同会话复用):
竞品网页分析时,在同一个 Playwright 会话中完成所有页面的抓取:
- 先用
browser_navigate 打开第一个竞品页面
- 用
browser_snapshot 获取内容
- 直接
browser_navigate 到下一个竞品页面(不关闭浏览器)
- 重复直到所有页面抓取完毕
这样比每个页面单独启动 Playwright 会话快 3-5 倍。
重试与超时:
- 单页面抓取超时设置:30 秒
- 超时后自动重试一次(共 2 次尝试)
- 仍失败则降级为
WebFetch(纯 HTTP GET + HTML 标签剥离)并继续
- 不因单个页面失败而中断整个竞品分析
降级策略(Playwright MCP 不可用时):
如果 Playwright MCP 不可用(未安装或连接失败):
- 自动降级为
WebFetch 命令(纯 HTTP GET + HTML 标签剥离)
- 向用户明确提示:"已降级为纯文本抓取。JS 渲染内容(如 SPA 页面)可能无法正确获取,分析结果可能不完整。"
- 继续执行分析流程,基于纯文本内容完成竞品研究
步骤4:制作对比矩阵,识别差异化机会
汇总所有竞品对比,识别:
- 市场空白(未被满足的需求)
- 竞品弱点(可以突破的点)
- 我方优势(可以发挥的长处)
4.1 对比矩阵要对到决策级(不是有/无)
✓/✗ 总览保留作速查,但关键功能点必须对到决策级事实(呼应步骤 1.2 的靶子问题):
- ❌ "有报告分析"
- ✅ "试题分析筛选仅按小题/按题组、题号'一.1'=大题.小题、无按空 → 2 级封顶"
4.2 每条结论带三字段(下游增量轮/自检/证据列都靠它)
| 字段 | 取值 | 用途 |
|---|
| 威胁等级 | P0-P3(定义见下) | 增量轮按它做风险分级复核 |
| 证据来源/时间戳 | 来源 + 何时取 | 判结论新鲜度、可疑度 |
| 验证状态 | 实测 / 反推 / 待验证 | 自检与"没看全别下判断"挂钩 |
威胁等级 P0-P3 判定(不靠主观排序):
- P0 战略级直接威胁:正面抢我方核心存量/大客户,且出现功能反超或已切单。
- P1 重点跟进:某维度单点反超、或舆情/政策可正面对决。
- P2 差异化对冲:整体不反超,但局部能力/区域/价格构成压力。
- P3 观察/低优先:区域小厂/专供/经营走弱,维持关注不增投。
4.3 两条护栏(避免本能犯的错)
- 能力分层别混:同一诉求在不同层结论可能相反——区分①操作层(能不能这样操作)②数据产出层(结果/报告/学情能不能拿到)。例:竞品批改能按采分点(操作层)≠ 报告产出能按空(数据层)。别用操作层"有"误判我方在追赶。
- 竞品也没做到 = 我方领先:对位结论要反推决策性质——竞品也没打通的,我方做 = 差异化领先,不是追赶。这句往往比功能清单更影响路线。
输出格式
# 竞品研究报告
## 1. 研究概述
**产品类型**:{类型}
**研究目的**:{为什么要研究竞品}
**竞品范围**:直接竞品 {N} 个,间接竞品 {N} 个
## 2. 竞品清单
| 竞品名称 | 类型 | 目标用户 | 核心卖点 | 用户规模 |
|---------|------|---------|---------|---------|
| 竞品A | 直接 | {用户群} | {卖点} | {规模} |
## 3. 竞品详细分析
### {竞品A}
**产品定位**:{一句话}
**核心优势**:{列表}
**明显不足**:{列表}
**用户评价关键词**:{来自应用商店评论}
### {竞品B}
{同上格式}
## 4. 功能对比矩阵
✓/✗ 总览(速查):
| 功能维度 | 竞品A | 竞品B | 竞品C | 我们(规划) |
|---------|------|------|------|------------|
| 核心功能1 | ✓ | ✓ | ✗ | ✓ |
| 核心功能2 | ✓ | ✗ | ✓ | ✓ |
| 特色功能 | ✗ | ✓ | ✗ | ✓ |
**关键功能点·决策级对位**(对到靶子问题,每条带字段+证据):
| 功能点(靶子问题)| 竞品现状(决策级事实)| 威胁等级 | 验证状态 | 📷 证据 |
|---|---|---|---|---|
| {如"报告能否下钻到空"} | {如"按小题/题组 2 级、无按空"} | P2 | 实测 | {截图名/路径} |
## 5. 差异化机会
### 市场空白
{描述未被竞品满足的需求}
### 竞品弱点突破
{可以比竞品做得更好的点,及具体做法}
### 我们的差异化定位
{一句话描述在市场中的独特位置}
## 6. 竞争策略建议
**定位建议**:{在市场中的位置,与哪个竞品正面竞争,从哪个竞品差异化}
**功能策略**:{哪些功能要跟进,哪些要差异化,哪些要放弃}
**目标用户策略**:{从哪类用户切入,如何从竞品抢用户}
## 7. 结构化处置(直接喂排期,不止于"建议")
把对比结论落到可执行的三类,让 PM 拿着就能排期:
- **候选包**:该跟进的功能点,按对位优先级分包(如 V1.x候选包 / VNext候选包)
- **不跟清单**:竞品也没做好/我方已断层领先的,明确不投(省得占排期)
- **决策点**:需要 PM 拍板的(如某能力本期排不排),附竞品现状作输入
## 8. 结论
{核心发现:3-5条最重要的洞察和行动建议}
输出前自检(两条护栏)
- 没看全别下判断:未实地验证的环节(如"阅卷批改界面没看到"),结论必须带固定标记串
[待验证] 或 [反推],禁止从间接证据下无标记的肯定结论。词面统一用步骤 4.2 的"验证状态"值。
- 抽查:
rg -F -e '[待验证]' -e '[反推]'(不能写 rg '[待验证]'——方括号是正则字符类会满屏误报;或转义 rg '\[待验证\]'),再人工核有没有漏标的肯定句。
- 能力分层别混(重申步骤 4.3):操作层"有" ≠ 数据/产出层"有"。
竞品对标卡(battlecard · 对销售/客户压力场景才触发)
上面是战略报告(偏一次性)。当用户要"给销售用的对标卡""客户拿竞品压价怎么答",或某竞品成高频压力时,读取 .claude/skills/ai-pm/references/competitive-frameworks.md(仓库根相对路径,单一事实源——battlecard 方法论只此一份,本 skill 不内嵌副本),对单个竞品出一张随身实战卡:它强在哪/弱在哪(各 1-2 个,求精不求全)+ 一句话能说出口的差异化话术 + 2-3 条质疑应对。铁律:诚实,不黑竞品不吹自己,只讲真实差异和适用边界(否则一线照卡说、客户一戳就穿)。普通竞品研究走上面主流程,不触发本节。
机读结论层(Stage4-C3 · 2026-07-12):battlecard 落盘时头部带机读块,供写 PRD/决策引用竞品资料时自动报年龄、供后续保鲜比对——
competitor: {竞品名}
updated: YYYY-MM-DD
sources: [实探/官网/评论/公开稿]
verdicts:
- "{结论一句话} | {判定口径} | YYYY-MM-DD"
stale_after_days: 60
写 PRD/决策文档引用某 battlecard 时:先读 updated,超过 stale_after_days 就在引用处标「资料 N 天前,建议增量轮」——写时可用是真锚点,不做定时轮询。
登录态实探的起浏览器/等登录/断线重连固定流程见 .claude/skills/ai-pm-acceptance/references/login-session-protocol.md(A4 公共协议)。