GEO 指南:为 AI 搜索和答案引擎优化文档
使用 Generative Engine Optimization 技术,为 ChatGPT、Perplexity 和 Google AI Overviews 等 AI 驱动的答案引擎优化你的文档。
ChatGPT、Perplexity 和 Google AI Overviews 等 AI 驱动的工具越来越多地直接回答用户的问题,引用来源而非列出链接。当开发者问”如何使用[你的产品]进行身份验证”时,一个优化良好的文档页面会被引用在答案中。而一个结构不佳的页面会被跳过——即使它在传统搜索中排名很好。
Generative Engine Optimization (GEO) 是一种结构化内容的实践,使 AI 系统能够理解、信任并准确引用这些内容。
传统 SEO 针对排名和链接页面的搜索引擎进行优化。GEO 针对在生成的答案中阅读、总结和引用页面的 AI 系统进行优化。
两者的机制在以下重要方面有所不同:
| SEO | GEO | |
|---|---|---|
| 目标 | 在搜索结果中排名 | 在 AI 生成的答案中被引用 |
| 关键信号 | 反向链接、关键词、页面权威性 | 内容准确性、结构、直接性 |
| 用户行为 | 点击链接 | 阅读 AI 生成的答案 |
| 格式偏好 | 任何结构良好的内容 | 可扫描的、回答问题的内容 |
好消息是:基本原则高度重叠。准确、结构良好且直接回答问题的内容在两者中都表现出色。GEO 更多的是关于写作的清晰度,而非技巧。
AI 答案引擎基于几个关键因素评估内容:
直接性。 AI 系统优先选择立即回答问题的内容。一个在三段上下文之后才给出答案的页面,比起直接给出答案的页面,更难获得引用。
准确性和信任信号。 AI 系统倾向于来自权威来源且看起来事实可靠的内容。对于文档而言,这意味着技术准确性、一致的版本控制以及与产品实际功能相匹配的内容。
结构清晰度。 逻辑组织的内容——具有有意义的标题、列表和代码块——更容易被 AI 系统正确解析和摘录。
具体性。 模糊的高层次内容(“此功能灵活而强大”)不如具体详细的内容(“当请求超过每分钟 100 次的速率限制时,此 endpoint 返回 429 状态码”)容易被引用。
组织每个部分,使最重要的信息排在最前面。向 AI 工具提问的用户想要直接的答案——不要铺垫,不要上下文,不要在重点之前加注意事项。
<!-- 以答案开头 -->
## How to authenticate API requests
Include your API key in the Authorization header of every request:
```bash
curl -H "Authorization: Bearer YOUR_API_KEY" https://api.example.com/endpoint
```
<!-- 把答案埋在后面 -->
## Authentication
Authentication is an important part of using our API. Before you can make any requests, you'll need to understand how our authentication system works. Our API uses bearer tokens...将 H2 和 H3 标题写成用户提出的问题,而非主题标签。AI 系统在决定展示什么内容时,会将用户查询与标题文本进行匹配。
<!-- 匹配查询的标题 -->
## How do I rotate my API keys?
<!-- 主题标签——较弱 -->
## API key management模糊的描述不会被引用。具体、准确的细节会被引用。AI 系统可以准确引用”速率限制:每个 API key 每分钟 100 个请求”。而”我们的 API 有速率限制”不会给 AI 任何有用的可引用内容。
对于每个配置选项、参数或行为:
- 说明确切的值或范围
- 描述在边界处会发生什么
- 展示一个具体的代码示例
AI 系统在整个页面中构建上下文。如果你将同一事物交替称为”API key”、“access token”和”API token”,AI 的摘要可能会使用错误的术语,或者对这些是否是同一事物产生困惑。一致的术语——每个概念一个名称,始终使用——有助于 AI 系统准确表示你的内容。
不要从 H2 直接跳到 H4。AI 系统使用标题层次结构来理解主题之间的关系。扁平、一致的结构更容易被正确解析。
始终在代码块上声明编程语言。这有助于 AI 系统理解它们正在阅读的内容,并为用户的上下文展示正确的示例。
```python
import requests
response = requests.get(url, headers={"Authorization": f"Bearer {api_key}"})
```AI 系统无法看到图像。如果图表是某个概念的主要解释,请添加传达相同信息的文本描述。描述图表内容的替代文本——而不仅仅是”架构图”——能给 AI 系统提供可用的信息。
写”API key”而非”它”或”这个值”。AI 系统会摘录内容并失去周围的上下文。具体的名词引用在被摘录时仍然准确;代词则会变得模糊。
页面标题和描述是 AI 系统用来理解页面主题的最重要信号之一。编写它们时,就像在回答”这个页面帮助用户做什么?“这个问题一样。
---
title: "How to authenticate API requests"
description: "Add your API key to the Authorization header to authenticate requests. Includes examples in JavaScript, Python, and cURL."
---默认情况下,Mintlify 会索引包含在 docs.json 导航中的页面。要将隐藏页面包含在 AI 助手上下文和搜索中:
{
"seo": {
"indexing": "all"
}
}Mintlify 会自动为你的文档生成 llms.txt 文件。LLMs.txt 的工作方式类似于传统搜索中的 sitemap.xml——它为 AI 系统提供文档的结构化索引。无需任何配置。
你可以通过在文档 URL 后附加 /llms.txt 来查看你的 LLMs.txt。
你的 robots.txt 文件控制哪些机器人可以抓取你的网站。如果它屏蔽了 AI 用户代理,ChatGPT、Claude 和 Perplexity 等工具将无法读取你的文档,也无法在回答中引用它。
Mintlify 自动生成的 robots.txt 默认允许所有爬虫,并包含 Content-Signal 指令,可让 AI 工具将你的文档用于模型训练、搜索索引和 AI 回答生成。如果你使用自定义 robots.txt 文件,请确保它不会屏蔽 AI 代理。最常见的 AI 用户代理包括:
GPTBot、OAI-SearchBot、ChatGPT-User(OpenAI)ClaudeBot、Claude-User(Anthropic)PerplexityBot(Perplexity)Google-Extended(Gemini)
屏蔽所有爬虫的 robots.txt 也会屏蔽 AI 代理:
User-agent: *
Disallow: /要屏蔽特定爬虫同时允许 AI 代理,只需定向限制你想屏蔽的机器人:
User-agent: BadBot
Disallow: /
User-agent: *
Disallow: /private/运行 mint score 检查你网站的 robots.txt 是否允许 AI 代理。当没有 AI 用户代理被屏蔽时,robotsTxtAllowsAI 检查即为通过。
定期测试 AI 工具是否准确引用了你的文档。
在 ChatGPT、Perplexity 和 Claude 中提出关于你产品的具体问题:
- “如何使用[你的产品]验证 API 请求?”
- “当我超过[你的产品]的速率限制时会发生什么?”
- “向我展示如何处理[你的产品] API 中的错误。”
检查回答中的以下内容:
- 你的文档是否被引用
- 被引用的内容是否准确
- 代码示例是否正确
- AI 是否推荐了正确的方法
当 AI 工具给出关于你产品的错误答案时,这通常表明你的文档存在歧义、缺失或矛盾,而不是 AI 本身出了问题。