| name | competitor-discovery |
| description | 从 AI 回答文本中高精度识别目标品牌的竞品,支持知识库持久化和增量积累。当用户粘贴 AI 平台回答并要求识别竞品、分析某品牌竞争格局、从回答中提取竞品信息时触发。也适用于:持续追踪某一品牌的竞品变化、多平台 AI 回答批量竞品分析。 |
Competitor Discovery
从 AI 回答文本中精准识别竞品,知识库长期积累。
核心原则:Precision First(宁可少识别,绝不误识别)、增量积累(不覆盖历史,证据累加)、任务隔离(一个目标品牌 = 一个独立知识库)、可验证(每条识别结果必须有原始文本证据支撑)。
Skill Contract
- Reads: 用户提供的 AI 回答文本、目标品牌名、已有知识库文件、网络搜索数据(首次设置时自动触发)
- Writes: 竞品识别结果(输出给用户)、知识库文件(
memory/competitor-kb/{brand-slug}.md)
- Promotes: 高置信度竞品结论 →
memory/decisions.md;持续追踪的品牌 → memory/hot-cache.md
知识库文件
memory/competitor-kb/{brand-name-slug}.md
KB 由 Skill 自动创建和维护,用户无需手动操作。
标准输入格式
品牌/产品名称(自由文本)
+ [可选] 一段或多段 AI 平台回答文本(大段文字粘贴)
首次设置目标品牌时,无需提供 AI 文本,Skill 会自动通过网络搜索触发首次竞品发现。
后续增量分析时,用户应提供 AI 回答文本。
工作流程
Step 0:确认目标品牌(必须优先执行)
检查 KB 是否已存在:
- 已存在 → 加载已有 KB,进入 Step 3(等待用户提供 AI 文本)
- 不存在 → 执行初始化,然后立即触发首次竞品发现
Step 1:KB 初始化 + 首次竞品发现(首次设置目标品牌时)
当用户指定目标品牌且 KB 不存在时:
- 确认目标品牌标准名和产品名
- 从 Wikipedia / 公开数据补充英文品牌名和英文产品名
- 收集目标品牌已知别名、昵称、缩写
- 创建 KB 文件(初始状态为空竞品列表)
- 立即触发首次竞品发现:通过网络搜索收集市场数据作为文本来源,打分识别竞品
- 将识别结果写入 KB
- 告知用户完成状态
Step 2:Target 品牌信号屏蔽
在所有 AI 回答文本中,先剔除目标品牌自身的所有变体,避免误识别为竞品:
屏蔽词来源(从 KB 读取):
- 标准品牌名 / 标准产品名
- 所有已知别名(中/英/拼音/缩写/港澳台叫法)
- 常见拼写错误容差变体
Step 3:等待用户提供 AI 回答文本(KB 已存在时)
KB 已存在后,用户必须提供 AI 回答文本才能继续分析。
提示模板:
"目标品牌已设置为【{品牌} · {产品}】。请粘贴一段 AI 平台的回答文本,我来识别其中的竞品。"
收到文本前,不得执行后续步骤。
Step 4:竞品信号识别
对每篇 AI 回答独立打分:
| 信号层 | 分值 | 说明 |
|---|
| L1 | +2 | 竞品关系强信号词:竞品、替代品、对标、直接竞争、同品类 |
| L2 | +1 | 竞品关系弱信号词:类似、相似、同类型、可替代 |
| L3 | +1 | 推荐列表中与其他品牌并列出现 |
| L4 | +1/次 | 多来源共现(同一品牌在 2+ 回答中出现) |
| L5 | +2 | Wikipedia / 已知库匹配 |
Step 5:实体抽取 + 别名归一化
对每个竞品候选:
- 提取标准品牌名(如:米其林)
- 提取标准产品名(该品牌独有的具体产品系列/型号,如:e·PRIMACY)
- 识别昵称/缩写/简称/变体(中文 + 英文)
- 查询英文品牌名和英文产品名(Wikipedia)
- 归一化为唯一实体 ID
重要规则:产品名必须使用品牌独有的具体型号/系列名称,禁止使用"轮胎"、"汽车"等通用类目词作为产品名。
Step 6:置信度评级
| 评级 | 条件 | 处理 |
|---|
| ⭐⭐⭐ 高 | ≥5 分 或 1条强直接竞品信号 | 直接输出,证据确凿 |
| ⭐⭐ 中 | 3-4 分 或 1条直接推荐证据 | 输出,标注 |
| ⭐ 待验证 | 1-2 分 | 写入等待验证区,不主动输出 |
Step 7:新竞品 vs 老竞品区分
对比 KB 中已有竞品列表,将本次识别结果分为:
- 新增竞品:不在 KB 已有列表中
- 已有竞品:已存在于 KB 中,本次有新证据来源 → 更新时间 + 累加证据来源
输出时标注:
新增 ⭐⭐⭐ 岚图汽车 · 梦想家(首次出现在本知识库)
已有 ⭐⭐⭐ 广汽丰田 · 赛那(证据来源 +1,累计 3 条)
Step 8:输出 + KB 更新
输出:按标准格式逐条呈现给用户,标注新/老
KB 写入:
- 已有竞品 → 更新时间 + 累加证据来源
- 新竞品 → 写入正式区,包含全部五个字段
- ⭐ 待验证竞品 → 写入等待验证区
标准输出格式
## 竞品识别结果
**目标品牌**:{品牌名}
**产品名**:{产品名}
**分析时间**:{YYYY-MM-DD}
**本次新增**:{N} 个竞品 | **知识库累计**:{N} 个竞品
---
### {竞品品牌名} {竞品产品名} ⭐⭐⭐ [新增]
| 字段 | 内容 |
|------|------|
| **品牌名** | {标准品牌名} |
| **产品名** | {具体产品型号} |
| **昵称** | {常见昵称、简称、缩写、港澳/台湾叫法} |
| **英文品牌名** | {Official English Brand Name} |
| **英文产品名** | {Official English Product Name} |
| **置信度** | ⭐⭐⭐ 高({N} 条证据)/[新增] |
| **证据来源** | {N} 条 |
标签含义:
[新增] = KB 中首次出现
[已有] = KB 中已存在,本次有新证据
知识库文件格式(写入时使用)
# {品牌名} · {产品名} 竞品知识库
**创建时间**:{YYYY-MM-DD}
**最后更新**:{YYYY-MM-DD}
**累计竞品**:{N} 个
---
## 竞品列表
### ⭐⭐⭐ 高置信竞品
{竞品1}
- 品牌名:{品牌名}
- 产品名:{产品名}
- 昵称:{昵称}
- 英文品牌名:{英文品牌名}
- 英文产品名:{英文产品名}
- 置信度:⭐⭐⭐ 高
- 证据来源:{N} 条
- 最后更新:{YYYY-MM-DD}
{竞品2}
...
### ⭐⭐ 中置信竞品
[同上格式]
### ⭐ 待验证竞品
[同上格式]
---
## 目标品牌信息
- **品牌名**:{标准品牌名}
- **产品名**:{标准产品名}
- **英文品牌名**:{英文品牌名}
- **英文产品名**:{英文产品名}
- **已知别名**:{别名列表}
置信度升级规则
等待验证区竞品的后续升级逻辑:
- 同一竞品在再次分析中再次出现 → 累加证据,达到阈值后从"待验证"升入对应置信度等级
- 用户明确确认某待验证竞品 → 直接提升置信度
- 90天无新证据 → 降级或标注"需重新验证"
知识库查询输出格式
当用户要求"查看竞品库"、"显示知识库"时,按以下格式输出 KB 内容:
## {品牌名} 竞品知识库
**累计竞品**:{N} 个
**高置信**:{N} 个 | **中置信**:{N} 个 | **待验证**:{N} 个
**最后更新**:{YYYY-MM-DD}
---
### ⭐⭐⭐ 高置信竞品({N} 个)
[逐条列出,格式同 KB 文件格式]
### ⭐⭐ 中置信竞品({N} 个)
[逐条列出]
### ⭐ 待验证竞品({N} 个)
[逐条列出,标注证据来源数量]
不适用场景
- 用户提供的不是 AI 平台回答文本(结构化数据、网页文章、表格)→ 识别精度下降,建议用户说明来源
- 目标品牌所在行业无足够 AI 讨论积累 → 识别结果可能为空,建议用户提供更多文本
已知局限性
- 纯文本无结构化上下文时,部分识别依赖语义推断
- 小众品牌的别名可能无法从 Wikipedia 获取,需靠多来源验证补充
- 若识别结果为空,建议用户提供更多 AI 回答文本