competitor-analysis

Soborbo's avatarfrom Soborbo

Extracts marketing elements from competitor websites. Structured observation only. Does not write copy or make recommendations.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 1, 2026

When & Why to Use This Skill

The Competitor Analysis skill is a specialized tool designed to extract structured marketing data from competitor websites with high precision. It focuses on objective observation of messaging, trust signals, pricing models, and call-to-action strategies, providing a clean, raw dataset that serves as the essential first step for strategic positioning and content creation workflows.

Use Cases

  • Messaging & Value Prop Benchmarking: Systematically extract headlines and unique claims from 3-5 competitors to identify common industry patterns and brand tones.
  • Pricing & Transparency Audit: Analyze how rivals structure their pricing, including hidden costs, discount models, and transparency levels to inform your own pricing strategy.
  • Trust Signal Mapping: Identify the specific review platforms, certifications, and guarantees competitors use to build authority and credibility in the market.
  • Conversion Path Analysis: Observe primary CTA placements, button text, and form field requirements on competitor landing pages to understand their lead generation tactics.
  • Gap Analysis Data Collection: Generate a structured report of 'not found' elements on competitor sites to identify potential areas for brand differentiation.
namecompetitor-analysis
descriptionExtracts marketing elements from competitor websites. Structured observation only. Does not write copy or make recommendations.

Competitor Analysis Skill

Purpose

Extracts observable marketing data from competitor websites. Observation only, no interpretation.

Position in Workflow

[competitor-analysis] → [keyword-research] → [lead-gen-copy]
         ↓
   Raw observations      →    Patterns    →    Copy decisions

This skill produces RAW DATA. Copy decisions happen in other skills.

Input

competitor_urls: ["url1", "url2", "url3"]  # min 3, max 5
analysis_focus: full | messaging | trust | pricing | cta
industry: removals | cleaning | trades | legal | healthcare

Output

competitors:
  - url: "..."
    messaging: { ... }
    trust: { ... }
    pricing: { ... }
    ctas: { ... }
observed_differences: [ ... ]  # What varies between competitors

Hard Rules

Rule Requirement
Competitor count Minimum 3, maximum 5
Data source Visual observation only
No scraping Manual review, no HTML parsing
No recommendations Observations only, no "should"
Absence = explicit Missing element → not_found: true

Analysis Categories

1. Messaging

Field Extract
headline Exact H1 text
headline_pattern benefit / feature / question / statement
value_prop Main promise (1 sentence)
tone formal / professional / casual / friendly
unique_claims List of specific claims

2. Trust Elements

Field Extract
review_platform Google / Trustpilot / none
rating Number or not_found
review_count Number or not_found
credentials List: type + name
guarantees List: type + specifics
team_visible true / false

3. Pricing

Field Extract
transparency hidden / teaser / full
lowest_shown Price or not_found
pricing_model fixed / hourly / quote-only
discounts List or not_found

4. CTAs

Field Extract
primary_text Exact button text
primary_placement hero / header / footer
form_fields_count Number
phone_prominent true / false
mobile_sticky true / false

Handling Missing Data

Never leave fields empty. Never guess.

# If element exists
rating: 4.8

# If element not found
rating: 
  not_found: true
  
# If unclear/ambiguous
pricing_model:
  unclear: true
  observed: "Shows 'from £X' but also 'call for quote'"

Observed Differences Rules

Differences are observations, not opportunities or recommendations.

# CORRECT - observation only
observed_differences:
  - category: pricing
    observation: "Competitors A, B show no prices. Competitor C shows 'from £299'."
    
# WRONG - contains recommendation
observed_differences:
  - category: pricing
    opportunity: "Show transparent pricing to differentiate"  # ❌ NO

"Opportunity" word is FORBIDDEN in output.

Output Stability

Same input → same output structure. Always.

Scenario Rule
Field has data Include with value
Field not found Include with not_found: true
Field unclear Include with unclear: true + observed
Never Omit fields

Forbidden

  • ❌ HTML scraping or parsing
  • ❌ Accessing competitor analytics
  • ❌ Recommendations or "should" statements
  • ❌ Ranking competitors (better/worse)
  • ❌ Omitting fields when data missing
  • ❌ Using word "opportunity"
  • ❌ Making strategic suggestions

Non-goals

  • Does NOT write copy
  • Does NOT rank competitors
  • Does NOT make recommendations
  • Does NOT interpret data
  • Does NOT suggest positioning

References

Definition of Done

  • 3-5 competitors analyzed
  • All categories filled (or marked not_found)
  • No recommendations in output
  • No "opportunity" word used
  • Differences are observations only