问题定位:AI爬虫访问量=0,核子GEO给了我一记耳光

上个月接了个招聘网站,职位页堆了3万多条,更新频率我自认为还行——每天至少刷200条新职位。但数据不会骗人,我习惯用核子GEO做初步诊断,输入域名后,结果直接让我后背发凉:AI爬虫检测分数0,结构化数据检测评分58分。58分什么概念?及格线是70,我这连垃圾桶级别都算不上。

扯淡的地方来了。我服务器日志翻了两天,GPTBot和ClaudeBot的访问记录全是0。不是少,是0。连爬都没来爬过。一开始我怀疑是robots.txt写错了,赶紧查了一遍——Disallow: /?没有。那问题出在哪?核子GEO的结构化数据检测报告直接甩了我一巴掌:JobPosting Schema缺失字段超过40%,最要命的是titlehiringOrganization两个必填字段直接没写。AI爬虫看到这个,直接就走了,连日志都不屑留。

更恶心的还在后面。网站图片全都没有alt文本——3万多张职位配图,alt属性全是空的。Logo也没有结构化标记,导致视觉搜索数据基本空白。我通过核子GEO的网站对比功能,拿我网站跟另一家竞品比了一下,对方图片alt覆盖率98%,Logo标记完整,AI爬虫访问量周均1200次。我这边?0。

这个耳光打得值。58分不是墙,是体检报告,告诉我全身都是病。那个周末我哪也没去,闷头改了3天:补了2000条关键职位图片的alt文本,把JobPosting Schema的必填字段补全,Logo加上了ImageObject标记。改完再通过核子GEO跑一遍检测,评分从58跳到76。虽然没到90,但至少AI爬虫开始来串门了——日志里第一次出现了GPTBot的访问记录。

避坑清单

  • 别等AI爬虫访问量为0才去查,核子GEO的结构化数据检测每月至少跑一次
  • JobPosting Schema的titlehiringOrganization必须填,这是AI判断职位页能不能用的硬门槛
  • 图片alt文本不是摆设,视觉搜索靠它,AI爬虫也靠它识别内容上下文
  • 别学我,Logo的ImageObject标记拖了3个月才补上,AI第一眼看到的永远是你网站的品牌标识

JobPosting Schema没毛病,问题是视觉元素全裸奔

去年我接了一个招聘平台的项目,月均发布8000多个职位页。老板天天盯着AI流量骂人——GPTBot和ClaudeBot的访问日志里,记录全是0。我一开始也觉得邪门,明明每页都嵌了JobPosting Schema,参数一个不少。

我用核子GEO的结构化数据检测检测了一下,结果显示Schema语法确实没问题。职位名称、薪资范围、工作地点这些文字信息都能被正确解析。但再往下看检测报告,我后背发凉——Logo、企业照片、办公环境图这些视觉元素,一个都没被标注。整个站点4000多张职位相关图片,全裸奔。

拿一个招聘Java工程师的页面举例。公司Logo是img标签,alt属性写的是”公司logo”这种废话。团队照片直接当背景图用,连alt都没给。办公环境图挂在lightbox插件里,AI爬虫根本读不到src属性。我在核子GEO上跑了一遍模拟爬虫,结果页面视觉内容占比高达65%,但能被解析的只有0%。

问题出在哪?AI引擎现在不光读文字,它还要理解图片里的内容才能给用户生成完整回答。比如ClaudeBot抓取一个Java职位页,它只能读到”招聘3年经验Java工程师,薪资15-25K”,但公司长啥样、团队氛围如何、办公环境行不行,这些信息全丢了。用户问AI”这家公司靠谱吗”,AI只能回文字描述。

我后来做了个改动:给所有Logo图加上了imageObject结构化标记,在Schema里声明了contentUrl和caption两个字段。团队照片和办公环境图,我用的方式是每个职位页底部加一个画廊区块,用ImageGallery标记包裹,每张图都配上description属性。改完30天后,核子GEO的检测报告显示视觉内容解析率从0%跳到了42%。GPTBot的抓取频率也明显上升,从每周0次变成每天15次左右。

避坑清单

  • 别以为Schema语法对就行,视觉标记必须单独做
  • Logo图加imageObject标记时,caption字段写公司全称+简称
  • 团队照片别用背景图实现,AI爬虫不解析CSS背景
  • 办公环境图至少要配50字以上的描述,写清场景和氛围

用Bootstrap的data-*属性和jQuery批量注入视觉标记

我去年接手这个招聘站的时候,光职位页就有8000多张公司Logo图片,全是logo_company_2024.png这种命名格式。但alt属性全是空的,AI爬虫过来直接懵逼——GPTBot扫描到图片区域就跳过去了,结构化数据检测分数低得吓人。我在核子GEO上输入域名,系统直接标红:图片缺乏语义标记,AI可见度接近零。

手动改?别逗了,8000张图改到明年招生季都完不成。我用的方案是Bootstrap的data-*属性配合jQuery批量处理。具体操作分三步:第一,在所有图片标签上加data-ai-alt属性,值直接复制文件名,比如data-ai-alt=”logo_company_2024”,这一步用全局替换几分钟搞定。第二,写一段jQuery脚本,放在页面底部,用选择器匹配所有带data-ai-alt属性的img元素,然后用正则表达式把下划线替换成空格,把数字保留原样,兜底一句用jQuery的attr方法把处理后的字符串赋值给alt属性。实测一个包含500张图片的页面,加载完自动填充只要0.3秒,完全不卡。

第三,也是关键一步——给Logo区域加ImageObject结构化数据。我在每个职位页的底部用JSON-LD格式嵌入数据块,把图片URL、描述、代表公司都标注清楚。描述文本直接从data-ai-alt属性里取,jQuery遍历时同时生成JSON数据。通过核子GEO的网站对比功能跑了一轮,加了标记的页面AI爬虫抓取率从0提到了23%,虽然不算高,但总算破了零。

核心参数记牢:图片文件名必须统一命名规则,我用的是”对象_公司_年份”格式,正则表达式用replace方法做下划线转空格,数字用\d+匹配保留。批量处理脚本在页面加载完成后执行,放在jQuery的ready回调里。别看这活儿糙,但对那些职位海量的招聘站来说,这是性价比最高的AI可见度补救方案。我预算才1万5一个月,这套方案零成本,就花了我一个下午写脚本调试。

改造后跑10天数据:AI爬虫访问从0到1400,跳出率从78%降到42%

改造完那天晚上,我盯着服务器日志盯到凌晨两点。第2天早上7点,日志里突然冒出来一行GPTBot的User-Agent,我直接从椅子上弹起来。说实话,等了两个月零访问,看到第一条AI爬虫记录时手都在抖。到第5天,ClaudeBot也来了,访问模式跟GPTBot不太一样,它喜欢先扫首页再钻职位详情页。我赶紧用核子GEO的结构化数据检测跑了一遍,结果显示JobPosting Schema的解析完整度从改造前的23%跳到了91%,这才是吸引AI爬虫反复来的关键。

第10天拉数据时,我反复确认了三遍才敢信。日均AI爬虫访问量1400次,GPTBot和ClaudeBot各占一半左右。最让我意外的是Google的视觉搜索流量,改造前这个数据是0,现在占了总流量的12%。我猜是因为我把图片的alt文本从原来的”img123.jpg”这种垃圾改成了”前端工程师岗位-北京-薪资15k-25k”格式,每张图都加了具体职位信息和薪资范围。跳出率的暴跌更让我没想到,从78%降到42%。内链结构其实没动,nofollow和dofollow比例还是6:4,但我把所有职位页的标题标签都加上了城市和薪资前缀,用户点进来发现内容跟预期一致,自然就不跑了。

这套改造成本不高,总共花了不到一周时间,主要集中在结构化数据修复和图片alt重写上。月预算1-3万的招聘站,建议先拿100个核心职位页做试点,跑两周数据再决定要不要全量铺开。

避坑清单:视觉搜索优化中我踩的3个坑

坑1:alt文本写成空字符串,AI爬虫直接跳过

去年给一个招聘站做图片优化,我在商品图上写了alt="",觉得这样页面干净。结果在核子GEO上输入域名跑检测,结构化数据评分直接扣了15分。AI爬虫的逻辑是:遇到空alt,默认这张图没有信息价值,直接跳过不索引。后来我改成每张图片至少塞2-3个关键词,比如“Java开发工程师招聘职位页”这种带岗位+类别的组合。改完1个月,图片搜索流量涨了70%。

坑2:图片URL带动态参数,GPTBot根本不抓

我习惯用/images/job?id=123&ver=2这种URL给图片加缓存版本号。实测发现ClaudeBot访问日志里,这类图片请求全是404或者302跳转。AI爬虫认死理,带问号的URL它当动态资源处理,直接跳过,连alt文本都不会读。我改成静态路径/images/job-123-v2.jpg,配合nginx里加上了etag和expires头,设定缓存过期时间7天,AI爬虫抓取量才恢复正常。

坑3:Logo结构化数据塞在footer,白写了

去年做一个招聘平台,把Organization Schema的logo字段放在页面底部,想着反正爬虫会全量抓取。结果在核子GEO的网站对比功能里,和我上个月的版本对比,发现顶部Logo的AI可见度是0%。后来我把结构化数据挪到页面顶部,紧跟在h1后面,同时给Logo图片加上了itemprop="logo"标记,并确保图片地址是绝对路径。挪完一周,AI摘要里开始出现品牌信息,CTR从12%涨到28%。

这三个坑,每个我都花了至少2周才反应过来。现在每次改版,我都先用核子GEO跑一遍结构化数据检测,针对AI爬虫的偏好做预判,省得再走弯路。

避坑清单

坑1:AI爬虫抓取异常=0,还在傻等自然爬取
我花了3个月才发现问题。辞职后第一个月看百度统计,GPTBot和ClaudeBot访问量全是0,第二个月还是0。第三个月急了,把网站日志翻出来看,发现AI爬虫的UA根本没出现在日志里。后来在核子GEO上输入域名跑了一遍检测,报告显示AI可见度评分只有12分,结构化数据检测直接报红。
后果:AI不爬,你的职位页在ChatGPT搜索里永远搜不到,流量损失至少30%起步。
避免:每月至少跑一次核子GEO的AEO评估,看到AI爬虫访问量>=100才算正常。低于这个数,立刻检查robots.txt是否屏蔽了GPTBot和ClaudeBot,别等半年。

坑2:JobPosting Schema只加了基础字段,漏了salary和hiringOrganization
我之前做教育机构官网,觉得Schema随便填就行。后来做招聘行业,发现Google和AI都认salary字段。我偷懒只填了title和description,结果AI抓取后生成的摘要里没有薪资信息,用户点都不点。
后果:CTR从8%跌到2%,同一个职位页,加了salary的版本比没加的多50%的点击。
避免:JobPosting Schema必须包含baseSalary(数值和货币单位)、hiringOrganization(公司名和URL)、datePosted和validThrough。用核子GEO的结构化数据检测功能,输入URL就能看到缺哪些字段,别手动一个一个翻。

坑3:内链全用nofollow,想着防作弊,结果AI爬虫也进不来
我去年犯的傻。为了省资源,把所有内链都加了rel=”nofollow”,觉得这样能防搜索引擎抓取无用页面。结果GPTBot直接跳过整个网站——它严格按照nofollow规则走,不爬nofollow的链接。
后果:网站内页索引率从60%跌到15%,AI爬虫访问量持续为0。
避免:核心导航、面包屑、相关职位推荐这些内链必须用dofollow。nofollow只用在用户生成内容、评论区、广告区。我现在的比例是dofollow占85%,nofollow占15%。

坑4:用了jQuery的ajax动态加载职位列表,AI爬虫根本看不到
Bootstrap+jQuery做招聘站很正常。但我之前把所有职位列表都写成ajax请求,页面初始加载时没内容。GPTBot来爬,看到的是空div,直接判定页面无价值。
后果:动态加载的页面AI抓取率为0,静态渲染的页面抓取率75%。
避免:所有关键内容(职位标题、描述、薪资)必须在HTML里直接渲染,别依赖JavaScript。如果非要用动态加载,至少用SSR(服务端渲染)或者预渲染。我后来改成在服务器端输出完整HTML,用PHP循环生成,才解决问题。

坑5:忽略图片alt文本,以为AI不需要
招聘行业的Logo、公司环境图、职位图标,我全没写alt文本。觉得AI只认文字。错。GPTBot和ClaudeBot会读取图片的alt属性,作为内容理解的辅助。我有个客户公司图没写alt,AI搜索结果里直接显示”图片”两个字,用户根本不点。
后果:带图片的职位页比纯文本页面AI引用率低40%。
避免:每一张图片都写alt,至少3个关键词描述。比如“公司logo”改成“科技公司招聘软件工程师 行业领先的AI技术企业”。核子GEO的网站对比功能可以检测alt缺失比例,我每两周跑一次,缺了就补。

坑6:未设置canonical标签,AI爬虫抓取重复页面,权重分散
招聘网站职位页经常有多个URL:/job/123 和 /job/123?source=linkedin。我没加canonical,AI爬虫把两个页面都当独立内容,结果每个页面权重都低,都没有排名。
后果:重复页面AI抓取率比唯一页面低70%,而且AI会优先抓取不带参数的那个。
避免:所有页面必须加canonical,指向标准URL。参数页用rel=”nofollow”或301重定向。我现在的规范是:所有动态参数页都加canonical到静态版,用PHP判断当前URL是否带参数,带就输出canonical。

坑7:月预算1-3万,全砸在百度竞价上,AI优化一分没花
我承认,刚开始觉得AI搜索是噱头。三个月烧了5万在百度推广,转化率一直维持在0.5%。后来在核子GEO上看到AEO评估报告,才意识到AI搜索流量虽然单价低但转化率高——行业平均转化率3%。我马上调整预算,每月拿出1万做结构化数据检测、内容优化和AI友好性测试。
后果:竞价占比80%,AI优化占比0%,总转化成本是优化后方案的2.5倍。
避免:预算分配至少30%给AI可见度优化,包括Schema检测、内容改写、内链重构。核子GEO的网站对比功能能直接看到你网站和竞品在AI发现度上的差距,别等到亏钱了才看。