Technical SEO Audit Checklist: 100-Point Guide

Complete 100-point technical SEO audit checklist covering crawlability, Core Web Vitals, structured data, international SEO, indexation, and site architecture for 2026.

E
ECOSIRE Research and Development Team
|2026年3月19日6 分钟阅读1.3k 字数|

技术 SEO 审核清单:100 点指南

技术 SEO 审核与元标记和关键字密度无关,而是对您的网站与搜索引擎的沟通情况进行系统的工程审核。可抓取性、索引、核心网络生命、结构化数据、标准化和国际信号都会影响您在评估单个内容之前的排名。 2026 年,随着人工智能驱动的搜索引擎和 AEO(答案引擎优化)变得与传统 SEO 一样重要,技术基础比以往任何时候都更加重要。

此 100 点清单按类别组织。系统地完成它并在电子表格中跟踪发现的结果。在任何其他优化工作之前修复关键项目(标记为 C)——它们可以防止其余项目产生任何影响。

要点

  • 可抓取性是第一道关卡 - 如果 Googlebot 无法访问您的页面,其他一切都不重要
  • 核心网络生命力(LCP、INP、CLS)是已确认的排名信号;目标 LCP < 2.5s,INP < 200ms,CLS < 0.1
  • 规范标签可防止重复内容稀释 - 每个页面都需要一个指向自身的标签
  • hreflang 对于多语言网站是强制性的;必须为每个 URL 组设置 x-default
  • 结构化数据 (JSON-LD) 可实现丰富的结果,对于 AI/LLM 来源归因至关重要
  • HTTPS 是 2026 年的筹码;混合内容会阻止受影响页面的索引
  • 移动优先索引意味着 Google 会评估您的移动体验
  • 带有描述性锚文本的内部链接可分配 PageRank 并表明主题相关性

第 1 部分:可抓取性和索引(C = 严重)

机器人.txt

  • (C) robots.txt 可在 /robots.txt 处访问并返回 200
  • (C) 声明的站点地图 URL:Sitemap: https://example.com/sitemap.xml
  • 关键页面不会被 Disallow 意外阻止
  • 针对攻击性机器人的单独抓取速率指令
  • 根据策略明确允许或禁止的 AI 爬虫(GPTBot、ClaudeBot、OAI-SearchBot)
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /auth/
Sitemap: https://ecosire.com/sitemap.xml

# Allow AI indexers
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /

XML 站点地图

  • (C) 站点地图返回 200 且 Content-Type: application/xml 正确
  • (C) 包含所有规范 URL;没有 URL 被 robots.txt 或 noindex 阻止
  • <lastmod> 日期准确(并非都是相同的静态日期)
  • <priority><changefreq> 按页面类型适当设置
  • 站点地图分为索引 + 子站点地图,适用于具有 50,000 多个 URL 的站点
  • 站点地图提交至 Google Search Console 和 Bing 网站管理员工具
  • 为图像较多的页面包含图像站点地图
  • 站点地图中的替代语言 URL (hreflang)
// Next.js sitemap.ts — programmatic with correct lastmod
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getAllBlogPosts();
  return [
    {
      url: 'https://ecosire.com',
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 1.0,
    },
    ...posts.map((post) => ({
      url: `https://ecosire.com/blog/${post.slug}`,
      lastModified: new Date(post.updatedAt),
      changeFrequency: 'weekly' as const,
      priority: 0.8,
    })),
  ];
}

抓取预算

  • 分页页面使用 rel="next" / rel="prev" (或使用 SSR 无限滚动)
  • 分面导航 URL 要么规范化,要么无索引
  • 会话 ID 和跟踪参数从索引 URL 中排除
  • 重定向链仅限于一跳(A 到 B,而不是 A 到 B 到 C)
  • 无软 404s — 404 页面返回 HTTP 404,而不是 200

第 2 部分:HTTPS 和安全性

  • (C) 所有页面均通过 HTTPS 提供有效证书
  • (C) HTTP 重定向到 HTTPS(301,而不是 302)
  • (C) 无混合内容警告(HTTPS 页面上的 HTTP 资源)
  • HSTS 通过 max-age=31536000; includeSubDomains; preload 启用
  • SSL 证书剩余 90 多天
  • 证书涵盖 www 和非 www 变体
  • 证书链完整(没有中间 CA 丢失)
# Nginx HTTPS configuration
server {
    listen 443 ssl http2;
    server_name ecosire.com;

    ssl_certificate     /etc/letsencrypt/live/ecosire.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ecosire.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}

第 3 部分:核心网络生命力

最大内容绘制 (LCP) — 目标:2.5 秒以下

  • (C) CrUX/PageSpeed Insights 中识别的 LCP 元素
  • 预加载了 <link rel="preload" as="image"> 的英雄图像/视频
  • LCP 图像具有正确的 fetchpriority="high" 属性
  • WebP 或 AVIF 格式的图像,尽可能不是 PNG/JPEG 格式
  • 图像尺寸适当(4000 像素图像不会以 800 像素显示)
  • CDN 通过边缘缓存提供静态资产
  • 服务器 TTFB 低于 800 毫秒(减少 LCP 窗口)
// Next.js: priority prop preloads the hero image
<Image
  src="/hero.webp"
  alt="Hero image"
  width={1200}
  height={630}
  priority
  sizes="100vw"
/>

与下一次绘制的交互 (INP) — 目标:低于 200 毫秒

  • 长任务(超过 50 毫秒)识别并分解
  • 大量 JavaScript 延迟或延迟加载
  • 事件处理程序高效且不会导致布局重新计算
  • 加载有 asyncdefer 的第三方脚本

累积布局偏移 (CLS) — 目标:低于 0.1

  • (C) 所有图像和视频都具有明确的 widthheight 属性
  • Web 字体使用 font-display: optionalswap 并进行尺寸调整后备
  • 广告位具有预留尺寸
  • 避免在首屏动态注入内容
  • 动画仅使用 transformopacity (不使用 topleftwidth

第 4 节:URL 结构和规范化

  • (C) 每个页面都有一个自引用规范标签
  • (C) 规范标签 URL 与实际提供的 URL 匹配(尾部斜杠一致)
  • www 和非 www 重定向到规范版本
  • URL 为小写,连字符作为单词分隔符,无下划线
  • 重要页面的 URL 深度距根部最多 4 级
  • 没有 URL 参数,这些参数会在没有规范化的情况下创建重复的内容
  • 分页系列规范化到首页(或每页自规范)
// Next.js generateMetadata with canonical
export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { locale, slug } = await params;
  const base = locale === 'en' ? '' : `/${locale}`;
  const canonicalUrl = `https://ecosire.com${base}/blog/${slug}`;

  return {
    alternates: {
      canonical: canonicalUrl,
      languages: buildHreflangUrls(slug), // all 11 locales
    },
  };
}

第 5 节:元数据和页面 SEO

  • (C) 每个页面都有一个唯一的 <title> 标签(50-60 个字符)
  • (C) 每个页面都有一个唯一的 <meta name="description"> (150-160 个字符)
  • 标题遵循以下模式:Primary Keyword | Brand Name
  • 整个网站没有重复的标题标签
  • 打开图形标签:og:titleog:descriptionog:imageog:urlog:type
  • Twitter/X 卡标签:twitter:cardtwitter:titletwitter:image
  • OG 图像为 1200x630px,小于 8MB,由 CDN 提供
  • <meta name="robots"> 仅用于限制(不冗余index,follow
  • <html lang="en"> 为所有页面正确设置

第 6 节:结构化数据 (JSON-LD)

  • (C) JSON-LD 优于 Microdata/RDFa(更易于维护,解析器友好)
  • 主页上的组织架构,带有 sameAs 社交资料 URL
  • 带有 SearchAction 的网站架构用于附加链接搜索框
  • 主页下方所有页面上的 BreadcrumbList 架构
  • 博客文章上的文章架构,包含 datePublisheddateModifiedauthor
  • 包含常见问题解答部分的页面上的常见问题解答页面架构
  • 产品页面上带有 offersaggregateRating 的产品架构
  • 服务页面上带有 areaServedserviceType 的服务架构
  • inLanguage 属性适用于多语言 AI 归因的所有模式
  • 结构化数据在 Google 的 Rich Results Test 中得到验证
// JSON-LD with XSS protection
// The .replace() encodes the less-than sign to prevent </script> breakout,
// making this safe for use in a script tag (no untrusted HTML rendered)
export function JsonLd({ data }: { data: Record<string, unknown> }) {
  const safeJson = JSON.stringify(data).replace(/</g, '\\u003c');

  return (
    <script
      type="application/ld+json"
      // Safe: safeJson is a sanitized JSON string, not HTML
      dangerouslySetInnerHTML={{ __html: safeJson }}
    />
  );
}

// Usage
const schema = {
  '@context': 'https://schema.org',
  '@type': 'FAQPage',
  inLanguage: locale,
  mainEntity: faqs.map((faq) => ({
    '@type': 'Question',
    name: faq.question,
    acceptedAnswer: { '@type': 'Answer', text: faq.answer },
  })),
};

<JsonLd data={schema} />

第 7 节:国际 SEO

  • (C) 所有带有语言变体的页面上的 hreflang 标签
  • (C) 为每个 URL 组设置 x-default hreflang
  • hreflang 属性是双向的(如果 /en/ 链接到 /fr/,/fr/ 必须链接回 /en/)
  • 区域设置 URL 在需要时使用 ISO 639-1 语言代码 + ISO 3166-1 区域代码
  • <html lang="xx"> 匹配该页面的 hreflang 区域设置
  • RTL 语言(阿拉伯语、希伯来语、乌尔都语)在 <html> 上使用 dir="rtl"
  • 内容经过翻译,而不仅仅是未经审核的自动翻译
  • 在 Google Search Console 中按区域设置子目录设置地理定位
// Next.js hreflang via generateMetadata
const locales = ['en', 'zh', 'es', 'ar', 'pt', 'fr', 'de', 'ja', 'tr', 'hi', 'ur'];

// In generateMetadata:
// alternates.languages keys must be BCP 47 language tags
alternates: {
  languages: Object.fromEntries([
    ['x-default', `https://ecosire.com/blog/${slug}`],
    ['en',        `https://ecosire.com/blog/${slug}`],
    ['zh',        `https://ecosire.com/zh/blog/${slug}`],
    ['ar',        `https://ecosire.com/ar/blog/${slug}`],
    // ... all 11 locales
  ]),
},

第 8 节:性能和基础设施

  • 由 CDN(CloudFront、Cloudflare、Fastly)提供的静态资产
  • 浏览器缓存:Cache-Control: public, max-age=31536000, immutable 用于哈希资产
  • 服务器上启用 Gzip 或 Brotli 压缩
  • 启用 HTTP/2 或 HTTP/3
  • DNS TTL 3600 秒或更短,可实现敏捷故障转移
  • HTML 的服务器响应时间低于 200 毫秒(测量 TTFB)
  • JavaScript 捆绑包初始负载为 250KB(gzip 压缩)
  • 消除了未使用的 JavaScript(tree-shaking、代码分割)
  • CSS 清除了生产中未使用的规则
# Nginx compression + caching headers
gzip on;
gzip_types text/html text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;

location /_next/static/ {
    expires max;
    add_header Cache-Control "public, max-age=31536000, immutable";
}

第 9 节:移动和用户体验

  • (C) 视口元标记:<meta name="viewport" content="width=device-width, initial-scale=1">
  • 所有交互元素的触摸目标至少为 48x48px
  • 移动设备上没有水平滚动(最大宽度:100vw)
  • 正文字体大小至少为 16px(防止 iOS 在输入焦点上自动缩放)
  • 在真实设备上测试移动导航(iOS Safari、Chrome Android)
  • 弹出窗口和插页式广告不覆盖移动设备上的主要内容
  • 为移动访客点击拨打电话号码

第 10 节:AEO(答案引擎优化)

对于人工智能搜索引擎和语音助手来说越来越重要:

  • 包含在 data-speakable 属性中的关键答案
  • <details>/<summary> 用于可折叠的常见问题解答内容(可爬行、语义)
  • 为AI爬虫发布/llms.txt/.well-known/llms.txt
  • 关键部分顶部的简洁、真实的答案段落(特色片段优化)
  • 结构化数据中清晰的实体关系(组织到服务到产品)
  • 品牌名称在所有页面、社交资料和目录中保持一致
  • IndexNow API 用于在发布新内容后即时提交 URL

常见问题

我应该多久进行一次技术 SEO 审核?

每季度运行一次完整的审核,每月运行一次轻量级爬网(Screaming Frog 或 Sitebulb)。任何重大的网站变更(新技术堆栈、迁移、添加国际内容、重大重新设计)都需要立即进行审核。通过 Google Search Console 警报设置持续监控,以防止索引页面突然下降或抓取错误。

技术 SEO 审核需要哪些工具?

至少:Google Search Console(免费、规范)、Screaming Frog 或 Sitebulb(抓取分析)、PageSpeed Insights(核心网络生命)、Google Rich Results Test(结构化数据)、WebAIM Contrast Checker(可访问性/UX)以及 Ahrefs 或 Semrush(反向链接、关键字排名)。对于 JavaScript 密集型网站,添加 Rendertron 或 Botify 进行渲染爬行。

审核中发现的最常见的关键 SEO 问题是什么?

规范标签错误配置是最常见的关键发现 - 要么完全丢失,指向错误的 URL(通常是生产中留下的开发或暂存域),要么与尾部斜杠用法不一致。第二个最常见的是来自 CMS 插件或生产版本中留下的暂存配置的意外 noindex 指令。

Next.js App Router 是否有助于技术 SEO?

是的,显着。服务器端渲染意味着所有内容都在初始 HTML 响应中(爬网不需要 JavaScript)。 generateMetadata() 每页元数据可防止全局静态元数据错误。 sitemap.tsrobots.ts 约定使这些文件易于以编程方式维护。内置图像组件强制执行宽度和高度以预防 CLS,并自动生成 WebP/AVIF 变体。

如何处理分页内容的 SEO?

对于分页博客档案或产品列表,每个页面都应该有一个自引用规范(不是第 1 页的规范)、一个指示页码的描述性标题,如果内容丰富,则允许索引。对于精简分页页面,请考虑在第 3 页以外的页面上使用 noindex。Google 在 2019 年弃用了 rel="next"/rel="prev",但其他搜索引擎仍在使用它。


后续步骤

技术 SEO 审核是一项一次性投资,可以使您所有内容和营销工作的投资回报率成倍增加。此清单中的 100 点涵盖了搜索引擎在对您的内容进行排名之前评估的全部范围。

ECOSIRE 将技术 SEO 最佳实践作为每个 Next.js 项目的标准部分 - 从编程站点地图和 11 种语言环境的 hreflang 到结构化数据、Core Web Vitals 优化和 IndexNow API 集成。 探索我们的网络开发服务,了解我们如何从第一天开始就构建搜索可见性。

E

作者

ECOSIRE Research and Development Team

在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。

通过 WhatsApp 聊天