every-app/open-seo
competitor-analysis
Analyze one competitor's organic footprint, ranking keywords, content themes, backlinks, and gaps.
Installation
npx skills add every-app/open-seo --skill competitor-analysis
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Audit a website's SEO with Firecrawl. Use when the user asks for an SEO audit, metadata and hea…
31.6K installsUniversal AI-powered web scraper for any platform. Scrape data from Instagram, Facebook, TikTok…
15.2K installsVue 3 patterns with Clerk — composables (useAuth, useUser, useClerk, useOrganization), Vue Rout…
11.4K installsUse when building email features, emails going to spam, high bounce rates, setting up SPF/DKIM/…
8.9K installsAlso in this package
Other skills from every-app/open-seo · top by installs.
npx skills add every-app/open-seo
More details
Agent compatibility
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Repository health
main
Package contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md5,395 B -
docs
SUMMARY.md125 B
History
- First seen on skills.sh
- First recorded snapshot · 4,100 installs
Videos
Tutorials, guides, and showcases specifically about this skill.
SKILL.md
OpenSEO Competitor Analysis
Goal
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.
Required inputs
projectId- Competitor domain
- User's domain when comparison is requested
- Optional topic/category/location/language
Project context
The project-context tools are free and shared with the app and other agents.
- Call
getprojectcontextfirst and ground the analysis in it — the saved competitors say whether this domain is already known and what was concluded about it before. - This skill needs competitors. If none are saved, run a minimal inline setup: save the competitor being analyzed, and ask the user (or infer from
findserpcompetitorsand confirm) whether there are others, write them back withupdateprojectcontext(addCompetitors), then continue the analysis. 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
updateprojectcontext— anaddCompetitorsupsert 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>" } }.
OpenSEO MCP tools
getdomainoverview: baseline organic traffic and keyword count.getsearchconsole_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.getrankedkeywords: exact keyword, URL, rank, intent, traffic, CPC, and SERP-type rows for the competitor domain or page.getbacklinksoverview: backlink/referring-domain profile.findserpcompetitors: validate whether the named competitor is a real search competitor across the target keyword set.searchlocalbusinesses,getlocalserpresults, andgetgooglebusinessquestions: use for local SEO competitors when Maps/local-pack visibility, nearby businesses, categories, or Google Q&A matter.getserpresults: validate direct head-to-head SERPs for important keywords.research_keywords: expand gaps or category terms when needed.
Workflow
- Call
getdomainoverviewfor the competitor, passing provided location/language when supported. - If comparing to the user, call
getdomainoverviewfor the user's domain too — and if Search Console is connected,getsearchconsole_performancefor the user's real baseline. - Call
getrankedkeywordsfor the competitor. Use filters likemaxRank,minSearchVolume,excludeBrandTerms, andresultTypesto keep rows relevant. - If comparing to the user, call
getrankedkeywordsfor the user's domain/page too, or usegetserpresultsfor the shared terms when a lighter check is enough. - For local SEO, use
searchlocalbusinessesandgetlocalserpresultsaround the relevant business location(s) before drawing local-pack conclusions. Addgetgooglebusinessquestionsonly when Q&A evidence matters. - Use
findserpcompetitorswhen the competitor was supplied by the user but its search overlap is unclear. - Group competitor keywords into themes:
- Product/category terms - Alternatives/comparisons - Templates/tools/calculators - Educational guides - Branded demand - Local/neighborhood terms when relevant
- Call
getbacklinksoverviewfor the competitor, especially if authority appears to explain rankings. Continue without backlink evidence if it is unavailable. - Use
getserpresultsfor important shared or target keywords to compare positioning, passing provided location/language when supported. - Produce an actionable plan:
- What they are doing well - Where they are vulnerable - Which pages/keywords to pursue - What to avoid copying
Output format
Start with:
- Competitor snapshot
- Biggest lesson
- Best opportunity to beat them
Then include:
| Area | Competitor pattern | Evidence | OpenSEO opportunity |
|---|
Include sections for:
- Top keyword themes
- Content/page types working for them
- Backlink/authority notes
- Head-to-head SERP observations
- Priority actions for the user
Guardrails
- Do not treat all competitor keywords as desirable. Filter for business fit.
- Separate evidence from inference.
- Do not infer competitor page/content-type patterns from keyword rows alone; use SERP or web evidence for page-level claims.
- For local SEO, do not infer Maps/local-pack strength from national organic domain metrics alone; use local business and local SERP tools when the location is known or reasonably discoverable.
- Do not recommend copying content; recommend a stronger angle or better answer to the same intent.
- If the user's domain is unavailable, frame the analysis as competitor-only.