20页里9页AI根本没看过:GEOInflow实测,用盲区数说话 SEO时代有一件事是确定的Googlebot来没来、抓了哪页、收录没有Search Console会给你答案。AI时代这件事归零了——ChatGPT、Claude、豆包的一次回答可能正在引用你的内容但它们的爬虫来没来、读了哪几页、漏了哪几页没有任何平台给你这个视图。你的内容在AI眼里存不存在比你的站有没有漏洞更难看清后者至少人人知道去跑个扫描器前者连该去哪里看都没有。这个品类有个名字GEOGenerative Engine Optimization生成式引擎优化。卖概念的多拿数据说话的少。我挑了GitHub上328星的开源项目GEOInflow在本地把整套系统跑起来往它的日志管道里投了一批精心设计的料27个爬虫身份61次请求、三组官方IP对照、3个未知UA、3次纯浏览器访问、一份20页的内容清单、14条AI平台引荐。它接住了多少、漏了什么、报得多诚实下面是全部数据——包括一个它自己的漏报。它是什么把你日志里属于AI的部分翻译成人话GEOInflow的底座是Umami v3.4.1一个老牌开源网站统计系统。它不去爬任何人的站而是在统计底座上加了一层AI视角做三件事识别。内置60条HTTP爬虫身份规则GPTBot、ClaudeBot、PerplexityBot、Bytespider、Kimi系、豆包的HySpider都在名单上加robots用途和签名agent两条辅助规则目录共64条身份。核验。内置24个官方IP范围来源crawler-range-baselines.json含OpenAI、Anthropic、Kimi、Meta等。UA声称自己是GPTBot来源IP却不在OpenAI官方网段它会记账。归因。用户从chatgpt.com点进来这条引荐被单独归为AI引荐——ai-platform-coverage.json规则表数千行ChatGPT、Claude、Perplexity、Gemini、Copilot加豆包、Kimi、DeepSeek、文心一言都在表里。部署走docker compose自构建镜像1.77GB。过程不算顺构建三次死在同一位置——Docker VM的7.2GB内存被我另一批实验容器14个占3~4GB挤占Next.js编译OOM带崩buildkit腾出内存后第四次构建589.6秒通过。DB-IP城市库的构建期下载挂过6分钟预下载mmdb文件兜底解决。.env漏配POSTGRES_USER会让应用启动循环报P2010。坑都记在文末先看实验。主实验六组对照往日志里投料合成Nginx combined日志67行固定种子可复现六组料一次投完组投放要测什么A识别27个UA20个AI爬虫 4个传统搜索 3个训练/营销爬虫共61次请求识别是否全对有无冒认漏报B核验官方UA × 官方IP / 伪装IP8.8.8.8、1.1.1.1、9.9.9.9伪装的GPTBot能否被拆穿C未知GPTB0tO换成数字0、FakeGPTBot、TotallyUnknownBot会不会臆造身份D分账Chrome浏览器3次访问人类流量会不会混进爬虫口径盲区20页内容清单设计12页被爬没被爬的页能否如实上报E引荐14条referrer10个AI平台 2个传统搜索 2个无法归因归因是否无损日志里还埋了异常行为一个404、一个500、一次HEAD、一个301以及PerplexityBot对同一热门页连抓6次。数据展开四个数字其一26/27——识别近乎全对但漏了一个国产爬虫。bots统计返回26个身份、59次请求每一笔都对得上账GPTBot 5次3次成功 1次404单独计入status4xx 1次伪装IPClaudeBot 5次含1次500单列PerplexityBot 8次——对热门页的6次重复抓取完整暴露OAI-SearchBot的HEAD请求单列head字段Bytespider的301也进了status3xx。字段的切分方式说明它不是在数UA是在读行为。差的那一笔很刺眼KimiBotMoonshot的训练爬虫的2次请求完全没进任何身份的统计。规则目录里明明在册recognition接口的启用名单含kimibot实际UA却没被匹配到也没被冒认给同家的Kimi-SearchBot——从爬虫口径里直接消失。0冒认是真的1个漏报也是真的漏的恰好是国产身份。其二24次核验、23次报警——核验逐请求自动跑触发却看IP情报的脸色。我给GPTBot配了个8.8.8.8的来源IP系统产出一条findingDeclared UA has an official range mismatch声称身份与官方网段不符证据rangeMismatches: 1。拉全量数据看核验比预期勤奋GPTBot全部5次请求都跑了核验——4次mismatch3次随机合成IP 1次8.8.8.8官方IP132.196.86.10取自openai.com/gptbot.json那次验证通过计verifiedRange。全部12个被核验的身份共24次请求23次报警、1次官方段验证通过无一起漏判。反例同样重要ClaudeBot的官方IP216.73.216.10取自claude.com/crawling/bots.json5次请求一次都没触发核验全部unverifiedPerplexityBot的伪装IP9.9.9.9同样没被核验。核验是否触发取决于IP情报库是否覆盖该网段——OpenAI的网段能验Anthropic的这次没验成。它的核验方向是报警不是发证不一致时告警验证通过也别当成这就是官方的证书。其三9个盲区——20页目录45%的内容没有任何AI爬虫碰过。这是全文最重要的数字。设计上20页里12页会被爬实测爬取去重13条路径——目录内11条目录外2条一个不存在的 /blog/typo-page是爬虫在做404探测一个 /home吃了个301。没被任何爬虫碰过的9页工具如实报出/blog/ai-search-trends、/blog/case-study-2、/products/geo-weight、/about、/contact、/whitepaper.pdf、/blog/old-post-2019、/docs/changelog、/pricing/enterprise。名单里有个细节ai-search-trends在设计上应该被爬是我生成物料时漏投了——真实盲区比设计盲区多1个工具照实报没有讨好设计。其四14/14——10家AI平台的引荐数据层全落库。14条引荐事件全部写进website_event表referrer_domain无损。10个AI域名在规则表全部命中子域匹配做对了gemini.google.com归Gemini、copilot.microsoft.com归Copilot、yiyan.baidu.com归文心一言、chat.deepseek.com归DeepSeek。两个故意投的无法归因域名t.co、example.org正确落在规则外。国产四家与海外六家同权重规则表还枚举了81个平台iflytek、metaso、minimax、baichuan这类长尾国产都在。展示层要单独说platforms接口当日81个平台全部显示unknown/unsupported访问量字段是空的——analytics流水线显示eligibleEvents1414条事件已识别为合格事件而qualifiedPV0质量分母没算完。工具没有吐一个假数字出来把未就绪如实摆在你面前。这算缺点还是优点取决于你被假仪表盘伤害过没有。还有两组一句话带过3个未知UA——包括只差一字符的GPTB0t和名字带GPT的FakeGPTBot——没有出现在任何身份统计里也没被归到GPTBot名下Chrome的3次访问没有混进爬虫口径。已知与未知分账爬虫与人类分账账本是干净的。方法局限四条必须交代。第一合成日志验证的是工具能不能读对日志真实互联网的爬虫分布它回答不了9/20这个比例不能外推到你的站真实盲区率要拿你自己的日志跑。第二单机单站没有多站点和高并发数据。第三首次采集的快照早于部分合成日志的时间戳尾部数据不在首版统计里我重采修正后才得出本文全部数字——细节写在数据核验说明给同样要做日志重放实验的人提个醒。第四这是一个年轻fork的代价默认管理员密码是liekan而非Umami的umami测试文件第51行坐实且它故意拒绝upstream密码部署后必须改展示层流水线有未就绪的模块。328星的项目能力是真的毛边也是真的。从数据到行动内容方的三件事第一件显式决定AI爬虫策略。robots.txt里对GPTBot、ClaudeBot、PerplexityBot是放是拒很多站从未主动决定过。放行意味着进入AI的引用池拒绝意味着从AI的世界消失。两个选择都成立但该由你拍板别把它留给默认值。第二件把自己的盲区率跑出来。我的20页里盲区集中在长尾白皮书PDF、2019年的老文、企业版定价页、about和contact。真实站点大概率同构——最想让AI引用的深度内容往往恰恰最老、格式最偏。拿真实日志跑一遍比任何GEO优化秘籍都实在。第三件把AI引荐单独记账。14/14的落库覆盖率说明规则表可用豆包、Kimi、DeepSeek、文心一言与海外六家同权重。AI引荐和搜索引荐的转化路径完全不同混在总流量里等于没有数据。写在最后上篇Gheist管谁往我的仓库塞workflow是CI入口的安全这篇管谁来读我的内容是AI爬虫入口的可见性。两件事共享同一条叙事日志里全都有答案缺的是把答案翻出来的工具层。Gheist用base32骗过GitHub的日志脱敏GEO这边的对称问题是——你的内容在AI眼里是否存在比是否存在漏洞更隐蔽。SEO时代你至少知道去Search Console看一眼GEO时代先确认有没有人替你把日志翻出来再确认翻得对不对——KimiBot那两笔消失的请求就是后半句的答案。数据核验说明实验环境Windows 11 Docker Desktop 29.8.2VM内存7.2GBGEOInflow本地容器liekan:1.2.0自构建镜像1.77GB127.0.0.1:3002底座Umami v3.4.1投料合成Nginx combined日志67行gen_logs.py固定种子合成时间00:00~11:17 080020页内容目录catalog.csv14条引荐事件走 /api/send浏览器口径核验通道crawler-recognition / crawler-analysis接口 PostgreSQL直查website_event表口径修正记录首次采集于10:23运行早于B/C/D组合成时间戳10:30~11:17首版快照不含伪装IP/未知UA/Chrome数据当晚重采只读接口本文全部数字按全量数据修正。识别统计从首版26身份56请求变为重采26身份59请求KimiBot漏报在两个时点一致存在B组IP来源GPTBot官方段取自openai.com/gptbot.json132.196.86.10ClaudeBot官方段取自claude.com/crawling/bots.json216.73.216.10伪装IP为8.8.8.8 / 1.1.1.1 / 9.9.9.9核验统计口径12个身份24次请求被核验verifiedRange 1次 rangeMismatch 23次其余14个身份35次请求unverifiedidentity findings按身份聚合共12条各含小时窗与rangeMismatches计数展示层口径analytics populationtraffic-quality-browser-population-v5eligibleEvents14、qualifiedPV0platforms接口81平台stateunknown/unsupported、visitsNonemetrics referrer返回空数组默认密码liekantests/api/auth.spec.ts第51行fork有意拒绝Umami upstream密码构建故障4次构建3次OOMNext.js编译Docker VM内存被14个实验容器挤占第4次589.6s通过DB-IP城市库构建期下载挂起6分钟预下载mmdb兜底后构建291s.env缺POSTGRES_USER/POSTGRES_DB报P2010启动循环原始产物access.log、events.json、results/api_results.json、verdict.py / dump2.py判定脚本留档于ai-lab仓库复现指引配套代码与原始数据在 ai-lab仓库 的2026-10-27-geoinflow-geo目录gen_logs.py生成合成日志ingest.py投料collector.py拉取识别与分析结果verdict.py / dump2.py出六组判定与盲区清单。docker compose起容器后依次执行即可做日志重放实验时让合成时间戳早于采集时刻否则尾部数据不在快照里。相关阅读确定性刹车实测agent说的每句话先过工具这一关——本专栏第5篇2300个插件没人把关DSH插件市场实测——供应链审计视角的入口篇腾讯AI-Infra-Guard实测——把供应链扫描做成平台工具的另一条路day-trader-skill实测——skill形态的fail-closed设计参考博客导航文全部实测文章索引