OpenSEO Competitor Analysis

SkillDev tools

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".

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the OpenSEO Competitor Analysis skill

What this skill tells your AI

The instructions your AI receives, as published by moizibnyousaf/marketing-cli in skills/openseo-competitor-analysis/SKILL.md and read by ahel’s review.

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

  1. Catalog + binding: mktg catalog info openseo --json --fields configured + .seo/openseo.json. No OpenSEO → hand off to competitive-intel (Exa qualitative), labeling metrics unknown.
  2. 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

  1. get_domain_overview for the competitor (and the user's domain when comparing).
  2. 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.
  3. find_serp_competitors when the supplied competitor's search overlap is unclear.
  4. Group keywords into themes: product/category, alternatives/comparisons, templates/tools, educational guides, branded demand.
  5. get_backlinks_overview when authority appears to explain rankings.
  6. get_serp_results for the important head-to-head terms.
  7. Synthesize the plan: what they do well, where they're vulnerable, which pages/keywords to pursue, what NOT to copy.
  8. Merge into brand/competitors.md (preserve existing sections; date the entry; confirm before overwriting populated competitor entries).
  9. Hand off: competitor-alternatives for "X vs Y" pages, seo-content for gap-driven briefs, openseo-keyword-clustering for page mapping.

Output Format

Start with: snapshot, biggest lesson, best opportunity to beat them. Then:

AreaCompetitor patternEvidenceOpenSEO opportunity

Anti-Patterns

  • Treating every competitor keyword as desirable — because ranking for a term and PROFITING from a term are different things; filter through positioning before anything lands in a plan.
  • Inferring page-level content strategy from keyword rows alone — because a keyword list can't tell you WHY a page works (structure, depth, format). Use SERP/web evidence for page-level claims.
  • Estimating the user's own performance from third-party data when GSC exists — because first-party clicks/impressions/position are free and exact; third-party estimates of your own site are the worst data in the room.
  • Recommending "copy what they do" — because imitation pages lose to the original on authority and freshness. Recommend a stronger angle on the same intent, never a replica.
  • Separating evidence from inference nowhere — because "they rank for X" (evidence) and "their content strategy is Y" (inference) carry different confidence and must read differently in brand/competitors.md.

Close the loop

After writing files, log completion so mktg plan / mktg status count the work (bare mktg run only logs loaded):

mktg run openseo-competitor-analysis --complete --writes <paths written> --result success --json

Adapted from every-app/open-seo .agents/skills/competitor-analysis (MIT). Workflow upstream; mktg brand-memory writes and handoff wiring added here.

Signals

GitHub stars
31
Forks
5
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
openseo-competitor-analysis
Source
github.com/moizibnyousaf/marketing-cli