关于 seo-sxo
seo-sxo 是用于评估页面与搜索结果预期及用户需求匹配度的 Codex SEO 技能,结合 SERP 分析、页面类型检查、差距评分和用户画像建议。
主要功能
- 01SERP 分析与共识判断
- 02页面类型错配检测
- 03七维差距评分
- 04基于用户画像的建议
- 05可选线框图生成
适用场景
- 01按目标关键词评估页面
- 02发现页面与排名内容格式的差异
- 03确定内容和 UX 改进优先级
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agricidaniel/ codex-seo --skill seo-sxo安装后在 Claude Code 中输入/seo-sxo确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/page-type-taxonomy.mdpersona-scoring.mduser-story-framework.mdwireframe-templates.md详细介绍
搜索体验优化(SXO)
共享数据缓存
步骤 0 —— 检查共享数据缓存:
开始收集信息前,检查 .seo-cache/,查看相关 SEO 技能是否有可复用的上下文。
参考 ../seo/references/shared-data-cache.md,了解数据结构和依赖关系图。
如有以下缓存文件,请检查:
-
.seo-cache/site-meta.json:查看域名、业务类型、行业和抓取上下文 -
.seo-cache/audit-scores.json:查看之前完整审计的优先事项 -
.seo-cache/pages/{url-slug}/page-analysis.json:提供 URL 时,查看页面级上下文 -
如果找到:解析并使用明确有效的字段(注明“正在使用 [date] 的缓存 [X]”)
-
如果缺失、损坏或不相关:继续收集新证据
-
如果用户说“refresh”或“re-run”:跳过缓存读取,并在写入时覆盖
SXO 弥合 SEO(Google 会奖励什么)与 UX(用户需要什么)之间的差距。 传统 SEO 审计会检查技术健康状况。SXO 则会问:“根据 Google 在 SERP 中实际奖励的内容,这个页面是否值得凭此关键词获得排名?”
核心洞察
一个页面的技术 SEO 得分可能高达 95/100,却仍无法获得排名,因为它的页面类型不适合该关键词。如果 Google 针对你的关键词展示了 8 个产品页和 2 个对比页,那么无论你的博客文章优化得多好,都无法脱颖而出。
命令
| 命令 | 用途 |
|---|---|
/seo sxo <url> | 完整的 SXO 分析(自动从页面检测关键词) |
/seo sxo <url> <keyword> | 针对特定关键词进行完整的 SXO 分析 |
/seo sxo wireframe <url> | 生成包含具体占位内容的 IST/SOLL 线框图 |
/seo sxo personas <url> | 仅进行用户角色评分(跳过 SERP 分析) |
执行流程
步骤 1:目标获取
- 通过
scripts/fetch_page.py获取目标 URL(防 SSRF) - 使用
scripts/parse_html.py解析并提取:标题、H1、元描述、 标题层级、字数、结构化数据标记、CTA、媒体元素 - 如果未提供关键词,则从 title 标签和 H1 的交集中提取主要关键词
- 继续前验证关键词非空
步骤 2:SERP 反向分析
阅读 references/page-type-taxonomy.md,了解分类规则。
- 在 Google 中搜索目标关键词(WebSearch)
- 记录前 10 个自然搜索结果中的每一项:
- URL 和域名权威性级别(品牌/细分领域权威/未知)
- 页面类型(使用分类体系进行分类)
- 内容格式(长篇内容、清单文章、操作指南、对比、工具、视频)
- 字数估算(根据摘要长度和页面结构)
- 存在的结构化数据类型(根据 SERP 特征:评分、FAQ、HowTo)
- 媒体信号(视频轮播、图片组、是否有缩略图)
- 记录存在的 SERP 特征:
- 精选摘要(段落/列表/表格/视频)
- 用户还会问(提取所有可见问题)
- 广告(顶部和底部——统计数量并分析广告文案主题)
- 相关搜索(提取所有内容)
- 知识面板/本地商家信息包/购物结果
- AI Overview 是否出现以及来源类型
- 计算 SERP 共识:
- 主导页面类型(>60% = 强共识,40–60% = 混合,<40% = 分散)
- 内容深度预期(平均字数级别)
- 结构化数据预期(最常见的结构化数据类型)
- 媒体预期(是否必须有视频?图片是否关键?)
第 3 步:页面类型不匹配检测
这是 SXO 的核心洞见。将目标页面类型与 SERP 共识进行比较。
不匹配严重程度:
| 目标类型 | SERP 预期 | 严重程度 | 建议 |
|---|---|---|---|
| 博客文章 | 产品页面 | CRITICAL | 创建专门的产品页面 |
| 博客文章 | 对比内容 | HIGH | 重构为带矩阵的对比内容 |
| 产品 | 信息型内容 | HIGH | 添加教育内容层 |
| 落地页 | 工具/计算器 | HIGH | 构建交互式工具组件 |
| 服务页面 | 本地结果 | MEDIUM | 添加位置标记 + 本地 Schema |
| 类型匹配 | - | ALIGNED | 专注于内容深度和用户体验 |
分类规则:
- 使用
references/page-type-taxonomy.md对目标页面进行分类 - 使用相同的分类法对每个 SERP 结果进行分类
- 如果目标类型与 SERP 主导类型不同,则标记为不匹配
- 如果 SERP 内容分散(没有主导类型),则指出差异化机会
第 4 步:推导用户故事
阅读 references/user-story-framework.md,了解完整框架。
根据 SERP 信号推导用户故事:
- PAA 问题揭示知识缺口和顾虑
- 广告文案主题揭示商业触发因素和价值主张
- 相关搜索揭示搜索旅程(前后搜索了什么)
- 精选摘要格式揭示预期的答案结构
- AI Overview揭示 Google 认定的权威答案
针对每组信号,生成一个用户故事:
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].
生成 3-5 个用户故事,覆盖主要意图角度。
第 5 步:差距分析
从 7 个维度将目标页面与 SERP 预期进行比较:
| 维度 | 比较内容 | 分数 |
|---|---|---|
| 页面类型 | 目标类型与 SERP 主导类型 | 0-15 |
| 内容深度 | 字数、标题层级、主题覆盖范围 | 0-15 |
| 用户体验信号 | CTA 清晰度、首屏内容、移动端布局 | 0-15 |
| Schema 标记 | 已有与预期的结构化数据类型 | 0-15 |
| 媒体丰富度 | 图片、视频、交互元素与 SERP 常见情况 | 0-15 |
| 权威性信号 | E-E-A-T 标记、社会认同、资质 | 0-15 |
| 内容新鲜度 | 最近更新、日期信号、内容时效性 | 0-10 |
总分:0-100 SXO 差距分数(分数越低 = 差距越大;分数越高 = 匹配度越好)
第 6 步:基于用户画像评分
阅读 references/persona-scoring.md,了解评分方法。
- 根据 SERP 意图信号推导 4-7 个用户画像:
- 按主题对 PAA 问题进行聚类
- 根据目标受众划分广告文案
- 将相关搜索映射到旅程阶段
- 针对每个用户画像,从 4 个维度为目标页面评分(每项 25 分):
- 相关性:页面是否满足该用户画像的需求?
- 清晰度:该用户画像能否在 10 秒内找到答案?
- 信任度:该用户画像是否能看到足够的信任信号?
- 行动:该用户画像是否有明确的下一步?
- 输出包含分数和具体改进建议的用户画像卡片
- 按最弱的用户画像优先排序建议(机会最大)
第 7 步:线框生成(可选)
仅在调用 /seo sxo wireframe 时执行。
阅读 references/wireframe-templates.md,了解模板。
- 根据解析后的页面结构生成 IST(当前状态)线框
- 根据以下内容生成 SOLL(目标状态)线框:
- SERP 共识页面类型
- 差距分析结果
- 用户画像评分中的薄弱项
- 使用极其具体的占位说明:
- 不要写:“在此处添加 CTA”
- 应写:“在主视觉下方添加带年度节省徽章的定价 CTA,链接至 /pricing#enterprise”
- 以带注释的语义化 HTML 章节大纲形式输出
DataForSEO 集成
如果 DataForSEO MCP 工具可用:
- 进行任何 API 调用前,先运行费用估算并征得用户确认
- 使用
google_organic_serp获取精确的 SERP 数据(排名、特征、摘要) - 使用
keyword_data获取搜索量和竞争指标 - 如果 DataForSEO 不可用,则改用 WebSearch——并在输出中注明精度有所降低
SXO 分数与 SEO 健康度分数
SXO 分数与主要的 SEO 健康度分数相互独立。
- SEO 健康度分数 = 技术合规性(可抓取性、速度、结构化数据等)
- SXO 差距分数 = 页面与 SERP 预期之间的一致程度
- 某个页面的 SEO 分数可以是 95,SXO 分数可以是 30 = 技术上完美,但策略上不匹配
- 两项分数都有时,应同时报告
跨技能参考
| 发现 | 移交给 |
|---|---|
| Persona 评分中存在 E-E-A-T 差距 | 移交给 /seo content 进行深入的 E-E-A-T 审核 |
| 缺少结构化数据类型 | 移交给 /seo schema 生成 |
| SERP 中检测到本地意图 | 移交给 /seo local 分析 GBP |
| 内容深度存在差距 | 移交给 /seo page 进行深入的页面分析 |
| 抓取期间发现技术问题 | 移交给 /seo technical 进行全面审核 |
| 图片/媒体存在差距 | 移交给 /seo images 进行优化 |
输出格式
完整的 SXO 分析
## SXO Analysis: [URL]
### Target Keyword: [keyword]
### 1. SERP Landscape
- Dominant page type: [type] ([confidence]% consensus)
- SERP features: [list]
- Content depth norm: [word count range]
- Schema expectation: [types]
### 2. Page-Type Alignment
- Your page type: [type]
- SERP expects: [type]
- Verdict: [ALIGNED | MISMATCH (severity)]
- Impact: [explanation]
### 3. User Stories (derived from SERP signals)
[3-5 user stories with source signals]
### 4. Gap Analysis (SXO Score: XX/100)
[7-dimension breakdown table]
### 5. Persona Scores
[4-7 persona cards with 4-dimension scores]
### 6. Priority Actions
[Ranked list: fix mismatch first, then weakest persona gaps]
### 7. Limitations
[What could not be assessed, data source notes]
错误处理
| 错误 | 操作 |
|---|---|
| URL 抓取失败 | 报告错误,建议检查 URL 是否可访问 |
| 未提供或未检测到关键词 | 请用户提供目标关键词 |
| WebSearch 返回的结果少于 5 条 | 使用现有数据继续分析,并注明样本数量有限 |
| SERP 没有自然搜索结果(全是广告) | 注明这是高度商业化的 SERP,仅分析广告文案 |
| 目标页面由 JavaScript 渲染 | 注明此限制,并使用可用的 HTML 内容 |
| DataForSEO 费用超过阈值 | 改用 WebSearch,并通知用户 |
质量检查清单
交付结果前,请确认:
- 目标 URL 已通过
scripts/fetch_page.py获取(未使用原始 curl/fetch) - 页面类型分类使用了参考文档中的分类体系
- 至少分析了 5 条 SERP 结果
- 用户故事引用了具体的 SERP 信号作为依据
- Persona 评分包含具体的改进建议
- SXO 分数明确标注为与 SEO 健康度分数相互独立
- 包含限制说明部分,且内容如实
- 在适用情况下,包含跨技能建议
写入共享数据缓存
完成所有工作后,如果工作流产生了可长期保留的发现,请将简洁的 JSON 摘要写入 .seo-cache/。
遵循 ../seo/references/shared-data-cache.md 中的架构和命名规则;至少包含 cache_type、analyzed_at、来源 URL/域名、关键发现、问题、建议和工具限制。如果 .gitignore 中尚未包含 .seo-cache/,请将其添加进去。