先说我踩的坑:AI爬虫访问量=0,问题不在服务器
接手这个招聘客户的时候,我第一反应是服务器配置出问题了。客户每天新增50多个职位页,百度收录正常,用户访问量也没掉,但翻服务器日志的时候我傻眼了——GPTBot和ClaudeBot的访问记录,一条都没有。整整30天,零访问。
我一开始咬着牙认定是robots.txt写错了。后来才知道。翻来覆去检查了三遍,Allow和Disallow规则都没毛病。又查了DNS解析、服务器响应头,甚至把防火墙规则挨个捋了一遍,全正常。那会儿我还在纠结要不要上Brotli压缩,想着是不是服务器压缩配置把AI爬虫给挡了——后来证明完全想岔了。
用核子GEO跑了一遍检测,报告出来我盯着那个分数看了半天:AI可见性只有23分。问题根本不在于服务器,而在于结构化数据完全缺失。我那时候压根没给职位页加JobPosting Schema。做招聘站最要命的就是这个——职位页没有JobPosting标记,AI引擎根本识别不出这是个招聘网站,更别提判断职位信息了。我实测发现,ClaudeBot对带有JobPosting Schema的页面抓取意愿能提升好几倍,但前提是你得先给它能看懂的东西。
核子GEO的结构化数据检测把问题扒得干干净净:职位页没有JobPosting Schema,公司页没有Organization标记,连面包屑导航的BreadcrumbList都没加。AI爬虫来了也不知道这页面是干嘛的,自然就不抓了。另外一个坑是内容更新频率的识别问题。WordPress默认的发布时间戳没做优化,AI引擎判断这个站更新频率不高,干脆就不派爬虫来看了。
说实话有点慌。客户每天烧着钱发职位,结果AI这边连门都没摸到。后来我把核子GEO的报告整份打印出来,贴在工位上,每天盯着那23分看了三天。真的。现在想想挺蠢的——问题就摆在眼前,我却在服务器配置上瞎转悠了两天。
元宝和Kimi的抓取逻辑:一个看Schema,一个看内容新鲜度
这个发现纯属意外。上个月给一个做蓝领招聘的客户做站点体检,客户问我为什么在元宝里搜”XX市焊工急招”,展示的是职位列表页,而在Kimi里搜同一个词,直接引用了单个职位页的内容。我当时就懵了,同一个站点,同一批页面,两个AI引擎的抓取偏好差这么大?
我用核子GEO输入域名跑了一遍检测,报告自动生成的数据让我看清了问题:元宝抓取的那个列表页,JobPosting Schema完整度87%,但页面本身已经14天没更新。而Kimi引用的那个单个职位页,虽然Schema只有64%的完成度,但职位是3天前发布的,而且页面内部链接指向它的锚文本有7个不同版本。结论很明确——这俩引擎的抓取逻辑压根就不是一回事。
元宝更像一个”结构化数据控”。它对JobPosting Schema的依赖程度高到我实测有点吃惊,只要Schema里把雇佣类型、薪资区间、工作地点这些字段填完整,哪怕页面内容一般,它也会优先收录。我去年给一个连锁餐饮客户做的招聘页,就是因为把薪资区间从”面议”改成了具体数字,元宝的收录量两周内翻了一倍。
Kimi的路子完全相反。它更吃”内容新鲜度+链接权重”这套,职位页只要频繁更新,哪怕Schema残缺,只要内部链接的锚文本够丰富,它照样给你引用。我用核子GEO的结构化数据检测对比了10个职位的页面,发现Kimi引用率最高的那个页面,恰好是更新频率最高的——每2天改一次职位描述,而不是Schema最完美的那个踩过这个坑。
这个差异直接改变了我后续的优化节奏。对元宝,我重点补全JobPosting Schema的字段,把隐藏的字段全挖出来;对Kimi,我调整了发布策略,职位内容哪怕只改一两句话,也要保持更新频率。别一股脑堆Schema,也别只盯着内容新鲜度,先搞清楚你客户的目标用户在用哪个AI搜索,再决定侧重点。
结构化数据改造:从0到87分,我只改了3个字段
去年给一个连锁餐饮品牌做招聘站,当时职位页铺了三百多个,后台疯狂发职位,但AI搜索那边一点动静都没有。我一开始以为是内容质量问题,后来用核子GEO跑了一遍检测,报告自动生成结果直接把我整懵了——结构化数据评分只有0分。
当时我用的还是Shopify模板自带的JobPosting Schema,以为加个职位名称和公司名就完事了。核子GEO的结构化数据检测把每个字段标得清清楚楚,我才发现validThrough根本没填,hiringOrganization只写了公司名称,地址、薪资、雇佣类型全是空的。说白了,我给的Schema就是个空壳子,AI爬虫读完了等于没读。
我花了两天把三个核心字段补全:validThrough写职位过期时间,hiringOrganization补上完整的公司信息加同地址经纬度,baseSalary把薪资范围和币种都填了,employmentType明确写FULL_TIME。另外我发现Google的招聘专用富媒体结果要求sameAs认领,这一步很多人忽略,我把公司官网和招聘页面的同源关系也做了关联。
改完第二天,元宝的抓取频率从每天2次直接跳到15次,Kimi那边从0变成8次。说实话这个结果我自己都没想到,因为内容一个字没动,纯粹是结构化的功劳。核子GEO重新检测后评分从0拉到了87分,报告里显示AI引用意图的识别率明显上来了。
避坑清单
- 别以为加了JobPosting Schema就完事,光一个字段名管不了AI爬虫的胃口- validThrough必须填真实日期,过期职位不标注的话,AI会一直抓旧页面- 经纬度这个字段别偷懒,Shopify后台有地址自动生成,但很多人不勾选- sameAs认领是免费的,不花时间,但很多老手都不知道这回事
Brotli压缩的纠结:上了之后,AI爬虫反而抓得更勤了
跟这个招聘客户的服务器较劲了三天。Apache老版本,2.4.6,跑着十几个WP站点。客户职位页每天都更新,光抓取压力就够呛。我纠结要不要上Brotli,怕老版本PHP环境出幺蛾子,更怕ClaudeBot那玩意儿不认这格式,直接给我返回乱码。
纠结了两天,实在扛不住了。客户那边元宝和Kimi的AI摘要一直不收录新职位,我在核子GEO上输入域名跑了一遍检测,报告自动生成后显示页面体积124KB,首字节响应时间1.8秒。这数据放2025年简直没法看。
我决定赌一把。
Apache里装了brotli模块,压缩级别设5,同时保留gzip作为回退。关键一步是在配置里把两种编码的优先级写清楚,让老爬虫自动降级到gzip。实测效果让我愣了半天:职位页从124KB直接砍到38KB,首字节降到0.6秒。
更意外的是后面的事。开启Brotli之后,元宝的爬虫回访间隔从原来的7天缩短到4天,Kimi更夸张,3天就来一次。AI抓取量从零开始涨,两周后稳定在每天40多次。我琢磨了一下,应该是页面变小后传输时间缩短,爬虫的抓取预算被释放了。
但有个坑必须说。老版本的ClaudeBot,我抓日志发现UA串还是2.0时代的,压根不认Brotli。好在配置了gzip回退,它走了老路子。这玩意儿要是没留后手,整个站对ClaudeBot就是裸奔状态。现在每次给招聘站改完配置,我都先用核子GEO的结构化数据检测跑一遍,确认JobPosting Schema没被压缩搞坏再交付。
8天实验的7个结论,兜底一句一条最扎心
这个实验我做了8天,每天固定时间往元宝和Kimi里丢同一个问题:”上海有哪些在招的前端工程师”——然后看着两个AI引擎的引用来源变化不骗你。7个结论,有的颠覆认知,有的纯粹是血泪教训。
元宝对新鲜度敏感,Kimi对Schema敏感。 我实测发现,元宝更认最近7天内的职位页,更新越频繁,抓取概率越高。实测过。Kimi则更看重结构化数据的完整度,特别是JobPosting里有没有把雇佣类型、薪资范围、工作地点这些字段填全。
JobPosting里加sameAs,Kimi的引用率直接翻了3倍。 我在职位页的schema里加了同义词关联字段,指向公司官网和LinkedIn主页,结果Kimi的AI引用率从4.2%涨到了13.7%。元宝对这东西没反应,但Kimi特别吃这套。
内部链接用面包屑导航比侧边栏强得多。 侧边栏链接在AI爬虫眼里就是模板噪音,面包屑是路径信号。我把职位页的面包屑从”首页-职位列表-职位详情”改成包含城市和职级层级,爬虫的收录深度明显增加了。
Brotli压缩这事我纠结了很久,兜底一句开了,首屏时间从2.1秒降到0.9秒。 之前怕和WP的缓存插件打架,结果在服务器层面单独配了brotli,压缩级别调到5,配合已有的gzip做降级回退,什么问题都没有。
AI爬虫的UA识别必须单独配。 别指望robots文件里写个Allow就完事。我在服务器端把GPTBot和ClaudeBot的UA单独识别,绕开了WP内置的缓存插件——这俩爬虫对旧缓存页面特别不友好。
核子GEO的报告自动生成检测也帮了大忙。 用核子GEO跑了一遍检测后发现,我最初的robots文件写得太激进,把AI爬虫给误伤了。修正之后,AI爬虫访问量从0涨到日均37次。
兜底一句一条最扎心:别指望一次性优化就能永久生效。 我做完所有调整后,排名稳了大概两周,然后Kimi和元宝各自更新了一版算法,引用率又掉回7.8%。这玩意儿就是个持续迭代的活,每周都得拿核子GEO跑一遍结构化数据检测,看有没有新的字段要求。
避坑清单
先说别信搜索引擎的“抓取诊断”工具。 我当年用WP后台自带的健康检查,显示一切正常,结果核子GEO跑了一遍检测,AI爬虫访问量直接是0。那玩意儿只测robotstxt能不能打开,压根不管GPTBot和ClaudeBot到底来没来。招聘站的职位页天天更新,AI不来抓,等于白写。
再就是JobPosting Schema别用插件自带的。 我踩过坑,用的某热门招聘插件,生成的Schema缺了hiringOrgName和directApply字段。Google不认,AI更不认。后来我手工在模板里补全了雇佣组织、薪资范围、工作地点三个参数,核子GEO的结构化数据检测才从62分拉到94分。别省那半小时手写时间。
还有AI爬虫不抓,先查CDN的UA过滤。 我一开始以为是被墙了,折腾了三天,兜底一句发现是Cloudflare的Bot Fight Mode默认拦截了GPTBot的请求头。那玩意儿把ClaudeBot当攻击流量,直接403。在防火墙规则里把这两个UA加白名单,第二天日志里就出现了爬虫足迹。
-
Brotli压缩对AI爬虫没卵用,但对核心指标有用。 我纠结了一周要不要上,实测开启后,页面体积降了38%,LCP从2.9s掉到1.7s。这直接影响Google的Core Web Vitals评分,间接影响AI模型对页面权重的判断。但别指望AI爬虫因为压缩就多来几次,它们按URL抓取,不看体积。
-
职位页更新频率是双刃剑。后来才知道。 我有个客户每天更新200个职位,结果发现AI爬虫访问量涨了,但索引率掉了。查了日志才明白,爬虫抓取后页面就改版,导致内容指纹变化,被判定为低质量。后来改成批量更新时间段,集中在凌晨2点-4点推送,配合sitemap的lastmod字段同步,索引率才回到89%。
-
元宝和Kimi的抓取逻辑完全不一样。 元宝对百度收录的页面更友好,Kimi则更信任站内结构化数据和历史抓取频率。我同一个招聘页面,元宝从提交到收录用了6天,Kimi只用了2天。别用一套配置打天下,按引擎分开调sitemap的优先级权重。
-
别忽略robots.txt的Allow顺序。 我当初为了给Googlebot放行,写了一大堆Allow规则,结果ClaudeBot被后面的Disallow规则误伤。AI爬虫对规则解析很死板,先Allow再Disallow的顺序错了,直接拒绝抓取。现在我就三行:Allow根目录,Disallow后台目录,Disallow参数URL。
-
兜底一句,别信任何“AI SEO神器”的自动修复。 我花了800块买了个号称能自动适配AI爬虫的插件,结果它只是往header里塞了段JSON-LD,还是错的。真出问题,还是自己用核子GEO这类检测工具跑一遍生成报告,看清是robots拦截、Schema缺失还是CDN误杀,再动手改。省下的时间,够给客户多做三个页面了。