mcpField
S
seo-sxo

seo-sxo

github.com/seranking营销与增长19174 次安装18 周前更新
代码仓库

关于 seo-sxo

seo-sxo 是用于诊断页面搜索体验与排名差距的技能,面向 SEO 从业者和内容团队。它分析目标关键词的搜索结果页面类型与特征,并从四类用户视角评估目标页面,必要时给出匹配主导页面类型的线框建议。

主要功能

  1. 01获取关键词搜索结果及 SERP 特征
  2. 02对前十结果进行页面类型分类
  3. 03识别搜索结果中的主导模式
  4. 04从四类用户视角为页面评分
  5. 05在页面类型不匹配时提供线框建议

适用场景

  1. 01诊断页面结构为何不符合搜索意图
  2. 02比较目标页面与排名靠前的结果
  3. 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

详细介绍

示例输出:examples/seo-sxo-bigin-com-20260514/SXO-REPORT.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)。

流程

  1. **验证输入。**URL 和关键词均为必填项。如果缺少关键词,请询问用户,不要自行推断。

  2. 获取 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 重新运行。
  3. 获取 AIO 上下文 DATA_getAiOverview

    • 如果该关键词存在 AIO,记录答案文本和引用列表。
    • 记录哪些前 10 个自然搜索结果也被 AIO 引用。
  4. 抓取用户页面和排名前 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 的首个标题有时并不准确)。
    • **--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. 主导模式检测的置信度也会相应降低。
  5. 为排名前 10 的每个结果分类页面类型

    • 使用 references/page-type-patterns.md 中的启发式规则。
    • 为每个结果分配以下类型之一:{comparison, alternatives, listicle, how-to, definition, product, editorial, forum, video}。
    • 记录用于判断分类的信号(URL 模式、标题模式、结构化数据、内容结构)。
  6. 检测主导模式

    • 统计排名前 10 的页面类型。如果某种类型 ≥ 6,则该类型为主导模式。
    • 如果两种类型以 4–4 平分,则 SERP 属于“混合意图”——两种类型都适用;应根据商业或信息角度决定选择哪一种。
    • 对照 SERP 特征:视频轮播 → 预期 ≥ 2 个视频结果;PAA → 预期会有信息型结果;购物结果模块 → 商业意图占主导;AIO → 信息共识。
  7. 依据主导模式 × 4 类用户角色,为用户页面评分

    • 使用 references/persona-rubrics.md 中的评分标准。
    • 4 类用户角色:快速浏览者、研究者、买家、验证者。
    • 每类用户角色按 0–10 分评分。应用意图权重配置文件(也见 persona-rubrics.md),得出单一的 0–100 SXO 分数。
  8. 综合给出结论和框架图

    • 如果用户页面类型与主导模式一致: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 会生成可直接交给撰稿人的内容简报。

评论

支持 Markdown