Competitive Intel
Research a competitor, market, or category. Produce a structured brief with sourced claims, evidence tiers, and explicit limitations. Distinguishes observed fact from inference throughout.
Setup
No API keys required. This skill uses only web_search and web_fetch, both of which are available in standard OpenClaw sessions.
OPENCLAW_WORKSPACE — only needed for Deep Dive mode (save-report.sh). Defaults to $HOME/.openclaw/workspace. If the variable is unset and the default path does not exist, the script will fail with a clear error. Fix: set OPENCLAW_WORKSPACE or ensure ~/.openclaw/workspace exists.
If web_search is unavailable: Ask the user to provide competitor URLs or names directly. Skip Steps 2 and 4 (identification and review mining via search) and proceed from the provided inputs. Declare this in the Limitations section.
If web_fetch is blocked on a specific domain: Note the block. Do not invent content. Use SERP snippets and metadata if available; downgrade the tier accordingly.
Tools
- -
web_search — competitor identification, SERP analysis, review site queries - INLINECODE9 — reading competitor homepages, pricing pages, review pages
- INLINECODE10 — workspace save for Deep Dive mode (creates files, never deletes)
No other tools required. Do not invoke shell commands, file system writes, or API calls beyond the above.
Modes
Quick Scan (default): 5–8 sources. 10–15 min. Short brief presented inline. No workspace save unless asked.
Deep Dive: 15+ sources. Full structured report. Saved to workspace/research/competitive-intel/YYYY-MM-DD-[slug].md. Use when the user says "thorough," "deep dive," "full report," "save this," or the scope clearly warrants it.
Confirm mode with the user if ambiguous. Do not silently upgrade Quick Scan to Deep Dive.
Protocol
1 — Scope Declaration
Before researching, state:
- - What you will cover (direct competitors, market structure, customer language, pricing signals)
- What you will NOT cover (private financials, internal roadmaps, anything requiring login or paid data)
- Mode selected and estimated time
Clarify "competitors" type if ambiguous:
- - Direct: same product, same buyer, same budget
- Adjacent: different product, same problem or same buyer's budget
- Aspirational: who the target brand positions against in their own copy
Default to Direct unless specified.
2 — Competitor Identification
Search:
"[category] competitors",
"[product] alternatives",
"best [product type]", INLINECODE15
Check: G2, Capterra, ProductHunt, relevant subreddits, Google SERP top 10, any category-specific review sites.
Weight by frequency: competitors that surface across 3+ independent sources are the real ones. Single-source mentions are supporting cast.
3 — Profile Each Competitor
For each major player:
- - Positioning: pull from their homepage headline, not inferred — quote it
- Target customer: from their copy, pricing page, or case studies — not inferred
- Pricing: only if public; note the page URL and date
- Differentiators: their claimed strengths (from site, ads, PR)
- Weaknesses: from reviews, forum complaints, missing features — cite source
- Source: URL + access date for each claim
Cap at 5 competitors for Quick Scan, 8–10 for Deep Dive. Do not pad with weak players.
4 — Customer Language Mining
Pull actual customer words from:
- - G2 / Capterra / Trustpilot reviews (note: may be incentivized — label as directional)
- Reddit threads (
/r/[category], product-specific subreddits) - Twitter/X search for brand mentions + complaints
- Amazon reviews for physical products
- App Store reviews for software
Record exact phrases, not paraphrases. These are raw positioning and copy material.
Organize under: pain language, desire language, objection language, switching triggers.
5 — Market Structure
Answer:
- - Who owns which tier (enterprise / mid-market / SMB / prosumer / consumer)?
- Where is the pricing gap between tiers?
- Who is over-indexed on one segment while ignoring another?
- Is the market expanding, contracting, or consolidating?
State market size only if sourced. Label confidence tier. Do not invent TAM figures.
6 — Opportunity Map
This section is
inference and recommendation only — label it as such.
- - What positioning is unclaimed by current players?
- What customer pain is documented in reviews but unaddressed by incumbents?
- What distribution channel is underused?
- What buyer segment is underserved?
Never present this section as observed fact.
7 — Evidence Log
Every factual claim used in the report must have a row in the evidence log:
INLINECODE17
See references/evidence-tiers.md for tier definitions and usage rules.
8 — Output and Save
Use the format in references/report-template.md.
Quick Scan: present inline, offer to save.
Deep Dive: present inline AND save to workspace/research/competitive-intel/YYYY-MM-DD-[slug].md using scripts/save-report.sh.
For the slug, use a short lowercase descriptor: klaviyo, dtc-email-tools, mushroom-supplements.
Gotchas
Market size claims. Never state "the X market is valued at $Y billion" without a named source, publication date, and confidence tier. If no source is available, say: "No reliable market size data found; estimate omitted." Do not pull from memory or make plausible-sounding numbers.
Pricing timestamp. Always note: "As of [date], pricing starts at $X." Pricing pages change. A stale price claim undermines the whole report.
Incentivized reviews. G2 and Capterra reviews are frequently solicited by vendors. Treat them as directional signals. Note this in the Limitations section. Do not treat them as independent validation.
Missing data is a finding. If a company has no public pricing, no reviews, no social presence, no press — say so explicitly. Absence of data is itself a competitive signal (early stage, private, niche, or obscure).
Scope creep. Quick Scan must stay Quick Scan. If the user's question requires more depth, name the scope boundary and ask before expanding. Do not silently double the work.
Do not hallucinate features. Only report product features that are visible on the company's own site, in reviews, or in documented user reports. If a feature is implied but not confirmed, use INFERRED tier.
"Competitors" is often wrong the first time. Users frequently ask about adjacent or aspirational competitors while meaning direct ones, or vice versa. Confirm before investing research time in the wrong frame.
Web fetch limitations. Some competitor sites block scrapers or require login. Note this. Do not invent content from a blocked page.
Verification
This is a data/analysis skill. A report is complete when all of the following are true:
- - [ ] Scope declared upfront (what's covered, what's not, mode selected)
- [ ] At least 3 direct competitors profiled (or fewer documented as the total market)
- [ ] Every factual claim carries a tier tag (HIGH / MEDIUM / LOW / INFERRED)
- [ ] Evidence Log populated with one row per profiled competitor
- [ ] Market size either sourced-and-tiered, or explicitly omitted with reason stated
- [ ] Opportunity Map section labeled INFERRED throughout
- [ ] Limitations section present
Edge cases — required handling:
| Situation | Required response |
|---|
| Zero web search results for a query | State: "No results found for [query]." Try alternate phrasings. If still empty, declare it in Limitations. |
| Competitor is private with no public data |
State: "No public data found for [company]." Document as a finding — not an error. |
| Only 1–2 competitors exist | Complete the report with what exists. Note: "Market appears nascent or niche; fewer than 3 direct competitors identified." |
| Web fetch blocked on competitor site | Note the block per domain. Use SERP snippet metadata if available. Downgrade tier. Do not invent content. |
| User-named competitor does not appear to exist | Ask to confirm the company name before researching. Do not proceed on a mis-named target. |
| All sources are incentivized (G2-only market) | State this in Limitations. Treat all review data as directional. |
Pass / fail signal: If the Evidence Log has zero rows on a completed report, the report has failed verification. Minimum: one sourced claim per profiled competitor.
Blast Radius & Hooks
Blast radius: Low.
- - All research steps are read-only (websearch, webfetch).
- INLINECODE28 creates files; it never modifies or deletes existing workspace content.
- Collision behavior: warns and overwrites. Acceptable — competitive intel reports are point-in-time snapshots.
- No credentials touched. No external accounts accessed.
Hooks: None added. Decision documented.
- - No hook is needed here. The save action is explicit and user-initiated.
- Auto-save on session end would require platform hook support and risks collision on rapid re-runs.
- No trigger event identified that would materially improve safety, enforcement, verification, or auditability beyond the current explicit
save-report.sh call. - If a future workflow requires auto-save on Deep Dive completion, add a
post-output hook at that time with explicit collision handling.
References
- -
references/report-template.md — full output format to paste and fill - INLINECODE32 — tier definitions (HIGH / MEDIUM / LOW / INFERRED) with usage rules
- INLINECODE33 — worked example: fictional DTC adaptogen brand "Rootwell" vs mushroom supplement competitors
- INLINECODE34 — saves completed report to workspace
竞争情报
研究竞争对手、市场或品类。生成一份结构化的简报,包含有来源的主张、证据层级和明确的局限性。全程区分观察到的事实与推断。
准备工作
无需API密钥。 本技能仅使用websearch和webfetch,两者均在标准OpenClaw会话中可用。
OPENCLAWWORKSPACE — 仅在深度挖掘模式下需要(save-report.sh)。默认为$HOME/.openclaw/workspace。如果该变量未设置且默认路径不存在,脚本将失败并显示明确的错误信息。解决方法:设置OPENCLAWWORKSPACE或确保~/.openclaw/workspace存在。
如果web_search不可用: 请用户直接提供竞争对手的URL或名称。跳过步骤2和4(通过搜索进行识别和评论挖掘),直接从提供的输入开始。在局限性部分声明此情况。
如果web_fetch在特定域名上被阻止: 记录该阻止情况。不要编造内容。如果可用,使用SERP片段和元数据;相应降低证据层级。
工具
- - websearch — 竞争对手识别、SERP分析、评论网站查询
- webfetch — 读取竞争对手主页、定价页面、评论页面
- scripts/save-report.sh — 深度挖掘模式的工作区保存(创建文件,从不删除)
不需要其他工具。请勿调用上述工具之外的shell命令、文件系统写入或API调用。
模式
快速扫描(默认):5–8个来源。10–15分钟。内联呈现简短简报。除非要求,否则不保存到工作区。
深度挖掘:15个以上来源。完整的结构化报告。保存到workspace/research/competitive-intel/YYYY-MM-DD-[slug].md。当用户说彻底、深度挖掘、完整报告、保存这个或范围明显需要时使用。
如果模式不明确,请与用户确认。不要将快速扫描静默升级为深度挖掘。
流程
1 — 范围声明
在研究之前,说明:
- - 你将涵盖的内容(直接竞争对手、市场结构、客户语言、定价信号)
- 你不会涵盖的内容(私人财务信息、内部路线图、任何需要登录或付费数据的内容)
- 选择的模式和预计时间
如果竞争对手类型不明确,请澄清:
- - 直接竞争对手:相同产品、相同买家、相同预算
- 相邻竞争对手:不同产品、相同问题或相同买家的预算
- 愿景竞争对手:目标品牌在其自身文案中定位的对象
除非另有说明,默认为直接竞争对手。
2 — 竞争对手识别
搜索:[品类] 竞争对手、[产品] 替代品、最佳 [产品类型]、[产品] vs
检查:G2、Capterra、ProductHunt、相关subreddit、Google SERP前10名、任何特定品类的评论网站。
按频率加权:出现在3个以上独立来源中的竞争对手是真正的竞争对手。单一来源提及的是辅助角色。
3 — 分析每个竞争对手
对于每个主要参与者:
- - 定位:从其主页标题中提取,而非推断——引用原文
- 目标客户:从其文案、定价页面或案例研究中提取——而非推断
- 定价:仅限公开信息;注明页面URL和日期
- 差异化因素:其声称的优势(来自网站、广告、公关)
- 弱点:来自评论、论坛投诉、缺失功能——引用来源
- 来源:每个主张的URL + 访问日期
快速扫描最多5个竞争对手,深度挖掘最多8–10个。不要用弱参与者填充。
4 — 客户语言挖掘
从以下渠道提取真实的客户用语:
- - G2 / Capterra / Trustpilot评论(注意:可能是有偿的——标记为方向性参考)
- Reddit帖子(/r/[品类]、产品特定subreddit)
- Twitter/X搜索品牌提及和投诉
- 实体产品的亚马逊评论
- 软件的应用商店评论
记录确切的短语,而非转述。这些是原始的定位和文案素材。
按以下类别组织:痛点语言、欲望语言、反对语言、切换触发因素。
5 — 市场结构
回答:
- - 谁占据哪个层级(企业级 / 中端市场 / 中小企业 / 专业消费者 / 消费者)?
- 层级之间的定价差距在哪里?
- 谁在一个细分市场过度投入而忽略了另一个?
- 市场是在扩张、收缩还是整合?
只有有来源时才说明市场规模。标注信心层级。不要编造TAM数据。
6 — 机会地图
本节仅为
推断和建议——请如此标注。
- - 哪些定位尚未被现有玩家占据?
- 评论中记录但现有企业未解决的客户痛点是什么?
- 哪些分销渠道未被充分利用?
- 哪些买家细分市场服务不足?
切勿将本节呈现为观察到的事实。
7 — 证据日志
报告中使用的每个事实主张都必须在证据日志中有一行:
主张 | 来源名称 | URL | 访问日期 | 信心层级
参见references/evidence-tiers.md了解层级定义和使用规则。
8 — 输出和保存
使用references/report-template.md中的格式。
快速扫描:内联呈现,提供保存选项。
深度挖掘:内联呈现并保存到workspace/research/competitive-intel/YYYY-MM-DD-[slug].md,使用scripts/save-report.sh。
对于slug,使用简短的小写描述符:klaviyo、dtc-email-tools、mushroom-supplements。
注意事项
市场规模声明。 如果没有具名来源、发布日期和信心层级,切勿声明X市场价值Y亿美元。如果没有可用来源,请说:未找到可靠的市场规模数据;省略估算。不要凭记忆或编造听起来合理的数字。
定价时间戳。 始终注明:截至[日期],定价从X美元起。定价页面会变化。过时的定价声明会削弱整个报告的可信度。
有偿评论。 G2和Capterra的评论经常由供应商征集。将其视为方向性信号。在局限性部分注明。不要将其视为独立验证。
缺失数据本身就是发现。 如果一家公司没有公开定价、没有评论、没有社交媒体存在、没有媒体报道——请明确说明。数据缺失本身就是竞争信号(早期阶段、私人公司、小众或不知名)。
范围蔓延。 快速扫描必须保持快速扫描。如果用户的问题需要更深入,请说明范围边界并在扩展前询问。不要静默地加倍工作量。
不要幻觉功能。 只报告公司自己网站上、评论中或有记录的用户报告中可见的产品功能。如果某个功能被暗示但未确认,使用推断层级。
竞争对手第一次往往是不准确的。 用户经常在指直接竞争对手时询问相邻或愿景竞争对手,反之亦然。在投入研究时间之前确认,避免错误的框架。
网页获取限制。 一些竞争对手网站阻止爬虫或需要登录。记录此情况。不要从被阻止的页面编造内容。
验证
这是一个数据/分析技能。当以下所有条件都满足时,报告才算完成:
- - [ ] 事先声明范围(涵盖内容、不涵盖内容、选择的模式)
- [ ] 至少分析了3个直接竞争对手(或记录为整个市场少于3个)
- [ ] 每个事实主张都带有层级标签(高 / 中 / 低 / 推断)
- [ ] 证据日志中每个分析的竞争对手至少有一行
- [ ] 市场规模要么有来源且标注层级,要么明确省略并说明原因
- [ ] 机会地图部分全程标注为推断
- [ ] 存在局限性部分
边界情况——必须处理:
| 情况 | 所需响应 |
|---|
| 某个查询的网页搜索结果为零 | 说明:未找到[查询]的结果。尝试其他措辞。如果仍然为空,在局限性中声明。 |
| 竞争对手是私人公司,没有公开数据 |
说明:未找到[公司]的公开数据。将其记录为发现——而非错误。 |
| 只有1–2个竞争对手存在 | 用现有信息完成报告。注明:市场似乎处于早期或小众阶段;识别到的直接竞争对手少于3个。 |
| 网页获取在竞争对手网站被阻止 | 按域名记录阻止情况。如果可用,使用SERP片段元数据。降低层级。不要编造内容。 |
| 用户命名的竞争对手似乎不存在 | 在研究前确认公司名称。不要在错误命名的目标上继续。 |
| 所有来源都是有偿的(仅G2市场) | 在局限性中说明。将所有评论数据视为方向性参考。 |
通过/失败信号: 如果完成的报告中证据日志为零行,则报告未通过验证。最低要求:每个分析的竞争对手至少有一个有来源的主张。
影响范围与钩子
影响范围:低。
- - 所有研究步骤均为只读(websearch、webfetch)。
- save-report.sh创建文件;从不修改或删除现有工作区内容。
- 冲突行为:警告并覆盖。可