Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

competitor-analysis — Claude Code skill for deep SEO competitor

A skill for analyzing one competitor's organic footprint: keywords, content themes, backlinks, and gaps. Delivers a report with a winnable action plan.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add every-app/open-seo --skill competitor-analysis -a claude-code
Open on GitHub

What competitor-analysis does

This skill digs into a named competitor's domain: traffic estimates, ranking keywords, content themes, and the backlink profile. The output goes through the seo-report skill, with sections on what the competitor does well, where they are vulnerable, and which pages to pursue.

It starts with get_project_context to ground the analysis in saved data. Then get_domain_overview for the competitor, get_ranked_keywords with filters like maxRank and excludeBrandTerms, and a second overview for your domain when a comparison is requested. With Search Console connected, it uses real clicks and CTR instead of third-party estimates.

Local SEO gets its own path: search_local_businesses, get_local_serp_results, and get_google_business_questions when maps-pack visibility matters. The skill checks the research log before spending credits and reuses results from the last 30 days.

What it helps with

  • Pull a competitor's ranking keywords and group them by theme
  • Spot gaps and weak positions in a competitor's footprint
  • Compare head-to-head SERPs for shared keywords
  • Assess a competitor's backlink profile and authority
  • Build a list of pages to pursue without copying content

Example prompts for the agent

  • Analyze competitor.com organic footprint
  • Compare competitor.com against our domain on shared keywords
  • Find where competitor.com is vulnerable and what to do next

How to install competitor-analysis

1Skills CLI (Vercel)

npx skills add every-app/open-seo --skill competitor-analysis -a claude-code

2Manually: put the files in place

~/.claude/skills/competitor-analysis/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/competitor-analysis/

From the same set9

The whole set →
keyword-research every-app Finds search query opportunities via OpenSEO MCP tools, evaluates SERP metrics, and saves vetted keywords to the project. Claude Code CX Codex Cursor +1 6,700installs link-prospecting every-app Finds realistic link prospects from search results and competitor backlinks, uncovers public contact details, and drafts targeted outreach pitches. Claude Code CX Codex Cursor +1 6,500installs competitive-landscape every-app This skill maps SEO competitors, content themes, keyword coverage, and backlinks. Use it to find gaps across a market. Claude Code CX Codex Cursor +1 6,500installs keyword-clustering every-app Groups keywords by search intent and assigns each cluster to an existing or proposed page. Claude Code CX Codex Cursor +1 6,500installs seo-coach every-app Enters an OpenSEO coach mode to explain search optimization workflows, suggest concrete next actions, and guide agent research tools. Claude Code CX Codex Cursor +1 6,500installs seo-project-setup every-app Collects a site's SEO context, goals, positioning, competitors, and key pages. Use it before running other OpenSEO skills. Claude Code CX Codex Cursor +1 6,500installs seo-audit every-app Audits a domain with OpenSEO tools, finds qualified organic search opportunities, and produces a data-backed action report. Useful when preparing an SEO review for non-experts. Claude Code CX Codex Cursor +1 5,100installs local-seo every-app Audits Google Business Profiles, benchmarks them against local rivals, and maps Google Maps visibility across a coordinate grid. Claude Code CX Codex Cursor +1 4,300installs

Similar

fixing-metadata ibelick Audits page metadata and fixes what's broken: titles, descriptions, canonical URLs, Open Graph, Twitter cards, icons and JSON-LD. Claude Code CX Codex Cursor +1 18,200installs content-creation official anthropics This skill helps draft marketing content for blogs, social posts, newsletters, landing pages, and more. Use it when channel formatting, SEO copy, headlines, or CTAs matter. Claude Code CX Codex Cursor +1 4,900installs seo-audit coreyhaines31 Diagnoses technical SEO issues, indexing drops, and metadata errors. Identifies why your site is losing organic search rankings in Google. Claude Code CX Codex Cursor +1 236,800installs brand claudekit Keeps brand voice, visual rules and design tokens in one markdown file, then feeds them to your agent's prompts and to your CSS variables. Claude Code CX Codex Cursor +1 39,500installs banner-design claudekit Generates banners for social media, ads, and web hero sections using HTML/CSS. Useful when you need fast visual creative assets directly in your coding agent. Claude Code CX Codex Cursor +1 39,000installs marketing-psychology coreyhaines31 Applies behavioral science and mental models to marketing decisions. It helps teams analyze buyer motivations and solve funnel bottlenecks. Claude Code CX Codex Cursor +1 164,000installs content-strategy coreyhaines31 Plans content roadmaps, selects blog topics, and balances searchable search-intent pieces with shareable formats. Use it when deciding what to write next to bring in leads. Claude Code CX Codex Cursor +1 163,400installs ai-seo coreyhaines31 Use this skill to work on content visibility in AI search and investigate why AI-generated answers cite—or miss—your brand. Claude Code CX Codex Cursor +1 150,100installs

Questions about competitor-analysis

How do I install competitor-analysis in Claude Code?

Run npx skills add every-app/open-seo --skill competitor-analysis -a claude-code. The skill lands in ~/.claude/skills/competitor-analysis/SKILL.md.

What does competitor-analysis do?

It analyzes one competitor's organic presence: traffic, keywords, content themes, backlinks. The result is a report with vulnerabilities and an action plan.

How is it different from competitive-landscape?

competitive-landscape finds market leaders first. competitor-analysis goes deep on one named domain. If you don't know who to analyze, start with the landscape skill.

Source text

SKILL.md · MIT
---
name: competitor-analysis
description: "Analyze one competitor's organic footprint, ranking keywords, content themes, backlinks, and gaps."
---

# OpenSEO 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
- Optional topic/category/location/language

## Project context

The project-context tools are free and shared with the app 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` (`addCompetitors`), then continue the analysis. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest.
3. Before spending credits, check the research log. 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 `addCompetitors` upsert for this domain with a short note on its strengths and where it is vulnerable — and append a research log entry: `{ appendResearchLog: { summary: "Competitor analysis: <domain>. Verdict: <conclusion>" } }`.

## Deliver as a report

Deliver through the `seo-report` skill, saving with `skill: "competitor-analysis"`. If that skill is not available, say so and stop before writing HTML.

## OpenSEO MCP tools

- `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, CPC, and SERP-type rows for the competitor domain or page.
- `get_backlinks_overview`: 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.

## Workflow

1. Call `get_domain_overview` for the competitor, passing provided location/language 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`, `excludeBrandTerms`, and `resultTypes` 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, passing provided location/language when supported.
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 link line from `seo-report`, pointing at `https://openseo.so/docs/skills/competitor-analysis` ("OpenSEO Competitor Analysis skill"), 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.

© every-app · MIT · every-app/open-seo

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor