Skip to content
Marketing
Skill

/seo-sxo

Diagnose why a page is not ranking by reading the SERP backwards. Identifies the page type Google rewards for the target keyword, scores the candidate page against that pattern from multiple persona perspectives, and recommends the page format that would win the SERP. Use when

From plugin
seo-skills
19232 skills1 MCP

Claude Code

$ npx -y skills add seranking/seo-skills --skill seo-sxo --agent claude-code

SKILL.md

seo-sxo.SKILL.md
name: seo-sxo
description: Diagnose why a page is not ranking by reading the SERP backwards. Identifies the page type Google rewards for the target keyword, scores the candidate page against that pattern from multiple persona perspectives, and recommends the page format that would win the SERP. Use when the user asks "why isn't this page ranking", "page type mismatch", "SXO", "search experience optimization", "intent mismatch", or wants a wireframe.

> Example output: [examples/seo-sxo-bigin-com-20260514/SXO-REPORT.md](../../examples/seo-sxo-bigin-com-20260514/SXO-REPORT.md)

SEO SXO — Search Experience Optimization

Diagnose why a "well-optimized" page doesn't rank. Reads the actual SERP for the target keyword, infers the page type Google is rewarding, scores the candidate page against that pattern from multiple persona perspectives, and recommends the page format that would win the SERP.

> **Acknowledgements:** SXO-as-a-skill framework originated in `claude-seo` by AgriciDaniel (with the original concept credited to Florian Schmitz, Pro Hub Challenge). MIT-licensed both directions; this implementation is independent but the framing is theirs.

Prerequisites

  • SE Ranking MCP server connected.
  • Claude's `WebFetch` tool available.
  • User provides: (a) target page URL, (b) target keyword the page is meant to rank for, optionally (c) target country (default `us`).

Process

1. **Validate inputs.** Both URL and keyword are required. If keyword missing, ask the user — don't infer.

2. **Pull the SERP** `DATA_getSerpResults` and `DATA_getSerpTaskAdvancedResults`

  • Top 10 organic results with URL, title, snippet.
  • SERP features: AI Overview presence, People Also Ask, image carousel, video carousel, shopping pack, Twitter pack, Featured Snippet, etc.
  • **Mode selection (cost driver — read this).** SERP feature data (AIO/PAA/carousels) only comes back when the task runs with `result_type=advanced`. That is also the most expensive single call this skill makes (≈ 700 credits per keyword on heavily-trafficked terms in the 2026-04 validation run).
  • **Default — `mode=full`:** runs `result_type=advanced`. Returns features + organic. Use when persona scoring needs PAA / AIO / pack signals (most cases).
  • **`mode=lite` (`result_type=standard`):** organic top-10 only, no SERP features, ≈ 50–100 credits. Use when (a) the user is screening many keywords and SERP features aren't load-bearing, (b) credits are constrained, (c) the user explicitly asks for a cheap pass. The persona scoring still runs but the SERP-features row in `SXO-REPORT.md` will read `(skipped — lite mode)` and the dominant-pattern detection will rely on URL/title heuristics alone.
  • Surface the chosen mode + estimated cost up front. If the user didn't specify and the keyword looks ad-heavy or commercial-high-volume, recommend `mode=lite` first and re-run with `mode=full` only if dominant-pattern confidence is low.

3. **Pull AIO context** `DATA_getAiOverview`

  • If AIO is present for the keyword, capture the answer text and citation list.
  • Note which top-10 organic results are also cited in the AIO.

4. **Fetch user's page + top 3 winners** `WebFetch` (always) + `mcp__firecrawl-mcp__firecrawl_scrape` (when available)

  • **WebFetch first** (free): pull markdown for the user's page + top 3 winners. Extract `<title>`, all H-tags, primary content structure (numbered list / table / prose / Q&A), word count, image mentions, comparison-table presence, CTA mentions.
  • **Firecrawl second** (4 Firecrawl credits typical — 1 per page) — recovers what WebFetch can't show:
  • JSON-LD `@type`s per page (Product, FAQPage, BreadcrumbList, Article, Review, ItemList, etc.) — these are **load-bearing** for page-type classification in step 5. WebFetch's markdown can't see schema.
  • `og:title` / `og:image` / `twitter:card` from `metadata`.
  • Real `<title>` length (the markdown first-heading is sometimes wrong).
  • **`--screenshots` flag (opt-in, +4 Firecrawl credits):** when passed, also call `firecrawl_scrape` with `formats: ["screenshot"]` on the user's page + top 3 winners. Save as `screenshots/{page}.png`. Reference in the wireframe (step 8) to ground recommendations in the visual layout, not just the text outline.
  • **If Firecrawl unavailable (or `--no-firecrawl` passed):** WebFetch portion runs. Page-type classification in step 5 falls back to URL/title heuristics + content-structure heuristics only — schema-based classification is skipped. Note in `02-page-type-classification.md`: `Schema-based classification: skipped — Firecrawl required.` Confidence in dominant-pattern detection drops accordingly.

5. **Classify each top-10 result by page type**

  • Use the heuristics in `references/page-type-patterns.md`.
  • For each: assign one of {comparison, alternatives, listicle, how-to, definition, product, editorial, forum, video}.
  • Note signals that informed the classification (URL pattern, title pattern, schema, content structure).

6. **Detect the dominant pattern**

  • Count types in top 10. If one type ≥ 6, that's dominant.
  • If two tie at 4–4, the SERP is "split intent" — both work; commercial vs informational angle determines which to choose.
  • Cross-reference with SERP features: video carousel → expect ≥ 2 video results; PAA → expect informational results; shopping pack → commercial intent dominant; AIO → informational consensus.

7. **Score the user's page** against the dominant pattern × 4 personas

  • Use the rubrics in `references/persona-rubrics.md`.
  • 4 personas: Skimmer, Researcher, Buyer, Validator.
  • 0–10 per persona. Apply the intent-weighting profile (also in persona-rubrics.md) to get a single 0–100 SXO score.

8. **Synthesise verdict and wireframe**

  • If user's page type matches dominant: SXO score reflects how well it executes the pattern. Recommend specific persona-targeted improvements.
  • If user's page type does NOT match dominant: this
Read more
@seranking
Ships withseo-skills

Production-ready Claude Agent Skills for SEO, powered by the SE Ranking remote MCP.

19232 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
192
Star history of seranking/seo-skills on GitHub, a chart by star-history.com

Other skills on seo-skills.

seo-ads

seo-ads

Paid-search competitive landscape for a domain or keyword. Pulls SE Ranking's PPC data — domain ad keyword footprint, ad copy…

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about seo-sxo.

Which coding agents can use seo-sxo?
seo-sxo installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.