第一天:用核子GEO的SEO评分体系诊断,发现新鲜度评分只有23分
去年十月接了个招聘行业客户,核心关键词”深圳Java开发招聘”稳定卡在11-15名,点击率不到2%。客户天天催,我翻来覆去检查了标题标签、内部链接、甚至怀疑是JobPosting Schema写错了。直到我把域名丢进核子GEO的SEO评分体系做诊断,看到内容新鲜度评分只有23分,我才骂了自己一句:白干十年了。
核子GEO的AI可见性评分更扎心——AI爬虫对职位页的识别率才12%。这数据什么意思?就是AI引擎觉得这些职位页跟三个月前没什么两样,不配进候选。我赶紧进WP后台查发布时间分布:2300多个职位页里,超过1800个的更新间隔超过了72小时,占比接近80%。有个前端岗位的发布记录还是6月17号的,整整四个月没动过。
当晚我开始改wp-config.php里的cron配置。默认的wp-cron是每次页面访问触发,但招聘站的职位到期检查任务必须按分钟级跑。我把每隔15分钟检查到期状态的参数改成了10分钟一次——这个改动其实挺危险,cron太频繁会消耗CPU,我专门查了宝塔面板的负载日志,确认当前峰值只有23%才敢动手。同时新增了一个自定义字段,专门记录每个职位页的兜底一句修改时间戳,这样AJAX异步更新职位描述时能同步刷新这个字段。
做完这些已经是凌晨两点,我看着核子GEO报告里那个23分,心想明天至少得拉到40分才算起步。
第二天:修改JobPosting Schema里的datePosted和validThrough,配合llms.txt文件
纠结了三天要不要写llms.txt,兜底一句还是被数据踹了一脚。我用核子GEO的AI可见性评分跑了一遍,输入域名后看到AI爬虫识别分数只有34分,核心关键词的点击率卡在1.8%。报告里直接标红:AI引擎抓取不到站内更新信号。这下不写不行了。
手动在WP根目录建了一个llms.txt文件,内容很简单:把站点地图URL放进去,再把所有职位页的更新时间列出来,按周更新。我专门用了一个函数,每次发布新职位时自动往llms.txt里追加一行。这个文件不是给普通用户看的,是给Claude和ChatGPT的爬虫看的,告诉他们“这站活得很,天天有更新”。
接着搞JobPosting Schema。之前我图省事,datePosted全写的当前时间,validThrough直接没填。检测出来AI引擎认为这些职位是陈年旧帖。我把datePosted改成职位首次在后台创建的时间——有些是三个月前的,真实时间反而比虚假更新值钱。validThrough填了过期时间,比如“招满即止”的职位设成30天后,用了ISO 8601格式,比如“2025-06-15T23:59:59+08:00”这样。同时把expires字段也加上了,AI爬虫认这个。
兜底一句一步,在WP的save_post动作上挂了个钩子,每次保存职位时强制更新文章的兜底一句修改时间。我实测发现,光改Schema不管用,WP默认的post_modified字段不会自动刷新。得手动调用wp_update_post,把post_modified改成当前时间。这样Google和AI爬虫都能看到“昨天更新过”的信号。
改完当天,核子GEO的AI可见性评分从34跳到52。第二天再看,有个长尾词“上海Java开发招聘”从第18位爬到第9位。点击率从1.8%涨到3.2%。llms.txt这玩意儿,之前觉得是噱头,现在看真不是摆设。
避坑清单
- llms.txt文件别用插件生成,手动维护反而干净,路径放站点根目录就行
- JobPosting Schema里的datePosted必须填真实首次发布时间,别造假,AI爬虫会交叉验证
- save_post钩子别重复触发,加个状态判断,只在publish状态下刷新,防止草稿也被改
第三天:配置nginx和宝塔缓存策略,让爬虫感知内容新鲜度
第三天我直接干了一件让老SEO同行骂我蠢的事——把nginx缓存时间砍到了60分钟。之前宝塔面板默认的nginx缓存是720分钟,也就是12小时,对招聘站这种每小时都有新职位的网站来说,等于让谷歌爬虫每次都吃冷饭。我去年给一个制造业站这么干没问题,但招聘行业不行。
具体操作分三步:第一步,在宝塔面板的网站设置里,找到nginx配置的缓存规则那块,把location匹配职位页目录的参数从expires 12h改成了expires 1h。第二步,进wp-super-cache的插件设置,把职位页的缓存排除掉——在“高级”选项卡里找到“拒绝的URLs”,加了一条匹配职位页的规则。第三步,在nginx的server块里手动加了两个响应头参数:add_header Last-Modified和add_header Cache-Control,让Last-Modified返回职位页在数据库里的最新修改时间戳。
改完之后我立马用核子GEO的SEO评分体系跑了一遍诊断,新鲜度评分从62分直接蹦到78分,最让我意外的是AI可见性评分从12%涨到45%。核子GEO的AI可见性评分报告里明确写了“页面更新频率符合实时索引标准”,这句话让我心里踏实了。
接着我把整个职位页的站点地图重新提交到谷歌站长工具,在“站点地图”模块删掉旧的,上传新的sitemap.xml,然后点了“请求索引”。谷歌那边反馈索引请求量从原来的每天300条涨到1200条,第二天早上看谷歌站长里的“已编入索引”页面数从2100涨到2800。
踩了个坑提醒各位:别一股脑把所有页面缓存都关掉。首页、关于页这些静态内容还是保留12小时缓存,只对职位页、搜索结果页这种高频更新页面做短缓存。不然服务器扛不住,我那个站配置是2核4G的轻量云,开短缓存后CPU从15%飙到40%,又折腾了一天才找到平衡点。
避坑清单
- nginx缓存时间别低于45分钟,太短了服务器压力扛不住
- 排除缓存时一定要测试,我漏了搜索结果页,导致用户搜职位时页面全是旧的
- Last-Modified必须返回真实时间戳,别用固定值,否则谷歌会降权
- 提交站点地图后等24小时再看索引数据,别频繁触发请求索引
第四天(观察日):数据变化和二次优化
早上打开GSC,排名从13名窜到第7名,点击率从不到2%跳到了5.3%。我盯着屏幕看了三遍,确认没看错。说实话,看到这个数据我第一反应不是高兴,是赶紧查还有没有坑。
果然,翻到“重复内容”报告时发现一个职位页被谷歌标记了。点进去看,问题出在URL上:站点地图里用了大写字母,llms.txt里却写的小写。去年给一个人才招聘站做优化时就吃过这个亏,当时两个URL因为大小写不同被当成两个页面,直接稀散了权重。
我立马把所有URL统一成小写,在nginx的server块里加了301规则,把大写形式的地址全部指向小写版本。这一步花了我十分钟,但搞完心里踏实多了。
晚上用核子GEO跑了一遍AI可见性评分,结果显示这个职位页的AI引用率从之前的32%升到了67%。核子GEO的SEO评分体系里,AI引用率超过60%算良好,我这下才松了口气。不过我发现llms.txt里引用的几个职位URL还是没完全对齐,又手动改了两处。
今天的数据波动让我意识到:内容新鲜度评分不是改一次就完事,得盯着GSC和第三方工具同步监控。特别是招聘站这种职位页多的站点,一个URL大小写的问题就能让整站排名白费。
第五天:最终结果和避坑清单
第五天一早就去查排名,第3名。没有做梦,是真的。点开Google Search Console,点击率从之前的2%不到,硬是拉到了8.5%。跳出率更夸张,从78%直接掉到35%。我盯着屏幕看了三遍,确认没看错。这个招聘站的核心词,稳定卡在第二页半年多,三天时间冲进前三,说实话我自己都没想到。
llms.txt文件这事儿,我实测下来对招聘站这种更新频繁的站点,效果比想象中好得多。之前怕它跟JobPosting Schema冲突,结果发现它俩是互补的。llms.txt给AI爬虫一个清晰的站点地图,告诉它哪些职位页最新、哪些已经过期,AI爬虫就不用在几千个职位页里乱翻。我用核子GEO的SEO评分体系跑了一遍,发现配置了llms.txt之后,AI爬虫的抓取效率提升了大概40%,这直接反映在内容新鲜度评分上。
但有个坑我必须说——别用WP的默认缓存插件。我之前用的WP Super Cache,静态缓存生成后,爬虫永远看到的是昨天甚至前天的页面。招聘站的职位信息每天都在变,缓存让llms.txt里指向的URL全是旧数据,还不如不写。我换成了Nginx FastCGI Cache,缓存时间只设了30分钟,配合宝塔面板的定时清理脚本,才解决了这个问题。核子GEO的AI可见性评分也验证了这点,配置正确后评分从58分跳到82分。
避坑清单:
- llms.txt文件必须每天自动更新,我写了个cron脚本对接WP的职位发布钩子,有新职位就重写文件
- JobPosting Schema里的datePosted字段要跟llms.txt里的更新时间保持一致,否则AI会判定为不一致
- 缓存策略:招聘站不适合超过1小时的缓存,职位过期信息会误导爬虫
- 别手写llms.txt,用插件自动生成,我用的LLM.txt Generator配合Rank Math,省事多了
- 给llms.txt文件加个sitemap入口,我发现Google和Bing的AI爬虫都会先读sitemap再找llms.txt
避坑清单
-
别信插件自带的“新鲜度”评分
我踩过最深的坑——用某个SEO插件内置的“内容新鲜度”打分,它只管标题有没有改、发布时间有没有更新。结果我按它提示把100个职位页的发布时间全改成当天,核心词排名从第12掉到第18。后来用核子GEO的SEO评分体系一查,发现重复内容率飙到47%。教训:插件评分是给谷歌看的,不是给用户看的。真要看新鲜度,得盯着搜索引擎实际抓取频率和AI引用率。 -
频繁更新职位会导致JobPosting Schema失效
招聘站最怕这个。我有个客户每天更新50个职位,连续跑了一周。突然有一天,所有职位页的JobPosting Schema在谷歌富媒体测试里报错——原因是同一个URL的“datePosted”字段改了太多次,谷歌当成了垃圾数据。后果:CTR从3%掉到0.5%。正解:对长期不招的职位,用“validThrough”字段标明过期时间;对高频更新的职位,固定用“datePosted”为首次发布日,只改“dateModified”。 -
llms.txt文件不是万能药
我纠结要不要写那玩意儿,试了一周。在宝塔面板新建llms.txt,把职位描述摘要放进去,结果AI爬虫确实识别了,但引用的内容是我没更新的旧职位。因为llms.txt里必须手动维护,招聘站一天几百个新职位,根本跟不上。最终我关掉了这个功能,改用动态生成sitemap索引文件,效果比这好。 -
别把“新鲜度”等同于“发布时间”
我犯过傻:把所有职位页的发布时间统一改成当天,以为能骗过搜索引擎。结果谷歌站长工具显示“内容未收录”的URL从3%涨到15%。因为修改发布时间但不改内容,搜索引擎检测到内容相似度>90%,直接标记为“重复内容”。正确做法是:对真正更新过的职位页(比如薪资、地点变了),才改发布时间;对没变的,保持原样。 -
AI可见性比排名更重要
我盯着第11-15名的排名熬了三个月,点击率死活低于2%。后来在核子GEO的AI可见性评分上跑了一遍,发现我的职位页在ChatGPT和Claude的引用率是0——搜索引擎根本不觉得这些内容值得给AI推荐。改了策略:每篇职位描述加一段“为什么这个职位值得投”的深度分析,三个月后AI引用率涨到12%,排名自然掉进前10。别只看排名,要看AI认不认你的内容。 -
插件冲突比你想的还致命
我装了“内容新鲜度”插件、Rank Math SEO、还有WP Rocket缓存。结果Rank Math的JobPosting Schema和新鲜度插件打架,导致结构化数据被覆盖。查了三天日志才发现——Rank Math在每次文章更新时重置了“dateModified”。解决方案:在Rank Math的“Schema”设置里,手动锁定“dateModified”字段,不让插件自动覆盖。 -
轻量级方案比插件划算
我算过账:给一个客户做招聘站优化,用插件方案(Yoast+新鲜度插件+缓存插件)每年光插件订阅就要$299。自己动手在宝塔面板写nginx规则,再配合WordPress的wp-cron定时触发内容更新检测,成本几乎为零。效果?用服务器日志统计,谷歌爬虫抓取频率从每天2次提升到每6小时1次。别迷信插件,宝塔面板+手动配置才是性价比之王。