Community写作与编辑github.com

SSHELEG/seo-aeo-audit — 搜索引擎与答案引擎可见性审计并生成执行计划

基于证据的网站审计,覆盖传统搜索和答案引擎。十个检查轨道,从爬取访问到AI引用机制;每个发现都带有观测记录,每条建议都有证据等级。输出不是分数,而是一份优先排序的变更计划以及一份附带关键词CSV的外链建设简报。

seo-aeo-audit — 搜索引擎与答案引擎可见性审计并生成执行计划 是什么?

该技能旨在对网站进行深度、基于证据的审计,同时覆盖传统搜索引擎(如Google、Yandex、Bing)和新兴的答案引擎(如AI概述/AI模式、ChatGPT、Perplexity、Claude、Copilot、Gemini、Alice AI)。其核心原则是“证据至上”:每个发现都必须包含可验证的观测结果(URL、文件位置、观测值、日期),每条建议都必须标注证据等级(已确认、研究、现场、假设),并明确禁止报告未经验证的“最佳实践”或猜测。技能强调在提出修复方案前必须完成诊断,拒绝使用如“添加结构化数据”这类无诊断的万能药,并且严格禁止推荐任何欺骗性手段(如伪装、评论操纵)。审计过程分为几个步骤:首先检测模式(检查是否已有历史审计)、验证数据源访问权限(测试GSC API、爬虫MCP等工具的有效性),然后建立基线(记录过去12个月的搜索表现和AI可见性),再执行十个独立的检查轨道(涵盖技术访问、内容价值、可提取性、实体共识、测量等多个维度),最后进行优先级评分(影响 × 置信度 / 努力程度)并将结果分为阻断器、泄漏点、增益和实验四个桶。该技能支持多种平台,包括Claude Code、Cursor、Codex和Copilot Chat,并提供了绑定脚本(如preflight.py、gsc_pull.py)来机械化检查。其最终交付物不是一个模糊的分数,而是一份带有证据、优先级排序的可执行变更计划,以及一份用于外链建设的关键词CSV。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add ssheleg/seo-aeo-audit

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

seo-aeo-audit — 审计搜索 + 答案引擎可见性,并交付执行计划

核心任务:审视一个真实的网站,用证据证明其存在的问题,并返回一份优先级排序的变更计划,覆盖经典搜索引擎(Google、Yandex、Bing)和答案引擎(AI 概览 / AI 模式、ChatGPT、Perplexity、Claude、Copilot、Gemini、Alice AI)。

此技能不负责:撰写内容、构建页面、购买链接。它止步于经核验的诊断和可执行的计划。

不可妥协的原则

  1. 有证据则陈述,无证据则沉默。每个发现都必须包含:观测内容、位置(URL、文件:行号、报告名称)、观测值及日期。永远不要报告你未在该网站上验证过的发现。“最佳实践说”不是证据。
  2. 为每条建议标注证据等级(详见 references/evidence-tiers.md): CONFIRMED(经引擎记录或在本站重现)· STUDY(已发表的跨站点数据)· FIELD(单案例报告)· HYPOTHESIS。绝不能让一个 HYPOTHESIS 的优先级高于 CONFIRMED 的阻断器。
  3. 先诊断,再开处方。计划中的修复措施必须有其根本原因。“添加结构化数据”不是一个诊断。
  4. 拒绝神话清单。参见下方“神话守卫”——推荐这些浪费客户预算,属于缺陷而非锦上添花。
  5. 绝不推荐欺骗性策略。伪装、虚构的共识网络、评论操纵、竞争对手打压滥用以及点击信号伪造,不得出现在计划中。它们仅出现在此技能的 references/threats-and-defense.md 中,作为 检测和防御 的对象。
  6. 说明你未能检查的内容。缺少 GSC 登录信息是报告中的缺口,而非沉默的省略。
  7. 绝不要将测量值与假设值混为一谈。当一个交付物同时包含两者时(外链建设 CSV 通常如此),一个 source 列将它们分开,未测量行的数量单元格保持空白,而非零。0 被解读为“已测量,无需求”;空白被解读为“无人检查过”。这种区别对于他人凭预算执行的工作至关重要。
  8. 了解每个仪器的盲点,并在输出中说明。规则 1 和 7 约束你所写的内容;但它们无法看到在你使用前工具就已混合或省略的数据。有两种情况经常出现。静态抓取无法看到 CMS 通过 JavaScript 注入的 JSON-LD,因此“未找到结构化数据”在任何 Yoast/RankMath/AIOSEO 站点上都可能是一个虚假发现——scripts/page_audit.py 会在每个结构化数据清单旁边打印此警告,且只有在渲染检查后才能报告缺失。GA4 的同意模式建模会将观测到的行为和估算行为合并到一个数字中——参见 references/measurement.md J1 了解三个激活条件、可见指示器以及仅观测数据的回退方案。此规则普遍适用:在将某个仪器的沉默作为一个发现之前,必须先确定该仪器从技术上可能观测到该事物。

第 0 步 — 检测模式,不问两次

先检查,再行动。按顺序:

  1. 读取 docs/seo/(或用户指定的路径)。如果存在之前的审计,本次运行为重新审计:对比其差异,并首先说明发生了什么变化。
  2. 确定你可以访问的资源:线上站点、预演 URL、robots.txt、sitemap.xml、Search Console / Bing Webmaster / 分析系统、爬取导出文件(Screaming Frog、Sitebulb)、服务器日志、任何已连接的 MCP 工具(Ahrefs、GSC、分析系统、爬虫 MCP,或用于批量竞争和需求数据而无需为每个供应商单独付费的 Prowl MCP)。 测试访问权限,不要假设它可用。 一个已连接的服务并不意味着它能工作:API 的层级会限制端点,且令牌的权限范围通常比仪表盘显示的要窄。在你围绕它制定计划之前,先对每个数据源进行一次探针调用,并记录返回结果——“已连接但返回 Insufficient plan”本身就是一个供下次审计使用的发现。
  3. 仅当答案会改变工作范围时,才与用户一起确定范围:整个站点、一个模板/部分、一个问题(“为什么五月流量下降了”),或一个外链建设提取——面向承包商的目标、关键词和锚文本。后者是交付物而非诊断:当这是任务时,请阅读 references/linkbuilding.md。它可以在有或没有 Search Console 的情况下工作。
  4. 用三行报告状态——可用输入、缺少的输入、范围——然后开始。每次运行结束时建议一个下一步行动。

scripts/preflight.py 执行步骤 2 中可自动化的部分。它会报告失败时命中了哪个独立的关卡——Search Console、GSC API 和 PageSpeed 会因不同原因返回 403。阅读 references/preflight.md 了解它具体探测了哪些内容以及哪些内容留给你处理(Bing/Yandex、分析系统、服务器日志、爬取导出文件和每个 MCP 工具)。绿色预检通过并不意味着该步骤已完成。

# Claude Code 插件:${CLAUDE_PLUGIN_ROOT} 在技能内容内展开。
SKILL_DIR="${CLAUDE_PLUGIN_ROOT}/skills/seo-aeo-audit"
# 任何其他渠道:加载此技能时命名的基础目录——此 SKILL.md 文件所在的目录。
# 在使用前确认:
ls "$SKILL_DIR/scripts/preflight.py"

此处的 No such file or directory 不是缺少功能,也不是安静地继续执行的理由。它意味着六个仪器不可访问,因此它们本应做的所有检查都会降到证据阶梯的最底层——而发现的层级决定了其证据等级上限。在三行状态中说明这一点;一个悄然变为手动审计的审计,其结论的价值已经改变(不可妥协的原则 #6)。

python3 "$SKILL_DIR/scripts/preflight.py" --site sc-domain:example.com --origin https://example.com

访问规则:默认只读。未经本会话明确批准,绝不提交表单、请求索引、撤销链接或更改线上属性;这些均为面向外部的操作。

第 1 步 — 先建立基线,再发表意见

记录(含日期),以便后续每个声称都能与之对比衡量:

  • 过去 12 个月内按国家和设备划分的自然点击/展示量/平均排名(GSC + Bing),若存在下降或平台期窗口,记录之;
  • 按模板划分的已索引 URL 数量与已发布 URL 数量(site: 是粗略检测,GSC Pages 报告才是准确数字);
  • 收入或转化排名前 20 的页面及其当前排名;
  • AI 可见性基线:对每个可访问的引擎运行 references/aeo-geo.md 中的品牌和类别提示集,并逐字记录回答;
  • 哪些 AI 爬虫实际抓取了网站(服务器日志;通过正向确认反向 DNS 过滤伪装者),以及哪些 AI 来源出现在分析系统中;
  • 更新时间线:在形成任何关于原因的假设之前,将曲线的每个变化与 references/algorithm-updates.md 进行日期对齐。

当完全没有第一方数据访问权限时,在三行状态中说明,并回退到第三方索引可以建立的内容:该域名今日排名情况、相对于一定规模的竞争对​​手其链接档案的大小、以及其目标短语是否具有可测量的需求(references/prowl-mcp.md)。该基线上限为 STUDY,无法回答“为什么这个页面未被索引”——但它足以区分冷启动和流量下滑,而这两者需要完全相反的计划。

如果网站声称流量下降,首先区分报告故障和排名故障:冻结的 GSC 报告会将点击量固定在一个日期,而真实的流量下降会产生新的、不断减少的数据点。在诊断算法原因之前,交叉验证 GA4 会话、服务器日志和独立排名跟踪。

第 2 步 — 十个轨道

执行所有范围内的轨道。每个轨道都有其参考文件,包含具体的检查项、2026年至今的陷阱以及需要捕获的证据。

#轨道回答的问题参考文件
A访问与索引经济学机器人能否抓取、渲染并负担得起?爬虫预算在哪里被消耗?technical-checks.md
B规范化与重复内容哪个 URL 是规范版本,引擎是否同意——包括 hreflang?technical-checks.md
C架构与链接权益核心页面是否获得了权威度、深度和抓取频率?architecture-and-equity.md
D意图与SERP匹配每个页面是否匹配SERP,页面之间是否存在关键词自相残杀?intent-and-content.md + onpage-checks.md
E内容价值是否存在AI无法复制的排名理由?intent-and-content.md + ranking-model.md
F可提取性与AEO/GEO答案引擎能否检索、读取并引用它?aeo-geo.md
G实体与品牌共识模型是否一致地知道并提及该品牌?entity-and-brand.md
H体验、转化与归因任务在此处完成还是被退回?是否转化并被测量?experience-signals.md + demand-and-conversion.md
I风险与威胁惩罚、劫持、注入、恶意举报。threats-and-defense.md
J测量是否有人能够判断该计划是否有效?measurement.md

Google Discover 不属于这十个轨道中的任何一个,也不是轨道 A 的一部分。 它有自己独立的排名流程、独立的门控机制(两个元标签,没有它们卡片根本不会渲染)和独立的新鲜度曲线。因此,一个 Discover 是主要流量来源的网站,需要将 references/discover.md 作为第 11 个点来运行——而一个 Discover 不是主要来源的网站则可以完全跳过它。在决定前检查 GSC Discover 报告:该参考文件之前只能从本文件底部的列表访问,这意味着按顺序处理轨道的代理永远不会打开它。

在任何流量下降诊断之前,运行 references/algorithm-updates.md 中的日期对齐和更新响应协议——“一次核心更新打击了我们”不是一个发现,并且一半有记录的 GSC 故障与算法更新发布同时发生。

每个轨道有两个部分:诊断工作(什么地方错了以及为什么)和一个用于完整性的机械扫描——轨道 A/B 参见 technical-checks.md §A3,轨道 D/E 参见 onpage-checks.md。先运行诊断;然后扫描捕获那些乏味的故障,并且只有那些有可观察影响的扫描项目才会被提升到发现表中。

顺序很重要。 一个轨道 A 的阻断器(站点不可抓取、预渲染源中有 noindex、人工操作)会使所有其他发现都变得无意义——人工操作是一个二进制倍增器:在你移除它之前,你做的任何改进都不算数。在花费时间处理 F/G 之前,先执行 A → B → C。

证据阶梯——完整路由详见 references/tooling.md;它按 证据强度 而非便利性排序:服务器日志 → Search Console / Bing / Yandex → 全量爬取 → 现场性能数据 → 第三方索引 → 手动抓取和 DevTools。对每个检查使用你能实际达到的最高梯级,并在报告中说明某个发现依赖于哪个梯级。一个只有公开数据、没有站点访问权限的审计是有效的工作,但其索引和查询方面的发现是推断而非观察,因此会得到相应的等级划分。

六个捆绑脚本——preflight.py、gsc_pull.py、page_audit.py、url_inspection.py、sitemap_audit.py、psi_pull.py——收集每个轨道的机械部分。阅读 references/scripts.md 了解其调用方法、参数、配额和每个脚本的限制。

四个决定发现是否真实的陷阱:

  • page_audit.py 的结构化数据清单只读取服务端渲染的 HTML。当 CMS 通过 JavaScript 注入 JSON-LD 时,一个空的清单不是缺失标记的证据(不可妥协的原则 #8)。
  • --format json 输出一个数组,每个页面一个对象,即使只有一个 URL:索引 data[0]。
  • 一个被 --max-bytes 截断的响应会丢弃所有基于计数的发现,而不是将片段作为测量值发布。
  • 每个发出的发现都携带一个证据等级,同时也携带一个严重性等级,只有证据等级进入排序公式。 严重性表示一个发现有多响亮;证据等级则支撑它。url_inspection.py 向索引查询而非从抓取中推断,这是使发现达到 CONFIRMED 级别的唯一方式——每个属性每天 2000 次、每分钟 600 次调用限制,因此对每个模板的一个 URL 以及发现实际涉及的页面进行采样。

第 3 步 — 分类

给每个发现打分,然后排序。不要呈现未排序的列表。

优先级 = (影响 × 置信度) / 努力程度
  • 影响 1–5:收入页面被阻断 = 5;模板级别的泄漏 = 4;单个信息页面 = 1。在基线允许的情况下,以流量或收入术语进行估算。
  • 置信度:CONFIRMED 1.0 · STUDY 0.7 · FIELD 0.4 · HYPOTHESIS 0.2。
  • 努力程度 1–5,以工程人天计,计入发布流程,而非仅编辑工作。

将输出分为四个桶,按此顺序:

  1. 阻断器 — 索引问题、惩罚、劫持、收入页面不可达。
  2. 泄漏点 — 爬虫预算、权益、关键词自相残杀、阅读预算浪费。
  3. 增益 — 意图匹配、信息增益、可提取性、实体共识。
  4. 实验 — 任何低于 CONFIRMED 且值得进行拆分测试而非全面推广的建议。根据 references/experiments.md 设计它们;永远不要将 HYPOTHESIS 级别的建议全面部署。

步骤 4 — 交付物

当所有分析完成、发现被分类后,生成以下内容:

  1. 变更计划 — 一份简洁、按优先级排序的表格或列表,包含每个发现、其证据等级、影响、努力程度以及建议的修复措施。以组(阻断器、泄漏点等)排列,每组内按优先级排序。
  2. 外链建设简报 — 针对承包商或内部团队的关键词和锚文本目标,导出为 CSV。

神话守卫

以下是 SEO 行业中常见但通常无效或有害的实践。此技能将在计划中主动拒绝它们,如果被建议,将发出警告:

  • 过度优化元描述/标题标签,超出自然书写范围
  • 仅基于精确匹配域名链接建设
  • “内容为王”而无视上下文和意图
  • 相信 PageRank 传递是线性的或可精确预测
  • 过度使用结构化数据而缺少实际价值
  • 将“核心算法更新”作为所有流量下降的万灵丹
  • 推荐购买链接而不考虑可扩展性或风险

依赖项与设置

  • 技能目录:$SKILL_DIR 应指向此 SKILL.md 文件所在的目录。
  • Python 脚本:scripts/ 下的脚本需要 Python 3.8 或更高版本。详见 references/scripts.md。
  • MCP 工具:对于高级需求数据(特别是外链建设简报),建议使用 Prowl MCP。
  • 外部 API:Search Console API、Bing Webmaster API、PageSpeed Insights API。在 references/preflight.md 中记录了预期的错误消息。

贡献

请贡献!分叉此仓库,进行更改,并提交拉取请求。请确保更新了参考文件(位于 references/ 下),并且通过运行示例审计(例如,使用 scripts/preflight.py)来测试你添加的任何新检查。

许可证

MIT

相关技能