openclaudia/openclaudia-skills1 file

Competitor Analysis

Conduct full competitor strategy breakdowns across SEO, ads, social, email, pricing, and positioning. Use when the user asks to analyze competitors, benchmark against rivals, understand competitive landscape, find competitor weaknesses, or build a competitive matrix. Trigger phrases include "competitor analysis", "competitive analysis", "who are my competitors", "competitor research", "competitive landscape", "benchmark competitors", "competitor ads", "competitor SEO", "competitor pricing", "SWOT analysis", "competitive matrix".

Specification
Skill ID
openclaudia/openclaudia-skills/competitor-analysis
Publisher
openclaudia
Repository
openclaudia-skills
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

openclaudia/openclaudia-skills/competitor-analysisInstalls these files
  • SKILL.md

What this skill tells the agent

Competitor Analysis Framework

You are an expert competitive intelligence analyst. When the user asks you to analyze competitors, build competitive matrices, or identify competitive advantages, follow this framework.

Optional API Integrations

The following API keys enable richer data collection. All are optional -- the framework works without them using web search and manual research.

  • SEMRUSH_API_KEY - Domain overview, organic keywords, competitor discovery, traffic estimates
  • SERPAPI_API_KEY - Real-time SERP competitive analysis, ad copy extraction
  • SERPINGAPI_API_KEY - Real-time organic SERP positions and SERP features (free tier available)
  • SCRAPINGBEE_API_KEY - Scrape competitor pages that block direct fetching

SemRush API (if SEMRUSH_API_KEY available)

Domain Overview - Get traffic, keywords, and authority for any competitor:

# Domain overview (organic traffic, keywords, authority score)
curl -s "https://api.semrush.com/?type=domain_ranks&key=${SEMRUSH_API_KEY}&export_columns=Db,Dn,Rk,Or,Ot,Oc,Ad,At,Ac&domain={competitor_domain}"

Columns: Db=Database, Dn=Domain, Rk=Rank, Or=Organic Keywords, Ot=Organic Traffic, Oc=Organic Cost, Ad=Adwords Keywords, At=Adwords Traffic, Ac=Adwords Cost.

Organic Keywords - See what keywords a competitor ranks for:

# Top organic keywords for a competitor domain
curl -s "https://api.semrush.com/?type=domain_organic&key=${SEMRUSH_API_KEY}&domain={competitor_domain}&database=us&export_columns=Ph,Po,Nq,Cp,Ur,Tr&display_limit=50&display_sort=tr_desc"

Columns: Ph=Keyword, Po=Position, Nq=Search Volume, Cp=CPC, Ur=URL, Tr=Traffic %.

Competitor Discovery - Find domains competing for the same keywords:

# Domains competing with a given domain in organic search
curl -s "https://api.semrush.com/?type=domain_organic_organic&key=${SEMRUSH_API_KEY}&domain={domain}&database=us&export_columns=Dn,Cr,Np,Or,Ot,Oc&display_limit=20"

Columns: Dn=Domain, Cr=Competition Level, Np=Common Keywords, Or=Organic Keywords, Ot=Organic Traffic, Oc=Organic Cost.

Keyword Gap - Find keywords competitors rank for but you do not:

curl -s "https://api.semrush.com/?type=domain_domains&key=${SEMRUSH_API_KEY}&domains=*|or|{your_domain}|*|or|{competitor1}|*|or|{competitor2}&database=us&export_columns=Ph,P0,P1,P2,Nq,Cp&display_limit=50&display_filter=%2B|P0|Eq|0"

The filter +|P0|Eq|0 returns keywords where your domain (position 0) does not rank.

SerpAPI (if SERPAPI_API_KEY available)

SERP Competitive Analysis - See who ranks for key terms in real time:

# Real-time SERP for competitive keywords
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en"

Use this to:

  • Identify which competitors dominate organic results for target keywords (parse organic_results)
  • Extract competitor ad copy from ads and shopping_results fields
  • Discover related competitor keywords from related_searches
  • See competitor presence in SERP features: knowledge_graph, local_results, featured_snippet

Google Ads Competitor Analysis:

# Search a commercial keyword to see competitor ads
curl -s "https://serpapi.com/search.json?q={commercial_keyword}&api_key=${SERPAPI_API_KEY}&gl=us&hl=en"

The response ads array contains: position, title, link, displayed_link, tracking_link, description, sitelinks. This reveals competitor ad copy, landing pages, and messaging.

Serping API (if SERPINGAPI_API_KEY available)

SERP Competitive Analysis - Same use as SerpAPI above, for organic results and SERP features (web search only — no ads or shopping_results). Also usable when no SerpAPI key is configured:

# Real-time SERP for competitive keywords
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}'

Use this to:

  • Identify which competitors dominate organic results for target keywords (parse organic: position, title, link, snippet)
  • Discover related competitor keywords from relatedSearches (.query)
  • See competitor presence in SERP features: knowledgeGraph, answerBox, peopleAlsoAsk
  • Add "tbs": "qdr:m" to see who ranked in the last month, or "location" for a local SERP

Errors are {"error": {"code", "message"}}; on 429 quota_exceeded tell the user the monthly quota is spent and fall back to WebSearch.

ScrapingBee (if SCRAPINGBEE_API_KEY available)

Use ScrapingBee to scrape competitor pages that block direct fetching via WebFetch (e.g., JavaScript-heavy pages, bot-protected sites, pricing pages):

# Scrape a competitor page
curl -s "https://app.scrapingbee.com/api/v1/?api_key=${SCRAPINGBEE_API_KEY}&url={url}&render_js=false"

Set render_js=true if the page requires JavaScript rendering (SPAs, dynamic pricing tables). Useful for:

  • Extracting pricing page details when WebFetch returns incomplete content
  • Scraping competitor landing pages for messaging and positioning analysis
  • Capturing competitor feature comparison pages
  • Getting content from sites that block automated requests

Note: ScrapingBee charges per request. Use sparingly -- try WebFetch first and fall back to ScrapingBee only when needed.

Step 1: Gather Context

Establish: user's product, industry/vertical, target audience, known competitors, key concerns (pricing, features, marketing), available tools (SEMrush, Ahrefs, SimilarWeb), goal (strategy, launch decision, investor deck, repositioning).

Step 2: Competitor Identification

Three Categories

  • Direct (same product, same audience): 3-5 competitors
  • Indirect (different product, same problem): 2-3 competitors
  • Aspirational (market leaders to learn from): 1-2 competitors

Discovery Methods

Google "[category]" (ads + organic top 10), G2/Capterra "Compare" pages, Reddit/Twitter "[competitor] alternative", customer interviews, job postings, funding announcements, SEMrush "Competing Domains" report.

Step 3: SEO Analysis

If SEMRUSH_API_KEY is available, use the Domain Overview and Organic Keywords endpoints (see Optional API Integrations above) to populate the profile below with real data. If SERPAPI_API_KEY or SERPINGAPI_API_KEY is available, supplement with real-time SERP position data. Otherwise, use WebSearch and public tools to estimate.

For each competitor:

COMPETITOR SEO PROFILE: [Company Name]
DA/DR: [score] | Monthly Organic Traffic: [volume] | Ranking Keywords: [total]

TOP KEYWORDS: [keyword, position, volume, traffic share]

CONTENT STRATEGY:
  Post frequency, avg length, content types, top 5 performing URLs

BACKLINK PROFILE:
  Total backlinks, referring domains, top linking domains, acquisition rate

TECHNICAL: Site speed, mobile optimization, schema markup, architecture

Traffic Source Reality Check (do this BEFORE trusting the numbers)

A headline like "74% organic" does not mean a competitor is winning at SEO discovery. Most tools report the last click, which hides where awareness was actually created. Decompose before you draw conclusions:

  1. Branded vs non-branded search. Tag every keyword containing the brand name (normalize out spaces/dots so auto ppt matches autoppt). Branded search = people who already know the name navigating back, not Google discovering them.
  2. Navigational bucket = branded search + Direct traffic. Treat them as one: an existing audience returning, not new acquisition.
  3. Genuinely acquisitive search = non-branded organic (generic terms, competitor-brand terms, how-to content). This is the only slice that is truly SEO-driven discovery — size it explicitly.

Use this skill in a project

Open any RiverX project, search the Skills panel for openclaudia/openclaudia-skills/competitor-analysis, and install it in one click.

Use this skill