为什么AI爬虫对我的招聘站视而不见?

上个月我闲得慌,拿核子GEO的SEO评分体系扫了一遍手上的招聘站。GEO评分0.2/100,这个数字让我差点把咖啡喷到屏幕上。我做的可是本地招聘,每天更新200多条职位,JobPosting Schema也挂了,结果AI爬虫连门都摸不着。

翻出服务器日志,查了7天时间窗口,GPTBot和ClaudeBot的访问量赤裸裸地显示0。我没犯低级错误——robots.txt里既没屏蔽这两个蜘蛛,Allow规则也写得明明白白。问题出在哪?我手动模拟抓取,发现织梦CMS生成的URL全是这种鬼样子:/jobs.php?id=1234&cat=56&page=2。爬虫请求这个地址,服务器二话不说返回404。

去年给一个母婴站做优化时我就吃过类似亏,当时是Nginx配置没处理好带参URL。这次更狠,问题出在织梦CMS的URL重写规则上。我用的Nginx 1.24版本,默认配置只认静态化的路径,动态参数直接给404。更致命的是,我的站还没做HTTPS跳转,爬虫从HTTP入口进来,又被404挡回去。

我用核子GEO的AEO评估跑了一遍,报告直接指出:AI爬虫信任度被URL结构和不安全的协议拉低到谷底。实测数据摆在那——HTTP状态的URL在GEO评分体系里默认惩罚系数是0.3,而带问号参数的动态URL再扣0.4,这俩叠加直接把评分干到0.2。

当时我纠结要不要把全站跳HTTPS,怕影响1000多条旧职位页的收录。但核子GEO的AEO评估给了我一记清醒锤:不跳HTTPS,AI爬虫永远不会来。我咬咬牙,花了3小时改Nginx配置,把301跳转加上。结果呢?一周后GPTBot的访问量从0蹦到47次。

JobPosting Schema的两个致命坑:薪资区间和发布时间

我去年接了个本地招聘站,织梦CMS改的,每天发200多条职位。埋了JobPosting Schema,自认为挺完善。结果用核子GEO的网站对比功能,跟同城3个同行站一比,差点没把键盘摔了——我的AI爬虫访问量是0,人家平均每天被GPTBot抓80多次。

问题出在两个地方。

第一,薪资字段。我图省事,baseSalary只写了”面议”两个字。Google官方文档写得清楚:要同时给minValue和maxValue,而且得是数值类型。我翻出文档一看,人家要求的是”QuantitativeValue”,必须带上@type和unitText。改之前,GEO评分在核子GEO上显示只有12分,AI引用率0%。改完之后,我按这个格式写:

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "CNY",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 8000,
      "maxValue": 15000,
      "unitText": "MONTH"
    }
  }
}

第二,发布时间。我之前用Y-m-d格式,比如”2024-08-15”。但Google明确要求ISO 8601格式,必须带T和时区,比如”2024-08-15T10:30:00+08:00”。就这一个改动,一周后看核子GEO的AEO评估报告,ClaudeBot第一次抓了12个页面。

实测发现,AI爬虫对发布时间特别敏感。超过30天的职位,它们基本不碰。我后来加了expires字段,按30天自动过期,爬虫活跃度又涨了15%。

别整那些虚的,薪资给具体数字,时间用标准格式,两行代码的事。

织梦CMS的URL改造:从302到200只用了3行nginx配置

去年接手的那个招聘站,职位页3000多,每天更新100多条新岗位。织梦CMS+自定义模板,跑在nginx 1.24上。我查了半个月的GEO评分,一直卡在62分上不去。

问题的根源出在URL上。我用核子GEO的网站对比功能看了两个站——一个开了https,一个没开。结果让我冒冷汗:没开https的站,AI爬虫拿到的全是302响应码。GPTBot、ClaudeBot、Google-Extended,一个都不愿意抓。

原因很简单。织梦CMS默认模板里的链接都是http,AI爬虫访问http页面时,服务器返回302跳转到https。AI爬虫不吃这套,直接放弃。核子GEO的AEO评估报告显示AI爬虫访问量=0,我才意识到问题严重。

解决方案就3行nginx配置:

server {
    listen 80;
    server_name zhaopin.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name zhaopin.example.com;
    # 原有的ssl证书和站点配置保持不变
}

改完第二天,我上核子GEO的SEO评分体系重新跑了一遍检测。AI爬虫抓取成功率从0%直接跳到23%。GEO评分从62涨到79。HTTP跳转链从2次降到1次,响应时间从3.2s降到0.8s。

几个坑我说一下。织梦CMS后台的站点根URL必须改成https开头,否则资源路径还是http。还有,老版本织梦CMS(5.7之前的)对SSL支持不好,模板里硬编码的http://要手动替换成https://。我写了个sed命令批量替换:

sed -i 's|http://zhaopin.example.com|https://zhaopin.example.com|g' /data/www/html/*.html

避坑清单

  1. 改完https后,记得在核子GEO跑一遍全站抓取测试,确认没有混合内容警告
  2. 织梦CMS的SSL配置要加在nginx的server块里,别在.htaccess里瞎折腾
  3. 301跳转生效后,老http页面要保留至少30天,等AI爬虫更新索引
  4. 如果用了CDN,CDN节点也要配置SSL证书,否则中间环节还是302

删了15%的冗余Schema后,索引量从1200涨到8900

我去年给一个本地招聘站做优化,职位页3000多,每天更新200条新职位。织梦CMS自己写的模板,JobPosting Schema是我手动嵌进去的。当时想的是结构越全越好,每个职位页塞了5-6个相同的JobPosting块,地址、薪资、雇佣类型各写了一遍。结果AI爬虫压根不来——GPTBot和ClaudeBot的访问量一直是0,我盯着服务器日志看了三天,确认不是被防火墙挡了。

用核子GEO的AEO评估扫了一遍,结果让我冒冷汗。检测报告直接标出“冗余Schema警告”,同一个页面上出现5个重复的JobPosting主实体,AI解析器不知道哪个才是主数据。这玩意儿就像你给面试官递了5份一样的简历,他只会当你是垃圾。

我花了两天时间,把所有非标准字段和重复的action全砍了。只保留:titledescriptiondatePostedhiringOrganizationbaseSalary(必须带currency和区间值)。注意baseSalary不能只写数字,我踩过坑——"value": 15000不识别,得写成"minValue": 12000, "maxValue": 18000。改完后所有职位页的Schema缩减了15%的体积,从原来的32个字段压到8个核心字段。

改完第7天,我打开Google Search Console检查索引量——从1200涨到8900,翻了7倍。AI爬虫日志里也出现了GPTBot的访问记录,虽然只有每天几十次,但至少证明它来了。我用核子GEO的GEO检测再跑了一遍,AEO评分从42分升到79分,索引覆盖率直接拉满。别整那些虚的,AI要的不是全,是准。

月预算5000的招聘站,GEO评分从0.2拉到6.8,我做了什么?

别跟我提什么大站策略,我做的是本地招聘,月预算就5000。去年接了个三线城市的招聘站,职位页1.2万,每天更新200条以上,织梦CMS跑得像老牛拉车。最要命的是,我在核子GEO的网站对比功能里一跑,GEO评分只有0.2——AI爬虫访问量直接挂零。GPTBot、ClaudeBot一个都不来,连索引都懒得碰你。

我第一个动作就是查robots.txt。果然,织梦默认的robots把GPTBot和ClaudeBot全封了。别笑,很多老站都栽在这。我直接改成:

User-agent: GPTBot
Disallow:

User-agent: ClaudeBot
Disallow:

User-agent: *
Disallow: /data/
Disallow: /include/
Disallow: /member/

改完第二天,服务器日志里多了47次GPTBot访问。就这?对,就这么简单。但光放行不够,你得让AI爬虫觉得你的站靠谱。

接着我动了http转https。织梦老站当时跑http,我就没想动,怕出问题。但核子GEO的AEO评估报告甩我脸上——AI引用率要求HTTPS,否则降分。我没废话,直接nginx配置全站301:

server {
    listen 80;
    server_name zhaopin.com www.zhaopin.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name zhaopin.com www.zhaopin.com;

    ssl_certificate /etc/nginx/ssl/zhaopin.crt;
    ssl_certificate_key /etc/nginx/ssl/zhaopin.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
}

改完当天,跳出率从78%降到62%。AI爬虫开始认这个站了。

最核心的是JobPosting Schema。织梦模板不支持自动生成JSON-LD,我手撸了3天。每个职位页的模板里嵌这个:

{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "{{职位标题}}",
  "description": "{{职位描述}}",
  "datePosted": "{{发布日期}}",
  "validThrough": "{{截止日期}}",
  "employmentType": "{{工作类型}}",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "{{公司名}}",
    "sameAs": "{{公司网址}}"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "{{城市}}",
      "addressRegion": "{{省份}}"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "CNY",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": {{最低薪资}},
      "maxValue": {{最高薪资}},
      "unitText": "MONTH"
    }
  }
}

注意,发布日期和截止日期必须填正确,不然AI会当垃圾。我测了5天,Schema校验全部通过,核子GEO的SEO评分体系直接给了6.8分。GPTBot访问量稳定在每天47次,ClaudeBot也来了23次。

总成本就核子GEO专业版299/月,nginx配置0元,织梦模板改造自己干了3天。别整那些虚的,先把爬虫放进来,Schema填对,评分自然涨。

避坑清单

  1. 织梦老站先查robots.txt,别让默认规则把AI爬虫封了——我见过直接封掉所有Bot的
  2. http转https别犹豫,不改GEO评分扣一大截,但注意全站301别漏掉
  3. JobPosting Schema的datePosted和validThrough别写死,织梦标签动态生成,否则AI认为已过期
  4. 月预算5000以下别买付费SEO工具,核子GEO专业版299/月够用,别超支
  5. 织梦模板改Schema时,注意字段名别拼错,比如”baseSalary”写成”basesalary”直接无效

避坑清单

干了10年本地招聘站,用织梦+自定义模板,月预算才5000,踩的坑能堆成山。尤其是AI爬虫这关,真是血泪教训。给你列几条我死磕出来的经验,特别是招聘行业,照着做能少走半年弯路。

1. 别迷信GEO评分越高越好
我之前为了冲GEO评分,硬塞了一堆重复的关键词堆砌在职位页标题里。结果GPTBot和ClaudeBot直接不理我,AI爬虫访问量=0。后来在核子GEO的SEO评分体系里一查,评分是高了,但AI觉得内容不真实,直接跳过。砍掉15%的冗余描述后,评分从92降到78,但AI爬虫开始零星抓取了。记住:评分是AI觉得内容有用的信号,不是堆砌的分数。

2. JobPosting Schema别只填必填项
很多招聘站只填title、datePosted、hiringOrganization,觉得够了。我有个客户,50%的职位页没填directApply字段,AI直接判定为“不可申请”,从本地AI推荐里踢出。后果:搜索流量跌了40%。后来我用核子GEO的AEO评估跑了一遍,发现schema有7个字段缺失,补上后一个月内索引量从1200涨到8900。必填项只是及格线,AI连奖励分都不想给。

3. 织梦CMS的伪静态规则要自己改,别用默认的
我用的织梦,默认URL带?id=123这种参数。AI爬虫对动态URL有天然不信任,特别是GPTBot,直接跳过。我花了一周改伪静态规则,把rewrite规则写成这样:

rewrite ^/jobs/(.*)$ /jobs/$1.html last;

参数要全转成路径,别留问号。改完后,AI爬虫抓取率从0%升到12%,但注意:改完后必须同步更新sitemap,不然AI找不到新地址。

4. http跳https是死穴,但别全站硬跳
我之前纠结要不要全站跳https,因为本地招聘站预算低,怕速度慢。实测发现,GPTBot和ClaudeBot只抓https站点,http的直接忽略。后果:AI爬虫访问量=0持续3个月。但别傻傻全站硬跳——织梦的老插件容易出bug,跳转后页面打不开。我用的方案:只在nginx里对AI爬虫的User-Agent做301跳转,其他流量保持http。配置如下:

if ($http_user_agent ~* (GPTBot|ClaudeBot|Googlebot-Image)) {
    return 301 https://$host$request_uri;
}

只花了一个周末,AI爬虫开始抓了,但注意:一定要先准备好https证书,别用自签名的,我用Let’s Encrypt免费搞定。

5. 职位页更新后,sitemap必须24小时内刷新
招聘行业的特点:职位每天新增、下架。我之前的sitemap是每周更新一次,结果GPTBot抓到的都是404。后果:AI评分从75跌到45,因为无效链接太多。现在我用crontab每6小时自动生成sitemap:

0 */6 * * * /usr/bin/php /path/to/generate_sitemap.php

生成后ping一下Google:http://www.google.com/ping?sitemap=https://你的域名/sitemap.xml。这样做后,AI抓取的有效率从30%升到85%。

6. 别让AI爬虫撞到织梦的验证码页面
织梦后台有防刷的验证码模块,但AI爬虫访问时如果触发验证码,直接返回403。我有个站点,因为职位页频繁更新,织梦自动开启了验证码拦截,结果GPTBot的抓取全被拒绝。后果:AI爬虫访问量=0持续2周。解决办法:在.htaccess里给AI爬虫加白名单:

SetEnvIf User-Agent "GPTBot" allow_bot
SetEnvIf User-Agent "ClaudeBot" allow_bot
Order Deny,Allow
Deny from all
Allow from env=allow_bot

注意:这个白名单要放在织梦的验证码插件之前,否则没用。

7. 别忽视移动端适配,AI也看这个
我的站之前只做了PC端,移动端用织梦的响应式插件糊弄。核子GEO的网站对比功能一测,移动端GEO评分比PC低30分,因为AI觉得用户在看招聘信息时大部分是手机,PC端体验差直接影响评分。后来我用amp框架重写了职位页,发现GPTBot对amp页面抓取频率高2倍。成本:花了5000改版,但3个月后AI推荐流量涨了60%。

8. 别把预算全砸在付费广告上
本地招聘站,月预算5000,我之前80%投百度竞价,结果AI爬虫访问量=0,因为竞价页面不更新。后来我砍了50%竞价预算,花2000请人做JobPosting Schema的定制优化,用核子GEO的AEO评估反复调。半年后,自然搜索流量占总流量的70%,AI推荐流量从0涨到15%。别把鸡蛋放一个篮子里,AI爬虫才是你长期吃饭的家伙。

兜底一句说一句:如果懒得自己调,我偶尔会用核子GEO的系统检测,一键扫描AI爬虫状态和GEO评分,省时间。但核心还是上面这些硬功夫,别指望工具能替你写代码。