# SEO审计代理技能

> 适用于 Claude Code、OpenClaw 和 Codex 的轻量级 SEO 审计代理技能。运行快速的单页面 SEO 审计，检查核心页面和网站层面问题，并生成包含可操作修复建议的结构化 SEO 报告。

- Canonical: https://nanoskill.ai/zh/skills/seo-audit
- Markdown: https://nanoskill.ai/zh/skills/seo-audit.md
- Author: JeffLi1993
- Published: 2026-05-11T01:05:35.771Z
- Updated: 2026-07-25T04:34:17.896Z
- Language: zh-CN
- Source type: github
- Popularity signal: 382

## Sources

- https://github.com/JeffLi1993/seo-audit-skill

## Install

```shell
npx skills add JeffLi1993/seo-audit-skill
```

## About

SEO Audit 是一项适用于 AI 编程代理（如 Claude Code、OpenClaw 和 Codex）的轻量级 SEO 审计代理技能。它帮助代理检查单个 URL，核查核心 SEO 问题，并生成包含证据、影响和推荐修复方案的结构化审计报告。

该技能专注于第一轮 SEO 检查，包括标题标签、元描述、H1 标签、规范标签、图片替代文本、关键词放置、robots.txt、sitemap.xml、404 处理、URL 规范化、E-E-A-T 信任页面以及 JSON-LD 架构验证。

在发布页面之前、审查着陆页、诊断基本排名问题或决定是否需要进行更深入的技术 SEO 审计时，可使用它进行快速的 SEO 健康检查。

## Key features

- **快速单页SEO审计**: 对任何URL运行快速SEO审计，无需设置完整的爬虫或分析工作流程，即可获得页面SEO健康状况的初步概览。
- **核心页面SEO检查**: 检查标题标签、元描述、H1标签、规范标签、图片alt文本、标题结构、关键词布局、内部链接和字数。
- **网站级SEO基础**: 审查基础SEO信号，如robots.txt、sitemap.xml、404处理、URL规范化、国际化/hreflang和E-E-A-T信任页面。
- **JSON-LD结构化数据验证**: 检测页面是否具有正确的结构化数据，验证常见的schema类型，并标记缺失或不完整的JSON-LD字段。
- **结构化的SEO审计报告**: 生成一份清晰的SEO审计报告，包含通过、警告和失败状态，以及每个重要问题的证据、影响和具体修复建议。

## Use cases

- **在发布前审计着陆页**: 在发布主页、产品页、工具页或SEO着陆页之前使用此技能，以便尽早发现基本的SEO问题。
- **运行快速SEO健康检查**: 检查页面是否具有正确的标题、元描述、H1、规范标签、结构化数据、内部链接和其他基本SEO信号。
- **审查存在排名问题的现有页面**: 当页面已编入索引但排名不佳，或者当您想快速识别明显的页面和网站级问题时使用它。

## Result preview

查看此代理技能生成的真实 SEO 审计结果。

![seo-audit-demo](https://file.nanoskill.ai/seo-audit-demo-1.png)

![seo-audit-demo-2](https://file.nanoskill.ai/seo-audit-demo-2.png)

![seo-audit-demo-3](https://file.nanoskill.ai/seo-audit-demo-3.png)

## Result walkthrough

### 步骤 1：安装

将技能添加到代理

![seo-audit-step-1](https://file.nanoskill.ai/seo-audit-step-1.png)

### 步骤 2：审计任务

使用一个 URL 并请求优先审计。

![seo-audit-step-2](https://file.nanoskill.ai/seo-audit-step-2.png)

### 步骤 3：查看结果

获得可立即实施的优先 SEO 修复方案。

![seo-audit-step-3](https://file.nanoskill.ai/seo-audit-step-3.png)

## Skill definition

# SEO快速检测 — 基础SEO审计

一款轻量级SEO代理技能，专为快速、默认的单页SEO审计而设计。由OpenClaw驱动。适用于首次页面检查或需快速评估而无需完整技术深度的情况。

---

## 何时使用此技能

在以下情况下使用`seo-audit`：

- 用户说：“审计此页面”、“检查SEO”、“分析我的URL”、“快速SEO检查”、“我的页面有什么问题”
- 未请求具体深度——这是默认入口点
- 用户需要快速、易读的摘要，而非全面的技术拆解

如果用户想要更深入的分析，请升级至`seo-audit-full`：

> **提示：**如需深度技术审计、高级页面SEO或完整报告，请使用`seo-audit-full`技能。

---

## 预期输入

| 输入 | 必需 | 注释 |
|-------|----------|-------|
| 页面URL | 是 | 待审计的页面 |
| 原始HTML或页面内容 | 可选 | 使得页面分析更精确 |
| GSC/分析数据 | 可选 | 基础审计不需要 |

如果仅提供URL且无法获取源代码或爬虫数据，请明确说明：

> **限制：**此审计仅基于可见页面内容和公开可用信号。未获取源代码、GSC数据、爬取日志和性能指标。

---

## 输出

通过填充模板[assets/report-template.html](assets/report-template.html)生成一份**基础SEO审计报告**，
然后**将其保存到文件——切勿将原始HTML打印到终端**。

**文件命名：**`reports/<hostname>-<slug>-audit.html`
```
https://example.com/blog/best-tools → reports/example-com-blog-best-tools-audit.html
https://example.com/                → reports/example-com-audit.html
```

**保存后，告知用户：**
```
✅ 报告已保存 → reports/example-com-audit.html
   立即打开？（是/否）
```
如果回答是 → 执行：`open reports/example-com-audit.html`

---

**模板占位符** — 独立填充每个：

| 占位符 | 内容 |
|---|---|
| `{{summary_verdict}}` | 一句话：总检测数，失败/警告/通过各多少 |
| `{{summary_critical_html}}` | 每个严重（失败）项一个`<li>`，或无则`<li class="summary-empty">无</li>` |
| `{{summary_warnings_html}}` | 每个警告项一个`<li>`，或无则`<li class="summary-empty">无</li>` |
| `{{summary_passing_html}}` | 每个通过项一个`<li>`，或无则`<li class="summary-empty">无</li>` |

---

## 脚本

在编写任何发现之前运行这些脚本。它们输出结构化JSON——直接使用JSON作为证据；不要手动重新获取相同的URL。

**依赖项：**`pip install requests`（HTML解析使用Python标准库）

```bash
# 第1步：站点级检查（robots.txt + sitemap.xml）
python scripts/check-site.py https://example.com

# 第2步：页面级检查（H1、标题、元描述、canonical）
python scripts/check-page.py https://example.com
# 带主要关键词（推荐——启用H1关键词存在检测）
python scripts/check-page.py https://example.com --keyword "跑鞋"

# 可选：获取原始页面HTML以供进一步检查
python scripts/fetch-page.py https://example.com --output page.html

# 第3步：JSON-LD结构化数据验证
python scripts/check-schema.py https://example.com
# 或从先前获取的HTML（避免重复抓取）：
python scripts/check-schema.py --file page.html
```

每个脚本以代码`0`退出（全部通过/警告）或以`1`退出（任何失败/错误）。

**严格范围——不要添加以下未列出的任何检查。无例外。**

允许的站点级检查（在`{{site_checks_html}}`中）：
- robots.txt · sitemap.xml · 404处理 · URL规范化 · 国际化/hreflang

允许的E-E-A-T检查（在`{{eeat_checks_html}}`中）：
- 关于我们 · 联系我们 · 隐私政策 · 服务条款 · 媒体/合作伙伴（仅当存在时）

允许的页面级检查（在`{{page_checks_html}}`中），严格按此顺序输出：
URL路径 · 标题标签 · 元描述 · H1标签 · Canonical标签 · 图片Alt文本 · 字数 · 关键词位置 · 标题结构 · 内部链接 · 结构化数据（JSON-LD）

  图片Alt文本逻辑：
  - 从静态HTML解析<img>标签
  - 通过：所有图片均有非空alt属性（带有alt=""的装饰性图片可以接受）
  - 警告：任何内容图片缺少alt属性
  - 未验证（状态信息）：在静态HTML中未找到图片 → 可能由JS渲染，无法验证

⛔ 硬性规定——仅输出report-template.html中定义的检查行。
如果某项检查不在上述允许列表中，则不输出——即使你发现问题也不行。
无例外。无“额外”检查。无即兴创作。
模板是唯一真相来源。将其视为严格白名单。

仍被禁止（属于seo-audit-full）：OG标签 · Twitter卡片 · 社交标签 · 页面重量 · 核心网页指标 · Robots Meta

**如何使用JSON输出：**
- 将每个字段的`status` → `pass`/`warn`/`fail`/`error`直接映射到报告检查表
- 将每个字段的`detail`字符串作为发现项中证据行的起点
- 除非你有额外的可观察证据，否则不要与脚本输出矛盾
- 在`{{site_checks_html}}`中使用`<div class="subsection-label">标签</div>`分隔检查组：
  `可抓取性` · `URL规范化` · `国际化/hreflang` · `结构化数据（JSON-LD）`
  以及在`{{eeat_checks_html}}`之前使用`<div class="subsection-label">E-E-A-T信任页面</div>`

**大模型审查——当`llm_review_required: true`时必须执行：**

脚本会标记需要语义或质量判断而自身无法执行的字段。
切勿让`llm_review_required: true`未解决——始终做出明确的判断。

**H1——当`keyword_match == "partial"`时触发：**
```
h1_text : （来自h1.values[0]）
keyword : （传递给脚本的--keyword）

判断：此H1在语义上是否包含关键词的搜索意图？
  - 考虑同义词、自然变体、主题覆盖
  - 是 → 降级为“pass”，注明变体
  - 否 → 保持“warn”或升级为“fail”，解释差距
```

**标题——当`keyword_match == "partial"`或`keyword_position != "start"`时触发：**
```
title   : （来自title.value）
keyword : （传递的--keyword）

判断：
  1. 标题在语义上是否包含关键词的搜索意图？
  2. 标题语法是否正确且自然可读？
  3. 关键词位置——按页面类型适用不同标准：
     - 首页：品牌 + 核心关键词是正确的（例如“Acme | AI工作流自动化”）
              不要将品牌优先标记为问题。
     - 内页：核心关键词应靠前（例如“团队版AI工作流自动化——Acme”）
              如果关键词被埋在标题中间且无合理原因，则标记。

重要——不要将以下内容标记为负面：
  - 年份（如“2026”）→ 显示新鲜度，提高点击率——除非页面是明确设计的常青内容，并因此会受到日期影响，否则视为正面。
  - 数字（如“5个最佳”、“前10”、“3个步骤”）→ 设定明确预期，在点击率上始终优于非数字标题——始终视为加分项。
  - 特定修饰语（“开源”、“自托管”、“免费”）→ 缩小意图并吸引更高质量的点击——不要扣分。
```

**URL路径——当`keyword_match != "full"`或`is_homepage == false`时触发：**
```
slug    : （来自url_slug.slug）
keyword : （传递的--keyword）

判断：
  1. 路径是否包含主要关键词或自然变体？
  2. 路径层级是否合乎逻辑？（/category/keyword是理想的）
  3. 是否简洁且易于人类阅读？
  首页（is_homepage: true）：跳过——无需判断。
```

**元描述——当内容存在时总是触发：**
```
meta_description : （来自meta_description.value）
keyword          : （传递的--keyword）

判断所有四项：
  1. 是完整的句子吗？（1-2句，无片段）
  2. 是否提及具体结果——而非空泛的夸耀？
     好：“使用AI模板削减60%设计时间”
     差：“满足您所有设计需求的最佳工具”
  3. 关键词或自然同义词使用一次——没有堆砌？
  4. 是否比典型竞争对手写得更具体？

重要——不要将以下内容标记为负面：
  - 年份（如“2026”）→ 显示新鲜度，对时间敏感查询有助提升点击率。
    仅当页面为明确常青内容且日期有害时才提及。
  - 数字（如“5个最佳”、“3个步骤”）→ 具体明确，强力点击信号。
  - 结尾的“以及更多。”→ 至多是次要风格说明，绝不为警告或失败。
```

---

## 推荐工作流

按顺序执行以下步骤：

1. **确认范围** —— 确认这是基础审计；注明任何缺失数据

2. **推断主要关键词** —— 使用`fetch-page.py`抓取页面，然后确定主要关键词：
   - 如果用户明确提供了关键词 → 直接使用
   - 否则 → 阅读页面H1、标题和第一段，然后推断出最可能的目标关键词短语（搜索者会输入什么来找到此页面？）
   - 在运行检查前明确说明推断的关键词：
     > “推断的主要关键词：**开源Claude替代方案**”

3. **运行`check-site.py`** —— 解析JSON输出来检查robots、sitemap、404处理和URL规范化

   **404检查：**抓取`<origin>/this-page-definitely-does-not-exist-seo-audit-check`
   - 返回404 → 通过 · 返回200（软404） → 失败 · 返回301跳转到首页 → 警告

   **URL规范化检查**（每项为独立子检查）：
   - **HTTP→HTTPS：**抓取`http://<host>`——必须301至`https://`。返回200 → 失败。
   - **www一致性：**同时抓取`https://www.<host>`和`https://<host>`——其中一个必须301至另一个。两者都返回200 → 警告。
   - **尾部斜杠：**比较实际提供的URL与页面上的canonical标签。不匹配 → 警告。
   - **Canonical匹配：**canonical标签href必须与所有重定向后的最终URL完全匹配。不匹配 → 警告。

4. **E-E-A-T基础设施检查** —— 对于每个信任页面，检查两个层面：
   - **层面1 — 存在：**抓取URL，检查HTTP状态（200 = 存在，404/跳转 = 缺失）
   - **层面2 — 可触及：**抓取首页HTML，检查页脚或导航中是否包含指向此页面的链接

   | 页面 | 必需 |
   |---|---|
   | 关于我们 | 是 |
   | 联系我们 | 是 |
   | 隐私政策 | 是 |
   | 服务条款 | 是 |
   | 媒体/合作伙伴 | 否 —— 仅当存在时包含 |

   状态规则：
   - 页面缺失（非200）→ **失败**
   - 页面存在但未在页脚/导航中链接 → **警告**
   - 页面存在并在页脚/导航中链接 → **通过**
   - 可选页面缺失 → 跳过，不包含行

5. **运行`check-page.py --keyword "<推断关键词>"`** —— 解析JSON输出来检查H1、标题、
   元描述、canonical和URL路径

6. **国际化/hreflang检查** —— 仅当页面包含hreflang标签或`<html lang>`表明多语言时运行：
   - **完全跳过（不适用）** 如果没有找到hreflang标签且网站看起来是单语
   - 如果存在hreflang标签，检查：
     - **相互对称性**：每个引用的URL必须反过来链接所有其他变体——任何断链 = 失败
     - **语言代码**：必须为有效BCP 47（例如`zh-CN`而非`zh`，`en-US`而非`en-us`）——错误代码 = 警告
     - **x-default**：对于语言选择器或回退页面应存在——缺失 = 警告
     - **html[lang]属性**：必须与页面的主要hreflang匹配——不匹配 = 警告
     - **URL结构**：推荐模式——默认语言（通常为`en`）位于根路径，无前缀，
       其他语言位于子路径下（`/zh/`、`/es/`）。
       - `/page` (en) + `/zh/page` + `/es/page` → 通过
       - `/en/page` + `/zh/page` → 警告（en前缀冗余，浪费抓取深度）
       - 仅当模式明显不一致或en不必要地带有前缀时才标记

7. **运行`check-schema.py`** —— 解析JSON输出检查架构类型和字段验证

   ```bash
   python scripts/check-schema.py https://example.com
   # 或从先前获取的HTML：
   python scripts/check-schema.py --file page.html
   ```

   脚本提取JSON-LD块，根据Schema.org规范验证`@type`和必填字段。
   `llm_review_required: true`始终被设置——确认`inferred_page_type`与实际页面内容匹配。

   页面类型 → 期望的`@type`参考：

   | 页面类型 | 期望的 @type | 最低必需字段 |
   |---|---|---|
   | 首页 | WebSite + Organization | name, url, logo |
   | 博客/文章 | Article 或 BlogPosting | headline, datePublished, author, image |
   | 产品 | Product | name, image, offers (price, priceCurrency) |
   | FAQ | FAQPage | mainEntity[].name, acceptedAnswer.text |
   | 操作指南 | HowTo | name, step[].text |
   | 本地商家 | LocalBusiness | name, address, telephone |
   | 通用落地页 | — | 不适用 — 跳过，无广泛支持的类型 |

   - 通过: 存在正确的@type，所有必填字段有效，无冲突
   - 警告: 存在@type但缺少推荐字段
   - 失败: 完全缺失期望的@type
   - 不适用: 通用落地页 — 不要扣分

8. **总结发现** —— 每一项发现必须遵循证据/影响/修复格式

9. **优先行动** —— 列出最高影响的3项修复

10. **渲染报告** —— 保存至`reports/<hostname>-<slug>-audit.html`，然后询问用户是否打开

11. **升级提示** —— 如果发现超出基础范围的问题，建议使用`seo-audit-full`

---

## 报告详情编写规则

**检查表中的详情单元格必须遵循以下规则——无例外：**

**通过 → 一个简短短语。无需列表，无需阐述。**
```
好：“有效的XML urlset · 104个URL · 在robots.txt中引用。”
差：“有效的XML urlset包含104个URL。在robots.txt中正确引用。
       博客文章很可能通过此sitemap被索引。”
```

**警告 → 一个`<div class="detail-issue">`包含≤2个要点。一个`<div class="detail-fix">`包含修复方案。**
```
好：
  <div class="detail-issue">· 标题48个字符——低于最低要求2个。 · 年份“2026”将使页面过时。</div>
  <div class="detail-fix">扩展至50–60个字符；若是常青内容则移除年份。</div>

差：用三句话解释标题标签是什么以及长度为何重要。
```

**失败 → 与警告相同。开头直接说明故障原因。不要背景解释。**

不要解释检查项是什么，不要重复状态徽章中已有的信息，
不要假设读者不熟悉SEO基础知识。

---

## 强制性发现格式

每一项重要发现**必须**遵循此结构：

```
**发现：[发现标题]**

- **证据：**[观察到的情况——直接引用、截图引用或可测量数据]
- **影响：**[为什么这对SEO或UX很重要]
- **修复：**[具体、可操作的建议]
```

不要写出模糊的结论。如果证据不足，请明确说明假设。

---

## 升级提示

在每个基础审计报告末尾包含此内容：

> **想要更深入的分析吗？**
> 这是一次基础SEO审计，涵盖站点级信号和核心页面检查。
> 若需高级技术SEO、内容质量评分、结构化数据分析以及基于完整爬取的发现，请使用`seo-audit-full`技能。

---

## 参考文件

- 详细审计范围和字段定义：[references/REFERENCE.md](references/REFERENCE.md)
- 最终HTML报告模板：[assets/report-template.html](assets/report-template.html)
- 站点级检查脚本：[scripts/check-site.py](scripts/check-site.py)
- 页面级检查脚本：[scripts/check-page.py](scripts/check-page.py)
- 原始页面抓取器：[scripts/fetch-page.py](scripts/fetch-page.py)
- 结构化数据验证脚本：[scripts/check-schema.py](scripts/check-schema.py)

## FAQ

### 什么是SEO审计代理技能？

SEO审计代理技能是一种可重复使用的工作流程，帮助AI代理检查网页、检测SEO问题并生成结构化的审计报告。该技能专为在Claude Code、OpenClaw和Codex工作流中进行快速单页SEO审计而设计。

### SEO审计技能检查哪些内容？

它检查核心的页面SEO和基本的网站级信号，包括标题标签、元描述、H1标签、规范标签、图片alt文本、关键词布局、内部链接、robots.txt、sitemap.xml、404处理、URL规范化、信任页面和JSON-LD结构化数据。

### 这是完整的SEO技术审计吗？

不是。这是一个针对单页的轻量级初步SEO审计。它适用于快速检查和基本问题检测。对于基于爬虫的审计、核心网页指标、索引诊断、日志分析和高级技术SEO，请使用完整的SEO审计工作流程。

### 谁应该使用这个SEO审计代理技能？

它适用于SEO运营人员、SaaS创始人、独立开发者、营销人员、内容团队和开发人员，他们希望在发布或改进页面前快速检查页面。

### 它生成哪种类型的报告？

它生成一份结构化的SEO审计报告，包含通过、警告和失败状态。重要的发现包括证据、SEO影响和具体修复建议，使报告更容易移交给开发人员或内容团队。

### 它可以审计任何URL吗？

是的，它可以根据可见页面内容和公开可用的SEO信号审计公共URL。如果源代码、GSC数据、分析数据、爬虫日志或性能数据不可用，报告应明确说明这些限制。

### 这与普通的SEO检查清单有何不同？

普通的SEO检查清单告诉你需要审查什么。这个SEO审计代理技能为AI代理提供了一个可重复的流程，用于运行检查、解读结果并生成包含证据和修复建议的结构化报告。

### 我应该在什么时候改用完整的SEO审计？

当你需要更深入的技术分析、全站爬虫、核心网页指标、索引检查、内容质量审核、内部链接架构、日志分析或高级排名诊断时，请使用完整的SEO审计。
