| name | openseo-competitor-analysis |
| description | Deep-dive ONE competitor's organic footprint — exact ranking keywords and URLs, content themes, backlink profile, and exploitable gaps — with findings written into brand/competitors.md. Use this skill when the user names a competitor and wants to know what to learn from them, counter, or outrank, including head-to-head comparisons against the user's own domain. For market-level mapping first, use openseo-competitive-landscape. Triggers: "analyze competitor", "competitor keywords", "competitor backlinks", "beat <competitor>", "competitor seo teardown". |
| category | seo |
| tier | nice-to-have |
| layer | strategy |
| reads | ["brand/competitors.md","brand/positioning.md"] |
| writes | ["brand/competitors.md"] |
| env_vars | ["OPENSEO_API_KEY","OPENSEO_API_BASE"] |
| triggers | ["analyze competitor","competitor keywords","competitor backlinks","beat competitor","competitor seo teardown"] |
| allowed-tools | ["Bash(mktg catalog *)","Bash(mktg run *)"] |
OpenSEO Competitor Analysis
Analyze one competitor deeply enough to decide what to learn from, avoid, counter-position against, or outrank. Findings merge into brand/competitors.md — mktg's competitor memory that competitive-intel maintains qualitatively and this skill now grounds in measured rows.
On Activation
- Catalog + binding:
mktg catalog info openseo --json --fields configured + .seo/openseo.json. No OpenSEO → hand off to competitive-intel (Exa qualitative), labeling metrics unknown.
- Brand grounding: read
brand/competitors.md + brand/positioning.md (tolerate templates). If the competitor isn't named, ask — never guess the domain.
OpenSEO MCP Tools
get_domain_overview: baseline organic traffic + keyword count (both domains when comparing).
get_ranked_keywords: exact keyword/URL/rank/intent/traffic rows. Use maxRank, minSearchVolume, excludeBrandTerms, resultTypes filters to keep rows relevant.
get_backlinks_overview: backlink/referring-domain profile (may be unavailable — continue without it).
find_serp_competitors: validate the named competitor actually overlaps in search.
get_serp_results: head-to-head SERP checks for the important shared terms.
get_search_console_performance: when comparing to the user's domain and GSC is connected, the USER's baseline is first-party — never estimate your own side from third-party data.
research_keywords: expand gap terms.
Workflow
get_domain_overview for the competitor (and the user's domain when comparing).
get_ranked_keywords for the competitor with sensible filters; same for the user, or get_serp_results for shared terms when a lighter check suffices.
find_serp_competitors when the supplied competitor's search overlap is unclear.
- Group keywords into themes: product/category, alternatives/comparisons, templates/tools, educational guides, branded demand.
get_backlinks_overview when authority appears to explain rankings.