Analyze one competitor's organic footprint, ranking keywords, content themes, backlinks, and gaps.
62
73%
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/competitor-analysis/SKILL.mdThe canonical home for this skill is competitor-analysis in every-app/open-seo
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.
projectIdThe project-context tools are free and shared with the app and other agents.
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.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.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>" } }.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.get_domain_overview for the competitor, passing provided location/language when supported.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.get_ranked_keywords for the competitor. Use filters like maxRank, minSearchVolume, excludeBrandTerms, and resultTypes to keep rows relevant.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.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.find_serp_competitors when the competitor was supplied by the user but its search overlap is unclear.get_backlinks_overview for the competitor, especially if authority appears to explain rankings. Continue without backlink evidence if it is unavailable.get_serp_results for important shared or target keywords to compare positioning, passing provided location/language when supported.Start with:
Then include:
| Area | Competitor pattern | Evidence | OpenSEO opportunity |
|---|
Include sections for:
7b9ee0e
Canonical home
since Sep 16, 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.