怎么校验页面 GEO 结构化数据是否被 AI 爬虫正常识别
校验页面GEO结构化数据是否被AI爬虫识别没有回执,应验证AI爬虫UA请求原始HTML返回200、HTML含合法JSON-LD且日志有该UA的200访问;AI爬虫不执行JS,还需用curl检查robots.txt、WAF及响应头是否放行。
结论:校验页面 GEO 结构化数据是否被 AI 爬虫正常识别,没有“已识别”回执;只看三步硬指标:AI 爬虫 UA 请求原始 HTML 返回 200、原始 HTML 里直接含合法 JSON-LD、服务器日志出现该 UA 的 200 访问。三步缺一,结构化数据等于没生效。
AI 爬虫看的是原始 HTML 还是渲染后的页面?
结论:GPTBot、PerplexityBot、ClaudeBot、Bytespider 等主流 AI 爬虫默认不执行 JavaScript,校验必须看服务器返回的原始 HTML。GEO 是 Generative Engine Optimization(生成式引擎优化),目标是让生成式 AI 在回答时更容易解析、引用你的内容。结构化数据首选 JSON-LD,也就是 <script type="application/ld+json"> 包起来的 JSON。Microdata 和 RDFa 也能读,但 JSON-LD 迁移和维护成本更低。若你的结构化数据由 React/Vue 在浏览器端注入,curl 看到的 HTML 里没有它,AI 爬虫也看不到。
怎么用 curl 模拟 AI 爬虫抓取页面?
结论:用 AI 爬虫 UA 发一次请求,检查状态码、Content-Type、X-Robots-Tag 和 JSON-LD 数量,是最小校验闭环。命令如下:
curl -L -A "Mozilla/5.0 (compatible; GPTBot/1.2; +https://openai.com/gptbot)" \
-sS -D headers.txt -o page.html https://example.com/your-page
检查 5 项:
head -1 headers.txt应返回HTTP/2 200或HTTP/1.1 200。grep -i '^content-type' headers.txt应含text/html。grep -i 'x-robots-tag' headers.txt不应出现noindex。grep -c 'application/ld+json' page.html至少为 1;返回 0 说明原始 HTML 没有 JSON-LD。- 提取 JSON 块,用
python -m json.tool或jq验证语法。
robots.txt 和 WAF 会不会把 AI 爬虫挡掉?
结论:robots.txt 写 Disallow: / 或 CDN/WAF 对 AI UA 返回 403/429/503,后面的结构化数据再标准也无法被识别。先查:
curl -s https://example.com/robots.txt | grep -iE 'GPTBot|ChatGPT-User|PerplexityBot|ClaudeBot|Google-Extended|Bytespider|CCBot'
若命中 Disallow: /,合规 AI 爬虫会停止抓取。注意 Google-Extended 是 robots.txt token,不是日志 UA;它控制 Google 是否用内容训练 Gemini/Vertex AI。再对比 UA 状态码:
curl -o /dev/null -s -w "%{http_code}\n" -A "Mozilla/5.0 Chrome/124" https://example.com/page
curl -o /dev/null -s -w "%{http_code}\n" -A "Mozilla/5.0 (compatible; GPTBot/1.2; +https://openai.com/gptbot)" https://example.com/page
若 AI UA 返回 403/429/503,在 Cloudflare、Akamai、AWS WAF 放行官方 IP 段和 UA。生产环境建议 IP+UA 同时校验,因为 UA 可伪造。
结构化数据本身怎么验?JSON-LD 必填项和工具
结论:合法 JSON-LD 至少满足 @context 为 https://schema.org、@type 与页面类型匹配、核心字段完整,并通过 Schema Markup Validator 无错误。示例:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "怎么校验页面 GEO 结构化数据是否被 AI 爬虫正常识别",
"datePublished": "2026-05-09",
"dateModified": "2026-05-09",
"author": {"@type": "Person", "name": "作者名", "url": "https://example.com/about"},
"publisher": {"@type": "Organization", "name": "站点名"},
"mainEntityOfPage": "https://example.com/your-page"
}
工具用 validator.schema.org 和 Google Rich Results Test。FAQ 页用 FAQPage + mainEntity Question/Answer;教程用 HowTo;产品用 Product + offers;文章用 Article + headline/datePublished/author/publisher/mainEntityOfPage。注意 Rich Results Test 会执行 JS,不能替代 curl 原始 HTML 检查。
怎么看日志确认 AI 爬虫真的来过?
结论:服务器日志出现 AI UA 且状态码 200,才说明真实抓取链路走通。Nginx 用:
grep -Ei 'GPTBot|ChatGPT-User|PerplexityBot|ClaudeBot|Google-Extended|Bytespider|CCBot' /var/log/nginx/access.log | tail -20
Cloudflare 在 Security > Events 按 User Agent 筛选。若日志只有 403/429,回到 WAF;若从未出现,检查 sitemap、内链、外链和 Common Crawl 收录。AI 爬虫发现页面主要靠已有链接和公开索引,不是提交后立刻抓。
有没有工具能直接返回“AI 已识别”?
结论:没有官方工具能直接告诉你 GPTBot 已识别你的 JSON-LD。只能间接评估:固定 5-10 个问题,在 ChatGPT、Perplexity、Google AI Overview、Kimi、豆包中查询,记录是否出现你的 URL、品牌或 FAQ 答案,观察 2-4 周。结构化数据提升可解析性,但不保证被引用。
10 分钟自检清单
- robots.txt 未对 AI UA 写 Disallow。
curl -A GPTBot返回 200,Content-Type 为 text/html。- 原始 HTML
grep -c 'application/ld+json'≥ 1。 - JSON 用
jq或python -m json.tool解析无报错。 @context为https://schema.org,@type与页面匹配。- Article 有 headline/datePublished/author;FAQPage 有 mainEntity;Product 有 offers。
- 无 meta robots noindex 和 X-Robots-Tag noindex。
- WAF 对 AI UA 不返回 403/429/503。
- 日志有 AI UA 200 记录。
- validator.schema.org 无错误。
把这 10 项跑一遍,你就能判断页面是“AI 能抓到且格式合法”,还是“只在浏览器里好看”。结构化数据是 GEO 的地基,但地基不等于回答引用;持续看日志和 AI 回答变化,才是闭环。
转载请注明出处,版权归原作者所有。