every-app/open-seo

competitive-landscape

Map SEO market leaders, winning content themes, keyword coverage, backlinks, and strategic gaps.

All-time #3414 Trending #1796 Hot #737 First seen May 22, 2026
8-week activity · all time api

Installation

$ npx skills add every-app/open-seo --skill competitive-landscape

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,503 B
  • docs SUMMARY.md 125 B

History

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

SKILL.md

OpenSEO Competitive Landscape

Goal

Answer: "Who is winning this SEO market, what content is working for them, and where are the openings?"

Use this when the user wants a market-level view across several competitors. For a deep dive on one domain, use competitor-analysis.

Required inputs

  • projectId
  • Topic, seed keywords, market/category, or user's domain
  • Optional known competitors
  • Optional 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 market read in it — the saved competitors are the starting roster, and the business and positioning decide who counts as a competitor.
  2. This skill needs competitors. If none are saved, run a minimal inline setup: ask the user who they compete with, or infer a shortlist from findserpcompetitors and the site and confirm it, write it back with updateprojectcontext (addCompetitors), then continue the landscape work. 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 — every confirmed competitor via addCompetitors with a short note on why they matter, plus removeCompetitors for entries you added that turned out irrelevant (leave rows the user added alone) — and append a research log entry: { appendResearchLog: { summary: "Competitive landscape: <market/query set>. Verdict: <conclusion>" } }.

OpenSEO MCP tools

  • research_keywords: discover representative market queries.
  • getkeywordmetrics: validate known query sets with volume, difficulty, intent, and trends.
  • getserpresults: identify recurring ranking domains across target queries.
  • findserpcompetitors: compare domains competing across supplied keywords; use this before manual SERP counting when a keyword set is available.
  • getdomainoverview: size organic footprint for candidate leaders.
  • getsearchconsole_performance: when the user's own domain is in the comparison and Search Console is connected, anchor their position with first-party clicks/impressions/CTR rather than third-party estimates.
  • getrankedkeywords: find exact ranking keywords, URLs, ranks, intents, and SERP result types for leaders.
  • getbacklinksoverview: compare backlink/referring-domain strength where relevant.
  • searchlocalbusinesses, getlocalserpresults, and getgooglebusinessquestions: use for local SEO markets where proximity, Maps rankings, business categories, reviews, or Google Q&A affect who is winning.

Workflow

  1. Define the market query set:

- Use provided keywords, or call research_keywords to build 5-10 representative queries. - Include mixed intent: informational, commercial, comparison, and tool/software terms when applicable. - For local SEO, include neighborhood/city/service-area queries and identify the priority locations or coordinates.

  1. If the query set is already known, use getkeywordmetrics to validate relative demand and difficulty and findserpcompetitors to identify recurring domains at scale.
  2. For local SEO, call searchlocalbusinesses and getlocalserpresults for the highest-priority location(s) before synthesizing winners. Use getserp_results as a complement for organic pages, not as the only local evidence.
  3. Call getserpresults for representative queries when live SERP composition, ranking URLs, or SERP features need inspection. Send at most 10 queries per call.
  4. Identify recurring domains and group them by type:

- Direct product competitors - Publishers/media - Marketplaces/directories - Communities/forums - Documentation/resources

  1. For the strongest recurring domains, call getdomainoverview; default to the top 3-5 domains before expanding.
  2. For direct competitors and relevant publishers, call getrankedkeywords.
  3. Use getbacklinksoverview when backlink authority appears important or the user asks why a domain is winning. Backlinks may be unavailable if the account has not enabled that data; continue with SERP/domain evidence if it fails.
  4. Synthesize patterns: content types, themes, SERP formats, local-pack signals, authority advantages, and underserved angles.

Output format

Start with the market read:

  • Market leaders
  • Most winnable opportunity area
  • Biggest barrier to ranking

Then include:

Domain Type Why they matter Organic footprint Winning themes Weakness/gap

Add:

  • Query set used
  • Content formats that are working
  • Keyword/theme gaps
  • Backlink or authority observations
  • Recommended next workflows: competitor analysis, keyword clustering, or content brief

Guardrails

  • Distinguish SEO competitors from business competitors.
  • Do not overstate exact traffic when OpenSEO returns estimates.
  • If using a small query set, call the result directional.
  • Do not assume a publisher is a product competitor; label domain types clearly.
  • For local markets, distinguish organic-page winners from Maps/local-pack winners.