every-app/open-seo

competitor-analysis

Analyze one competitor's organic footprint, ranking keywords, content themes, backlinks, and gaps.

All-time #3392 Trending #1788 Hot #749 First seen May 22, 2026
8-week activity · all time api

Installation

$ npx skills add every-app/open-seo --skill competitor-analysis

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from every-app/open-seo · top by installs.

npx skills add every-app/open-seo

Browse all from every-app/open-seo

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 17.8K
License LICENSE
Default branch main
Open issues 70
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,395 B
  • docs SUMMARY.md 125 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 4,100 installs

Videos

Tutorials, guides, and showcases specifically about this skill.

SKILL.md

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 getprojectcontext 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 findserpcompetitors and confirm) whether there are others, write them back with updateprojectcontext (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 updateprojectcontext — 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>" } }.

OpenSEO MCP tools

  • getdomainoverview: baseline organic traffic and keyword count.
  • getsearchconsole_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.
  • getrankedkeywords: exact keyword, URL, rank, intent, traffic, CPC, and SERP-type rows for the competitor domain or page.
  • getbacklinksoverview: backlink/referring-domain profile.
  • findserpcompetitors: validate whether the named competitor is a real search competitor across the target keyword set.
  • searchlocalbusinesses, getlocalserpresults, and getgooglebusinessquestions: use for local SEO competitors when Maps/local-pack visibility, nearby businesses, categories, or Google Q&A matter.
  • getserpresults: validate direct head-to-head SERPs for important keywords.
  • research_keywords: expand gaps or category terms when needed.

Workflow

  1. Call getdomainoverview for the competitor, passing provided location/language when supported.
  2. If comparing to the user, call getdomainoverview for the user's domain too — and if Search Console is connected, getsearchconsole_performance for the user's real baseline.
  3. Call getrankedkeywords for the competitor. Use filters like maxRank, minSearchVolume, excludeBrandTerms, and resultTypes to keep rows relevant.
  4. If comparing to the user, call getrankedkeywords for the user's domain/page too, or use getserpresults for the shared terms when a lighter check is enough.
  5. For local SEO, use searchlocalbusinesses and getlocalserpresults around the relevant business location(s) before drawing local-pack conclusions. Add getgooglebusinessquestions only when Q&A evidence matters.
  6. Use findserpcompetitors 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

  1. Call getbacklinksoverview for the competitor, especially if authority appears to explain rankings. Continue without backlink evidence if it is unavailable.
  2. Use getserpresults for important shared or target keywords to compare positioning, passing provided location/language when supported.
  3. Produce an actionable plan:

- What they are doing well - Where they are vulnerable - Which pages/keywords to pursue - What to avoid copying

Output format

Start with:

  • Competitor snapshot
  • Biggest lesson
  • Best opportunity to beat them

Then include:

Area Competitor pattern Evidence OpenSEO opportunity

Include sections for:

  • Top keyword themes
  • Content/page types working for them
  • Backlink/authority notes
  • Head-to-head SERP observations
  • Priority actions for the user

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.