Installs into .claude/skills of the current project.
Are you the author of Competitor Analysis?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/codextde-competitor-analysis)
---
name: competitor-analysis
description: "Analyze one competitor's organic footprint, ranking keywords, content themes, backlinks, and gaps."
---
# AutoSEO Competitor Analysis
## Goal
Analyze one competitor deeply enough to decide what to learn from, avoid, counter-position against, or outrank.
Use this for a named competitor. For identifying the market leaders first, use `competitive-landscape`.
## Required inputs
- `projectId`
- Competitor domain
- User's domain when comparison is requested (the project domain by default)
- Optional topic/category/market
## Project context
Project context is free and shared with the AutoSEO app (Brand Knowledge page) and other agents.
1. Call `get_project_context` first and ground the analysis in it — the saved competitors say whether this domain is already known and what was concluded about it before.
2. This skill needs competitors. If none are saved, run a minimal inline setup: save the competitor being analyzed, and ask the user (or infer from `find_serp_competitors` and confirm) whether there are others, write them back with `update_project_context` (`add_competitors`), then continue the analysis. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest.
3. Before spending, check the `researchLog`. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it.
4. On finish, write back what is durable with `update_project_context` — an `add_competitors` upsert for this domain with a short note on its strengths and where it is vulnerable — and append `{ op: "append_research_log", summary: "Competitor analysis: <domain>. Verdict: <conclusion>" }`.
## Deliver as a report
Deliver through the `seo-report` skill. If that skill is not available, say so and stop before writing HTML.
## AutoSEO MCP tools
Paid tools use DataForSEO and need the connection's **spend** scope.
- `get_domain_overview`: baseline organic traffic and keyword count.
- `get_search_console_performance`: when comparing to the user's own domain and Search Console is connected, use it as the first-party baseline (real clicks/impressions/CTR/position) instead of estimating the user's own performance from third-party data.
- `get_ranked_keywords`: exact keyword, URL, rank, intent, traffic, and CPC rows for the competitor domain or page. Filter with `maxRank`, `minSearchVolume`, `excludeTerms` (brand terms), and `sortBy`.
- `get_domain_top_pages`: the competitor's pages ranked by estimated traffic.
- `get_backlinks_overview`, `get_referring_domains`: backlink/referring-domain profile.
- `find_serp_competitors`: validate whether the named competitor is a real search competitor across the target keyword set.
- `search_local_businesses`, `get_local_serp_results`, and `get_google_business_questions`: use for local SEO competitors when Maps/local-pack visibility, nearby businesses, categories, or Google Q&A matter.
- `get_serp_results`: validate direct head-to-head SERPs for important keywords.
- `research_keywords`: expand gaps or category terms when needed.
- `get_competitor_h2h` (free): when the project tracks AI visibility and the competitor is a tracked brand, how AI assistants compare the two brands.
## Workflow
1. Call `get_domain_overview` for the competitor, passing a market when supported.
2. If comparing to the user, call `get_domain_overview` for the user's domain too — and if Search Console is connected, `get_search_console_performance` for the user's real baseline.
3. Call `get_ranked_keywords` for the competitor. Use filters like `maxRank`, `minSearchVolume`, and `excludeTerms` to keep rows relevant.
4. If comparing to the user, call `get_ranked_keywords` for the user's domain/page too, or use `get_serp_results` for the shared terms when a lighter check is enough.
5. For local SEO, use `search_local_businesses` and `get_local_serp_results` around the relevant business location(s) before drawing local-pack conclusions. Add `get_google_business_questions` only when Q&A evidence matters.
6. Use `find_serp_competitors` when the competitor was supplied by the user but its search overlap is unclear.
7. Group competitor keywords into themes:
- Product/category terms
- Alternatives/comparisons
- Templates/tools/calculators
- Educational guides
- Branded demand
- Local/neighborhood terms when relevant
8. Call `get_backlinks_overview` for the competitor, especially if authority appears to explain rankings. Continue without backlink evidence if it is unavailable.
9. Use `get_serp_results` for important shared or target keywords to compare positioning.
10. Produce an actionable plan:
- What they are doing well
- Where they are vulnerable
- Which pages/keywords to pursue
- What to avoid copying
## Output format
`h1`: the competitor domain.
If a report template applies (see `seo-report`), its sections and tone replace this list.
Sections in this order:
1. **Snapshot** — one or two opening sentences, then a table of the competitor's organic footprint (traffic estimate, keyword count, referring domains). Add the user's domain as a second row when comparing.
2. **The biggest lesson** — one finding.
3. **Where they are vulnerable** — one finding per opening, ordered by how winnable it is.
4. **Keyword themes** — a table of theme, example keywords, volume, and whether the user competes there. A bar chart when a few themes dominate the footprint.
5. **Content patterns and authority** — prose, with a note for anything inferred from keyword rows rather than seen on a page.
6. **What to do next** — an ordered list, shortest useful.
7. **How this report was made** — opens with the skill line from `seo-report` ("AutoSEO Competitor Analysis skill", `competitor-analysis`), then which tools reported what, and what you checked yourself.
## Guardrails
- Do not treat all competitor keywords as desirable. Filter for business fit.
- Separate evidence from inference.
- Do not infer competitor page/content-type patterns from keyword rows alone; use SERP or web evidence for page-level claims.
- For local SEO, do not infer Maps/local-pack strength from national organic domain metrics alone; use local business and local SERP tools when the location is known or reasonably discoverable.
- Do not recommend copying content; recommend a stronger angle or better answer to the same intent.
- If the user's domain is unavailable, frame the analysis as competitor-only.