Map SEO market leaders, winning content themes, keyword coverage, backlinks, and strategic gaps.
64
76%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/competitive-landscape/SKILL.mdThe canonical home for this skill is competitive-landscape in every-app/open-seo
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.
projectIdThe project-context tools are free and shared with the app and other agents.
get_project_context 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.find_serp_competitors and the site and confirm it, write it back with update_project_context (addCompetitors), then continue the landscape work. Never front-load the full interview; suggest seo-project-setup at the end for the rest.update_project_context — 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>" } }.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, and get_google_business_questions: use for local SEO markets where proximity, Maps rankings, business categories, reviews, or Google Q&A affect who is winning.research_keywords to build 5-10 representative queries.get_keyword_metrics to validate relative demand and difficulty and find_serp_competitors to identify recurring domains at scale.search_local_businesses and get_local_serp_results for the highest-priority location(s) before synthesizing winners. Use get_serp_results as a complement for organic pages, not as the only local evidence.get_serp_results for representative queries when live SERP composition, ranking URLs, or SERP features need inspection. Send at most 10 queries per call.get_domain_overview; default to the top 3-5 domains before expanding.get_ranked_keywords.get_backlinks_overview 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.Start with the market read:
Then include:
| Domain | Type | Why they matter | Organic footprint | Winning themes | Weakness/gap |
|---|
Add:
7b9ee0e
Canonical home
since Sep 10, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.