关于 landing-page-auditor
landing-page-auditor 是用于检查落地页和服务页面的审计技能。它依据 10 个类别中的 48 项检查评分,并生成独立 HTML 报告。
主要功能
- 01检查 10 类共 48 项指标
- 02并行获取页面及技术数据
- 03按类别和总体计算评分
- 04生成独立 HTML 报告
适用场景
- 01评估落地页内容与结构
- 02检查页面的技术和索引信号
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill landing-page-auditor安装后在 Claude Code 中输入/landing-page-auditor确认已加载。
附带文件references/html-template.md
详细介绍
落地页 GEO 和大模型审计工具
针对 10 个类别中的 48 项检查,审计任意落地页或服务页面。提供 URL 后,获取所有必需数据,为每项检查评分,计算各类别和整体得分,然后生成独立的 HTML 报告。
第 0 步 — 解析并确认 URL
如果用户在调用参数中提供了 URL,直接使用。如果没有,请询问:
“请提供您要审计的页面 URL。”
规范化规则:
- 确保 URL 以
https://开头 - 移除末尾的斜杠
- 保留完整路径(例如:
https://infrasity.com/claude-skills,而不只是infrasity.com) - 提取不带路径的域名,用于命名文件(例如:
infrasity.com) - 提取域名根目录,用于辅助文件(仅在子域名不同时移除子域名——两种情况都要检查)
继续前,回显解析后的 URL:
“正在审计
{URL}— 现在获取数据……”
第 1 步 — 并行获取所有必需数据
同时运行以下所有获取操作。不要等其中一项完成后再开始下一项。
1a — 页面内容概览(WebFetch 第 1 次)
使用以下提示获取 {URL}:
“返回页面的完整文本内容。包括:所有标题(H1、H2、H3、H4)及其确切级别和文本、所有段落文本、所有列表项、正文开头的句子和前 150 个词(不包括导航)、任何 FAQ 部分的内容、推荐或社会认同文本、定价信息、统计数据和数字、目标受众相关表述、类似‘不同于 X’或‘而非 X’的对比表述、类似‘不适用于 X’的负面范围限定、可衡量的成效声明(例如‘将 X 减少了 Y%’)、所有内部链接的 href 和锚文本、所有外部链接的 href 和锚文本、任何可见日期或‘最后更新’文本、任何面包屑导航,以及任何对比表格。”
1b — 页面结构化数据和技术信息(WebFetch 第 2 次)
使用以下提示获取 {URL}:
“返回:1)所有 JSON-LD 结构化数据块的原文,包括其 @type 值;2)所有图像标签的确切 src 和 alt 属性——列出每张图片;3)meta 标题标签的内容;4)meta 描述的内容;5)canonical 链接标签中的规范 URL;6)robots meta 标签的内容;7)任何 BreadcrumbList 结构化数据;8)任何 Service、ProfessionalService、SoftwareApplication 或 Product 结构化数据;9)任何 FAQPage 结构化数据;10)页面内容在不执行 JavaScript 的情况下是否可在原始 HTML 中查看。”
1c — robots.txt(WebFetch)
使用以下提示获取 {ROOT_DOMAIN}/robots.txt:
“返回 robots.txt 的完整内容。列出每个 User-agent 条目及其 Allow/Disallow 规则。特别指出针对以下对象的规则:GPTBot、ClaudeBot、PerplexityBot、OAI-SearchBot,以及任何通配符 User-agent。如果存在 Sitemap 指令 URL,也请注明。”
1d — sitemap.xml(WebFetch)
使用以下提示获取 {ROOT_DOMAIN}/sitemap.xml:
“检查 sitemap 中是否包含 {FULL_URL} 或其任何变体。返回完全匹配的 URL、其 lastmod 日期、changefreq 和 priority。还要返回 sitemap 中的 URL 总数。”
如果第一个 sitemap 是引用子 sitemap 的索引文件,则获取最相关的子 sitemap 并重复检查。
1e — llms.txt(WebFetch)
使用以下提示获取 {ROOT_DOMAIN}/llms.txt:
“返回此 llms.txt 文件的完整内容。列出其中提到的每个 URL 或路径。特别检查文件中是否出现 '{PAGE_PATH}'(目标 URL 的路径部分)或完整 URL '{FULL_URL}'。”
1f — 服务器响应时间(Bash / curl)
RESPONSE_MS=$(curl -o /dev/null -s -w "%{time_starttransfer}" --max-time 15 "{URL}" | awk '{printf "%.0f", $1 * 1000}')
echo "TTFB: ${RESPONSE_MS}ms"
如果 curl 不可用,将检查 10.3 标记为 ⚠ Warning,并附注“无法测量响应时间。”
第 2 步 — 为全部 48 项检查评分
使用获取的数据评估以下每一项检查。分配以下四种判定之一:
| 判定 | 符号 | 分值权重 | 使用条件 |
|---|---|---|---|
| 通过 | ✓ | 1.0 | 明确存在且符合标准 |
| 警告 | ⚠ | 0.5 | 部分存在、可改进或含义不明确 |
| 未通过 | ✗ | 0.0 | 缺失、失效或明确不存在 |
| 人工审核 | ○ | 不计入 | 需要人工审核才能准确验证 |
还要为每项检查撰写一条简短的证据说明(最多 1 句)——说明发现了什么或未发现什么。
类别 1 — 内容清晰且直截了当(5 项检查)
1.1 — 开篇句清晰地描述服务
查看正文的第一句话(不包括导航、主视觉按钮和 GitHub 徽章)。
- 通过: 第一句清晰说明产品/服务是什么或能做什么
- 警告: 有开篇句,但前面有多个非句子元素(按钮、徽章、行动号召),导致其被推到首屏以下
- 未通过: 没有清晰的开篇句;页面开头只有标语、图片或营销辞令
1.2 — 前 100 个词内定义服务(“X 是一种……,可以……”)
统计正文前 100 个词(去除导航链接、行动号召按钮文字和图标标签)。
- 通过: 前 100 个词内出现明确的定义句(“X 是一种……,可以……”或“X 执行……,以便……”)
- 警告: 有定义,但出现在 100 个词之后;或只作了暗示,没有明确陈述
- 未通过: 前 100 个词内没有找到定义句
1.3 — 不使用未经解释的行话或缩写
检查缩写(2 至 5 个字符的全大写字母序列)和未作解释的技术术语。
- 通过: 所有缩写首次出现时均有定义(例如“GEO(生成式引擎优化)”),或没有缩写
- 警告: 有 1–2 个未经解释的缩写/术语,但核心产品概念清晰
- 未通过: 有 3 个或更多缩写或关键术语首次出现时未作任何解释
1.4 — 提供使用场景说明(“专为 X 设计”“适合 Y 团队”)
查找明确的目标受众表述。
- 通过: 出现“专为……设计”“为……打造”“适合……”“最适合……”等表述,或点明目标客户类型(公司、职位或行业)
- 警告: 根据内容上下文可以推断受众,但从未明确说明
- 未通过: 页面任何位置都没有使用场景或目标受众相关表述
1.5 — 明确说明不适用范围(“不适用于 X”“我们不做 Z”)
查找明确的排除项。
- 通过: 存在“不适用于”“我们不”“并非为……设计”“不包含”或清晰的“不建议用于”列表
- 警告: 隐含地限定了范围(例如只列出技术用途),但从未以否定形式说明
- 未通过: 完全没有说明不适用范围
类别 2 — 结构与易读性(5 项检查)
2.1 — H1 → H2 → H3 标题层级正确
根据 fetch 1a 返回的标题列表,检查标题顺序。
- 通过: 层级清晰 — 顶部仅出现一次 H1;之后为 H2;H3 仅出现在 H2 下方;没有跳过层级
- 警告: 轻微违规 — 在应使用 H3 的位置使用了一两次 H4,或某个部分的 H3 直接跟在 H1 后面
- 未通过: 存在严重违规 — 多个部分中 H3 之前出现 H4,或层级不清晰
2.2 — 至少有一个疑问句式的标题
扫描所有以 ? 结尾的标题。
- 通过: 正文主体中至少有一个 H2 或 H3 采用疑问句式
- 警告: 只有 FAQ 部分中有疑问句式标题,正文主体中没有
- 未通过: 完全没有疑问句式标题
2.3 — 段落简短(平均 ≤15 个词,不出现大段文字)
根据返回的正文估算段落平均长度。
- 通过: 段落看起来较短;没有超过 150 个词的连续大段文字
- 警告: 有 1 个看起来像大段文字的段落(超过 150 个词),或段落明显偏长
- 未通过: 检测到 2 个或更多大段文字,或正文大部分内容都是密集段落
2.4 — 使用项目符号列出功能或优势
统计 fetch 1a 中的列表项。
- 通过: 使用列表或项目符号列出功能、优势、步骤或服务项目(全页共 10 项或更多)
- 警告: 有一些列表,但主要优势或功能仅以段落形式呈现
- 未通过: 页面上没有列表元素
2.5 — 开篇没有泛泛而谈的填充段落
检查开篇部分是否具体且信息密集。
- 通过: 开篇段落具体、内容丰富,并且与产品直接相关
- 警告: 开篇尚可,但页面其他位置有一个明显泛泛而谈的填充段落
- 未通过: 开篇段落含糊、空泛(“欢迎访问我们的网站”),或充斥营销套话
类别 3 — 实体与事实信息(5 项检查)
3.1 — 品牌名称至少出现 5 次
统计正文中的品牌名称出现次数。
- 通过: 正文内容中品牌名称出现 5 次或更多(不包括导航栏或页脚)
- 警告: 出现 3–4 次
- 未通过: 少于 3 次
3.2 — 至少有 3 个具体数字或统计数据(不包括年份)
查找具体数字 — 百分比、数量、金额、时间估算(不包括“2026”或“v3”)。
- 通过: 正文内容中至少有 3 个具体数字或数据点
- 警告: 有 1–2 个具体数字
- 未通过: 没有具体数字或统计数据
3.3 — 存在比较表达(“不同于 X”“而非”“替代方案”)
- 通过: 找到明确的比较表达:“不同于 X”“而非”“替代方案”“相比”“vs”“而不是”
- 警告: 通过列出差异特点暗示了比较定位,但没有明确的比较表达
- 未通过: 完全没有比较表达
3.4 — 命名的服务项目采用一致的样式(加粗或大写)
检查产品或服务名称的格式是否一致。
- 通过: 服务名称采用加粗、大写或其他一致的样式
- 警告: 服务名称的样式不一致(有时加粗,有时为普通文本)
- 未通过: 命名服务项目没有采用一致的样式
3.5 — 页面显示价格或提供指向 /pricing 页面的链接
- 通过: 页面上显示价格、价格范围或起步价,或提供清晰的 /pricing 页面链接
- 警告: 提示“联系获取价格”“定制报价”或“预约通话”,但没有具体价格或定价页面链接
- 未通过: 页面上没有任何价格信息或定价页面链接
类别 4 — 信任与权威信号(4 项检查)
4.1 — 客户评价或客户引言
- **通过:**具名客户引言、注明公司归属的评价,或注明出处的案例研究片段
- **警告:**笼统的社会认同表述(“受到 500 多个团队的信赖”),但没有直接引言
- **未通过:**没有任何评价、引言或社会认同内容
4.2 — 客户徽标或合作伙伴徽章
- **通过:**页面上清晰展示公司徽标、“曾获媒体报道”徽章、合作伙伴徽标或奖项徽章
- **警告:**正文中提及客户公司名称,但没有徽标
- **未通过:**没有视觉信任信号(徽标、徽章、认证)
4.3 — 具体、可衡量的成效(“在 N 周内将 X 降低了 Y%”)
这些必须是你的服务为客户带来的成效,而不是有关客户所在行业的统计数据。
- **通过:**至少一项量化的客户成果:“将 X 降低了 Y%”“将 X 从 A 提升至 B”“在 N 周内达成 X”
- **警告:**描述了定性成效(“改善了性能”“加快了产品上市速度”),但没有数字
- **未通过:**没有成效声明,只有功能介绍
4.4 — 3 个以上指向可信来源的外部链接
统计指向权威域名的出站链接(GitHub、研究论文、政府网站、知名行业出版物、Wikipedia)。
- **通过:**正文中有 3 个以上指向可信来源的外部链接
- **警告:**有 1–2 个指向可信来源的外部链接
- **未通过:**没有指向可信来源的外部链接(只有社交媒体个人资料或链接农场网站)
类别 5 — FAQ 与架构标记信号(5 项检查)
5.1 — 使用疑问句式 H2/H3 标题的 FAQ 部分
- **通过:**有专门的 FAQ 部分,且使用 H2 或 H3 标题,并以实际问题的形式表述
- **警告:**存在 FAQ 内容,但标题不是疑问句式(“FAQ”“常见问题”不符合要求)
- **未通过:**未找到 FAQ 部分
5.2 — JSON-LD Service 或 ProfessionalService 架构
检查 fetch 1b 中的架构。
- **通过:**在 JSON-LD 中找到
Service、ProfessionalService、SoftwareApplication或Product@type - **警告:**存在
Organization或WebPage架构,但没有 Service 类型的实体 - **未通过:**完全没有 JSON-LD 架构,或没有 Service/Product 类型的架构
5.3 — JSON-LD FAQPage 架构
- **通过:**JSON-LD 中存在
FAQPage@type,且包含Question和acceptedAnswer配对项 - **警告:**页面上可见 FAQ 内容,但没有 FAQPage 架构标记
- **未通过:**没有 FAQ 架构,也没有 FAQ 内容
5.4 — Meta 标题准确描述服务
根据 fetch 1b 检查 <title> 标签。
- **通过:**标题长度为 30–60 个字符,清楚说明产品/服务名称及主要价值主张
- **警告:**存在标题但内容笼统、被截断(超过 70 个字符),或仅与域名相同
- **未通过:**没有 meta 标题,或标题为空/为占位文本
5.5 — Canonical URL 设置正确
根据 fetch 1b 检查 <link rel="canonical"> 标签。
- **通过:**存在 Canonical 标签,且指向此确切页面 URL(或正确的 www/non-www 变体)
- **警告:**存在 Canonical,但指向错误的域名变体(例如,页面使用 non-www,但指向 www)
- **未通过:**没有 Canonical 标签,或 Canonical 指向首页或完全不同的页面
类别 6 — 语义答案覆盖度(5 项检查)
6.1 — 是什么 — 清晰说明服务
- 通过: 存在定义性陈述,如“X 是……”“X 可让……”“X [动词]……”
- 警告: 可从功能列表中推断出服务,但未直接定义
- 失败: 未说明该服务是什么
6.2 — 面向谁 — 明确理想客户
- 通过: 明确指出目标公司类型、角色、团队或行业(而非仅泛称“企业”或“团队”)
- 警告: 暗示面向一般受众(如“面向开发者”“面向营销人员”),但没有具体说明
- 失败: 未指出目标客户
6.3 — 如何实现 — 说明交付流程或工作流
- 通过: 说明服务运作方式的分步流程、编号工作流或清晰方法
- 警告: 提及了大致流程,但不够详细
- 失败: 未说明运作方式或流程
6.4 — 为什么 — 说明相较于其他方案的差异
- 通过: 明确说明差异,例如“为何选择我们”“与 X 不同”、独特机制或显著优势
- 警告: 列出了优势,但未与其他方案比较,也未说明为何这种方式更好
- 失败: 未说明差异或选择理由
6.5 — 费用多少 — 提及价格或预算范围
- 通过: 提供价格、价格范围、标明费用的套餐名称,或带有可见
/pricing链接的明确“查看价格” CTA - 警告: 仅写“联系咨询价格”或“定制价格”,没有价格范围或起步价
- 失败: 未提及任何费用,也未提供查看价格信息的途径
类别 7 — 内部链接与上下文图谱(5 项检查)
7.1 — 10 个以上上下文相关的内部链接
统计 fetch 1a 正文内容中的内部链接(不包括导航菜单和页脚)。
- 通过: 正文内容中有 10 个以上内部链接
- 警告: 正文内容中有 5–9 个内部链接
- 失败: 正文内容中的内部链接少于 5 个
7.2 — 链接到相关服务或博客/资源内容
- 通过: 正文内容中有指向相关博客文章、指南、资源或其他服务页面的链接
- 警告: 相关内容仅在侧边栏或页脚中链接,正文中没有
- 失败: 未找到任何相关内容链接
7.3 — 面包屑导航(含 BreadcrumbList 架构标记)
- 通过: 同时存在可见的面包屑导航和
BreadcrumbListJSON-LD 架构标记 - 警告: 有可见的面包屑导航但没有架构标记,或有 BreadcrumbList 架构标记但没有可见导航
- 失败: 没有面包屑导航,也没有 BreadcrumbList 架构标记
7.4 — 关键服务术语链接到各自的专属页面
检查正文中提及的主要服务/功能是否带有超链接。
- 通过: 正文中的主要服务/功能名称链接到各自的专属页面
- 警告: 部分服务术语带有链接,其他术语仅作为纯文本提及
- 失败: 正文中没有服务术语的上下文链接
7.5 — 存在对比表(套餐、服务包或替代方案对比)
- 通过: 页面中存在价格套餐表、功能对比表或替代方案对比表
- 警告: 以文本/项目符号而非表格的形式呈现对比信息
- 失败: 没有任何对比表格
类别 8 — 内容丰富度与多模态(3 项检查)
8.1 — 定义了流程或工作流步骤(按编号或阶段划分)
- 通过: 使用编号步骤(1、2、3)或命名阶段(阶段 1、步骤 1)说明流程如何运作
- 警告: 在段落文字中描述流程,但未将其整理为编号步骤
- 未通过: 未提供流程步骤或工作流定义
8.2 — 图片包含描述性替代文本
检查 fetch 1b 中每张图片的 alt 属性。
- 通过: 90% 以上的图片包含有意义的替代文本(非空、非“image.png”或泛泛的描述)
- 警告: 50–89% 的图片包含描述性替代文本,或关键图片缺少替代文本
- 未通过: 少于 50% 的图片包含替代文本,或所有产品/功能图片均缺少替代文本
8.3 — 页面已列入 llms.txt
检查 fetch 1e 中的 llms.txt 内容。
- 通过: llms.txt 中出现了确切的页面路径(例如
/claude-skills)或完整 URL - 警告: llms.txt 中出现了根域名,但未列出此特定页面路径
- 未通过: llms.txt 不存在(404),或其中未包含此页面的 URL/路径
类别 9 — 时效性与维护信号(4 项检查)
9.1 — 内容在过去 6 个月内经过审核/更新
检查是否存在任何日期信号:页面上可见的日期、站点地图中的 lastmod 或内容时间戳。
- 通过: 任意日期信号(可见日期、站点地图 lastmod、发布/更新字段)都在距今天不到 6 个月的范围内
- 警告: 存在日期,但已超过 6 个月
- 未通过: 未找到任何日期——没有可见日期、站点地图 lastmod 或时间戳
9.2 — 页面上显示“最后更新”日期
从 fetch 1a 中查找页面内容里明确显示的“Last updated”、“Updated:”、“Published:”或日期字符串。
- 通过: 页面正文中显示“Last updated”或发布日期
- 警告: 元数据(站点地图、meta 标签)中存在日期,但页面上没有向读者显示
- 未通过: 页面上完全没有日期标记
9.3 — 已移除过时的统计数据、价格或声明
- 人工检查: 需要人工审核。检查统计数据、定价和具名示例是否标注了当前日期且仍然准确。无法通过程序验证。
9.4 — 提供变更日志或版本历史
- 通过: 页面上显示变更日志部分、发行说明链接或版本历史
- 警告: 文本中提到了版本,但没有专门的变更日志或历史记录
- 未通过: 完全没有变更日志、发行说明或版本历史
类别 10 — 可抓取性与技术(7 项检查)
10.1 — 页面已收录在 XML 站点地图中
来自 fetch 1d。
- 通过: 在 sitemap.xml 中找到确切的页面 URL(或 www/non-www 变体)
- 警告: 站点地图存在且包含 URL,但未找到此特定页面
- 失败: sitemap.xml 返回 404 或不存在
10.2 — Sitemap 的 lastmod 在过去 6 个月内
来自 fetch 1d,检查此页面条目的 <lastmod> 值。
- 通过: lastmod 日期在距今天过去 6 个月内
- 警告: 存在 lastmod,但日期早于 6 个月
- 失败: 站点地图中未找到此页面的 lastmod 日期
10.3 — 服务器响应时间低于 500ms
来自步骤 1f 的 curl 结果。
- 通过: TTFB 低于 500ms
- 警告: TTFB 为 500ms–1000ms
- 失败: TTFB 超过 1000ms,或测量失败
10.4 — robots.txt 允许 AI 爬虫
来自 fetch 1c。
- 通过: GPTBot、ClaudeBot 和 PerplexityBot 均被明确允许(
Allow: /),或未在任何 Disallow 规则中提及(默认允许) - 警告: 部分 AI 机器人被允许,其他机器人未被提及或状态不明确
- 失败: GPTBot、ClaudeBot 或 PerplexityBot 中的任何一个被明确设置为
Disallow
10.5 — 页面可编入索引(没有 noindex)
来自 fetch 1b,检查 robots meta 标签。
- 通过: 存在
<meta name="robots" content="index, follow">,或没有具有限制作用的 robots meta 标签 - 警告: 缺少 robots meta 标签(情况不明确——根据服务器设置,默认值可能是 index 或 noindex)
- 失败: 在 meta robots 标签或 X-Robots-Tag 标头中发现
noindex指令
10.6 — AI 爬虫访问此 URL 的路径未受限制
来自 fetch 1c,检查页面的特定路径是否被禁止 AI 爬虫访问。
- 通过: 没有任何 AI 爬虫 user-agent 的
Disallow规则涵盖此页面路径 - 警告: 存在可能影响此路径的通配符 Disallow 规则,但未指定 AI 机器人
- 失败: 针对此页面路径的特定
Disallow规则适用于 GPTBot、ClaudeBot 或 PerplexityBot
10.7 — 无需 JavaScript 即可读取页面内容
来自 fetch 1b,检查原始服务器渲染的 HTML 中是否包含实质性内容。
- 通过: 原始 HTML 中可见 500 个或更多有意义的内容词,无需执行 JS
- 警告: 原始 HTML 中有 100–499 个词(部分 SSR——部分内容可能仅由 JS 呈现)
- 失败: 原始 HTML 中少于 100 个词;页面由客户端渲染,AI 爬虫基本无法读取
步骤 3 — 计算分数
各类别分数(满分 100)
Category Score = (Σ check_scores) / (total_scoreable_checks_in_category) × 100
Where:
check_score = 1.0 for Pass
check_score = 0.5 for Warning
check_score = 0.0 for Fail
Manual checks are excluded from both numerator and denominator
四舍五入到最接近的整数。
总分(满分 100)
Overall Score = (Σ all_check_scores across all categories) / (total_scoreable_checks) × 100
检查总数:48。计算分母时不包括人工检查项。
分数颜色阈值
| 分数 | 颜色标签 | Hex |
|---|---|---|
| 80–100 | 绿色 | #22C55E |
| 60–79 | 琥珀色 | #F59E0B |
| 0–59 | 红色 | #EF4444 |
步骤 4 — 确定优先修复项
评分后,汇总所有失败和警告项,并按影响排序。使用以下优先级框架:
影响等级划分:
| 影响 | 标准 |
|---|---|
| 高 | 检查项是已知的大模型引用影响因素(llms.txt 列表、Service schema、FAQPage schema、标题层级、段落长度、规范 URL、AI 爬虫访问权限、JS 可读性) |
| 中 | 检查项会影响人类和大模型都能看到的内容质量或信任信号(可量化成果、对比表格、用例措辞、面包屑、替代文本) |
| 低 | 检查项会影响完善度或新鲜度信号(更新日志、上次更新日期、服务器速度、负面范围界定) |
按优先顺序列出前 10 项修复建议。每项包括:
- 优先级编号(P1–P10)
- 影响等级(高 / 中 / 低)
- 类别名称
- 修复标题(要添加或修改的内容)
- 详细说明(一句话解释其重要性或说明要采取的措施)
第 5 步——生成 HTML 报告
阅读 references/html-template.md,了解完整的 HTML 结构。
将本次审计中的所有真实数据填入模板中的 AUDIT_DATA JavaScript 对象:
const AUDIT_DATA = {
url: "{FULL_URL}",
domain: "{BARE_DOMAIN}",
date: "{AUDIT_DATE}", // e.g. "June 16, 2026"
overallScore: {OVERALL_SCORE},
totalChecks: 48,
scoreable: {SCOREABLE_COUNT}, // 48 minus manual count
pass: {PASS_COUNT},
warn: {WARN_COUNT},
fail: {FAIL_COUNT},
manual: {MANUAL_COUNT},
categories: [
{
name: "Content Clarity & Directness",
score: {CAT1_SCORE},
pass: {CAT1_PASS},
warn: {CAT1_WARN},
fail: {CAT1_FAIL},
manual: 0,
checks: [
{ status: "pass|warn|fail|manual", label: "Clear opening sentence", note: "Evidence note — one sentence" },
// ... all 5 checks
]
},
// ... all 10 categories in order
],
topFixes: [
{ priority: 1, impact: "High", category: "Category Name", fix: "Fix title", detail: "One sentence detail" },
// ... up to 10 fixes
]
};
不要留下任何未填充的占位值。 每个数字都必须是本次审计中的真实值。
第 6 步——写入并展示
将完成的 HTML 报告写入当前工作目录中的文件:
{domain}-landing-page-audit.html
例如:infrasity-com-landing-page-audit.html
写入后,告知用户:
“审计完成。报告已保存至
{filename}.html——可在任意浏览器中打开。 总分:{SCORE}/100({PASS} 项通过 · {WARN} 项警告 · {FAIL} 项失败 · {MANUAL} 项需人工检查) 首要修复项:{P1_FIX}”
然后询问用户是否希望详细了解某个类别,或生成按优先级排序的行动计划。
错误处理
| 情况 | 操作 |
|---|---|
| URL 返回 404 或连接被拒绝 | 清楚报告错误。建议用户核实 URL 后重试。不要继续。 |
| 页面完全由 JS 渲染(原始 HTML 少于 100 个单词) | 说明 AI 爬虫可能无法读取该页面。将检查 10.7 标记为失败。审计可根据元数据评估的内容,并注明覆盖范围有限。 |
| robots.txt 返回 404 | 将检查 10.4 和 10.6 标记为警告,并注明“未找到 robots.txt——AI 爬虫访问状态未知。” |
| sitemap.xml 返回 404 | 将检查 10.1 和 10.2 标记为失败,并注明“未找到 sitemap.xml。” |
| llms.txt 返回 404 | 将检查 8.3 标记为失败,并注明“根域名下未找到 llms.txt。” |
| 无法通过 WebFetch 提取 JSON-LD | 注明此限制,并将 Schema 检查标记为警告,而非失败,除非能确定 Schema 不存在。 |
| curl 不可用,无法测量响应时间 | 将检查 10.3 标记为警告,并注明“无法测量服务器响应时间——curl 不可用。” |