Install
openclaw skills install competitive-researchUse when the user asks to research a competitor, map a market, analyze a category, or produce a competitive brief. Trigger phrases: 'research competitors of X', 'who competes with Y', 'market analysis for Z', 'competitive intelligence on [brand/space]', 'analyze this market', 'who are the main players in [category]', 'build a brief before my call', 'I need to understand this space'. Also triggers when preparing a proposal, positioning exercise, content strategy, or client pitch that requires knowing the competitive landscape.
openclaw skills install competitive-researchResearch a competitor, market, or category. Produce a structured brief with sourced claims, evidence tiers, and explicit limitations. Distinguishes observed fact from inference throughout.
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.
web_search — competitor identification, SERP analysis, review site queriesweb_fetch — reading competitor homepages, pricing pages, review pagesscripts/save-report.sh — 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.
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.
Before researching, state:
Clarify "competitors" type if ambiguous:
Default to Direct unless specified.
Search: "[category] competitors", "[product] alternatives", "best [product type]", "[product] vs"
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.
For each major player:
Cap at 5 competitors for Quick Scan, 8–10 for Deep Dive. Do not pad with weak players.
Pull actual customer words from:
/r/[category], product-specific subreddits)Record exact phrases, not paraphrases. These are raw positioning and copy material. Organize under: pain language, desire language, objection language, switching triggers.
Answer:
State market size only if sourced. Label confidence tier. Do not invent TAM figures.
This section is inference and recommendation only — label it as such.
Never present this section as observed fact.
Every factual claim used in the report must have a row in the evidence log:
Claim | Source Name | URL | Date Accessed | Confidence Tier
See references/evidence-tiers.md for tier definitions and usage rules.
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.
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.
This is a data/analysis skill. A report is complete when all of the following are true:
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: Low.
save-report.sh creates files; it never modifies or deletes existing workspace content.Hooks: None added. Decision documented.
save-report.sh call.post-output hook at that time with explicit collision handling.references/report-template.md — full output format to paste and fillreferences/evidence-tiers.md — tier definitions (HIGH / MEDIUM / LOW / INFERRED) with usage rulesreferences/example-report-dtc.md — worked example: fictional DTC adaptogen brand "Rootwell" vs mushroom supplement competitorsscripts/save-report.sh — saves completed report to workspace