competitive-landscape
every-app/open-seo
Map SEO market leaders, winning content themes, keyword coverage, and strategic gaps across competitors.
What is competitive-landscape?
Identify who is winning in your SEO market, what content themes are working for them, and where the openings are. Use this skill when you need a market-level competitive view across multiple domains; for deep analysis of a single competitor, use competitor-analysis instead.
- Discover representative market queries and validate demand/difficulty across them
- Identify recurring ranking domains and group them by type (product competitors, publishers, marketplaces, communities, resources)
- Analyze organic footprint, winning content themes, and keyword rankings for top competitors
- Compare backlink authority and referring-domain strength where relevant
- Surface underserved content angles and demand gaps in the market
- Support local SEO markets with Maps rankings, business categories, and proximity signals
How to install competitive-landscape
npx skills add https://github.com/every-app/open-seo --skill competitive-landscape- A projectId (created via seo-project-setup or passed from context)
- Topic, seed keywords, market/category, or your own domain
- Optional: list of known competitors (or the skill will infer them from SERP results)
- Optional: location/language for local SEO markets
How to use competitive-landscape
- 1.Call get_project_context to load saved competitors and business context
- 2.If no competitors are saved, ask the user to name them or run find_serp_competitors to infer a shortlist, then confirm and save via update_project_context
- 3.Check the research log to reuse results from the last 30 days if available
- 4.Build or validate a market query set (5–10 representative queries with mixed intent: informational, commercial, comparison, tool/software)
- 5.Call get_keyword_metrics and find_serp_competitors to identify recurring domains at scale
- 6.For local SEO, call search_local_businesses and get_local_serp_results for priority locations
- 7.Call get_domain_overview for the top 3–5 recurring domains and get_ranked_keywords for direct competitors
- 8.Call get_backlinks_overview to compare authority when relevant
Use cases
- Determine which competitors own the most valuable keywords and content themes in your market
- Find content gaps and underserved angles where you can compete without facing entrenched leaders
- Understand why specific domains are winning (authority, content type, SERP features) and what to do instead
- Validate market demand and difficulty for a keyword set before investing in content
- Identify local SEO winners by location, business category, and review signals
- SEO strategists and content marketers planning market entry or repositioning
- Product teams evaluating competitive positioning and content strategy
- Agencies running competitive audits for clients across multiple markets
- Founders and growth leads assessing SEO opportunity in a new category
competitive-landscape FAQ
Use competitive-landscape for a market-level view across multiple competitors and to find gaps and openings. Use competitor-analysis for a deep dive into one specific domain's keywords, content, and strategy.
The skill will infer a shortlist using find_serp_competitors based on your seed keywords or domain, then ask you to confirm before proceeding. You can also suggest competitors manually, and the skill will save them to your project context.
Include mixed intent queries (informational, commercial, comparison, and tool/software terms when applicable). For local SEO, include neighborhood/city/service-area queries. If the query set is small, the report will note the result as directional.
Yes. The skill checks the research log and reuses results from the last 30 days if the same research ran before, saving you credits.
Organic footprint size, winning content themes, exact ranking keywords and URLs, SERP result types, backlink/referring-domain strength, and for local markets, Maps rankings and business signals.
Full instructions (SKILL.md)
Source of truth, from every-app/open-seo.
name: competitive-landscape description: Map SEO market leaders, winning content themes, keyword coverage, backlinks, and strategic gaps.
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.
- Call
get_project_contextfirst 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. - 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
find_serp_competitorsand the site and confirm it, write it back withupdate_project_context(addCompetitors), then continue the landscape work. Never front-load the full interview; suggestseo-project-setupat the end for the rest. - 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.
- On finish, write back what is durable with
update_project_context— every confirmed competitor viaaddCompetitorswith a short note on why they matter, plusremoveCompetitorsfor 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>" } }.
Deliver as a report
Deliver through the seo-report skill, saving with skill: "competitive-landscape". If that skill is not available, say so and stop before writing HTML.
OpenSEO MCP tools
research_keywords: discover representative market queries.get_keyword_metrics: validate known query sets with volume, difficulty, intent, and trends.get_serp_results: identify recurring ranking domains across target queries.find_serp_competitors: compare domains competing across supplied keywords; use this before manual SERP counting when a keyword set is available.get_domain_overview: size organic footprint for candidate leaders.get_search_console_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.get_ranked_keywords: find exact ranking keywords, URLs, ranks, intents, and SERP result types for leaders.get_backlinks_overview: compare backlink/referring-domain strength where relevant.search_local_businesses,get_local_serp_results, andget_google_business_questions: use for local SEO markets where proximity, Maps rankings, business categories, reviews, or Google Q&A affect who is winning.
Workflow
- Define the market query set:
- Use provided keywords, or call
research_keywordsto 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.
- Use provided keywords, or call
- If the query set is already known, use
get_keyword_metricsto validate relative demand and difficulty andfind_serp_competitorsto identify recurring domains at scale. - For local SEO, call
search_local_businessesandget_local_serp_resultsfor the highest-priority location(s) before synthesizing winners. Useget_serp_resultsas a complement for organic pages, not as the only local evidence. - Call
get_serp_resultsfor representative queries when live SERP composition, ranking URLs, or SERP features need inspection. Send at most 10 queries per call. - Identify recurring domains and group them by type:
- Direct product competitors
- Publishers/media
- Marketplaces/directories
- Communities/forums
- Documentation/resources
- For the strongest recurring domains, call
get_domain_overview; default to the top 3-5 domains before expanding. - For direct competitors and relevant publishers, call
get_ranked_keywords. - Use
get_backlinks_overviewwhen 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. - Synthesize patterns: content types, themes, SERP formats, local-pack signals, authority advantages, and underserved angles.
Output format
h1: the market or category.
If a report template applies (see seo-report), its sections and tone replace this list.
Sections in this order:
- The market read — one or two opening sentences naming the leaders, the most winnable area, and the biggest barrier.
- Who is winning — a table of domain, type, organic footprint, winning themes, and the gap. Label domain types explicitly.
- Why they win — one finding per pattern, the Fix pointing at what the user should do instead.
- Gaps and openings — a table of theme, demand, and who currently owns it, plus a bar chart when a handful of themes carry the demand.
- What to do next — an ordered list ending in the next workflow to run: competitor analysis, keyword clustering, or a content brief.
- How this report was made — opens with the skill link line from
seo-report, pointing athttps://openseo.so/docs/skills/competitive-landscape("OpenSEO Competitive Landscape skill"), then the query set used, and a note calling the read directional when the query set was small.
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.
Related skills
More from every-app/open-seo and the wider catalog.

competitor-analysis
Analyze a competitor's organic footprint, keywords, content themes, backlinks, and ranking gaps.

deslop
Agent skill from every-app/open-seo.

keyword-clustering
Cluster keywords by intent and map them to existing or proposed pages for SEO strategy.

keyword-research
Discover high-opportunity keywords, evaluate metrics and SERPs, and prioritize targets for SEO content.

link-prospecting
Find link prospects and draft personalized outreach from SERPs and backlink signals.

local-seo
Audit Google Business Profiles, benchmark against local competitors, and map visibility across your service area.