---
title: 技术 SEO 与 GEO：打造快速、可被搜索和 AI 发现网站的完整指南
canonical: https://blog.webreeze.ai/zh-cn/technical-seo-and-geo-guide
---

<!--breeze:rich-html-->
<div class="tldr"><b>TL;DR：</b>这份技术 SEO 与 GEO 指南，讲的是让网站更快、更容易被搜索和 AI 发现的那套基础工作，大部分一次配置就能搞定：干净的 URL、结构化数据、合理的缓存、可被抓取的访问权限，再加几个成本很低、但很容易出错的信号。第一部分教你怎么在任何网站上做审计、把基础搭起来——里面专门留了一步，讲博客会带来的额外选择。第二部分内容篇，讲你该发布什么、怎么让内容值得被发现。</div>

<div class="dev"><span class="lbl">⚡ 把这篇指南变成一次审计</span><p>如果你在用 Claude 或 Codex，可以把这篇文章连同你的网站或代码库一起交给它，让它生成一份技术 SEO 和 AI 可发现性报告。直接用下面这段提示词就行：</p>
<pre>请根据本文中的每一项相关检查，对我的网站进行一次技术 SEO 和 GEO 审计。
每一项请标记为“通过”“未通过”或“无法验证”，附上判断依据，
并按照影响大小排列需要修复的问题。暂时不要修改任何内容。</pre></div>

<hr>

<p>这份技术 SEO 清单，来自我们搭建 WeBreeze 的过程。WeBreeze 是一个 AI 智能体平台，它把过去 SEO 和 GEO 机构要做的大量工作自动化了：研究、内容创作、优化、发布和衡量。我们起初把这些设置用在了客户的博客上，但其实它适用于几乎所有公开网站。最后一节会专门讲博客特有的几个选择。</p>

<p>过去大约十年里，“被找到”只意味着一件事：在 Google 上排名。这依然成立，但已经不是全部了。越来越多的人提问之后，得到的是一份由 AI 综合出来的<em>答案</em>，而不是一串蓝色链接。如果你的网站没有准备好，让这些系统能抓取、理解并信任它，那在这个几年前几乎还不存在的发现渠道里，你就是完全隐形的。</p>

<p>这项工作有好几个高度重叠的名字：<strong>AI 搜索优化</strong>；<strong>GEO</strong>，即<strong>生成式引擎优化（Generative Engine Optimization）</strong>；<strong>AEO</strong>，即<strong>答案引擎优化（Answer Engine Optimization）</strong>；有时也叫 <strong>LLMO</strong>，即<strong>大语言模型优化（Large Language Model Optimization）</strong>。在本指南里，技术 GEO 指的是让你的网站能被 AI 答案引擎访问和理解，然后衡量它们会不会提到并引用你。</p>

<p>好消息是，大部分技术 SEO 和 GEO 的设置是共通的。Google 确认了，<a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide">面向搜索的基础 SEO 指南同样适用于它的生成式 AI 搜索功能</a>。同一套干净的基础，往往也能帮到其他答案引擎——而且很多东西（更快的页面、清晰的标题、可访问的标记）本身就能让网站对访客更友好。这些工作大多一次搞定：好好配置一次，之后发布的每个页面都会自动继承。</p>
<h2>目录</h2>
<nav aria-label="Table of contents">
  <ol>
    <li><a href="#step1">先把每个页面的基础做好</a></li>
    <li><a href="#step2">正确支持多语言</a></li>
    <li><a href="#step3">帮助机器理解页面</a></li>
    <li><a href="#step4">让 AI 答案引擎找到你的网站</a></li>
    <li><a href="#step5">让网站真正快起来</a></li>
    <li><a href="#step6">Sitemap、错误页面与 Search Console</a></li>
    <li><a href="#step7">衡量你的 AI 搜索可见性</a></li>
    <li><a href="#step8">博客特有的额外设置</a></li>
  </ol>
</nav>
<p>我们会逐项展开：先讲大白话，再在需要的地方给出代码，并且把“有文档依据的做法”和“仍属于实验范畴的 GEO 押注”分清楚。WeBreeze 会自动把这套基础应用到它智能体发布的内容上，不过这份清单同样适用于产品站、企业官网、文档、目录以及其他公开网站。</p>

<div class="starthere">
  <span class="lbl">从这里开始 — 如果只做几件事</span>
  <p style="margin:0 0 4px;">真正有用的内容和它赢回来的外链，才是影响最大的两个因素——但它们不在本次技术检查的范围内。在下面这套设置里，回报最高的几件事是：</p>
  <ol>
    <li><strong>把基础做对</strong>——每个页面只有一个网址、每个页面一个真实标题，以及一个真正的“找不到页面”。<em>（第 1 步和第 6 步）</em></li>
    <li><strong>让 AI 引擎进来，并给搜索一张地图</strong>——放行答案引擎爬虫、发布 Sitemap、验证 Search Console。<em>（第 4 步和第 6 步）</em></li>
    <li><strong>让它快起来</strong>——把公开页面放到边缘缓存之后。<em>（第 5 步）</em></li>
  </ol>
  <p style="margin:8px 0 0;">其他的都属于锦上添花。结构化数据有用，但作用没那么大——<strong>别因为它拖慢了内容发布。</strong></p>
</div>
<h2 id="step1">第 1 步 — 先把每个页面的基础做好</h2>
<div class="bottomline"><b>一句话总结 —</b>在任何高级技巧见效之前，请先把四个看起来无聊但重要的基础做好：每个页面有唯一网址、一个主标题、独立的页面标题，以及干净的底层 HTML。</div>

<h3>Canonical URL</h3>
<p>每个页面应该只有一个首选地址。如果没有 canonical，尾部的斜杠、<code>www</code> 变体、跟踪参数都可能被当成不同页面，信号就分散了。Google 的 <a href="https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls">canonical 指南</a>把重定向和 <code>rel="canonical"</code> 都看成强信号。</p>
<p>选一个主机名，让裸域名和 <code>www</code> 域名都能解析，然后把重复的那个用重定向导到主版本上。此外，在每个可索引页面里输出一个绝对地址的 canonical。WeBreeze 会自动为智能体发布的内容生成这些 canonical。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>用 <a href="https://developers.google.com/search/docs/crawling-indexing/301-redirects"><code>301</code>/<code>308</code></a> 重定向重复主机，保留路径和查询参数。对那些仍然返回 <code>200</code> 的参数变体，输出 <code>&lt;link rel="canonical" href="…"&gt;</code>。如果网站默认语言的重定向是永久的，就用 <code>301</code>/<code>308</code>；只有当目标可能变化时才用临时重定向。</p></div>
<div class="mistake"><b>常见错误：</b>让 <code>example.com</code> 和 <code>www.example.com</code>（或者带斜杠与不带斜杠的版本）都直接返回 <code>200</code>。选一个作为主版本，其余的重定向过去。</div>

<h3><code>&lt;h1&gt;</code> 标签</h3>
<p>每个页面都应该有一个清晰的 <code>&lt;h1&gt;</code>。这不是 Google 的硬性要求，而是一个便于维护的约定，但它能消除歧义。CMS 里有个常见问题：模板中的标题和正文开头的 Markdown 标题都可能被渲染成 <code>&lt;h1&gt;</code>；WeBreeze 在渲染时会自动检测，并把正文里那个标题降级。</p>

<h3>Title 与 Meta Description</h3>
<p>为每个重要页面设置一个独立的 <code>&lt;title&gt;</code> 和 meta description。记得检查最终渲染出的 HTML，不要只盯着 CMS 后台填写的字段。Google 会<a href="https://developers.google.com/search/docs/appearance/title-link">用算法生成标题链接</a>，也可能改写摘要，所以把这两者看成强信号，不要指望它们在搜索结果里原样出现。</p>

<h3>语义化 HTML</h3>
<p>按标签本来的用途去用 <code>&lt;main&gt;</code>、<code>&lt;nav&gt;</code> 和各级标题，当页面确实包含文章内容时，就用 <code>&lt;article&gt;</code>。这么做最直接也最确切的收益是更好的无障碍访问。Google 的 AI 指南也<a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide">建议尽量使用语义化 HTML</a>；一个完全靠 <code>&lt;div&gt;</code> 堆砌的页面，无论对人还是机器来说，都更难理解。</p>
<div class="checklist"><span class="lbl">✓ 基础清单</span><ul><li>每个页面的 URL 只留一个，并配上 canonical</li><li>一个 <code>&lt;h1&gt;</code></li><li>每个页面设置独立的 title 和 description</li><li>清晰的语义化结构</li><li>将 <code>www</code> 及斜杠变体重定向，别让它们并存</li></ul></div>
<h2 id="step2">第 2 步 — 正确支持多语言</h2>
<div class="bottomline"><b>一句话总结 —</b>你的网站只有一种语言？跳过这一步。否则，从一开始就给每种语言一个独立的网址——绝不要在同一个页面里动态切换语言。</div>
<p><a href="https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites">Google 官方推荐每种语言使用独立的 URL</a>，比如 <code>/en/services</code> 和 <code>/zh/services</code>，并用 <code>hreflang</code> 把它们关联起来。带跳转的语言切换菜单没问题；但如果在同一个 URL 上用 JavaScript 实时替换文字内容，爬虫很可能抓不到所有翻译版本。</p>
<p>你可以把默认语言放在根路径，其他语言用子目录前缀，也可以每种语言都加前缀。两种做法都行。WeBreeze 选择给每种语言加前缀，因为这样 URL 结构、canonical、sitemap 和 <code>hreflang</code> 的逻辑更统一，维护起来也更省事。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>每种语言一个独立 URL。<code>hreflang</code> 标签必须<em>自引用且相互指向</em>（每个版本都列出包含自己在内的所有版本），使用有效的语言（和地区）代码。如果你没有专门针对某些用户语言，但确实有合理的默认页面，可以加上 <code>x-default</code>（推荐，不是必须）。只声明真实存在的翻译版本。</p>
<pre>&lt;link rel="alternate" hreflang="en"        href="https://example.com/en/services"&gt;
&lt;link rel="alternate" hreflang="zh"        href="https://example.com/zh/services"&gt;
&lt;link rel="alternate" hreflang="x-default" href="https://example.com/en/services"&gt;</pre></div>
<div class="checklist"><span class="lbl">✓ 语言清单</span><ul><li>每种语言一个 URL（带跳转的菜单没问题；绝不要同一个 URL 动态切换）</li><li>自引用且相互指向的 <code>hreflang</code></li><li>有效的语言代码</li><li>有合理默认页面时加上 <code>x-default</code></li><li>只声明实际存在的语言</li></ul></div>
<h2 id="step3">第 3 步 — 帮助机器理解页面（结构化数据）</h2>
<div class="bottomline"><b>一句话总结 —</b>加一小段隐藏的代码，直接告诉搜索引擎和 AI 你的网站是什么、谁在运营、每个页面代表什么——这样它们就不用从可见的 HTML 里去猜了。</div>
<p>到目前为止，我们做的都是在帮机器<em>读懂</em>页面。结构化数据则能让它<em>理解</em>页面里的实体：这是一个网站、这是背后的公司，这个页面到底是产品、文章、活动、本地商家，还是其他类型。</p>
<p>你需要把这些信息以 JSON-LD 的格式放进页面的 head。访客看不见它。Google 推荐 JSON-LD，并且说明了<a href="https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data">结构化数据如何带来富媒体搜索结果</a>；对 AI 答案引擎来说，这么做应该有好处，但尚未证实。请选用最贴合页面实际情况的 Schema.org 类型，并遵守 Google 的规则：<a href="https://developers.google.com/search/docs/appearance/structured-data/sd-policies">标记出来的声明必须有可见内容来支撑</a>。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>先构建稳定的 <code>WebSite</code> 和 <code>Organization</code> 实体，给它们分配一个持久的 <code>@id</code>，然后在各个页面的专属标记里重复引用同一组 ID。当页面存在真实的层级结构时，就加上 <code>BreadcrumbList</code>。用 Google 的 <a href="https://search.google.com/test/rich-results">Rich Results Test</a> 来验证 Google 支持的类型，用 <a href="https://validator.schema.org/">Schema Markup Validator</a> 来验证一般的 Schema.org 语法。</p>
<pre>&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "name": "Example Co"
    },
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",
      "name": "Example Co",
      "url": "https://example.com/"
    }
  ]
}
&lt;/script&gt;</pre></div>
<div class="mistake"><b>常见错误：</b>无效的 JSON-LD 会静默失效，或者内容里的一个 <code>&lt;/script&gt;</code> 直接打断整段。记得转义它，然后验证。</div>

<h3>可选：用 <code>sameAs</code> 连接你的资料页</h3>
<p><a href="https://schema.org/sameAs"><code>sameAs</code></a> 用来列出你机构的官方资料页，帮助搜索引擎把你的品牌和名字相似的其他品牌区分开。只添加你确实掌控的那些资料页，最好是会反过来链回你网站的那种。这件事成本不高，但优先级也比较低：它不会凭空创造出权威度或 Knowledge Panel。如果你还没有成熟的外部资料页，完全可以先不写。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>把 <code>sameAs</code> 加进你已有的 <code>Organization</code> JSON-LD 里。填入真实的资料页 URL，而不是那些平台自己的首页。</p>
<pre>{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Example Co",
  "url": "https://example.com",
  "sameAs": [
    "https://www.linkedin.com/company/example",
    "https://www.crunchbase.com/organization/example"
  ]
}</pre></div>
<div class="checklist"><span class="lbl">✓ 结构化数据清单</span><ul><li>建立稳定的 <code>WebSite</code> 和 <code>Organization</code> 实体</li><li>每个页面选用最准确、如实的类型</li><li>每一项标记都有可见内容来支撑</li><li>有效的 JSON-LD（记得验证）</li><li><em>（可选）</em> 官方的 <code>sameAs</code> 资料页</li></ul></div>
<h2 id="step4">第 4 步 — 让 AI 答案引擎找到你的网站</h2>
<div class="bottomline"><b>一句话总结 —</b>放行答案引擎爬虫、提供 Sitemap，并在页面更新时通知 Bing。对于普通页面，Google 没有类似的即时提交机制。</div>
<p>这一节将 GEO（AI 爬虫访问）和经典 SEO（Bing、Google、IndexNow）整合在一起讨论，因为两者之间仍有不少交叉。</p>

<h3>AI 爬虫与 <code>robots.txt</code></h3>
<p><code>robots.txt</code> 用来告诉爬虫哪些内容允许抓取。按用途看，这些机器人可以分成几类：</p>
<ul>
  <li><strong>答案爬虫：</strong><code>OAI-SearchBot</code>、<code>PerplexityBot</code>、<code>Claude-SearchBot</code>。要是希望内容直接出现在 AI 答案里，就放行它们。</li>
  <li><strong>用户触发的抓取器：</strong><code>ChatGPT-User</code>、<code>Claude-User</code>。它们只有在用户主动请求时，才会去抓取某个页面。</li>
  <li><strong>训练爬虫：</strong><code>GPTBot</code>、<code>ClaudeBot</code>、<code>CCBot</code>。是否允许它们用于模型训练，是一个独立的政策选项；它不会影响你当前的内容能否被引用。</li>
</ul>
<p>以上机器人的名称和用途，引自各发布方当前的文档：<a href="https://help.openai.com/en/articles/12627856-publishers-and-developers-faq">OpenAI</a>、<a href="https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler">Anthropic</a> 和 <a href="https://docs.perplexity.ai/docs/resources/perplexity-crawlers">Perplexity</a>。请定期检查，爬虫政策可能会调整。</p>
<p>WeBreeze 对于智能体发布的公开内容，会放行答案爬虫；同时，是否允许训练爬虫，会作为独立的选项单独控制。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>放行你需要的答案 user-agent，并附上你的 Sitemap。然后检查 CDN 或防火墙：就算 <code>robots.txt</code> 已经放行，它们仍可能拦截某些机器人。</p>
<pre>User-agent: *
Allow: /

# AI 答案引擎
User-agent: OAI-SearchBot
User-agent: PerplexityBot
User-agent: Claude-SearchBot
Allow: /

Sitemap: https://example.com/sitemap.xml
# llms: https://example.com/llms.txt</pre></div>
<div class="mistake"><b>常见错误：</b>检查了 <code>robots.txt</code>，却忽略了主机、CDN 或防火墙层面依然在拦截 AI 机器人。</div>

<h3><code>llms.txt</code></h3>
<p><code>llms.txt</code> 是放在网站根目录的纯文本文件，以 AI 友好的方式列出你的重要页面——你可以把它当成写给语言模型看的 Sitemap。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>根目录下一个最简的 <code>llms.txt</code>：</p>
<pre># Example Co
&gt; 面向 X 的软件与服务。

## 重要页面
- [Product](https://example.com/product)：它做什么、面向谁
- [Documentation](https://example.com/docs)：安装与参考文档</pre></div>
<p><code>llms.txt</code> 还是一份<a href="https://llmstxt.org/">仍在发展中的约定</a>，并非已被验证的排名因素。Google 明确表示，在搜索可见性和排名方面<a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide">会忽略 <code>llms.txt</code></a>。WeBreeze 之所以会提供，是因为维护成本极低，且其他系统未来可能会采用；不妨把它当作一次实验。</p>

<h3>Google 与 Bing 的提交方式（IndexNow）</h3>
<p>Bing 依然是扩大 AI 发现机会的一个低成本对冲，因为微软提到 <a href="https://www.microsoft.com/en-us/bing/copilot-search">Copilot Search 基于 Bing 的搜索结果</a>。它的发布流程与 Google 有所不同：</p>
<ul>
  <li><strong>Bing 和参与的引擎：</strong>当公开 URL 发生变化时，通过 <a href="https://www.indexnow.org/documentation"><strong>IndexNow</strong></a> 主动通知它们。这只是一种发现请求，不保证一定会被收录。</li>
  <li><strong>Google：</strong>验证 Search Console 并提交 Sitemap。Google 的 <a href="https://developers.google.com/search/apis/indexing-api/v3/using-api">Indexing API 仅适用于符合资格的职位招聘和直播页面</a>，不能用于普通页面。</li>
</ul>
<p>WeBreeze 在智能体创建或更新符合条件的内容时，会发布 Sitemap 并发送 IndexNow 通知。客户可以自行连接 Search Console 来查看 Google 的数据。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>IndexNow 要求在网站根目录放置一个 key 文件，并在符合条件的 URL 发生变化时，向 <code>api.indexnow.org</code> 发送 <code>POST</code> 请求。</p></div>
<div class="mistake"><b>常见错误：</b>以为 IndexNow 也包含了 Google。并不是——Google 并非参与方。</div>

<div class="checklist"><span class="lbl">✓ 抓取清单</span><ul><li>放行你需要的答案爬虫（并确认 CDN 或防火墙没有拦截）</li><li>发布 <code>llms.txt</code>（实验性——低成本押注）</li><li>当符合条件的 URL 发生变化时，触发 IndexNow</li><li>为 Google 验证身份并提交 Sitemap</li></ul></div>
<!--breeze:rich-html-->  <!-- 注意：原片段没有这行注释，但要求如果第一行是这注释就原样保留，这里没有，所以不加 -->
<h2 id="step5">第 5 步 — 让网站真正快起来（速度与缓存）</h2>
<div class="bottomline"><b>一句话总结 —</b>把页面放到边缘缓存上，各地的访客就能快速拿到现成副本——不过只能缓存那些对所有人公开、完全相同的内容；任何私有或个性化内容都得保持动态。</div>
<p>页面一慢，访客、转化、Core Web Vitals 和爬虫抓取都会受拖累。速度算不上什么排名旋钮，可过不了速度这一关，就进不了竞争的场子。</p>

<h3>边缘缓存</h3>
<p><strong>边缘缓存</strong>是把公开页面的现成副本放在离访客更近的地方，而不是每次都回到源站重新构建。这样一来就消除了服务器延迟，不过图片、脚本和页面体积依然会拖慢体验。</p>
<p>WeBreeze 会对智能体发布的公开内容做边缘缓存，每次更新后就清掉。我们靠验证行为来保证效果，而不是靠信任配置：</p>
<table>
  <tr><th>要测试什么</th><th>你想看到什么</th></tr>
  <tr><td>连续两次请求同一个公开页面</td><td>第一次 <strong>MISS</strong>，第二次 <strong>HIT</strong></td></tr>
  <tr><td>一个 404 或错误页面</td><td><strong>BYPASS</strong>，或 TTL 极短</td></tr>
  <tr><td>一个个性化页面</td><td>始终 <strong>DYNAMIC</strong></td></tr>
  <tr><td>同一个页面，机器人抓取和真人访问对比</td><td>HTML <strong>字节级一致</strong>——不做 cloaking</td></tr>
  <tr><td>发布一次修改后再次请求</td><td>立刻看到新版本</td></tr>
</table>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>设置较高的边缘 TTL（通过 <code>s-maxage</code> 或 CDN 规则），让浏览器端副本继续走 revalidation；内容有变化时，按路径或 tag 清掉缓存。已登录流量不要纳入缓存键。参照官方 <a href="https://web.dev/articles/vitals">Core Web Vitals 阈值</a>：第 75 百分位应达到 <strong>LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1</strong>。</p></div>
<p>想要这个收益，并不需要把网站改成静态生成器。动态网站只要把边缘缓存配对了，缓存命中时拿到的就是同一份现成响应。</p>

<h3>绝不能缓存什么</h3>
<p><strong>只缓存那些对所有人公开且完全相同的内容。</strong>只要响应会因登录、Session 或 Token 而变化，就必须保持动态。</p>
<div class="cachesplit">
  <div class="col yes"><div class="hd cache-yes">✅ 可以缓存</div><p>对所有人都相同的公开页面，以及列表页和 Sitemap</p></div>
  <div class="col no"><div class="hd cache-no">⛔ 保持动态</div><ul><li>任何因 Session、登录或 Token 而变化的内容</li><li>错误页面及重定向</li><li>API 响应</li><li>框架内部的“路由”负载（不是真实的页面）</li><li>已带指纹的静态资源（这些有自己长缓存策略）</li></ul></div>
</div>
<p>光看一个 <code>200</code> 状态码还不够：个性化页面和 soft 404 都可能返回 <code>200</code>。WeBreeze 还会让答案爬虫绕过缓存，确保爬虫统计准确；机器人和真人拿到的 HTML 完全一样。</p>
<div class="mistake"><b>常见错误：</b>一条笼统的“全部缓存”规则，可能把你的 404、已登录页面和结账流程也装进缓存。</div>

<h3>把图片放到 CDN</h3>
<p>把较大的上传图片或生成图片交给 CDN，并按访客实际需要的尺寸缩放。那些已经很快、带指纹的品牌素材就别动了；搬动它们只会增加复杂度，解决不了任何瓶颈。</p>
<div class="checklist"><span class="lbl">✓ 缓存清单</span><ul><li>对所有人都相同的公开 HTML 做边缘缓存</li><li>绝不缓存任何与用户相关的响应</li><li>错误和重定向保持很短的 TTL</li><li>把较重的图片放到 CDN</li><li>已经很快的静态资源原地不动</li></ul></div>
<h2 id="step6">第 6 步 — Sitemap、错误页面与 Search Console</h2>
<div class="bottomline"><b>一句话总结 —</b>给爬虫一份最新的页面清单，对不存在的页面返回真正的“找不到”，并注册 Google 和 Bing 的免费后台，这样你才真的看得到自己做得怎么样。</div>

<h3>XML Sitemap</h3>
<p>Sitemap 是一份机器可读的页面清单，列出你希望被找到的页面，这样爬虫就不用靠运气来发现它们了。每个公开网站都应该有一份，并且要自动保持最新。Google 的 <a href="https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap">Sitemap 指南</a>里也讲了多语言网站该怎么处理语言替代版本。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>根据你网站上实际可索引的页面生成 <code>sitemap.xml</code>，再给每个条目加上有意义的 <code>&lt;lastmod&gt;</code>（反映内容真正变动的时间，而不是每次构建都刷新）。如果是多语言网站，需在根元素上声明 XHTML 命名空间，然后为<em>每一种</em>语言分别设置 <code>&lt;url&gt;</code> 条目，并且每个条目里要重复列出所有替代语言的完整版本。最后，别忘了在 <code>robots.txt</code> 里引用 Sitemap 的地址。</p>
<pre>&lt;url&gt;
  &lt;loc&gt;https://example.com/en/services&lt;/loc&gt;
  &lt;lastmod&gt;2026-07-01&lt;/lastmod&gt;
  &lt;xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/services"/&gt;
  &lt;xhtml:link rel="alternate" hreflang="zh" href="https://example.com/zh/services"/&gt;
  &lt;xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/en/services"/&gt;
&lt;/url&gt;</pre></div>
<div class="mistake"><b>常见错误：</b>手工维护的 Sitemap 慢慢就会和实际内容对不上。一定要根据实际内容自动生成。</div>

<h3>正确处理 404</h3>
<p>对于不存在的页面，应该返回 <code>404</code>（如果确定已经永久删除了，就用 <code>410</code>）。如果表面上显示“页面找不到”，但 HTTP 状态码却是 <code>200</code>，这就是 <a href="https://developers.google.com/search/docs/crawling-indexing/troubleshoot-crawling-errors">soft 404</a>，这类页面会像幽灵一样赖在索引里不走；而 <code>403</code> 会让人误以为页面存在，只是你没权限访问。检查时一定要看真实的 HTTP 状态码，不能光看页面上显示了什么。</p>

<h3>Search Console 与 Bing Webmaster</h3>
<p>这两个免费平台能让你看到搜索词、索引状态和抓取问题：</p>
<ul>
  <li><a href="https://search.google.com/search-console/about"><strong>Google Search Console：</strong></a>验证网站、提交 Sitemap，然后重点看索引覆盖和搜索查询。</li>
  <li><a href="https://www.bing.com/webmasters/about"><strong>Bing Webmaster Tools：</strong></a>同样验证网站，并结合 IndexNow 一起用。</li>
</ul>
<p>WeBreeze 会自动搞定技术配置和报告接入，如果客户想直接看原始搜索数据，再把自有资源绑定上去就行。</p>
<div class="checklist"><span class="lbl">✓ 监测清单</span><ul><li>验证 Google Search Console + 提交 Sitemap</li><li>验证 Bing Webmaster</li><li>连接统计分析</li><li>建立一项 AI 可见性检查</li></ul></div>
<h2 id="step7">第 7 步 — 衡量你的 AI 搜索可见性</h2>
<div class="bottomline"><b>一句话总结 —</b>要衡量三件事：AI 在被问到时会怎么回答，这些答案在时间线上怎么变化，以及用户会不会真的从里面点进你的网站。</div>

<h3>1. 手工检查 AI 对话</h3>
<p>先想想潜在客户真的会在 ChatGPT、Perplexity 或 Gemini 里问什么。用中立、探索式的问题，比如“做 X 最好的工具有哪些？”或者“一家公司要怎么解决 Y？”。别提自己的品牌、别贴链接，也别问引擎“为什么没有推荐我们”——这类问题会诱导答案。</p>
<p>消费者端的结果每次都可能不一样。比如 <a href="https://help.openai.com/en/articles/9237897-chatgpt-search">ChatGPT Search 在生成回答时可能会用到记忆和位置信息</a>，别的产品也各有各的个性化方式。为了让对比更干净：</p>
<ul>
  <li>每次测试都用全新或临时对话；能关掉记忆或个性化就关掉。</li>
  <li>在每个引擎里用完全一样的提示词，记下日期、答案、引用来源、竞争对手，以及你的品牌出现在哪里、怎么出现的。</li>
  <li>经验之谈：每个提示词在每个引擎至少跑三次。想要更可靠的基线，就用五个互不相关的对话。</li>
  <li>定期重复——小网站每月一次，竞争激烈或变化快的话题每周一次。</li>
</ul>
<p>一次给力的回答算不上可见性，那只是一个样本。真正要看的是在不同引擎、多次运行后，有没有被反复提到、反复引用。</p>

<h3>2. 查看 Google 的免费归因与可见性报告</h3>
<p>被引用当然好，但被点击才是更强的信号。GA4 默认的 <a href="https://support.google.com/analytics/answer/9756891"><strong>AI Assistants</strong> 渠道</a>会把来自 ChatGPT、Gemini、DeepSeek、Copilot、Grok 等来源的访问归到一起。你进入 <strong>Acquisition → Traffic acquisition</strong>，选择 AI Assistants 渠道，再叠加上 session source、landing page 这些维度，就能看到是哪个助手把人带到了哪篇文章。</p>
<p>把这个数当成一个底线。有些 AI 点击没有 referrer，会归到 <strong>Direct</strong> 里；Google 自家的 AI Overviews 和 AI Mode 则会被归入 <strong>Organic Search</strong>。Google 还在逐步上线 Search Console 里独立的 <a href="https://support.google.com/webmasters/answer/16984139">Generative AI performance 报告</a>，用来展示 AI Overviews 和 AI Mode 带来的展现量。GA4 衡量的是访问，而 Search Console、手工检查和监测工具是从不同角度来评估可见性。</p>

<h3>3. 订阅自动化的可见性监测</h3>
<p>需要跟踪的关键词一旦超过几个，手工检查就太繁琐了。付费的 AI 可见性服务能自动跑查询、保存回答，并按时间线展示提及、引用和变化趋势。截至 2026 年 7 月，本指南看到的自助套餐价格大概在<strong>每月 29–489 美元</strong>之间，具体取决于关键词数量和覆盖的引擎（<a href="https://otterly.ai/pricing">Otterly 定价</a>；<a href="https://www.semrush.com/pricing/ai/">Semrush 定价</a>）。企业套餐可能会更贵。</p>
<p>在订阅之前，先弄清楚：这个工具调的是模型 API，还是普通用户用的聊天产品？API 的结果适合做稳定的趋势追踪，但不一定和带个性化设置的聊天结果一模一样。你要比的是长期的大方向，而不是把某一个数值当成绝对事实。</p>
<p><strong>WeBreeze 为每一位客户提供引用监测。</strong>它每周在 Perplexity、OpenAI 和 Gemini 上做检查，在客户的 Reports 区域展示结果，并把引用空白反馈给内容智能体，让它们判断接下来应该去调研、更新还是创建内容。这套监测也开放成独立产品，适合只想追踪可见性、暂时还不需要整套 WeBreeze 平台的团队。</p>

<div class="checklist"><span class="lbl">✓ 衡量清单</span><ul><li>先做中立的手工检查</li><li>查看 Google 提供的免费 GA4 和 Search Console 数据</li><li>需要可重复追踪时，再引入付费监测</li><li>看趋势，别只看一次性的回答</li></ul></div>
<h2 id="step8">第 8 步 — 博客特有的额外设置</h2>
<div class="bottomline"><b>一句话总结 —</b>上面的一切都适用于博客，但博客还多出四个反复出现的决策：博客放在哪里、文章页面如何标记、谁被署名为作者，以及 FAQ 标记是否值得加。</div>
<p>这一节的内容，源于我们搭建 WeBreeze 内容智能体时实际用到的博客发布层。你可以把它当作全站 SEO 清单的一个补充，而不是一套独立的体系。</p>

<h3>博客放在哪里：子目录还是子域名？</h3>
<p>两个常见选择是 <code>yourdomain.com/blog</code>（<strong>子目录</strong>）和 <code>blog.yourdomain.com</code>（<strong>子域名</strong>）。这两种结构都能被搜索引擎正常索引。Google 说过，它的<a href="https://developers.google.com/search/docs/appearance/ranking-systems-guide">站点多样性系统通常会把子域名视为根域名的一部分</a>，但这并不等于承诺哪一种结构能获得排名优势。很多有经验的 SEO 从业者，还是更倾向于为新博客选子目录，因为它直接挂在已经成熟的根域名下面。不过，目前的证据还不够清晰，谈不上有保障的优势。</p>
<p>我常用的判断标准：<strong>如果你是从零开始，可以自由选择，那直接用子目录。</strong>要是你已经在子域名上运营着一个表现还不错的博客，那就保持现状。迁移博客，意味着要把每个 URL 都做一次 <code>301</code> 一对一重定向。为了那一点可能的微小收益，去折腾一个已经有排名的博客，通常划不来。</p>
<p>至于你现在读的 WeBreeze 官方博客，我特意选了子域名（<code>blog.webreeze.ai</code>）而不是子目录，就是想“吃自家的狗粮”，让这个博客跑在跟我们交付给客户一模一样的平台上。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>外部托管的发布系统，可以通过反向代理映射到 <code>/blog</code> 目录下，但它的 canonical、<code>hreflang</code>、Sitemap URL、JSON-LD ID、静态资源和内部链接，都得知道这个基础路径（base path）。如果平台自己处理不了，就得靠反向代理来重写它们。</p></div>

<h3>文章页面使用 <code>BlogPosting</code></h3>
<p>文章页面可以在第 3 步所做的全站结构化数据基础上，再用 <a href="https://developers.google.com/search/docs/appearance/structured-data/article"><code>BlogPosting</code></a> 进一步补充。需要包含标题、真实的发布日期和修改日期、语言、主图、作者、发布方，以及页面的 canonical URL。记得引用跟站内其他地方一样的 organization ID。</p>
<div class="dev"><span class="lbl">🛠 交给你的开发者</span><p>每篇文章都要输出一个对应的代码块，并做验证。这些值必须和访客在页面上看到的内容完全一致。</p>
<pre>&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How Virtual Doctor Visits Work",
  "datePublished": "2026-07-01",
  "dateModified": "2026-07-01",
  "inLanguage": "en",
  "image": "https://example.com/hero.jpg",
  "author": {
    "@type": "Person",
    "name": "Dr. Jane Smith",
    "url": "https://example.com/authors/jane-smith"
  },
  "publisher": {
    "@id": "https://example.com/#organization"
  },
  "mainEntityOfPage": "https://example.com/en/post"
}
&lt;/script&gt;</pre></div>

<h3>在需要信任的领域，署上真实作者</h3>
<p>对医疗、金融、法律这类对准确性要求很高的领域，要用真实的署名，以及一个展示相关资历的真实作者页面。如果文章确实经过了人工审核，就加上“审核人”这一行。Google 的<a href="https://developers.google.com/search/docs/fundamentals/creating-helpful-content">《以人为本内容指南》</a>指出，E-E-A-T 不是一个单一的排名因素，但清晰的出处和可验证的专业背景，仍然能帮助读者决定是否信任你。</p>

<h3>FAQ 标记是可选项</h3>
<p>如果一篇文章确实逐一回答了一组独立的问题，<code>FAQPage</code> 标记可以把这种结构明确地表达出来。Google 从 <a href="https://developers.google.com/search/updates#may-2026">2026 年 5 月起，就不再在搜索结果中展示 FAQ 富媒体结果</a>了，所以它不再能换来那种可展开的问答。它现在仅剩的价值，是让 AI 更容易抓取和提取信息。这个想法在逻辑上说得通，但目前还没有数据能证实。只在页面上本来就以可见形式呈现了问答时，才去加这个标记。千万不要为了 Schema 而硬造问题。</p>

<span class="skip">🛠 开发者旁注 — 非技术读者可跳过</span>
<h3>我踩过的一个坑：单独的 Markdown 副本</h3>
<p>我们之前试过，在每篇 HTML 文章旁边再放一个干净的 <code>.md</code> 版本，方便那些喜欢纯文本的机器来读取。为了避免重复内容，就给这个副本加了 <code>noindex</code>——当时觉得这是个挺巧的办法。但 <a href="https://help.openai.com/en/articles/12627856-publishers-and-developers-faq">OpenAI</a> 和 <a href="https://support.claude.com/en/articles/10684638-reporting-blocking-and-removing-content-from-claude">Anthropic</a> 的文档里，都把 <code>noindex</code> 也当作一种屏蔽 AI 搜索的手段。结果就是：这个副本很可能对那几家我们原本想帮到的引擎来说，反而是不可见的。</p>
<p>最稳妥的办法，是干脆别提供重复的 Markdown 页面。如果你还是想留着，别随手加 <code>noindex</code>；改用 HTTP canonical header 来处理重复，并切实测试一下，你关心的那些爬虫到底会怎么响应。</p>

<div class="checklist"><span class="lbl">✓ 博客清单</span><ul><li>上线前就要决定好用子目录还是子域名，但事后不要贸然迁移一个已经运营健康的博客</li><li>每篇文章只设一个 canonical URL 和一个 <code>&lt;h1&gt;</code></li><li>有效的 <code>BlogPosting</code> 标记</li><li>涉及敏感主题的文章，要署上真实作者</li><li>只给页面上真实可见的问答部分，加 FAQ 标记</li><li>文章内容有变动时，更新 Sitemap、清除缓存，并通过 IndexNow 通知搜索引擎</li></ul></div>
<h2>接下来：Part II，内容篇</h2>
<p>上面这些技术 SEO 和 GEO 的工作，大部分都属于基础设施：配置一次，后续所有页面都能自动继承。我们把这一整套检查内置到了 WeBreeze 里，这样它的 AI 智能体就可以把研究、创作、优化、发布和衡量串成一个连续的系统来完成。</p>
<p>Part II 要难得多：内容。光靠上面那些，并不能让一个单薄的产品页、千篇一律的服务页或内容质量不高的文章获得排名或被引用。技术配置只是给了你<em>参赛资格</em>；真正让你胜出的，是内容和体验——能证明你是原创，观点值得别人引用，满足搜索背后真实的意图，内部链接清晰，信息及时更新，以及让读者信任的专业能力。</p>
<p>除此之外，还有一个层面，比前两者都更高：来自你网站<em>之外</em>的权威——有其他可靠的网站链接到你、提到你。这个你没办法花一个下午就“搭”出来，它需要长期积累。它是见效最慢的杠杆之一，也往往是最有力量的。</p>

<h3>那么，你到底该做什么？</h3>
<p>把上面的一切变成一份待办清单，按谁负责来划分：</p>
<div class="plan">
  <div class="col">
    <h4>如果你不写代码 —— 向你的开发者或主机服务商索取：</h4>
    <ul>
      <li>每个页面一个网址，<code>www</code> 和裸域名都能访问，并且把其中一个重定向到另一个。</li>
      <li>给失效的链接设置一个真正的“找不到页面”（404）。</li>
      <li>放行 AI 搜索引擎爬虫，并发布 Sitemap。</li>
      <li>把公开页面放到边缘缓存（CDN）后面，让它们加载更快。</li>
      <li>验证 Google Search Console 和 Bing Webmaster，这样你就能看到自己的表现如何。</li>
    </ul>
    <p style="margin:8px 0 0;">然后自己动手完成免费、也不需要写代码的部分：打开 GA4 里的 <em>AI Assistants</em> 渠道，如果你的资源里有 Search Console 的 AI 报告就去看一下，并且手工抽查 ChatGPT / Perplexity / Gemini 是否提到了你。</p>
  </div>
  <div class="col dev">
    <h4>如果你是开发者 —— 任务清单：</h4>
    <ul>
      <li>设置 Canonical 主机 + <code>301</code> 重定向；使用自引用的 canonical 标签；为每种语言分配独立的 URL，并配上相互指向的 <code>hreflang</code> + <code>x-default</code>。</li>
      <li>每个页面只保留一个 <code>&lt;h1&gt;</code>；独立的 <code>&lt;title&gt;</code> 和 description；采用语义化标记。</li>
      <li>使用 <code>WebSite</code> + <code>Organization</code> 的 JSON-LD，并如实加上页面专属的类型；博客页面再加上 <code>BlogPosting</code>。</li>
      <li>在 <code>robots.txt</code> 中放行 AI 答案爬虫（别忘了检查 CDN 防火墙）；准备 <code>llms.txt</code>（实验性）；内容变化时触发 IndexNow；提交并验证 GSC Sitemap。</li>
      <li>只对公开且完全一致的 HTML 做边缘缓存（使用 <code>s-maxage</code> + 浏览器端 revalidation + 内容变化时清缓存）；确保有真实的 <code>404</code>/<code>410</code> 状态码；自动生成包含各语言替代版本的 Sitemap。</li>
    </ul>
  </div>
</div>
<p><strong>我们把这份清单开源成了工具。</strong>上面每一项检查都打包成了一个<a href="https://github.com/zeebees/seo-geo-audit">开源 agent skill</a>——把它指向任意网站，它会跑完 44 项检查，输出一张表：哪些通过、哪些没过、证据是什么、怎么修。它会用 <code>OAI-SearchBot</code>、<code>PerplexityBot</code>、<code>Claude-SearchBot</code> 的身份去抓你的页面，所以你看到的就是答案引擎真正拿到的东西。MIT 协议，免费，不用注册。</p>

<p>如果你要的不只是一次性的技术 SEO 和 GEO 审计，而是想把它变成一套持续运转的内容系统，<strong>WeBreeze 就是你的 AI 智能体团队</strong>。它能把过去分散在传统 SEO 和 GEO 机构里的研究、创作、优化、发布和衡量工作全部自动化。</p>
<blockquote class="cta"><b>看一下你的网站目前处于什么水平。</b>做一次免费扫描——输入你的网址，我们会根据这些指标给你出一份报告。或者预约一次咨询，我们一块儿梳理一下你的网站。</blockquote>

<p class="foot">WeBreeze · 技术 SEO 与 GEO 完整指南：让网站更快，更易被搜索和 AI 发现 · 第一部分 · 参考资料核对日期：2026 年 7 月</p>
