From claude-seo
Analyzes Google SERPs to detect page-type mismatches, derives user stories from search intent signals, scores pages from persona perspectives, and diagnoses why optimized pages fail to rank.
npx claudepluginhub agricidaniel/claude-seo --plugin claude-seoThis skill uses the workspace's default tool permissions.
SXO bridges the gap between SEO (what Google rewards) and UX (what users need).
Guides strict Test-Driven Development (TDD): write failing tests first for features, bugfixes, refactors before any production code. Enforces red-green-refactor cycle.
Guides systematic root cause investigation for bugs, test failures, unexpected behavior, performance issues, and build failures before proposing fixes.
Guides A/B test setup with mandatory gates for hypothesis validation, metrics definition, sample size calculation, and execution readiness checks.
SXO bridges the gap between SEO (what Google rewards) and UX (what users need). Traditional SEO audits check technical health. SXO asks: "Does this page deserve to rank for this keyword based on what Google is actually rewarding in the SERP?"
A page can score 95/100 on technical SEO and still fail to rank because it is the wrong page type for the keyword. If Google shows 8 product pages and 2 comparison pages for your keyword, your blog post will never break through -- no matter how well-optimized it is.
| Command | Purpose |
|---|---|
/seo sxo <url> | Full SXO analysis (auto-detect keyword from page) |
/seo sxo <url> <keyword> | Full SXO analysis for a specific keyword |
/seo sxo wireframe <url> | Generate IST/SOLL wireframe with concrete placeholders |
/seo sxo personas <url> | Persona-only scoring (skip SERP analysis) |
scripts/fetch_page.py (SSRF-safe)scripts/parse_html.py to extract: title, H1, meta description,
headings hierarchy, word count, schema markup, CTAs, media elementsRead references/page-type-taxonomy.md for classification rules.
This is the core SXO insight. Compare target page type against SERP consensus.
Mismatch severity levels:
| Target Type | SERP Expects | Severity | Recommendation |
|---|---|---|---|
| Blog Post | Product Pages | CRITICAL | Create dedicated product page |
| Blog Post | Comparison | HIGH | Restructure as comparison with matrix |
| Product | Informational | HIGH | Add educational content layer |
| Landing Page | Tool/Calculator | HIGH | Build interactive tool component |
| Service Page | Local Results | MEDIUM | Add location signals + local schema |
| Any type match | - | ALIGNED | Focus on content depth and UX |
Classification rules:
references/page-type-taxonomy.mdRead references/user-story-framework.md for the full framework.
From SERP signals, derive user stories:
For each signal cluster, generate a user story:
As a [persona derived from signal],
I want to [goal derived from query intent],
because [emotional driver from ad copy / PAA tone],
but I'm blocked by [barrier derived from PAA questions / related searches].
Generate 3-5 user stories covering the primary intent angles.
Compare the target page against SERP expectations across 7 dimensions:
| Dimension | What to Compare | Score |
|---|---|---|
| Page Type | Target type vs SERP dominant type | 0-15 |
| Content Depth | Word count, heading depth, topic coverage | 0-15 |
| UX Signals | CTA clarity, above-fold content, mobile layout | 0-15 |
| Schema Markup | Present vs expected structured data types | 0-15 |
| Media Richness | Images, video, interactive elements vs SERP norm | 0-15 |
| Authority Signals | E-E-A-T markers, social proof, credentials | 0-15 |
| Freshness | Last updated, date signals, content recency | 0-10 |
Total: 0-100 SXO Gap Score (lower = larger gap, higher = better alignment)
Read references/persona-scoring.md for methodology.
Only execute when /seo sxo wireframe is invoked.
Read references/wireframe-templates.md for templates.
If DataForSEO MCP tools are available:
google_organic_serp for precise SERP data (positions, features, snippets)keyword_data for search volume and competition metricsThe SXO score is separate from the main SEO Health Score.
| Finding | Hand Off To |
|---|---|
| E-E-A-T gaps in persona scoring | /seo content for deep E-E-A-T audit |
| Missing schema types | /seo schema for generation |
| Local intent detected in SERP | /seo local for GBP analysis |
| Content depth gaps | /seo page for deep page analysis |
| Technical issues found during fetch | /seo technical for full audit |
| Image/media gaps | /seo images for optimization |
## SXO Analysis: [URL]
### Target Keyword: [keyword]
### 1. SERP Landscape
- Dominant page type: [type] ([confidence]% consensus)
- SERP features: [list]
- Content depth norm: [word count range]
- Schema expectation: [types]
### 2. Page-Type Alignment
- Your page type: [type]
- SERP expects: [type]
- Verdict: [ALIGNED | MISMATCH (severity)]
- Impact: [explanation]
### 3. User Stories (derived from SERP signals)
[3-5 user stories with source signals]
### 4. Gap Analysis (SXO Score: XX/100)
[7-dimension breakdown table]
### 5. Persona Scores
[4-7 persona cards with 4-dimension scores]
### 6. Priority Actions
[Ranked list: fix mismatch first, then weakest persona gaps]
### 7. Limitations
[What could not be assessed, data source notes]
| Error | Action |
|---|---|
| URL fetch fails | Report error, suggest checking URL accessibility |
| No keyword provided or detected | Ask user to provide target keyword |
| WebSearch returns <5 results | Proceed with available data, note limited sample |
| SERP has no organic results (all ads) | Note highly commercial SERP, analyze ad copy only |
| Target page is JavaScript-rendered | Note limitation, use available HTML content |
| DataForSEO cost exceeds threshold | Fall back to WebSearch, notify user |
Before delivering results, verify:
scripts/fetch_page.py (not raw curl/fetch)