面向 AI 搜索的 Noindex、Nosnippet、Max-Snippet 与 X-Robots-Tag
很多团队把三件不同的事情混在一起:
- 抓取控制
- 收录控制
- 摘要与预览控制
到了 AI 搜索时代,这种混用会直接带来代价。
有人想把页面从搜索结果里移除,就先在 robots.txt 里拦掉,再在页面里加 noindex。结果 Google 可能根本看不到 noindex。也有人希望产品页继续保留搜索和 AI 引用机会,却把 nosnippet 全站打开,反而压掉了 Google 用来理解页面的可见文本。
真正应该问的不是“哪个标签最强”,而是:
你想得到的结果,到底是哪一种?
这篇文章聚焦 Google Search 和 Google AI 功能里的页面级可见性控制。若你要看 crawler 身份与访问策略,请读 GPTBot、OAI-SearchBot 与 Googlebot 的 robots.txt 规则。如果你还在设计更广义的 agent 使用偏好,应配合 Content Signals 与 AI Bot Access、AI Overview 和 AI 搜索可见性评分卡 一起看。
先从目标倒推控制方式
先确定你要的结果,再决定控制手段。
| 目标 | 更适合的控制方式 | 原因 |
|---|---|---|
| 页面可抓取、可收录 | 不加限制规则 | 不需要的控制不要硬加 |
| 把页面移出 Google 搜索 | 通过 meta robots 或 X-Robots-Tag 发送 noindex | Google 需要先抓到页面才能处理 |
| 保留收录,但限制预览文本 | nosnippet、max-snippet 或 data-nosnippet | 控制摘要与 AI 预览边界 |
| 阻止私有路径被抓 | robots.txt、认证,或两者一起用 | 抓取访问和展示控制不是一回事 |
| 控制 PDF 这类非 HTML 文件 | X-Robots-Tag | header 规则适合非 HTML 资源 |
最核心的边界很简单:
robots.txt管的是守规矩爬虫的抓取访问。noindex管的是收录资格。- snippet controls 管的是能展示或复用多少内容。
它们有关联,但不能互相替代。
Google 对 AI 搜索到底支持什么
Google 当前针对 AI features 的文档,并没有引入新的 AI 专用标签,而是继续使用已有的搜索预览控制。这意味着关键控制仍然是:
noindexnosnippetdata-nosnippetmax-snippetmax-image-preview
可以这样理解:
| 目标 | 更适合的控制 | 实际作用 |
|---|---|---|
| 整页退出 Google 搜索与 AI 功能 | noindex | 在 Googlebot 能抓取并处理页面后,移除搜索资格 |
| 不展示任何文本 snippet | nosnippet | 阻止 Google 显示文本摘要 |
| 限制可展示文本长度 | max-snippet:[number] | 限制自动提取的预览长度 |
| 只隐藏某个具体文本区块 | data-nosnippet | 排除指定 span、div 或 section 内文本 |
| 控制图片预览尺寸 | max-image-preview | 限制图片预览大小,常见于文章和 Discover 类展示 |
最常见的错误,是拿错工具做错事。nosnippet 不是下索引工具,noindex 不是局部文本排除工具,data-nosnippet 也不是站点级策略。
Meta Robots 和 X-Robots-Tag 怎么选
两者都能表达收录与摘要规则,但适合的操作场景不同。
| 控制方式 | 更适合的场景 | 说明 |
|---|---|---|
<meta name="robots" ...> | 可直接编辑模板的 HTML 页面 | 内容团队在源码里较容易检查 |
X-Robots-Tag header | PDF、图片、feed、动态文件,或 edge/CDN 规则 | 当 HTML head 不稳定或无法修改时更实用 |
HTML 示例:
<meta name="robots" content="noindex, max-snippet:0">
Header 示例:
X-Robots-Tag: noindex, nosnippet
除非你非常明确理由,否则不要随意两边都加。冲突实现只会增加审计噪音,让排查更慢。
每一种控制到底管什么
这些指令解决的不是同一个问题。
| 指令 | 实际效果 | 常见用途 |
|---|---|---|
noindex | 页面处理后退出 Google 索引 | 薄弱重复页、误放出的 staging 页、退役落地页 |
nosnippet | 禁止文本摘要并限制预览复用 | 不希望搜索或 AI 预览展示正文时 |
max-snippet | 限制 Google 可用于预览的文本长度 | 页面要保留搜索资格,但需要更紧的预览边界 |
data-nosnippet | 只排除被标记区域,不影响整个页面 | 隐藏电话、授权摘录、会员专属信息、重复 boilerplate |
很多时候,data-nosnippet 才是最实用的折中。你没必要为了一个不想被引用的段落,把整页都设成 nosnippet。
例如:
<p>这段公开摘要可以出现在搜索结果里。</p>
<div data-nosnippet>
会员权益细节,或不希望被大范围复用的 teaser 文案。
</div>
这通常比整页 nosnippet 更合理,因为前者保留了页面摘要可见性。
不要把 robots.txt 当成下架工具
这是最常见的误用。
如果你的目标是“让这个 URL 从 Google 结果里消失”,第一步就去改 robots.txt,通常是错的。Google 文档写得很清楚:要让 noindex 生效,Google 必须还能抓到页面并看到该规则。
因此实操顺序通常是:
- 暂时保持页面可抓取。
- 通过 HTML meta robots 或
X-Robots-Tag发送noindex。 - 验证线上响应里这个规则真的存在。
- 只有在业务需要时,之后再加更强的访问限制。
如果内容本来就应该私有,直接使用认证或权限墙,不要把 crawler 规则误当安全机制。
需要对比真实响应、渲染结果与 headers 时,可以配合 Technical SEO、Bot Simulator 和 Audit。
OpenAI 当前官方控制面有什么不同
OpenAI 目前公开的 crawler 文档和 publisher FAQ,描述的是另一套控制层:
- 通过允许或阻止
OAI-SearchBot来控制 ChatGPT search discovery - 通过允许或阻止
GPTBot来控制训练访问 - 如果你不希望某个页面作为结果出现,即使 URL 被发现,也可以使用
noindex
这和 Google 的 snippet 控制不是一回事。
基于当前官方文档,一个务实结论是:
- Google 明确把
nosnippet、data-nosnippet和max-snippet作为 Google AI 搜索功能的控制方式。 - OpenAI 明确把
OAI-SearchBot访问权限和noindex作为搜索展示相关控制。
所以如果团队问:“max-snippet:80 会不会也限制 ChatGPT 的摘要?”最诚实的回答应该是:不要从当前 OpenAI 官方文档里直接做这个假设。
没有平台自己文档化的行为,不要当成可靠策略。Google 侧的控制,仍应独立于 OpenAI crawler 指南 来设计。
一个很容易漏掉的结构化数据细节
Google 的 robots meta 文档里有个很关键、但经常被忽略的点:
max-snippet限制的是文本预览长度。- 结构化数据仍然可以用于 rich results。
- 即使结构化数据写在
data-nosnippet元素内,它仍可能被 Google 使用。
这意味着 data-nosnippet 不是结构化数据清理的替代品。
如果某个产品价格、作者描述,或者文章摘要在 schema 里也有,而你不希望它继续被搜索展示层使用,更稳妥的做法是直接审查结构化数据字段本身,而不是只在可见 HTML 外层包一层 data-nosnippet。
这在模板更新后尤其重要。如果你碰到的是这类问题,可以接着看 模板变更后的结构化数据 QA。
面向公开内容的安全工作流
对于普通内容页和产品页,建议按这个顺序做:
- 先确认页面是否还应该保留在搜索里。
- 判断问题属于收录,还是摘要复用边界。
- 只有在目标是完整下架时,才用
noindex。 - 若页面应继续可发现,但需要限制预览,则优先考虑
nosnippet、max-snippet或data-nosnippet。 - 只要 Google 还需要处理规则,就保持页面可抓取。
- 发布前再复查 canonical、语言版本与内链。
这对多语言站点尤其重要。如果英文页有限制规则、中文页没有,或者 canonical 错指到另一语言版本,你的控制意图就会变得不稳定。/blog/ 与 /zh/blog/ 应一起审计。
五种最值得抓的失败模式
1. robots.txt 阻挡加 noindex
如果 robots.txt 已经挡住页面,Google 可能根本看不到 noindex。
2. 需要 AI 可见性却全站 nosnippet
如果业务目标包括 Google 搜索与 AI 发现能力,粗暴的全站 nosnippet 很可能直接和目标相冲突。
3. PDF 或动态文件用了错误控制
若资源不是 HTML,meta robots 可能根本无处可放,这时应改用 X-Robots-Tag。
4. 模板规则和 CDN 规则互相打架
模板写着可索引,但 CDN 又注入了 X-Robots-Tag: noindex。只看 HTML 的人很容易漏掉线上 header。
5. 真实问题只是一段文本,却上整页 nosnippet
如果只有一段引用、免责声明或定价说明敏感,先考虑 data-nosnippet,不要默认整页屏蔽。
上线前验证清单
发布可见性变更前,至少要测试线上 URL:
curl -I https://example.com/page/
curl -L https://example.com/page/ | sed -n '1,120p'
重点检查:
- 最终 HTTP 状态码
- 是否存在
X-Robots-Tag - 最终 HTML 中的 meta robots 是否正确
- canonical URL 是否正确
- 页面是否被
robots.txt阻挡 - 是否只有预期区块带了
data-nosnippet - 对应语言版本是否也有正确规则
然后再用 Bot Simulator 和 Audit 看一次,避免只验证 raw HTML,却漏掉真实 header 或重定向问题。
一张 Fennec 风格决策表
团队拿不准时,可以先用这张简表:
| 场景 | 建议动作 |
|---|---|
| 私有应用 URL 意外暴露 | 先加认证;若已可抓取,再补 noindex |
| 已退役但仍有外链的活动页 | 先保持可抓取并加 noindex,再评估是否重定向 |
| 公开文章应继续排名,但其中一段不想进入预览 | 只对该区块用 data-nosnippet |
| 产品页应保留收录,但预览文案过于激进 | 先测试 max-snippet,不要直接整页 nosnippet |
| PDF 不应出现在搜索里 | 返回 X-Robots-Tag: noindex |
好的控制一定是具体的。笼统规则只会制造看不见的副作用。
结论
AI 搜索时代并没有淘汰标准 technical SEO 控制,反而让“选对控制方式”变得更重要。
用 robots.txt 表达抓取偏好;用 noindex 控制退出 Google 索引;用 nosnippet、max-snippet 和 data-nosnippet 更精细地限制预览复用;当资源类型或交付层更适合 header 时,用 X-Robots-Tag。
只要你按真实目标选择控制方式,就能避开两种代价最高的错误:不该可见的页面还在外面,以及本该继续被发现的页面被自己误伤消失。
来源
- Google Search Central: AI features and your website
- Google Search Central: Block Search indexing with noindex
- Google Search Central: Robots meta tag, data-nosnippet, and X-Robots-Tag
- Google Search Central: Control your snippets in search results
- OpenAI Developers: Overview of OpenAI crawlers
- OpenAI Help Center: Publishers and developers FAQ
问答
想把页面从 Google 结果里移除,应该先改 robots.txt 吗?
不应该。若 Google 无法抓取页面,就可能看不到 noindex。真正目标是下架时,应优先使用 noindex 或访问控制。
Google 的 AI 功能也会受 nosnippet 之类的控制影响吗?
会。Google 说明传统搜索预览控制,如 nosnippet、data-nosnippet 和 max-snippet,也适用于 AI 相关展示。
什么时候 X-Robots-Tag 比 meta robots 更合适?
当你要控制 PDF、图片、feed,或页面头部模板不方便修改时,header 级的 X-Robots-Tag 更实用。
Google 的 snippet 控制会自动作用到 ChatGPT 搜索吗?
不要这样假设。Google 官方明确把 nosnippet、data-nosnippet 和 max-snippet 用于 Google AI 搜索功能,而 OpenAI 当前公开文档主要讨论 OAI-SearchBot 访问和 noindex。