关于 seo-sxo
seo-sxo 是用于诊断页面搜索体验与排名差距的技能,面向 SEO 从业者和内容团队。它分析目标关键词的搜索结果页面类型与特征,并从四类用户视角评估目标页面,必要时给出匹配主导页面类型的线框建议。
主要功能
- 01获取关键词搜索结果及 SERP 特征
- 02对前十结果进行页面类型分类
- 03识别搜索结果中的主导模式
- 04从四类用户视角为页面评分
- 05在页面类型不匹配时提供线框建议
适用场景
- 01诊断页面结构为何不符合搜索意图
- 02比较目标页面与排名靠前的结果
- 03为页面类型调整确定内容结构方向
MCP 相关
此技能要求连接 SE Ranking MCP 服务,以获取搜索结果及相关数据。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ seranking/ seo-skills --skill seo-sxo安装后在 Claude Code 中输入/seo-sxo确认已加载。
附带文件references/page-type-patterns.mdreferences/persona-rubrics.md
详细介绍
SEO SXO — 搜索体验优化
诊断为什么一个“优化良好”的页面没有获得排名。读取目标关键词的实际 SERP,推断 Google 正在奖励的页面类型,从多个用户画像视角对照该模式评估候选页面,并推荐能够在 SERP 中胜出的页面格式。
**致谢:**SXO 技能框架源自 AgriciDaniel 的
claude-seo(原始概念归功于 Florian Schmitz,Pro Hub Challenge)。双方均采用 MIT 许可;本实现为独立实现,但框架思路来自他们。
前提条件
- 已连接 SE Ranking MCP 服务。
- Claude 的
WebFetch工具可用。 - 用户提供:(a) 目标页面 URL,(b) 页面意图排名的目标关键词,可选提供 (c) 目标国家(默认为
us)。
流程
-
**验证输入。**URL 和关键词均为必填项。如果缺少关键词,请询问用户,不要自行推断。
-
获取 SERP
DATA_getSerpResults和DATA_getSerpTaskAdvancedResults- 前 10 个自然搜索结果,包含 URL、标题和摘要。
- SERP 功能:AI Overview 是否存在、“用户也问了”问题、图片轮播、视频轮播、购物版块、Twitter 版块、精选摘要等。
- **模式选择(成本因素,请阅读)。**只有在任务以
result_type=advanced运行时,才会返回 SERP 功能数据(AIO/PAA/轮播)。这也是此技能最昂贵的单次调用(在 2026-04 验证运行中,流量较大的关键词每个约需 700 个 credits)。- **默认值 —
mode=full:**运行result_type=advanced。返回 SERP 功能和自然搜索结果。当用户画像评分需要 PAA / AIO / 版块信号时使用(大多数情况)。 - **
mode=lite(result_type=standard):**仅返回前 10 个自然搜索结果,不含 SERP 功能,约需 50–100 个 credits。适用于:(a) 用户筛选大量关键词,且 SERP 功能不是关键因素;(b) credits 受限;(c) 用户明确要求低成本初筛。仍会进行用户画像评分,但SXO-REPORT.md中的 SERP 功能行会显示(已跳过 — 轻量模式),主导模式检测将仅依赖 URL / 标题启发式规则。 - 提前说明所选模式和预计成本。如果用户未指定模式,且关键词看起来广告较多或商业搜索量较高,建议先使用
mode=lite;仅在主导模式的置信度较低时,才使用mode=full重新运行。
- **默认值 —
-
获取 AIO 上下文
DATA_getAiOverview- 如果该关键词存在 AIO,记录答案文本和引用列表。
- 记录哪些前 10 个自然搜索结果也被 AIO 引用。
-
抓取用户页面和排名前 3 的页面
WebFetch(始终使用)+mcp__firecrawl-mcp__firecrawl_scrape(可用时使用)- 先用 WebFetch(免费):抓取用户页面和排名前 3 的页面的 Markdown。提取
<title>、所有 H 标签、主要内容结构(编号列表/表格/散文/问答)、字数、图片提及、是否存在对比表格以及 CTA 提及。 - 再用 Firecrawl(通常需要 4 个 Firecrawl 积分,每页 1 个)——补充 WebFetch 无法显示的内容:
- 每个页面的 JSON-LD
@type(Product、FAQPage、BreadcrumbList、Article、Review、ItemList 等)——这些信息对步骤 5 中的页面类型分类至关重要。WebFetch 的 Markdown 无法读取结构化数据。 metadata中的og:title/og:image/twitter:card。- 实际的
<title>长度(Markdown 的首个标题有时并不准确)。
- 每个页面的 JSON-LD
- **
--screenshots标志(可选,额外需要 4 个 Firecrawl 积分):**传入该标志时,还要对用户页面和排名前 3 的页面调用firecrawl_scrape,并设置formats: ["screenshot"]。保存为screenshots/{page}.png。在框架图(步骤 8)中引用截图,让建议基于实际视觉布局,而不只是文本大纲。 - **如果 Firecrawl 不可用(或传入了
--no-firecrawl):**仍会执行 WebFetch 部分。步骤 5 中的页面类型分类仅使用 URL/标题启发式和内容结构启发式,不进行基于结构化数据的分类。在02-page-type-classification.md中注明:Schema-based classification: skipped — Firecrawl required.主导模式检测的置信度也会相应降低。
- 先用 WebFetch(免费):抓取用户页面和排名前 3 的页面的 Markdown。提取
-
为排名前 10 的每个结果分类页面类型
- 使用
references/page-type-patterns.md中的启发式规则。 - 为每个结果分配以下类型之一:{comparison, alternatives, listicle, how-to, definition, product, editorial, forum, video}。
- 记录用于判断分类的信号(URL 模式、标题模式、结构化数据、内容结构)。
- 使用
-
检测主导模式
- 统计排名前 10 的页面类型。如果某种类型 ≥ 6,则该类型为主导模式。
- 如果两种类型以 4–4 平分,则 SERP 属于“混合意图”——两种类型都适用;应根据商业或信息角度决定选择哪一种。
- 对照 SERP 特征:视频轮播 → 预期 ≥ 2 个视频结果;PAA → 预期会有信息型结果;购物结果模块 → 商业意图占主导;AIO → 信息共识。
-
依据主导模式 × 4 类用户角色,为用户页面评分
- 使用
references/persona-rubrics.md中的评分标准。 - 4 类用户角色:快速浏览者、研究者、买家、验证者。
- 每类用户角色按 0–10 分评分。应用意图权重配置文件(也见 persona-rubrics.md),得出单一的 0–100 SXO 分数。
- 使用
-
综合给出结论和框架图
- 如果用户页面类型与主导模式一致:SXO 分数反映该页面对这一模式的执行效果。提出针对特定用户角色的具体改进建议。
- 如果用户页面类型与主导模式不一致:这是“页面类型不匹配”的情况。为主导页面类型输出框架图,并以排名前 3 的页面中观察到的模式为依据。
- 编写
SXO-REPORT.md。
输出格式
创建文件夹 seo-sxo-{target-slug}-{YYYYMMDD}/,其中包含:
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 的结构:
# 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 breakdown
提示
- 遵守速率限制:10 req/sec。第 2/3 步中的 SERP 调用很快;第 4 步的 WebFetch 调用才是延迟的主要来源,而不是 API。
- 费用取决于模式。 每次运行中,
mode=full大约消耗 750–900 个 SE Ranking 积分(SERP-advanced 调用占大头)。mode=lite大约消耗 80–150 个 SE Ranking 积分。运行前务必先调用DATA_getCreditBalance,并根据剩余余额说明预估费用。第 4 步在 Firecrawl 可用时会额外消耗 4 个 Firecrawl 积分;如果传入--screenshots,则再增加 4 个。传入--no-firecrawl可跳过这两项。 result_type=advanced是获取 AIO / PAA / pack 数据的唯一方式。 标准 SERP 端点只返回自然搜索结果。不要试图从自然搜索结果中还原 SERP 特征——用户付费正是为了获取这些数据。- 页面类型分类是一种启发式方法——
references/page-type-patterns.md记录了相关信号,供用户覆盖。如果启发式判断结果有误,请在该文件中修正。 - 这 4 种用户画像有明确倾向,源自框架的原始来源——没有充分理由时,不要擅自增加更多画像。
- SXO 得分仅供参考。85/100 不保证能获得排名;35/100 则强烈表明该页面难以脱颖而出。应将其视为诊断结果,而非预测。
- 当主导模式为意图分化(4-4)时,应发布两个页面,每个意图对应一个页面,而不是试图让一个页面同时满足两种意图。Google 的 SERP 会呈现这种分化是有原因的。
- MISMATCH 模式下的线框图只是起点,用户仍需撰写内容。此技能负责诊断;
seo-content-brief会生成可直接交给撰稿人的内容简报。