/seo-sxo
Search Experience Optimization: reads Google SERPs backwards to detect page-type mismatches, derives user stories from search intent signals, and scores pages from multiple persona perspectives. Identifies why well-optimized pages fail to rank by analyzing what Google rewards
$ npx -y skills add AgriciDaniel/claude-seo --skill seo-sxo --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/seo-sxo
Context preview
The summary Claude sees to decide when to auto-load this skill.
Search Experience Optimization: reads Google SERPs backwards to detect page-type mismatches, derives user stories from search intent signals, and scores pages from multiple persona perspectives. Identifies why well-optimized pages fail to rank by analyzing what Google rewards
SKILL.md
seo-sxo.SKILL.mdname: seo-sxo
description: >
Search Experience Optimization: reads Google SERPs backwards to detect page-type
mismatches, derives user stories from search intent signals, and scores pages
from multiple persona perspectives. Identifies why well-optimized pages fail
to rank by analyzing what Google rewards for each keyword. Use when user says
"SXO", "search experience", "page type mismatch", "SERP analysis", "user story",
"persona scoring", "why isn't my page ranking", "intent mismatch", or "wireframe".
user-invocable: true
argument-hint: "<url> [keyword]"
license: MIT
metadata:
author: AgriciDaniel
original_author: "Florian Schmitz (Pro Hub Challenge)"
version: "2.2.4"
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 `scripts/render_page.py --mode auto` (SPA-aware and SSRF-safe) 2. Parse with `scripts/parse_html.py` 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
Read more
name: seo-sxo description: > Search Experience Optimization: reads Google SERPs backwards to detect page-type mismatches, derives user stories from search intent signals, and scores pages from multiple persona perspectives. Identifies why well-optimized pages fail to rank by analyzing what Google rewards for each keyword. Use when user says "SXO", "search experience", "page type mismatch", "SERP analysis", "user story", "persona scoring", "why isn't my page ranking", "intent mismatch", or "wireframe". user-invocable: true argument-hint: "<url> [keyword]" license: MIT metadata: author: AgriciDaniel original_author: "Florian Schmitz (Pro Hub Challenge)" version: "2.2.4" 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 `scripts/render_page.py --mode auto` (SPA-aware and SSRF-safe) 2. Parse with `scripts/parse_html.py` 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
Claude SEO is an open-source SEO analysis plugin for Claude Code. It runs 25 sub-skills and 18 specialist agents in parallel across technical SEO, content quality (E-E-A-T), Schema.org markup, AI search optimization (GEO), local SEO, e-commerce, and
Repo: AgriciDaniel/claude-seo
Other skills on claude-seo.
- /seo-ahrefs
Ahrefs API analyst (extension). Reads referring domains, backlinks, organic keywords, and content explorer data via the tested @ahrefs/mcp@0.0.11 server. Pairs with seo-backlinks for multi-source confidence weighting.
Open skill - /seo-image-gen
AI image generation for SEO assets: OG/social preview images, blog hero images, schema images, product photography, infographics. Powered by Gemini via nanobanana-mcp. Requires banana extension installed. Use when user says \"generate image\", \"OG image\", \"social preview\",
Open skill - /seo-bing
Bing Webmaster Tools + IndexNow extension. Microsoft Copilot citations are fed by the Bing index; this skill makes Bing visibility, link data, and IndexNow URL submission first-class.
Open skill - /seo-dataforseo
Live SEO data via DataForSEO MCP server: SERP analysis, keyword research (volume, difficulty, intent, trends), backlink profiles, on-page analysis, competitor and content analysis, business listings, AI visibility (LLM mention tracking), and domain analytics. Requires DataForSEO
Open skill - /seo-firecrawl
Full-site crawling, scraping, and site mapping via Firecrawl MCP. Use when user says "crawl site", "map site", "full crawl", "find all pages", "broken links", "site structure", "discover pages", "JS rendering", or needs site-wide analysis.
Open skill - /seo-profound
Profound LLM citation tracker (extension). Time-series brand citation rates across ChatGPT, Perplexity, and other LLMs. Pairs with seo-seranking for triangulated AI visibility coverage.
Open skill

