mirror of
https://github.com/mintlify/docs.git
synced 2026-09-14 13:35:46 +08:00
d42bd3f156
Generated-By: mintlify-agent Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
251 lines
11 KiB
Plaintext
251 lines
11 KiB
Plaintext
---
|
||
title: "GEO 指南:为 AI 搜索和答案引擎优化文档"
|
||
sidebarTitle: "GEO"
|
||
description: "使用 Generative Engine Optimization 技术,为 ChatGPT、Perplexity 和 Google AI Overviews 等 AI 驱动的答案引擎优化你的文档。"
|
||
keywords: ["Generative Engine Optimization", "GEO", "AI 搜索", "Perplexity", "ChatGPT 搜索", "Google AI Overviews", "AEO"]
|
||
---
|
||
|
||
ChatGPT、Perplexity 和 Google AI Overviews 等 AI 驱动的工具越来越多地直接回答用户的问题,引用来源而非列出链接。当开发者问"如何使用[你的产品]进行身份验证"时,一个优化良好的文档页面会被引用在答案中。而一个结构不佳的页面会被跳过——即使它在传统搜索中排名很好。
|
||
|
||
Generative Engine Optimization (GEO) 是一种结构化内容的实践,使 AI 系统能够理解、信任并准确引用这些内容。
|
||
|
||
<div id="how-geo-differs-from-seo">
|
||
## GEO 与 SEO 有何不同
|
||
</div>
|
||
|
||
传统 SEO 针对排名和链接页面的搜索引擎进行优化。GEO 针对在生成的答案中阅读、总结和引用页面的 AI 系统进行优化。
|
||
|
||
两者的机制在以下重要方面有所不同:
|
||
|
||
| | SEO | GEO |
|
||
|---|---|---|
|
||
| 目标 | 在搜索结果中排名 | 在 AI 生成的答案中被引用 |
|
||
| 关键信号 | 反向链接、关键词、页面权威性 | 内容准确性、结构、直接性 |
|
||
| 用户行为 | 点击链接 | 阅读 AI 生成的答案 |
|
||
| 格式偏好 | 任何结构良好的内容 | 可扫描的、回答问题的内容 |
|
||
|
||
好消息是:基本原则高度重叠。准确、结构良好且直接回答问题的内容在两者中都表现出色。GEO 更多的是关于写作的清晰度,而非技巧。
|
||
|
||
<div id="how-ai-systems-decide-what-to-cite">
|
||
## AI 系统如何决定引用什么
|
||
</div>
|
||
|
||
AI 答案引擎基于几个关键因素评估内容:
|
||
|
||
**直接性。** AI 系统优先选择立即回答问题的内容。一个在三段上下文之后才给出答案的页面,被引用的可能性低于一个直接给出答案的页面。
|
||
|
||
**准确性和信任信号。** AI 系统倾向于来自权威来源且看起来事实可靠的内容。对于文档而言,这意味着技术准确性、一致的版本控制以及与产品实际功能相匹配的内容。
|
||
|
||
**结构清晰度。** 逻辑组织的内容——具有有意义的标题、列表和代码块——更容易被 AI 系统正确解析和摘录。
|
||
|
||
**具体性。** 模糊的高层次内容("此功能灵活而强大")不如具体详细的内容("当超过每分钟 100 个请求的速率限制时,此 endpoint 返回 429 状态码")容易被引用。
|
||
|
||
<div id="write-content-ai-systems-can-cite">
|
||
## 编写 AI 系统可以引用的内容
|
||
</div>
|
||
|
||
<div id="lead-with-the-answer">
|
||
### 以答案开头
|
||
</div>
|
||
|
||
组织每个部分,使最重要的信息排在最前面。向 AI 工具提问的用户想要直接的答案——不要铺垫,不要上下文,不要在重点之前加注意事项。
|
||
|
||
````mdx
|
||
<!-- 以答案开头 -->
|
||
## 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...
|
||
````
|
||
|
||
<div id="use-headings-that-match-questions">
|
||
### 使用与问题匹配的标题
|
||
</div>
|
||
|
||
将 H2 和 H3 标题写成用户提出的问题,而非主题标签。AI 系统在决定展示什么内容时,会将用户查询与标题文本进行匹配。
|
||
|
||
```mdx
|
||
<!-- 匹配查询的标题 -->
|
||
## How do I rotate my API keys?
|
||
|
||
<!-- 主题标签——较弱 -->
|
||
## API key management
|
||
```
|
||
|
||
<div id="be-specific-with-numbers-limits-and-examples">
|
||
### 对数字、限制和示例要具体
|
||
</div>
|
||
|
||
模糊的描述不会被引用。具体、准确的细节会被引用。AI 系统可以准确引用"速率限制:每个 API key 每分钟 100 个请求"。而"我们的 API 有速率限制"不会给 AI 任何有用的可引用内容。
|
||
|
||
对于每个配置选项、参数或行为:
|
||
- 说明确切的值或范围
|
||
- 描述在边界处会发生什么
|
||
- 展示一个具体的代码示例
|
||
|
||
<div id="keep-a-consistent-terminology">
|
||
### 保持术语一致
|
||
</div>
|
||
|
||
AI 系统在整个页面中构建上下文。如果你将同一事物交替称为"API key"、"access token"和"API token",AI 的摘要可能会使用错误的术语,或者对这些是否是同一事物产生困惑。一致的术语——每个概念一个名称,始终使用——有助于 AI 系统准确表示你的内容。
|
||
|
||
<div id="format-for-ai-parsing">
|
||
## 为 AI 解析进行格式化
|
||
</div>
|
||
|
||
<div id="use-sequential-non-skipping-heading-hierarchy">
|
||
### 使用连续、不跳级的标题层次结构
|
||
</div>
|
||
|
||
不要从 H2 直接跳到 H4。AI 系统使用标题层次结构来理解主题之间的关系。扁平、一致的结构更容易被正确解析。
|
||
|
||
<div id="label-all-code-blocks">
|
||
### 为所有代码块添加标签
|
||
</div>
|
||
|
||
始终在代码块上声明编程语言。这有助于 AI 系统理解它们正在阅读的内容,并为用户的上下文展示正确的示例。
|
||
|
||
````mdx
|
||
```python
|
||
import requests
|
||
response = requests.get(url, headers={"Authorization": f"Bearer {api_key}"})
|
||
```
|
||
````
|
||
|
||
<div id="write-alt-text-for-images-and-diagrams">
|
||
### 为图像和图表编写替代文本
|
||
</div>
|
||
|
||
AI 系统无法看到图像。如果图表是某个概念的主要解释,请添加传达相同信息的文本描述。描述图表内容的替代文本——而不仅仅是"架构图"——能给 AI 系统提供可用的信息。
|
||
|
||
<div id="use-specific-references-instead-of-pronouns">
|
||
### 使用具体引用而非代词
|
||
</div>
|
||
|
||
写"API key"而非"它"或"这个值"。AI 系统会摘录内容并失去周围的上下文。具体的名词引用在被摘录时仍然准确;代词则会变得模糊。
|
||
|
||
<div id="mintlify-configuration-for-geo">
|
||
## Mintlify 的 GEO 配置
|
||
</div>
|
||
|
||
<div id="add-descriptive-page-metadata">
|
||
### 添加描述性的页面元数据
|
||
</div>
|
||
|
||
页面标题和描述是 AI 系统用来理解页面主题的最重要信号之一。编写它们时,就像在回答"这个页面帮助用户做什么?"这个问题一样。
|
||
|
||
```mdx
|
||
---
|
||
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."
|
||
---
|
||
```
|
||
|
||
<div id="control-indexing-settings">
|
||
### 控制索引设置
|
||
</div>
|
||
|
||
默认情况下,Mintlify 会索引包含在 `docs.json` 导航中的页面。要将隐藏页面包含在 AI 助手上下文和搜索中:
|
||
|
||
```json docs.json
|
||
{
|
||
"seo": {
|
||
"indexing": "all"
|
||
}
|
||
}
|
||
```
|
||
|
||
<div id="llmstxt">
|
||
### LLMs.txt
|
||
</div>
|
||
|
||
Mintlify 会自动为你的文档生成 `llms.txt` 文件。LLMs.txt 的工作方式类似于传统搜索中的 `sitemap.xml`——它为 AI 系统提供文档的结构化索引。无需任何配置。
|
||
|
||
你可以通过在文档 URL 后附加 `/llms.txt` 来查看你的 LLMs.txt。
|
||
|
||
<div id="allow-ai-agents-in-robotstxt">
|
||
### 在 robots.txt 中允许 AI 代理
|
||
</div>
|
||
|
||
你的 `robots.txt` 文件控制哪些机器人可以抓取你的网站。如果它屏蔽了 AI 用户代理,ChatGPT、Claude 和 Perplexity 等工具将无法读取你的文档,也无法在回答中引用它。
|
||
|
||
Mintlify 自动生成的 `robots.txt` 默认允许所有爬虫。如果你使用[自定义 robots.txt 文件](/zh/optimize/seo#custom-sitemaps-and-robotstxt-files),请确保它不会屏蔽 AI 代理。最常见的 AI 用户代理包括:
|
||
|
||
- `GPTBot`、`OAI-SearchBot`、`ChatGPT-User` (OpenAI)
|
||
- `ClaudeBot`、`Claude-User` (Anthropic)
|
||
- `PerplexityBot` (Perplexity)
|
||
- `Google-Extended` (Gemini)
|
||
|
||
屏蔽所有爬虫的 `robots.txt` 也会屏蔽 AI 代理:
|
||
|
||
```txt Bad — blocks all AI agents
|
||
User-agent: *
|
||
Disallow: /
|
||
```
|
||
|
||
要屏蔽特定爬虫同时允许 AI 代理,只需定向限制你想屏蔽的机器人:
|
||
|
||
```txt Good — allows AI agents
|
||
User-agent: BadBot
|
||
Disallow: /
|
||
|
||
User-agent: *
|
||
Disallow: /private/
|
||
```
|
||
|
||
运行 [`mint score`](/zh/cli/commands#mint-score) 检查你网站的 `robots.txt` 是否允许 AI 代理。当没有 AI 用户代理被屏蔽时,`robotsTxtAllowsAI` 检查即为通过。
|
||
|
||
<div id="test-how-ai-tools-represent-your-docs">
|
||
## 测试 AI 工具如何呈现你的文档
|
||
</div>
|
||
|
||
定期测试 AI 工具是否准确引用了你的文档。
|
||
|
||
在 ChatGPT、Perplexity 和 Claude 中提出关于你产品的具体问题:
|
||
|
||
- "如何使用[你的产品]验证 API 请求?"
|
||
- "当我超过[你的产品]的速率限制时会发生什么?"
|
||
- "向我展示如何处理[你的产品] API 中的错误。"
|
||
|
||
检查回答中的以下内容:
|
||
- 你的文档是否被引用
|
||
- 被引用的内容是否准确
|
||
- 代码示例是否正确
|
||
- AI 是否推荐了正确的方法
|
||
|
||
当 AI 工具给出关于你产品的错误答案时,这通常表明你的文档存在歧义、缺失或矛盾,而不是 AI 本身出了问题。
|
||
|
||
<div id="frequently-asked-questions">
|
||
## 常见问题
|
||
</div>
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="GEO 会取代 SEO 吗?">
|
||
不会。传统搜索仍然带来大量流量,许多用户更喜欢点击进入文档而非阅读 AI 生成的摘要。GEO 和 SEO 是互补的——结构良好、准确且直接回答问题的文档在两者中都表现出色。这些实践相互强化。
|
||
</Accordion>
|
||
|
||
<Accordion title="GEO 改进需要多长时间才能显现?">
|
||
在很多情况下比 SEO 更快。Perplexity 和 ChatGPT 等 AI 系统比传统搜索引擎更频繁地抓取和索引内容。内容清晰度和结构的改进可以在几天到几周内出现在 AI 生成的答案中。也就是说,AI 系统也会考虑域名权威性和链接信号,这些需要更长时间来建立。
|
||
</Accordion>
|
||
|
||
<Accordion title="我需要为 Google AI Overviews 做一些特别的事情吗?">
|
||
Google AI Overviews 使用与 Google Search 相同的信号,并对直接回答特定查询的内容给予额外权重。已经在 Google Search 中针对某个查询排名靠前的页面,更有可能出现在同一查询的 AI Overviews 中。GEO 的主要实践——以答案开头、具体细节、清晰结构——在这里同样适用。
|
||
</Accordion>
|
||
|
||
<Accordion title="我应该为 AI 和人类读者分别用不同的方式写作吗?">
|
||
不应该。对人类来说清晰直接的内容,对 AI 系统来说同样清晰直接。以牺牲人类可读性为代价专门为 AI 优化是适得其反的,往往会产生既不好读也不容易被引用的内容。首先为你的用户写作;GEO 自然而然地源于良好的技术写作。
|
||
</Accordion>
|
||
|
||
<Accordion title="什么是 llms.txt,我需要配置它吗?">
|
||
LLMs.txt 是一种约定——类似于 robots.txt——用于为 AI 系统提供文档的结构化索引。Mintlify 会自动生成它。你不需要配置它。你可以在 `https://your-docs-domain.com/llms.txt` 查看你的 LLMs.txt 文件。
|
||
</Accordion>
|
||
</AccordionGroup>
|