检查 ChatGPT 搜索抓取入口,重点不是“有没有放开 GPTBot”,而是先确认
OAI-SearchBot能访问你的公开推广页,再核对 robots.txt、服务器状态码、CDN/WAF、日志和 OpenAI 官方 IP JSON。放行入口只代表有机会被访问,不保证答案展示或引用。
外贸站想做 ChatGPT 搜索可见性,第一步经常做错。
很多人一上来就问:
“GPTBot 要不要放开?”
这个问题不算错,但它不是 ChatGPT 搜索入口核对的第一优先级。
OpenAI 官方把 OAI-SearchBot、GPTBot、ChatGPT-User 分成不同用途。做 ChatGPT 搜索相关检查时,重点应先看 OAI-SearchBot:它用于 ChatGPT 搜索功能中的网站搜索结果展示。
GPTBot 是训练相关抓取。
ChatGPT-User 是用户触发访问。
三者不能混成一个“OpenAI 爬虫”。
先明确你要检查什么
这篇不讲三个 bot 的总论,第 4 篇已经讲过。这里直接进入检查流程。
目标是确认:
| 检查对象 | 要回答的问题 |
|---|---|
| robots.txt | 是否允许 OAI-SearchBot 访问公开推广页 |
| 核心 URL | 产品页、FAQ页、案例页、供应商介绍页是否能返回 200 |
| CDN / WAF | 是否把 OpenAI crawler 当异常流量拦掉 |
| access log | 是否有 OpenAI 相关 user-agent 访问,状态码是什么 |
| 官方 IP JSON | 请求来源是否可和 OpenAI 发布的 IP 段核对 |
| 内容状态 | 页面是否公开、文本可读、没有误加 noindex |
边界也要说清:允许 OAI-SearchBot 不等于保证 ChatGPT Search 收录、排名、引用或答案展示。
它只是准入核对。
第一步:拿到当前robots.txt
先看线上真实文件,不要只看后台插件界面。
curl -s https://www.example.com/robots.txt
如果有多个 host,也要分别看:
curl -s https://example.com/robots.txt
curl -s https://www.example.com/robots.txt
curl -s https://en.example.com/robots.txt
对外贸站来说,尤其要看这些目录:
/products//categories//case-studies//faq//about//request-a-quote//downloads//customer-portal/
公开推广页面和敏感区域不要用同一套策略。
第二步:确认OAI-SearchBot没有被挡
如果你的目标是保留 ChatGPT 搜索相关展示机会,OpenAI 官方建议允许 OAI-SearchBot。
一个清楚的写法可以是:
User-agent: OAI-SearchBot
Allow: /products/
Allow: /categories/
Allow: /case-studies/
Allow: /faq/
Allow: /about/
Disallow: /downloads/private/
Disallow: /customer-portal/
如果你看到的是:
User-agent: OAI-SearchBot
Disallow: /
那就说明你明确选择退出了 OpenAI 的 search crawler。OpenAI 官方说,opt out OAI-SearchBot 的网站不会显示在 ChatGPT search answers 中,但仍可能作为 navigational links 出现。
这句话不要外推成“允许了就一定显示”。
它只说明选择退出和展示资格的边界。
第三步:别把GPTBot当搜索入口
GPTBot 用于抓取可能用于训练 OpenAI 生成式 AI 基础模型的内容。企业可以基于内容资产策略决定是否允许它。
如果你的策略是“允许 ChatGPT 搜索相关抓取,但不允许训练抓取”,可以这样拆:
User-agent: OAI-SearchBot
Allow: /products/
Allow: /categories/
Allow: /case-studies/
Allow: /faq/
User-agent: GPTBot
Disallow: /
这两个设置彼此独立。OpenAI 官方也明确说,可以允许 OAI-SearchBot,同时禁止 GPTBot。
所以不要写:
User-agent: GPTBot
Allow: /
然后就以为 ChatGPT Search 入口已经核对完了。
Search 入口核对,主角是 OAI-SearchBot。
第四步:理解ChatGPT-User的边界
ChatGPT-User 是用户在 ChatGPT、Custom GPTs 或 GPT Actions 中触发某些操作时访问网页。
它不用于自动网页抓取,也不用于决定内容是否出现在 Search。
这意味着:
- 日志里看到
ChatGPT-User,更像用户触发访问; - 不应把它统计成常规搜索 crawler;
- OpenAI 官方说明,因为这是用户发起的访问,robots.txt 规则可能不适用;
- 不要用
ChatGPT-User是否访问过,判断 ChatGPT Search 是否收录了你的页面。
对外贸站来说,ChatGPT-User 更像“有人让 ChatGPT 打开这个公开页面时,服务器能不能正常响应”。
第五步:检查核心URL状态码
只看 robots.txt 不够。你还要抽查页面本身能不能访问。
URLS=(
"https://www.example.com/products/stainless-steel-valve/"
"https://www.example.com/case-studies/chemical-plant-valve-project/"
"https://www.example.com/faq/"
"https://www.example.com/about/"
)
for URL in "${URLS[@]}"; do
curl -sI -L "$URL" | head -n 5
done
理想情况:
公开产品页 -> 200
公开案例页 -> 200
FAQ页 -> 200
供应商介绍页 -> 200
客户后台 -> 登录或权限保护
私密下载 -> 权限保护
不理想情况:
公开产品页 -> 403
公开产品页 -> 302 到首页
FAQ页 -> 404
案例页 -> 5xx
页面返回 WAF challenge HTML
如果公开推广页都不能稳定返回 200,就别急着谈 ChatGPT 搜索可见性。
第六步:模拟User-Agent只能作为初筛
你可以用 user-agent 初步看服务器是否按字符串误拦截,但不要把它当身份验证。
curl -I -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot" \
https://www.example.com/products/stainless-steel-valve/
如果这里返回 403,要查 CDN / WAF 规则。
如果返回 200,也不能证明请求一定来自 OpenAI。
原因很简单:User-Agent 可以伪造。
更可靠的做法,是结合 OpenAI 官方发布的 IP JSON 和服务器日志一起看。
第七步:核对OpenAI官方IP JSON
OpenAI 官方提供了几个 IP JSON:
curl -s https://openai.com/searchbot.json
curl -s https://openai.com/gptbot.json
curl -s https://openai.com/chatgpt-user.json
如果服务器有 jq,可以先看结构:
curl -s https://openai.com/searchbot.json | jq .
这里要克制一点:OpenAI 官方页面支持写“published IP addresses / IP JSON”。不要把它扩展成“OpenAI 官方反向 DNS 验证流程”,除非你有对应 OpenAI 官方文档。
实务上,你可以把日志中的来源 IP 和官方 JSON 做比对,但文章里不能把这一步包装成绝对身份认证。
第八步:看access log里的真实访问
Nginx 日志可以先这样筛:
grep -Ei 'OAI-SearchBot|GPTBot|ChatGPT-User' /var/log/nginx/access.log \
| awk -F'"' '{print $1, $2, $3, $6}' \
| head -n 100
更有价值的是按 bot 分开:
grep -Ei 'OAI-SearchBot' /var/log/nginx/access.log | awk '{print $1, $7, $9, $12}' | head -n 50
grep -Ei 'GPTBot' /var/log/nginx/access.log | awk '{print $1, $7, $9, $12}' | head -n 50
grep -Ei 'ChatGPT-User' /var/log/nginx/access.log | awk '{print $1, $7, $9, $12}' | head -n 50
记录这几项:
| 字段 | 为什么看 |
|---|---|
| IP | 可与官方 IP JSON 做初步核对 |
| URL | 是否访问了产品页、FAQ、案例页 |
| 状态码 | 200、301、403、404、5xx 意义不同 |
| User-Agent | 区分 search、training、user-triggered |
| 时间 | 看是否和上线、改版、WAF调整有关 |
不要只汇总“OpenAI 访问次数”。
真正有用的是“哪个 OpenAI user-agent 访问了哪个外贸推广页面,服务器给了什么响应”。
第九步:检查页面有没有误伤规则
即使 OAI-SearchBot 能访问,页面本身也要查:
curl -sL https://www.example.com/products/stainless-steel-valve/ | grep -Ei 'robots|canonical|description'
curl -sI https://www.example.com/products/stainless-steel-valve/ | grep -Ei 'x-robots-tag|content-type|status'
重点看:
- 有没有
noindex; - canonical 是否指向正确 URL;
- 页面是否是文本内容,不是纯图片;
- 是否被跳转到国家选择页;
- 是否被 cookie / 地区弹窗挡住主要内容;
- 是否要求登录。
ChatGPT 搜索入口检查不是只看 OpenAI bot。
页面自身的公开性和可读性也要过关。
第十步:形成一张核对表
建议每月或每次改版后更新一次。
| 检查项 | 合格标准 | 结果 |
|---|---|---|
OAI-SearchBot 规则 |
公开推广页未被 Disallow |
|
GPTBot 规则 |
符合训练抓取策略 | |
ChatGPT-User 理解 |
不当成常规搜索 crawler | |
| 产品页状态码 | 返回 200 |
|
| 案例页状态码 | 返回 200 |
|
| FAQ 页状态码 | 返回 200 |
|
| WAF / CDN | 没有挑战页或 403 误伤 | |
| OpenAI IP JSON | 已做初步来源核对 | |
| 日志记录 | bot、URL、状态码分开记录 | |
| 页面 meta | 无误加 noindex |
|
| canonical | 指向正确公开 URL | |
| 参考资料 | 只保留官方来源 |
最后说清楚边界
ChatGPT 搜索抓取入口检查,能解决的是“入口是否被你自己挡住”。
它不能保证:
- ChatGPT 一定收录;
- ChatGPT 一定引用;
- 答案一定展示你的链接;
- 排名一定提升;
- 询盘一定增加。
但它能排除一类很低级、很致命的问题:你明明想让公开产品页进入 ChatGPT 搜索相关候选,却在 robots.txt、WAF、状态码、canonical 或页面 meta 上把入口关掉了。
外贸 AI SEO 的第一步,不是喊口号。
是先把门开对。