项目文件夹

文件
2026-07-13 21:36:41 +08:00

9.6 KiB


---
name: seo-technical
description: >
  涵盖 9 大类的技术 SEO 审计:可爬取性、可索引性、安全性、URL 结构、移动端、Core Web Vitals、结构化数据、JavaScript 渲染和 IndexNow 协议。当用户提到"技术 SEO"、"爬取问题"、"robots.txt"、"Core Web Vitals"、"网站速度"或"安全标头"时使用。
user-invokable: true
argument-hint: "[url]"
license: MIT
metadata:
  author: AgriciDaniel
  version: "2.0.0"
  category: seo
---

技术 SEO 审计

类别

1. 可爬取性

  • robots.txt:存在、有效、未屏蔽重要资源
  • XML 站点地图:存在、在 robots.txt 中被引用、格式有效
  • Noindex 标签:有意的与无意的区分
  • 爬取深度:重要页面在首页 3 次点击以内可达
  • JavaScript 渲染:检查关键内容是否需要 JS 执行
  • 爬取预算:大型网站(超过 1 万个页面)的效率尤为重要

AI 爬虫管理

截至 2025-2026 年,AI 公司正在积极爬取网页以训练模型和为 AI 搜索提供支持。通过 robots.txt 管理这些爬虫是一项关键的技术 SEO 考量。

已知的 AI 爬虫:

爬虫 所属公司 robots.txt 令牌 用途
GPTBot OpenAI GPTBot 模型训练
ChatGPT-User OpenAI ChatGPT-User 实时浏览
ClaudeBot Anthropic ClaudeBot 模型训练
PerplexityBot Perplexity PerplexityBot 搜索索引 + 训练
Bytespider ByteDance Bytespider 模型训练
Google-Extended Google Google-Extended Gemini 训练(非搜索)
CCBot Common Crawl CCBot 开放数据集

关键区别:

  • 屏蔽 Google-Extended 可防止 Gemini 训练使用,但不会影响 Google 搜索索引或 AI Overviews(这些使用 Googlebot
  • 屏蔽 GPTBot 可防止 OpenAI 训练,但不会阻止 ChatGPT 通过浏览功能引用你的内容(ChatGPT-User
  • 约 3-5% 的网站现已使用 AI 专用的 robots.txt 规则

选择性屏蔽 AI 爬虫的示例:

# 允许搜索索引,屏蔽 AI 训练爬虫
User-agent: GPTBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Bytespider
Disallow: /

# 允许所有其他爬虫(包括用于搜索的 Googlebot
User-agent: *
Allow: /

建议: 在屏蔽之前,请考虑你的 AI 可见性策略。被 AI 系统引用可以提升品牌知名度和引荐流量。请参考 seo-geo 技能以获取完整的 AI 可见性优化方案。

2. 可索引性

  • Canonical 标签:自引用,不与 noindex 冲突
  • 重复内容:近似重复、参数 URL、www 与非 www
  • 内容单薄:各类型页面低于最低字数要求的页面
  • 分页:rel=next/prev 或加载更多模式
  • Hreflang:多语言/多区域网站配置正确
  • 索引膨胀:不必要的页面消耗爬取预算

3. 安全性

  • HTTPS:已启用、有效的 SSL 证书、无混合内容
  • 安全标头:
    • Content-Security-Policy (CSP)
    • Strict-Transport-Security (HSTS)
    • X-Frame-Options
    • X-Content-Type-Options
    • Referrer-Policy
  • HSTS preload:检查高安全性站点是否已纳入 preload 列表

4. URL 结构

  • 简洁 URL:描述性、连字符分隔、内容页面无查询参数
  • 层级结构:反映站点架构的逻辑文件夹结构
  • 重定向:无链式重定向(最多 1 跳),永久移动使用 301
  • URL 长度:标记超过 100 个字符的 URL
  • 尾部斜杠:使用保持一致

5. 移动端优化

  • 响应式设计:viewport meta 标签、响应式 CSS
  • 触摸目标:最小 48x48px,间距 8px
  • 字体大小:最小基础字号 16px
  • 无水平滚动
  • 移动端优先索引:Google 索引移动版。截至 2024 年 7 月 5 日,移动端优先索引已 100% 完成。 Google 现在仅使用移动端 Googlebot 用户代理爬取和索引所有网站。

6. Core Web Vitals

  • LCP(最大内容绘制):目标 <2.5s
  • INP(下一次交互的响应时间):目标 <200ms
    • INP 于 2024 年 3 月 12 日取代 FID。FID 已于 2024 年 9 月 9 日从所有 Chrome 工具(CrUX API、PageSpeed Insights、Lighthouse)中完全移除。请勿在任何地方引用 FID。
  • CLS(累计布局偏移):目标 <0.1
  • 评估使用真实用户数据的第 75 百分位数
  • 如果 MCP 可用,使用 PageSpeed Insights API 或 CrUX 数据

7. 结构化数据

  • 检测:JSON-LD(推荐)、Microdata、RDFa
  • 对照 Google 支持的类型进行验证
  • 完整分析请参见 seo-schema 技能

8. JavaScript 渲染

  • 检查内容是出现在初始 HTML 中还是需要 JS
  • 识别客户端渲染 (CSR) 与服务器端渲染 (SSR)
  • 标记可能导致索引问题的 SPA 框架(React、Vue、Angular
  • 如适用,验证动态渲染设置

JavaScript SEOCanonical 与索引指南(2025 年 12 月)

Google 于 2025 年 12 月更新了其 JavaScript SEO 文档,带来了关键性的澄清:

  1. Canonical 冲突: 如果原始 HTML 中的 canonical 标签与 JavaScript 注入的不同,Google 可能使用其中任意一个。确保 canonical 标签在服务端渲染的 HTML 和 JS 渲染的输出中保持一致。
  2. 通过 JavaScript 使用 noindex 如果原始 HTML 包含 <meta name="robots" content="noindex"> 但 JavaScript 将其移除,Google 仍可能遵循原始 HTML 中的 noindex 指令。请在初始 HTML 响应中提供正确的 robots 指令。
  3. 非 200 状态码: Google 不会在返回非 200 HTTP 状态码的页面上渲染 JavaScript。通过 JS 在错误页面上注入的任何内容或 meta 标签对 Googlebot 均不可见。
  4. JavaScript 中的结构化数据: 通过 JS 注入的 Product、Article 和其他结构化数据可能面临延迟处理。对于时间敏感的结构化数据(尤其是电商 Product 标记),请将其包含在初始服务端渲染的 HTML 中。

最佳实践: 在初始服务端渲染的 HTML 中提供关键的 SEO 元素(canonical、meta robots、结构化数据、title、meta description),而不是依赖 JavaScript 注入。

9. IndexNow 协议

  • 检查网站是否支持 IndexNow(用于 Bing、Yandex、Naver
  • 受除 Google 以外的搜索引擎支持
  • 建议在非 Google 搜索引擎上实施以实现更快的索引

对 AI 代理友好的页面(前瞻性)

AI 代理(不仅仅是 AI 摘要生成器)越来越多地通过三种渠道读取网站:基于截图的视觉模型、原始 HTML/DOM 以及无障碍树(最清晰的信号)。审计标准——语义 HTML(真正的 <button><a>,而不是 <div onclick>)、标签关联、交互目标尺寸、跨模板的布局稳定性、cursor: pointer 的正确性——记录在 references/agent-friendly-pages.md 中。

审计命令

# 使用 Playwright 渲染 + 捕获无障碍树,然后评分
python scripts/agent_ux_check.py https://example.com --json

扫描器输出 Agent-UX 分数(0-100)以及逐项列出的问题:

  • HTML 发现:真正的按钮/锚点、<div onclick> 小部件、语义地标、缺少 <label for> 的输入框、缺少 ARIA 标签的输入框
  • 无障碍树发现:总节点数、交互式节点数、未命名的交互式元素、role="generic" 比例

无障碍树快照使用 Playwright 的 page.accessibility.snapshot(interesting_only=False)。如需捕获无障碍树而不评分,请使用 python scripts/render_page.py <url> --a11y-tree --json

将发现呈现为机会,而非失败。相关标准(WebMCP、代理 UX 启发式方法)仍处于早期阶段——不要以满分 100 作为审计门槛。

输出

技术评分:XX/100

类别细分

类别 状态 评分
可爬取性 pass/warn/fail XX/100
可索引性 pass/warn/fail XX/100
安全性 pass/warn/fail XX/100
URL 结构 pass/warn/fail XX/100
移动端 pass/warn/fail XX/100
Core Web Vitals pass/warn/fail XX/100
结构化数据 pass/warn/fail XX/100
JS 渲染 pass/warn/fail XX/100
IndexNow pass/warn/fail XX/100

严重问题(立即修复)

高优先级(1 周内修复)

中优先级(1 个月内修复)

低优先级(待办清单)

DataForSEO 集成(可选)

如果 DataForSEO MCP 工具可用,使用 on_page_instant_pages 进行实时页面分析(状态码、页面耗时、失效链接、页面检查),使用 on_page_lighthouse 进行 Lighthouse 审计(性能、无障碍、SEO 评分),使用 domain_analytics_technologies_domain_technologies 进行技术栈检测。

Google API 集成(可选)

如果已配置 Google API 凭据,使用 python scripts/pagespeed_check.py <url> --json 获取真实的 PSI + CrUX 字段数据(替代仅限实验室的 CWV 估算),使用 python scripts/crux_history.py <url> --json 获取 25 周的 CWV 趋势,使用 python scripts/gsc_inspect.py <url> --json 获取每个 URL 的真实索引状态。

错误处理

场景 操作
URL 不可达 报告连接错误并附上状态码。建议验证 URL、检查 DNS 解析、确认网站可公开访问。
未找到 robots.txt 注明在根域名未检测到 robots.txt。建议创建包含适当指令的 robots.txt。继续对剩余类别进行审计。
未配置 HTTPS 标记为严重问题。报告是否存在无重定向的 HTTP 服务、混合内容、或 SSL 证书缺失/过期。
Core Web Vitals 数据不可用 注明 CrUX 数据不可用(低流量网站常见)。建议使用 Lighthouse 实验室数据作为替代,并建议增加流量后重新测试。