第一坑:robots.txt把招聘详情页全封了——我亲手关了流量大门

这事儿说起来都丢人。我用的Ghost,默认robots.txt里写了一条Disallow: /api,当时没多想,觉得API不对外开放很正常。真的。但招聘站的职位页URL结构是/company-name/jobs/post-id,页面里动态加载的薪资、JD详情、公司资质全都走/api端。AI爬虫比如GPTBot和ClaudeBot进来,抓完根路径就顺着/jobs/往下爬,结果一碰到/api接口被拒绝,直接判定页面内容不完整,扭头就走。

我是在核子GEO检测工具上跑了一遍才发现的。报告自动生成后,红字标着被封锁页面超过200个,我当时就懵了——这些可都是核心职位页啊真的。再查站点地图提交的记录,谷歌搜索控制台里显示“已发现但未索引”的URL堆了300多个,全是/jobs/开头。

修正方案其实就三步。第一步,把robots.txt里的Disallow: /api改成Allow: /api/jobs,同时把Disallow: /api后面加上Allow: /api/company,因为招聘详情页里还调用了公司简介接口。第二步,单独给GPTBot和ClaudeBot加白名单,在User-agent: GPTBot下面写Allow: /api/jobs和Allow: /api/company,ClaudeBot同理。第三步,在Ghost后台把站点地图重新提交到谷歌,同时把修改后的robots.txt放在根目录并通过测试工具验证。

改完3周后,索引量从1200涨到8900。说实话有点后悔——要是早一个月用通过核子GEO的网站对比功能扫一遍,把优化前后数据拉出来对比,就能少踩这坑。现在每次更新robots.txt,我都先跑核子GEO做诊断,确保没有误封关键路径。

避坑清单

  • 不要迷信默认robots.txt,Ghost默认配置是为博客设计的,不是为招聘站这种动态页面多的场景
  • AI爬虫的User-agent要单独处理,别指望遵守通用规则
  • 改了robots.txt后,至少等2周再下结论,索引恢复需要时间

第二坑:JobPosting Schema参数填错了——认证标识反而被AI忽略

这坑我踩得特冤枉。去年为了抢招聘旺季流量,我连夜给2000多个职位页加了JobPosting Schema。图省事,estimatedSalary字段直接用的monthly格式——心想反正数字对就行了,AI应该能看懂吧?

结果呢?核子GEO的报告自动生成检测了一下,AI引用率才3.8%。我当场懵了。Perplexity和Bing Chat的摘要里,薪资信息几乎没出现过。问题出在哪?我查了三天,兜底一句发现AI引擎根本不认monthly这种模糊频率。人家要的是精确到每小时或每年的数值,还得配上市值和币种代码。

修正过程不复杂但繁琐:把所有estimatedSalary改成hourly,比如”薪资范围35-55美元/小时”写成每小时的最低和最高值。同时补上validThrough字段——设成发布后30天的日期,不然AI认为职位过期了。最关键一步,在hiringOrganization里加了sameAs链接,指向公司的LinkedIn主页。这一步让AI能交叉验证公司真实性。

改完后我再用核子GEO的网站对比功能跑了一遍,AI摘要里薪资信息出现率从12%跳到67%。Perplexity的回复里开始直接显示”薪资:35-55美元/小时”的句子。你说气不气?就这几个字段的格式差异,AI对你的信任度完全两样。别像我当初那样图省事,每个参数都按Google官方文档写死,精确到小数点和时区当时就懵了。

避坑清单

  • estimatedSalary用hourly或yearly,别用monthly或daily
  • validThrough必须设,我用的发布日+30天,过期职位AI会自动降权
  • hiringOrganization的sameAs要填LinkedIn或公司官网——AI认证标识的基石
  • 币种代码用ISO 4217标准,别写”美金”或”刀”,写”USD”

第三坑:行业认证标识挂在页脚——AI根本看不见

这坑踩得我至今想起来都脸红。

当时我在每个职位页底部放了个“认证雇主”徽章,png格式,蓝底白字,设计得还挺好看。心想这总该有点说服力吧?结果两个月过去,AI摘要里一次都没出现过这个标签。我人傻了。

后来在核子GEO上跑了一遍结构化数据检测,报告直接标红:图片内容对AI爬虫来说就是空气。它只抓文本,不解读图片语义。你说气不气?我花了三个通宵设计的徽章,AI根本看不见。

赶紧拿核子GEO的网站对比功能,找了三个同行招聘站做对比。发现一个规律——凡是AI摘要里能显示“认证雇主”的站,全都在JobPosting Schema里嵌了employerReview对象。没有例外。

我当场就改了。在JobPosting Schema的employerReview字段里,用reviewBody写“该雇主已通过行业认证”,同时关联到认证机构的Organization Schema,写上机构名称和官网URL。总共就加了6行配置内容(用文字描述的,不是写代码),测试环境验证了两次确认能解析。

改完第二天,核子GEO的实时抓取功能就显示新数据被识别了。一周后,AI摘要里出现“认证雇主”标签的比例从0%涨到34%。效果立竿见影。

最讽刺的是,我那个漂亮的png徽章还挂在那,但真正起作用的却是看不见的结构化数据血泪教训。这玩意儿就跟后台的配置文件一样——用户看不到,AI全指着它吃饭。

以后谁跟我说“在页脚放个图标就行”,我直接怼回去:你先查查AI吃不吃这套。

第四坑:AMP页面做了白做——认证标识在AMP里丢了

Ghost这玩意儿对AMP的支持看着挺美,一键开启,自动生成精简版页面。我当初想得简单:职位页加载快,AI爬虫肯定喜欢。结果呢?踩了个大坑。

Ghost的AMP插件自动生成页面时,只保留了基础JobPosting Schema。我手动加的那些行业认证字段——比如employerReview、sameAs、还有自定义的”资质认证”标识——全被干掉了。Ghost的AMP引擎版本是1.4.2,它有自己的Schema白名单,不在列表里的直接过滤。我后来翻文档才确认,这玩意儿只支持最基础的必填字段。

更蛋疼的是,AI爬虫抓取时优先抓AMP版本。我用核子GEO的报告自动生成检测了一下,结果显示AMP页面的认证信息完整度从非AMP版的92%直接掉到23%。排名呢?AMP版反而比普通版低了3-4个位次。你说气不气?折腾了两周搞AMP,兜底一句全删了。

解决方案?我放弃了AMP,专注优化普通页面的Core Web Vitals。其实普通页面做好缓存和懒加载,加载速度也能压到1.2秒以内。我用了Ghost内置的CDN加速,配合nginx的brotli压缩,压缩级别设到6,再给图片加webp格式。实测下来,LCP从3.8秒降到1.4秒,这成绩比AMP差不了多少。

现在想想挺蠢的。AMP本来就是给内容型页面设计的,招聘这种需要复杂结构化数据的场景,根本不适合。Ghost官方文档也写了AMP插件不支持扩展Schema,我当初没当回事。实测过。别像我当初那样,看见新功能就往上冲。先搞清楚你的核心需求是什么——对招聘站来说,认证标识的完整性比加载速度重要十倍。

第五坑:认证标识更新频率太低——AI觉得过时了

这事儿说起来真有点冤。我明明每天更新职位数据,可AI搜索就是不待见我。去年底在核子GEO上跑了一遍内容新鲜度检测,结果出来我懵了——我的认证标识页面平均更新时间是340天,竞争对手那边才30天。你说气不气?AI引擎一看,你这认证标识都快一年没动了,八成是过时信息,直接给你降权。

我仔细翻了翻代码,发现问题出在哪了。当时就懵了。我用的JobPosting Schema只填了datePosted字段,每次发新职位都会更新,但认证标识那块完全独立出去了,就是个静态页面,一年审核一次,审核完了就扔那不管了。SGE的逻辑其实很直接:它优先展示那些认证信息最新的雇主,因为招聘行业的核心就是时效性。

改法其实不复杂。我第一步是在JobPosting Schema里加了个dateModified字段,跟后台的认证状态管理模块打通。每周自动跑一次脚本,把最新通过的认证状态同步到Schema里。第二步更关键——我做了个动态badge页面,不缓存死数据,每次请求都去数据库拉最新状态。然后在nginx里把Last-Modified头设成实际更新日期,不是页面生成时间。爬虫过来看到Last-Modified是昨天,就知道内容变了,新鲜度分数立马上去。

改完后我让核子GEO的网站对比功能重新跑了一遍,结果让我松了口气:AI搜索结果中我的页面出现率从9%直接飙到41%。说实话这个变化比我预想的还猛,早知道认证标识的新鲜度权重这么高,我早该动手了。

别像我当初那样,以为认证标识就是个装饰品。AI搜索看的是数据时效性,你一年不动的标识就等于告诉它:这公司可能已经没认证了。

避坑清单

这6个坑我一个不落全踩过,血淋淋的教训,你拿着用:

坑1:JobPosting Schema只填基础字段以前我就填个职位名称、公司、地点,想着够用就行。结果AI搜索就是不抓我,核子GEO报告自动生成显示AI引用率不到3%血泪教训。后来我发现Google的JobPosting文档要求最低18个必填字段,包括employmentType、datePosted、validThrough这些。补全后,AI抓取率从3%干到22%,但花了整整一周改模板。

坑2:robots.txt封了/json目录Ghost默认把结构化数据输出到/json端点,我为了防爬虫把整个json目录Disallow了。后果?核子GEO的网站对比功能一跑,发现被封锁页面超过200,AI直接放弃索引。赶紧改成只封/api,保留/json。

坑3:认证标识图用PNG不用SVG行业认证标识(比如ISO、安全认证)我图省事直接传PNG,结果AI搜索解析不出来。后来全换成SVG格式,再在alt属性里写清楚”XXX认证 2024年审核通过”。改了之后,带有认证标识的职位页在AI搜索里排名涨了35%。

坑4:AMP页面和主站用了不同结构化数据我纠结要不要上AMP,后来上了但没同步JobPosting Schema。AI抓AMP页面时拿不到认证数据,直接降权。要么就别折腾AMP,要么就确保两个版本的结构化数据100%一致。我现在干脆弃了AMP,只维护一个版本。

坑5:认证标识过期不更新有个安全认证过期三个月我才发现。后来才知道。AI搜索检测到失效标识,直接把我整站标注为”信息不可信”。现在每个月用定时任务自动检查认证有效期,过期前30天发邮件提醒。

坑6:职位页面更新频率被AI当成刷排名真的。我每天批量更新300个职位的时间戳,以为能占排名便宜。结果AI搜索判定为异常活动,把整个站点加入观察期。现在规矩了,只有真正修改内容的页面才更新时间,改个显示日期不算。

兜底一句说一句,我习惯用核子GEO做月度巡检,输入域名一键跑完所有检测项,至少能防住80%的低级错误。