# Competitor-profiling named one I didn't know existed

> A profiling skill sized for Firecrawl + DataForSEO, run without either. The discoverability step it skipped is where the actual finding landed.

**Canonical URL**: https://agentcookbooks.com/blog/competitor-profiling-named-a-competitor-i-didnt-know-existed/

**Published**: 2026-05-12

**Tags**: claude-code, skills, positioning

---

I ran [`competitor-profiling`](/skills/competitor-profiling/) expecting a dossier — five quantitative profiles of named competitors with domain rank, backlink count, top organic pages, ranked keywords. What I got was different. The skill's prescribed input is a list of competitor URLs and the prescribed tools are Firecrawl plus DataForSEO MCP. I had neither. The skill graceful-degrades into qualitative positioning analysis, which is still useful — but the actual finding from the engagement wasn't in any of the five profiles. It was named in the *step before* profiling: identifying the competitive set, which the skill assumes you can skip.

## What I ran

The trigger: profile the competitive landscape around `agentcookbooks.com` in the practitioner-content / skills-wiki space. The constraints were strict: only Anthropic-side `WebSearch` and `WebFetch` (no browser cookies, no operator IP exposure to scraped sites), cap external requests at 6–8 across distinct domains, prefer reasoning from project memory and already-cloned upstream repos.

No competitor URLs supplied. I had to identify the competitive set first. Settled on five profiles after a round of `WebSearch` and reading project memory: the canonical documentation that anchors the space, a single-author practitioner blog publishing firsthand engineering writeups, a single-author skills repository with established authority, a multi-asset practitioner platform (named methodology plus a skills bundle plus distribution surface), and a composite content-farm + awesome-lists cluster representing the saturation the editorial bar is positioned against. Five profiles, one summary file, one positioning map.

The skill itself loaded ~210 lines of methodology — a Firecrawl + DataForSEO-oriented framework with a full profile template (At a Glance / Positioning / Product / Pricing / SEO / Strengths–Weaknesses / Competitive Implications / Raw Data Sources), a summary template, and a save-raw-data discipline at `competitor-profiles/raw/<slug>/<date>/scrapes/`. Without the MCP tools wired up, the raw-data step couldn't happen — `WebFetch` returns a single LLM-summarized response per URL, not the raw markdown scrape Firecrawl produces. The DataForSEO sections (domain rank, backlink profile, top organic pages, ranked keywords) all sat empty.

## What happened

The five profiles came out as expected: a strategic positioning map showed that the "curated cross-vendor skill-review-with-receipts" cell was unoccupied. Every tool vendor reviews their own skills only. Every content-farm paraphrases the canonical documentation. The single-author practitioner blog is firsthand but blog-only. The canonical reference doesn't critique third parties. The wiki sitting on top of multiple upstream MIT sources with editorial-bar receipts occupies a position no other player on the map occupies. That was the framework's payoff — and it would have come out the same way with or without paid SEO tooling.

The actual finding came from the discoverability step the skill skipped. While identifying the competitive set, one of the `WebSearch` results surfaced a practitioner-skills platform I hadn't been tracking — a single-creator stack of methodology, distribution, and skills content. Most surface area of any entry on the map. I hadn't seen it before that morning. By the time the profile was written it had already shifted the strategic picture more than any of the four other entries — because the four others were known going in. Naming it here isn't the point; the point is that the entry surfaced not from profiling a known list but from the search-pass *before* the skill could be run.

Numbers: ~210 lines of skill content loaded. 4 external `WebFetch` requests across 4 distinct domains (under the 8 cap). 5 competitor profiles created (~50–100 lines each). 1 summary file (~150 lines) with comparison table, positioning map, 5 strategic takeaways, gaps-and-opportunities table. Total artifact: ~600 lines of strategic intel in the gitignored `competitor-profiles/` directory.

## Where it drifted

Two specific things this skill needs an honest reader to know.

**Without Firecrawl + DataForSEO, the depth degrades from "comprehensive dossier" to "qualitative positioning analysis."** Still useful, very different artifact. The dossier shape is what the skill optimizes for — domain rank, top organic pages, anchor-text distribution, ranked keywords. Substituting `WebFetch` gets you positioning and product framing but nothing quantitative. If your goal is "land a five-skill positioning map," graceful degradation works. If your goal is "show the operator competitor X has 14 referring domains the wiki is missing," it doesn't.

**The skill assumes you already know your competitors.** "Competitor profiling" presumes URLs as input. If you don't have URLs, you need a discovery step first — `WebSearch` for adjacent positioning, ask in a community, check upstream skill repos for cross-references. In this engagement, that discovery step was where the most valuable finding lived. The skill doesn't say *do this first*; it just expects you to have done it. Pairing it with a `competitor-research` or `customer-research` skill would close that gap. Running it cold on a project where the competitive set isn't known surfaces the gap by accident.

## What I'd change

Three things.

**Run a discovery step before the skill.** If you don't already have a list of competitors with confidence, spend ten minutes on `WebSearch` + memory + upstream-repo crosslinks first. The skill is built to *analyze* a known list, not to *find* one. The most valuable findings on a new project tend to land in the discovery step, not the profile.

**State the tool degradation explicitly when you run it.** If you don't have Firecrawl and DataForSEO, the SEO sections of every profile will be empty. Either skip those sections from the template entirely, or label them "qualitative analysis only — quantitative SEO data not available." A profile with an empty `## Backlink Profile` heading reads worse than one that says "skipped: no DataForSEO MCP."

**Pair it with `competitor-alternatives` if the goal is content.** This skill produces strategic intel for the operator. If the next step is writing a "you vs X" page, [`competitor-alternatives`](/skills/competitor-alternatives/) is the downstream content skill — it takes the profile output as input. Running competitor-profiling without a clear consumer is how the artifact sits in `competitor-profiles/` and never moves the site.