AI 搜索优化
当 AI 助手回答“什么是 X”、“X 的定价”或“Y 的最佳工具”时,它会抓取几个页面,提取句子和表格行,然后引用它们。如果一个事实没有以纯文本形式出现在页面上,AI 助手会猜测,或者引用写下这个事实的人。目标:让产品仅通过一次抓取就能被正确描述。
贯穿每个步骤的一个原则是:每个事实只写一次,到处渲染。 定义、状态(内测、开放注册、正式可用)、定价、支持的平台和关键 URL 都存放在一个源文件中;页面、llms.txt 和结构化数据都从该文件中读取。手动复制的事实会逐渐出现偏差。
工作流程
1. 编写事实表
创建 content/facts.ts(或 JSON/YAML),包含:产品名称和别名、一句话定义、目标用户、状态、套餐和价格、平台或集成、关键页面 URL 以及官方资料(GitHub、X、LinkedIn、Product Hunt)。在编写之前,先对照实际产品逐一检查每个条目。
2. 发布 /llms.txt
遵循 llmstxt.org 规范:一个 H1 标题(产品名称)、一个引用块摘要、几个纯文本事实,然后是 H2 级别的链接部分,格式为 - [标题](url): 内容说明。名为 Optional 的部分用于标记 AI 助手可以跳过的链接。
# Acme AI
> Acme AI 是一款发票匹配工具,可为小型财务团队协调 Stripe 付款与银行存款。它在浏览器中运行,连接 Stripe 和 Plaid。
- 目标用户:在 1-50 人公司中手动核对付款的财务主管。
- 状态:开放注册(自 2026 年 11 月起)。
- 定价 (https://acme.example/pricing):免费版,0 美元,每月最多 50 张发票;Pro 版,29 美元/月,不限发票数;团队版,79 美元/月,最多 10 个席位。价格以美元计。
- 注意不要混淆:Acme Anvil,一家无关的硬件公司。
## 关键页面
- [定价](https://acme.example/pricing):套餐、限制和包含内容。
- [Acme AI vs 竞品](https://acme.example/vs/rival):功能和价格比较,检查于 2026-11-06。
## FAQ
- Acme AI 免费吗?是的,每月最多 50 张发票。Pro 和团队版是付费的。
## 可选
- [博客](https://acme.example/blog):产品更新和指南。
从事实表和页面元数据生成(通过路由处理程序或构建脚本),这样新页面出现时无需手动编辑。以状态码 200、内容类型 text/plain 或 text/markdown; charset=utf-8 提供服务,无需登录、重定向或 JavaScript。检查:
curl -sI https://acme.example/llms.txt | head -5 # 200 和文本内容类型
curl -s https://acme.example/llms.txt | head -30
3. 可选:添加 /llms-full.txt
你最希望被引用的页面的完整 Markdown 文本(产品、定价、比较、文档),每个在其自己的 # 标题 下,并带有 Source: <url> 行。在构建时生成。省略博客存档和任何过时的内容。
4. 链接到它
在页脚中放置一个纯文本的 llms.txt 链接,并在 <head> 中可选添加 <link rel="alternate" type="text/markdown" href="/llms.txt">。没有被链接到的文件只能由猜测路径的爬虫找到。
5. 允许 AI 爬虫访问(robots.txt 和 CDN)
| User-agent | 所有者 | 用途 |
|---|---|---|
| OAI-SearchBot | OpenAI | ChatGPT 搜索索引 |
| ChatGPT-User | OpenAI | 获取用户询问的页面 |
| GPTBot | OpenAI | 模型训练 |
| Claude-SearchBot / Claude-User / ClaudeBot | Anthropic | 搜索索引 / 用户抓取 / 训练 |
| PerplexityBot / Perplexity-User | Perplexity | 搜索索引 / 用户抓取 |
| Google-Extended | Gemini 训练和引用的标记;不影响 Google 搜索或 AI Overviews | |
| Bingbot | Microsoft | Bing 索引,Copilot 从中回答 |
搜索和用户抓取代理决定你是否可以被引用。训练代理则是业务选择;希望被推荐的产品通常会允许它们。
User-agent: *
Allow: /
Disallow: /api/
Disallow: /app/
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: GPTBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: ClaudeBot
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
Allow: /
Disallow: /api/
Disallow: /app/
Sitemap: https://acme.example/sitemap.xml
爬虫只遵守其名字所在的组,因此命名的组必须重复每个 Disallow,否则会暴露你的私有路径。robots.txt 也无法覆盖 CDN:有些 CDN 提供“阻止 AI 爬虫”开关,无论 robots.txt 如何设置都会返回 403。抽查,然后在 CDN 的爬虫报告或服务器日志中确认真实爬虫的访问(验证了 IP 的 CDN 可能会区别对待伪造的 User-Agent):
curl -s -o /dev/null -w '%{http_code}\n' -A 'Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)' https://acme.example/pricing
6. 在每个关键页面顶部放置一句话定义
紧接 H1 下方,在服务端渲染的 HTML 中:"<名称> 是一个 <类别>,用于 <为谁> <做什么>。" 第二句话给出差异化特点。在首页、llms.txt、Organization.description、目录列表和社交媒体简介中重复使用同一句话。口号(如“财务,重新构想”)无法为助手提供可引用的内容。许多 AI 抓取工具不执行 JavaScript,因此检查原始 HTML:
curl -s https://acme.example/ | grep -c "is an invoice-matching tool" # 预期 1 或更多
7. 比较表格和 FAQ
- 表格: 使用真实的 HTML
<table>,每行一个产品,列包括买家询问的内容(价格、平台、是否开源、主要限制)。注明日期(如“Checked 2026-11-06”)。每个事实来自供应商自己的网站、文档、定价页面或 GitHub API。当供应商未发布某项信息时,写成“未发布”;绝不做估算。 - FAQ: 以提问者的措辞作为标题;答案 2-4 句话,自成段落,第一句话直接回答问题。涵盖助手容易搞错的问题:价格、“是否免费”、“是否与 X 兼容”、“是否与 <同名产品> 相同”。FAQPage 标记是可选的;可视的问答才是被引用的内容。
8. 公开定价
提供 /pricing 页面,包含套餐名称、价格、货币、计费周期和限制,以文本形式呈现,而非仅通过图片或计算器。在 llms.txt 和 SoftwareApplication.offers 中镜像这些信息。答案和目录列表需要价格或定价模式(免费、免费增值、付费);没有这些信息,AI 助手会猜测或跳过你。如果付费计划尚未上线,请说明(如“Pro:即将推出;在此之前所有功能免费”)。
{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Acme AI",
"applicationCategory": "BusinessApplication", "operatingSystem": "Web",
"offers": [ { "@type": "Offer", "name": "Free", "price": "0", "priceCurrency": "USD" },
{ "@type": "Offer", "name": "Pro", "price": "29", "priceCurrency": "USD" } ] }
9. 品牌名称冲突时的组织机构和网站数据
如果搜索你的品牌名称首先显示另一个产品,请选择一个独特的名称形式(如“Acme AI”)并在所有地方使用它,同时使用结构化数据将不同变体关联到同一个实体:
{ "@context": "https://schema.org", "@type": "Organization",
"name": "Acme AI", "alternateName": ["Acme", "acme.example"],
"url": "https://acme.example/", "logo": "https://acme.example/logo.png",
"description": "Acme AI 是一款发票匹配工具,可为小型财务团队协调 Stripe 付款与银行存款。",
"sameAs": ["https://github.com/acme-ai", "https://x.com/acmeai", "https://www.linkedin.com/company/acme-ai"] }
添加一个 WebSite 对象,使用相同的 name 和 alternateName;Google 在搜索结果中使用它作为站点名称。sameAs 中只列出你控制的、并链接回网站的配置文件。
10. 保持品牌后缀一致
在所有地方使用同一个后缀:标题中的 | Acme AI,og:site_name 中的相同字符串,llms.txt 的 H1,社交媒体简介和 GitHub 组织。标题保持在 60 个字符以内(中文、日文和韩文约 30 个字符),关键词在前;只有当能容纳时再添加后缀。
11. 检查助手实际说了什么
每月一次,并在重大变更后,手动在 ChatGPT(开启搜索)、Perplexity、Claude、Gemini 和 Copilot 中询问 5-10 个提示:“什么是 Acme AI?”、“Acme AI 定价”、“最佳 <类别> 用于 <受众>”、“<竞品> 替代品”、“Acme AI vs <竞品>”。每次在正常界面中询问一个提示;不要编写脚本操作聊天 UI。将日期、助手、提示、是否被提及、引用的 URL 以及任何错误的记录到 docs/seo/ai-answers.md 中。修复每个错误事实背后的源页面,然后重新检查。对于流量,按引荐来源分段分析:chatgpt.com、perplexity.ai、claude.ai、gemini.google.com、copilot.microsoft.com。
检查清单
- 事实表已存在;页面、llms.txt 和 JSON-LD 从其读取
- /llms.txt 以文本形式返回 200,已生成,并在页脚中被链接
- robots.txt 允许 AI 代理并重复了禁止规则;CDN 不阻止它们
- 每个关键页面以原始 HTML 的一句话定义开头
- 比较表格已注明日期并标明来源;未知项显示“未发布”
- FAQ 答案自成段落,涵盖价格、“是否免费”和名称混淆
- /pricing 是公开的;llms.txt 和
offers与之匹配 - Organization 和 WebSite 包含名称、别名、描述和 sameAs
- 所有地方使用一个品牌后缀;标题在 60 个字符以内
- 助手回答已记录;错误事实追溯到页面并已修复
我们遇到的陷阱
- 没有公开定价。 /pricing 返回 404,llms.txt 和
SoftwareApplication没有 offers,我们自己的比较表格不得不对自己写“未发布”。一个包含三个套餐文本的 /pricing 页面,镜像到 llms.txt 和offers中,解决了问题;付费层级标记为“即将推出”。 - 状态漂移。 开放注册后,包括 llms.txt 在内的 9 种语言约 300 个文件仍写着“早期访问”。现在状态来自一个常量。
- 无人链接的文件。 审计发现没有页面链接到 llms.txt,没有 llms-full.txt,站点地图中也没有
lastmod。 - robots.txt 组覆盖。 为 AI 爬虫单独创建一个组而不重复禁止规则,会使得 API 和登录路径向它们开放。
- 品牌冲突。 搜索我们的品牌名称首先显示一个同名的排班调度应用。我们在标题、alternateName 和 sameAs 中切换为“<名称> AI”。
- 截断且不一致的标题。 49 个英文标题为 57-88 个字符,后缀混合。我们将它们截断到 60 个字符或更少,关键词在前,仅当能容纳时才加后缀。
- 竞品页面抓取不可靠。 一个研究子代理抓取的竞品定价页面看起来像被篡改过;我们在真实浏览器中确认后才发布。另一个供应商的定价页面向抓取器返回 403,因此我们从他们的文档中获取价格并说明了来源。
- 过早写“免费”。 在定价发布之前,我们写了“未发布”,而不是“免费”。助手会重复页面上说的任何内容。
相关技能
- seo-page:定义、表格和 FAQ 所在的页面模板。
- competitor-pages:比较和替代品页面,助手会大量引用。
- programmatic-pages:大规模生成 llms.txt 部分和结构化数据。
- multilingual-seo:每种语言的本地化定义、标题和后缀长度。
- keyword-research、trend-keywords:要回答的问题和要测试的提示。
- index-push:让页面被爬取;Bing 的索引为 Copilot 提供数据。
- seo-daily-report:AI 推荐流量作为独立行出现在报告中。