seo-sxo
Skill201 starsChanged 5 months agoMITView on GitHub
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.
20 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- alpit-patel/seo-aeo-geo-kittheir own version, first seen Nov 8, 2026
- zhtyyx/codex-seotheir own version, first seen Nov 1, 2026
- joaoguirunas/team-ostheir own version, first seen Oct 21, 2026
- DoddleHQ/doddle-seo-geo-skillstheir own version, first seen Oct 20, 2026
- susantedit/claude-skillstheir own version, first seen Oct 20, 2026
- webdevarif/claude-skillstheir own version, first seen Oct 20, 2026
Used with
Projects with it also use seo-agentic, minimalist-ui and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AgriciDanielSkillseo-agentic
Audit and fix agent readiness: the Lighthouse Agentic Browsing fraction, accessibility tree for agents, robots.txt and Content-Signal for AI agents, WAF treatment of agent traffic, llms.txt, Markdown delivery, ai-catalog.json, /.well-known discovery files, and WebMCP tools. Use when the user asks whether AI agents can use or browse the site, or about llms.txt or WebMCP. Exclude AI citability and brand signals (seo-geo) and commerce protocol depth (seo-ecommerce).
Also in 4 projects that use this
AnasX7Skillminimalist-ui
Clean editorial-style interfaces. Warm monochrome palette, typographic contrast, flat bento grids, muted pastels. No gradients, no heavy shadows.
Also in 4 projects that use this
AnasX7Skillbrandkit
Premium brand-kit image generation skill for creating high-end brand-guidelines boards, logo systems, identity decks, and visual-world presentations. Trained for minimalist, cinematic, editorial, dark-tech, luxury, cultural, security, gaming, developer-tool, and consumer-app brand systems. Optimized for intentional logo concepting, refined composition, sparse typography, strong symbolic meaning, premium mockups, art-directed imagery, and flexible grid layouts.
Also in 3 projects that use this
StrayDragonSkillui-ux-pro-max
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.
Also in 4 projects that use this
MicrosoftSkillcaveman
Ultra-compressed response style that reduces output token count while preserving technical accuracy, with intensity levels and auto-clarity safety rules
Also in 3 projects that use this
- +1 more from AnasX7
Other versions20 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- amirjahfar1/automate-seo-with-claude★ 284% same
Wrote their own version · 19
- AgriciDaniel/claude-seo★ 20ksame name
- zhtyyx/codex-seo★ 152same name
- ZachArticulateV/designer-pro-and-seo★ 10same name
- joaoguirunas/team-os★ 6same name
- avalonreset/legends-seo-dungeon★ 4same name
- alpit-patel/seo-aeo-geo-kit★ 2same name
- agrivisionai/claude-skills★ 1same name
- mahiunfiltered/claude-code-skills★ 1same name
- ahmedaminsa/aljazeera360-mcp-server★ 0same name
- bbeliso/belisodw-★ 0same name
9 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository31 other files it gives its agents.
- ai-search-gaps-to-social-campaignSkill
- client-onboarding-proposalSkill
- local-gmb-visibilitySkill
- seo-adsSkill
- seo-agency-landing-pageSkill
- seo-ai-search-share-of-voiceSkill
- seo-ai-social-reportSkill
- seo-apiSkill
- seo-backlink-gapSkill
- seo-backlinks-profileSkill
- seo-competitor-gap-analysisSkill
- seo-competitor-pagesSkill
- seo-content-auditSkill
- seo-content-briefSkill
- seo-driftSkill
- seo-firecrawlSkill
- seo-gaps-to-social-campaignSkill
- seo-geoSkill
- seo-googleSkill
- seo-hreflangSkill
- seo-imagesSkill
- seo-keyword-clusterSkill
- seo-keyword-nicheSkill
- seo-localSkill
- seo-pageSkill
- seo-planSkill
- seo-schemaSkill
- seo-sitemapSkill
- seo-subdomainSkill
- seo-technical-auditSkill
- site-audit-to-social-distributionSkill
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 5 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 19 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
If AIO is present for the keyword, capture the answer text and citation list.
- Very specific: line 42
--screenshotsflag (opt-in, +4 Firecrawl credits): when passed, also call firecrawl_scrape with formats: ["screenshot"] on the user's … - Very specific: line 46
Use the heuristics in references/page-type-patterns.md.
- Distinctive: line 52
If two tie at 4–4, the SERP is "split intent" — both work.
- Very specific: line 56
Use the rubrics in references/persona-rubrics.md.
- Distinctive: line 61
If user's page type matches dominant: SXO score reflects how well it executes the pattern.
- Distinctive: line 62
If user's page type does NOT match dominant: this is the "page-type mismatch" case.
- Very specific: line 67
Create a folder seo-sxo-{target-slug}-{YYYYMMDD}/ with:
- Distinctive: line 145
When the dominant pattern is split-intent (4-4), ship two pages — one per intent — rather than trying to make one page serve both.
“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Example output: 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-seoby 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
WebFetchtool available. - User provides: (a) target page URL, (b) target keyword the page is meant to rank for, optionally (c) target country (default
us).
Process
- Validate inputs. Both URL and keyword are required. If keyword missing, ask the user — don't infer.
- Pull the SERP
DATA_getSerpResultsandDATA_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: runsresult_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 inSXO-REPORT.mdwill 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=litefirst and re-run withmode=fullonly if dominant-pattern confidence is low.
- Default —
- 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.
- 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
@types 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:cardfrommetadata.- Real
<title>length (the markdown first-heading is sometimes wrong).
- JSON-LD
--screenshotsflag (opt-in, +4 Firecrawl credits): when passed, also callfirecrawl_scrapewithformats: ["screenshot"]on the user's page + top 3 winners. Save asscreenshots/{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-firecrawlpassed): 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 in02-page-type-classification.md:Schema-based classification: skipped — Firecrawl required.Confidence in dominant-pattern detection drops accordingly.
- WebFetch first (free): pull markdown for the user's page + top 3 winners. Extract
- 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).
- Use the heuristics in
- 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.
- 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.
- Use the rubrics in
- 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 is the "page-type mismatch" case. Output a wireframe for the dominant page type, anchored in observed patterns from the top 3 winners.
- Write
SXO-REPORT.md.
Output format
Create a folder seo-sxo-{target-slug}-{YYYYMMDD}/ with:
seo-sxo-{target-slug}-{YYYYMMDD}/
├── 01-serp-snapshot.md (top 10 + features + AIO)
├── 02-page-type-classification.md (each top-10 result classified)
├── 03-user-page-fingerprint.md (the candidate page's structure)
├── 04-persona-scores.md (4 personas × current page)
├── 05-recommendation.md (verdict + page-type-winning wireframe)
├── screenshots/ (only if --screenshots ran: candidate.png + winner-1/2/3.png)
└── SXO-REPORT.md (executive summary deliverable)SXO-REPORT.md shape:
# SXO Report: {URL} for keyword "{keyword}"
> Snapshot dated {YYYY-MM-DD} · Country: {country}
## SERP profile
- Top 10 page types: {comparison: 4, listicle: 3, editorial: 2, video: 1}
- Dominant pattern: **{pattern}** ({n} of 10)
- SERP features: AIO ✓ ({n} citations), PAA ✓ ({n} questions), Image carousel ✗, Video carousel ✗, Shopping pack ✗
- Intent: {informational | commercial-investigation | transactional | navigational}
## Your page
- Page type: **{detected type}**
- Page-type match with dominant: **{✓ match | ✗ MISMATCH — see Verdict}**
- Word count: {n}
- Primary content structure: {prose | numbered-list | table | step-blocks | Q&A | mixed}
## SXO score: **{score}/100**
| Persona | Weight | Score | Notes |
|---|---|---|---|
| Skimmer | {%} | {n}/10 | {1-line note} |
| Researcher | {%} | {n}/10 | {1-line note} |
| Buyer | {%} | {n}/10 | {1-line note} |
| Validator | {%} | {n}/10 | {1-line note} |
## Verdict
{One paragraph. If page type matches: "Your page is the right type for this SERP. The score gap is {X} points — see persona-specific gaps below." If MISMATCH: "Your page is a {your type} but the SERP rewards {dominant type}. No amount of on-page optimization will close the gap; ship a {dominant type} page instead. Wireframe below."}
## If MISMATCH — wireframe for the winning page type
\`\`\`
{Page title pattern — e.g., "{Brand A} vs {Brand B}: 2026 Comparison"}
[Hero / TL;DR — first 200 words answer the comparative question]
[Comparison table — must be visually dominant]
[Section per dimension — each with H2 named after the dimension]
[Verdict / recommendation — explicit, justified]
[FAQ — top 3–5 PAA questions]
[Schema — Product (×2) + BreadcrumbList + FAQPage]
\`\`\`
## If MATCH — top 3 changes by persona
1. {Skimmer}: {specific change}
2. {Researcher}: {specific change}
3. {Buyer or Validator}: {specific change}
## Raw data
- 02-page-type-classification.md — every top-10 result, classified
- 03-user-page-fingerprint.md — your page's signals
- 04-persona-scores.md — full persona-by-persona breakdownTips
- Respect rate limit: 10 req/sec. The SERP calls in step 2/3 are fast; WebFetch calls in step 4 dominate latency, not API.
- Cost is mode-dependent.
mode=fullis ~750–900 SE Ranking credits per run (the SERP-advanced call dominates).mode=liteis ~80–150 SE Ranking credits. Always callDATA_getCreditBalancebefore running and surface the estimate against remaining balance. Step 4 adds 4 Firecrawl credits when Firecrawl is available, +4 more if--screenshotsis passed. Pass--no-firecrawlto skip both. result_type=advancedis the only way to get AIO / PAA / pack data. The standard SERP endpoint returns organic-only. Don't try to reconstruct SERP features from organic results — that's the cost the user is paying for.- Page-type classification is a heuristic —
references/page-type-patterns.mddocuments the signals so users can override. If the heuristic gets a result wrong, edit that file with the correction. - The 4 personas are opinionated. They come from the framework's original source — don't invent more without good reason.
- The SXO score is directional. An 85/100 doesn't guarantee ranking; a 35/100 strongly suggests the page won't break through. Treat as a diagnostic, not a forecast.
- When the dominant pattern is split-intent (4-4), ship two pages — one per intent — rather than trying to make one page serve both. Google's SERPs reflect this split for a reason.
- The wireframe in MISMATCH mode is a starting point. The user still needs to write the content. This skill diagnoses;
seo-content-briefproduces the writer-ready brief.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

