你的SaaS产品页写得再清楚,如果GPTBot、PerplexityBot、ClaudeBot等生成式引擎爬虫连正文都读不到,AI在回答“最好用的项目管理工具有哪些”时,只会引用你的竞品。很多团队以为GEO就是写更多博客,但第一道门槛在抓取层:robots.txt是否放行、正文是否真的在HTML里、结构化数据与用户看到的是否一致。
这份清单写给能改官网的人,从放行与屏蔽开始,到发布检查单结束,每一步都可以直接执行。目标只有一个:让模型和搜索爬虫真的读到正文,并且读到的就是用户看到的。
先确认正文在 HTML 里
生成式引擎的爬虫和普通搜索引擎爬虫一样,主要读取HTML源代码。如果你的产品介绍、功能列表、价格说明是用JavaScript动态渲染后才出现的,而初始HTML里只有空容器,爬虫很可能只拿到一个骨架。检查方法:在浏览器里打开页面,右键“查看网页源代码”,搜索你产品名称或核心功能词。如果搜不到,说明正文不在初始HTML里。
对SaaS官网来说,产品功能页、定价页、集成页、客户案例页都需要做这个检查。尤其是用React、Vue等前端框架的单页应用,一定要做服务端渲染(SSR)或预渲染,让每个URL返回完整的HTML。不要依赖爬虫执行JavaScript——生成式引擎爬虫虽然有些支持渲染,但成本和不确定性都很高。
如果你的页面是动态生成的,可以用curl命令模拟爬虫抓取:curl -s https://你的域名/产品页 | grep "核心功能词"。如果grep不到,就要和技术团队一起把SSR或静态生成排上日程。
放行与屏蔽
robots.txt是爬虫访问网站的入口规则。SaaS官网通常会放行Googlebot、Bingbot等传统搜索爬虫,但生成式引擎的爬虫是后来才出现的,很多网站并没有显式放行,甚至因为安全策略误屏蔽了它们。
需要检查的生成式引擎爬虫至少包括:
| 爬虫名 | 所属引擎 | robots.txt写法 |
|---|---|---|
| GPTBot | OpenAI | User-agent: GPTBot |
| PerplexityBot | Perplexity | User-agent: PerplexityBot |
| ClaudeBot | Anthropic | User-agent: ClaudeBot |
| Google-Extended | Google(用于Gemini等) | User-agent: Google-Extended |
注意:Google-Extended是Google用于训练和生成式模型的独立爬虫,与Googlebot不同。如果你希望被Google的AI Overview等生成式功能引用,需要单独放行Google-Extended。
同时要检查是否有全局屏蔽规则误伤。例如:User-agent: * 会屏蔽所有爬虫,包括GPTBot。如果你的robots.txt里有针对所有爬虫的Disallow,一定要改成只屏蔽不需要的路径,比如后台管理、API文档内部页等。
Disallow: /
只放行还不够,还要确认服务器没有用其他方式拦截。有些企业会用防火墙或WAF拦截未知爬虫,GPTBot等用户代理可能被当成恶意流量。你可以通过服务器日志查看GPTBot是否有请求记录,以及返回的状态码是否为200。如果没有记录或全是403,说明在robots.txt之外还有拦截。
结构化数据与可见文字一致
放行抓取后,下一步是让爬虫理解页面内容。Schema.org结构化数据是生成式引擎常用的语义信号。对SaaS产品,最相关的是SoftwareApplication、Product、Organization、FAQPage等类型。
但有一个关键原则:结构化数据必须与用户看到的可见文字一致。如果你在JSON-LD里写了“免费试用14天”,但页面上写的是“免费试用7天”,爬虫会认为数据不一致,生成式引擎可能放弃引用。同样,产品名称、功能列表、价格、评分等信息必须一一对应。
推荐在SaaS产品页添加以下结构化数据:
- SoftwareApplication:标记应用类别、操作系统、价格、评分、下载或试用URL。
- Organization:统一公司名称、Logo、官网、社交媒体链接,解决“名称不统一被AI拆成两家”的问题。
- FAQPage:把产品选型、集成、安全合规等高频问题写成结构化FAQ,增加被直接引用的机会。
示例:一个项目协作SaaS的产品页,可以在JSON-LD里声明应用名称、价格(如“免费版”“专业版$12/人/月”)、适用平台(Web、iOS、Android)、用户评分等。注意价格必须与当前定价页一致,不要写过期价格。
另外,结构化数据里的sameAs字段可以链接到官方百科、应用商店、社交媒体等页面,帮助爬虫确认这是同一个实体,减少名称歧义。
常见翻车
以下是SaaS官网做抓取与结构化数据时最容易踩的坑:
- 只放行Googlebot,不管GPTBot:AI推荐里没有你,可能不是内容问题,而是爬虫根本没进来。
- 正文在JavaScript里:前端渲染的SPA,查看源代码看不到产品功能,爬虫也读不到。
- 结构化数据与页面文字不一致:价格、功能、评分对不上,AI不敢引用。
- robots.txt里误用全局Disallow:一条
Disallow: /让所有生成式引擎爬虫吃闭门羹。 - WAF拦截未知爬虫:安全策略把GPTBot当恶意流量,返回403。
- 没有SSR或预渲染:动态路由页面返回空HTML,爬虫只拿到加载动画。
- 用图片代替文字:产品功能截图、价格表图片,爬虫无法提取文字信息。
- JSON-LD语法错误:结构化数据写错,被解析器忽略,等于白做。
每一条都可以通过前两步的检查发现。如果你不确定,可以让技术同事跑一次curl,或者用Google Rich Results Test验证JSON-LD是否有效。
发布检查单
每次发布或更新产品页、定价页、FAQ页之前,对照这份清单检查:
- robots.txt里已放行GPTBot、PerplexityBot、ClaudeBot、Google-Extended;
- 用“查看源代码”和curl都能看到核心正文;
- 页面是SSR或预渲染,动态路由也有完整HTML;
- 结构化数据与可见文字一致,价格、功能、评分无冲突;
- JSON-LD语法通过校验;
- Organization和sameAs指向同一个实体;
- 服务器日志里GPTBot等爬虫返回200;
- 没有用图片代替重要文字。
做完这些,再回到内容层去优化“最佳工具”类答案。抓取和结构化数据是地基,地基不牢,内容再好也进不了生成式引擎的引用短名单。
还容易问的
以下问题在执行中经常被问到,答案基于公开文档和常识,不涉及任何未公开数据。
- 放行GPTBot会不会有版权风险?OpenAI提供GPTBot的屏蔽方法,放行意味着允许其抓取内容用于训练和生成回答。是否放行取决于公司的内容策略,没有统一答案。
- Google-Extended和Googlebot有什么区别?Googlebot用于搜索引擎索引,Google-Extended用于Google的生成式AI产品。两者可以分别控制。
- SSR一定要做吗?如果产品页是纯JavaScript渲染且正文不在初始HTML,SSR或预渲染是必需的。否则爬虫读不到正文。
- 结构化数据会影响SEO吗?不会直接提升排名,但有助于爬虫理解页面,间接提高被选为引用源的概率。
- 多久能看到效果?爬虫抓取和模型更新频率不同,没有固定时间。先确保技术层无障碍,再持续优化内容。
如果还想知道GEO与SEO的区别,可以看SEO vs GEO;想系统了解GEO,可以去GEO专区。