seo-sxo
All-time installs
4,946
Diagnose search-experience and intent mismatches using SERP page types, user stories, and persona scoring. Use when ranking problems appear intent- or layout-driven.
Other options
Summary
Diagnose search-experience and intent mismatches using SERP page types, user stories, and persona scoring. Use when ranking problems appear intent- or layout-driven.
Raw SKILL.md
10.2K bytes---
name: seo-sxo
description: >
Diagnose search-experience and intent mismatches using SERP page types, user
stories, and persona scoring. Use when ranking problems appear intent- or
layout-driven.
user-invocable: true
argument-hint: "<url> [keyword]"
license: MIT
metadata:
author: AgriciDaniel
original_author: "Florian Schmitz (Pro Hub Challenge)"
version: "2.4.0"
category: seo
---
# Search Experience Optimization (SXO)
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?"
## Core Insight
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.
## Commands
| 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) |
## Execution Pipeline
### Step 1: Target Acquisition
1. Fetch the target URL via `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py <URL> --mode auto` (SPA-aware and SSRF-safe)
2. Parse with `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py <URL>` to extract: title, H1, meta description,
headings hierarchy, word count, schema markup, CTAs, media elements
3. If no keyword provided, extract primary keyword from title tag + H1 overlap
4. Validate keyword is non-empty before proceeding
### Step 2: SERP Backwards Analysis
Read `references/page-type-taxonomy.md` for classification rules.
1. Search Google for the target keyword (WebSearch)
2. For each of the top 10 organic results, record:
- URL and domain authority tier (brand / niche authority / unknown)
- Page type (classify using taxonomy)
- Content format (long-form, listicle, how-to, comparison, tool, video)
- Word count estimate (from snippet length and page structure)
- Schema types present (from currently supported SERP features; exclude FAQ/HowTo)
- Media signals (video carousel, image pack, thumbnail presence)
3. Record SERP features present:
- Featured snippet (paragraph / list / table / video)
- People Also Ask (extract all visible questions)
- Ads (top and bottom -- count and analyze ad copy themes)
- Related searches (extract all)
- Knowledge panel / local pack / shopping results
- AI Overview presence and source types
4. Calculate SERP consensus:
- Dominant page type (>60% = strong consensus, 40-60% = mixed, <40% = fragmented)
- Content depth expectations (average word count tier)
- Schema expectation (most common structured data types)
- Media expectations (video required? images critical?)
### Step 3: Page-Type Mismatch Detection
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:**
- Classify target page using `references/page-type-taxonomy.md`
- Classify each SERP result using the same taxonomy
- Flag mismatch if target type differs from SERP dominant type
- If SERP is fragmented (no dominant type), note opportunity for differentiation
### Step 4: User Story Derivation
Read `references/user-story-framework.md` for the full framework.
From SERP signals, derive user stories:
1. **PAA questions** reveal knowledge gaps and concerns
2. **Ad copy themes** reveal commercial triggers and value propositions
3. **Related searches** reveal the search journey (what comes before/after)
4. **Featured snippet format** reveals the expected answer structure
5. **AI Overview** reveals what Google considers the definitive answer
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.
### Step 5: Gap Analysis
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)
### Step 6: Persona-Based Scoring
Read `references/persona-scoring.md` for methodology.
1. Derive 4-7 personas from SERP intent signals:
- Cluster PAA questions by theme
- Segment ad copy by target audience
- Map related searches to journey stages
2. For each persona, score the target page on 4 dimensions (25 pts each):
- **Relevance**: Does the page address this persona's need?
- **Clarity**: Can this persona find their answer within 10 seconds?
- **Trust**: Are there adequate trust signals for this persona?
- **Action**: Is there a clear next step for this persona?
3. Output persona cards with scores and specific improvement recommendations
4. Sort recommendations by weakest persona first (biggest opportunity)
### Step 7: Wireframe Generation (Optional)
Only execute when `/seo sxo wireframe` is invoked.
Read `references/wireframe-templates.md` for templates.
1. Generate IST (current state) wireframe from parsed page structure
2. Generate SOLL (target state) wireframe based on:
- SERP consensus page type
- Gap analysis findings
- Persona scoring weaknesses
3. Use ultra-concrete placeholders:
- NOT: "Add a CTA here"
- YES: "Add pricing CTA with annual savings badge below hero, linking to /pricing#enterprise"
4. Output as semantic HTML section outline with annotations
## DataForSEO Integration
If DataForSEO MCP tools are available:
1. **Before any API call**, run cost estimate and confirm with user
2. Use `serp_organic_live_advanced` for precise SERP data (positions, features, snippets)
3. Use `kw_data_google_ads_search_volume` for search volume and competition metrics
4. Fall back to WebSearch if DataForSEO unavailable -- note reduced precision in output
## SXO Score vs SEO Health Score
The SXO score is **separate** from the main SEO Health Score.
- SEO Health Score = technical compliance (crawlability, speed, schema, etc.)
- SXO Gap Score = alignment between page and SERP expectations
- A page can score 95 SEO + 30 SXO = technically perfect but strategically misaligned
- Both scores should be reported together when both are available
## Cross-Skill References
| 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 |
## Output Format
### Full SXO Analysis
```
## 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 Handling
| 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 |
## Quality Checklist
Before delivering results, verify:
- [ ] Target URL was fetched via `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py <URL> --mode auto` (not raw curl/fetch)
- [ ] Page type classification uses taxonomy from references
- [ ] At least 5 SERP results were analyzed
- [ ] User stories cite specific SERP signals as evidence
- [ ] Persona scores include concrete improvement suggestions
- [ ] SXO score is clearly labeled as separate from SEO Health Score
- [ ] Limitations section is present and honest
- [ ] Cross-skill recommendations are included where relevant
Security audits
SnykWARN
SocketPASS
Gen Agent Trust HubPASS

