Agent skill
intel-competitor-discovery
Discover new competitors via SERP results for a search phrase and location, deduplicate by root domain against already-monitored accounts, and propose candidates to add to monitoring.
Filed under Calls, demos and discovery and Positioning and messaging.
From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21
What it does when it runs
Discover new competitors via SERP results for a search phrase and location, deduplicate by root domain against already-monitored accounts, and propose candidates to add to monitoring. Use when the user wants to find competitors, research the market, or seed the monitoring list. Read firm profile first.
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- DATAFORSEO_PASSWORD
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce git -C /tmp/b2bforce sparse-checkout set ".agents/skills/intel-competitor-discovery" mkdir -p ~/.claude/skills/intel-competitor-discovery cp -R "/tmp/b2bforce/.agents/skills/intel-competitor-discovery/." ~/.claude/skills/intel-competitor-discovery/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs DATAFORSEO_PASSWORD, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/intel-competitor-discovery/SKILL.md, which is licensed MIT (skill frontmatter). 649 words, 13 headings.
Competitor Discovery
Finds competitor candidates from search-engine results, so the user does not have to know every competitor by name.
Read Firm Context First
- Read
workspace/firm/profile.md— firm services, industry, geography, and the existing competitor list (used for deduplication). - Existing monitored competitors live in
workspace/intelligence/competitors/{slug}/!_profile.md.
When to Use
Brand scope. In a multi-brand workspace run discovery per brand — the search phrase and location belong to one brand's market — but check candidates against the shared workspace/intelligence/competitors/ before proposing, and add the brand to an existing profile's brands: [...] instead of duplicating the company. See the Brand Scope Gate in AGENTS.md.
- User asks to find / discover competitors or research the market
- Seeding the monitoring list for a new firm
- Expanding monitoring around a specific service or keyword
Workflow
1. Build the search phrase
From firm context: a service + geography phrase, e.g. "drupal migration agency"
or "accounting firm Wroclaw". Ask the user to confirm or refine the phrase and
target country.
2. Fetch SERP results
Query a SERP API for the top 10 organic results (depth = 10) for the phrase
in the target country. Country is the SERP provider's full location name
(e.g. United States, Germany, Poland), not a country code.
- Requires
DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD. - Dry-run (no key): ask the user for candidate URLs or use a provided list, and still run the dedup + profile steps below.
3. Process results
- Extract root domain from each result URL (lowercase, strip leading
www.). - Group by domain — one candidate per root domain. When several results
share a domain, keep the highest-ranked one (lowest
position). - Deduplicate against already-monitored accounts: in the app this is the set
of existing monitored companies in the workspace (matched by root domain). In
B2BForce, match against the competitor list in
workspace/firm/profile.mdand existingworkspace/intelligence/competitors/slugs. Flag matches asalready_existsand countduplicates_skipped. - Derive a candidate
namefrom the result title (split on|,-,::,//; fall back to the domain).
Note: the source pipeline does not auto-filter directories, marketplaces, Wikipedia, aggregators (clutch.co, g2.com), or the firm's own domain — every domain-grouped result is returned (duplicates flagged, not removed). Dropping obvious non-competitors happens in the user review step (§4), not automatically.
Return: results[] (name, domain, url, snippet, position, already_exists),
total, duplicates_skipped.
4. Present candidates and confirm
List candidates as a table (mark already_exists rows). Do not auto-add —
let the user pick which to monitor. This mirrors the source flow: the search
step returns candidates, and only an explicit confirm step creates accounts
(candidates already flagged already_exists are skipped on create).
5. Hand off to files-only monitoring
For each confirmed candidate, create
workspace/intelligence/competitors/{slug}/!_profile.md and
workspace/intelligence/competitors/{slug}/pages.md, then use
intel-competitor-monitoring to crawl. New competitors created from
candidates default to monitoring_enabled: true, monitoring_frequency: weekly,
and company_type: competitor. The homepage starts as the first monitored page
with Monitor=true and Priority=high.
Do not write to .agents/firm-context.md. If the firm profile needs a competitor
list, update workspace/firm/profile.md.
Workspace Output
| Artifact | Path |
|---|---|
| Discovery run | workspace/intelligence/reports/discovery-{YYYY-MM-DD}-{phrase-slug}.md |
| New competitor profile | workspace/intelligence/competitors/{slug}/!_profile.md |
| New page index | workspace/intelligence/competitors/{slug}/pages.md |
Discovery report frontmatter:
---
phrase:
country:
total_results:
duplicates_skipped:
candidates_added: []
date: 2026-06-01
---
Rules
- One candidate per root domain — always dedupe.
- Never add the firm's own domain.
- Confirm with the user before adding to monitoring (no silent writes to the monitored list).
- Respect rate limits; SERP discovery is a paid API call.
Environment Variables
DATAFORSEO_LOGIN=
DATAFORSEO_PASSWORD=
Related Skills
| Skill | When |
|---|---|
firm-context | Before discovery — services, geography, existing competitors |
intel-competitor-monitoring | After discovery — crawl confirmed competitors |
intel-weekly-report | Summarize changes across monitored competitors |
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- competitor-discovery by kili-d · 2
- competitor-intel by cjf-iii · 1
- competitor-intel by edupegoretti · 0
- competitor-profiling by coreyhaines31 · 45,947
- competitor-analysis by OpenClaudia · 664
- community-discovery by shawnpang · 308
- competitor-monitoring by shawnpang · 308
- competitor-alternatives by louisblythe · 136
Need help setting it up?
This page tells you what intel-competitor-discovery does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.