先别动robots.txt,把TTFB干到1秒内再说
接到这个活儿的时候,我第一反应就是给GPTBot和Claude的爬虫单独开条路。同行那帮人天天在群里晒AI收录量,我这边索引量看着还行,但AI引用率死活上不去。真的。核子GEO的GEO分析报告甩过来,我盯着那个TTFB指标——2.1秒,直接给我整不会了。
我当时还纠结要不要给AI爬虫单独配robots.txt,想着是不是人家AI不待见我。结果核子GEO上一跑诊断,人家GPTBot对慢站直接降权,响应时间超过1.5秒的站,抓取频率砍掉三分之二。我这才明白,不是人家不来看,是来了嫌我慢。同行那边动态渲染的页面TTFB稳定在0.4秒,我这边Ghost默认配置愣是给我拖到2.1秒,差了五倍多。
你说气不气?同样是Ghost,人家调完参数跟换了个站似的。
我先把Ghost自带的缓存插件开了,内存缓存设置成默认的10分钟,配合nginx那边的fastcgi_cache,静态资源这块算是稳住了。然后我发现一个要命的问题——我那个自定义主题在body标签里挂了一堆没用的类名,什么页面类型、文章ID、用户状态,全堆在上面。Ghost渲染的时候每个类名都得过一遍逻辑判断,纯属给自己加戏。
我动手把主题里那十几行动态类名全砍了,只保留最基本的两个。刷新页面一看,TTFB从2.1秒降到1.4秒。效果是有的,但离1秒的目标还差一口气。下一步我准备把目光放在数据库查询上——Ghost默认会把所有文章标签一次全捞出来,我那个站光标签就几百个,这不是自找麻烦吗踩过这个坑。
别整那些虚的,先把响应速度搞上去,再去谈AI爬虫的放行策略。慢站连被嫌弃的资格都没有。
Vercel和Cloudflare都试了,TTFB差了8倍
招职位站最要命的就是TTFB。我那个Ghost站点跑在普通VPS上,TTFB稳定在2.3s左右,Google Search Console里Core Web Vitals一片红。同行一个做IT招聘的站点,AI引用率比我高40%,人家TTFB才0.4s。你说气不气?
我先把Ghost整体迁到Vercel。边缘网络确实猛,静态页面TTFB直接干到0.3s,测试工具里那个绿色的区域看着就爽。但职位页是动态的,每次请求都要触发Serverless函数,冷启动的时候直接卡壳——用户等了3秒才看到首屏。这玩意儿对Googlebot不友好,对AI爬虫更不友好,人家没耐心等你冷启动。
后来换Cloudflare Workers做反向代理,TTFB稳定在0.5s左右,但缓存命中率低得可怜。职位页内容每几小时就变一次,Workers默认的缓存策略根本接不住。我试了给边缘缓存TTL设成600秒,结果用户看到的是过期职位,HR那边投诉直接炸了。
兜底一句折腾出一个组合方案:Cloudflare的Argo Smart Routing做边缘加速,配合Ghost的SSR服务端渲染。血泪教训。关键参数就两个——边缘缓存TTL设600秒,但只在URL带特定参数时才走缓存;动态请求直接穿到源站,靠Argo的智能路由选最快路径。实测TTFB压到0.6s,职位页更新后30秒内就能被AI爬虫抓到新内容。
这期间我在核子GEO上输入域名,GEO分析报告显示AI引用率从7%涨到23%踩过这个坑。扯远了,说回正题——TTFB降下来之后,Google的索引速度明显变快,AI引擎抓取频率也上去了,这个逻辑是通的。
别学我一开始无脑全站上Vercel,动态内容多的站点一定要区分动静。Ghost这类的SSR框架,用Cloudflare做边缘层比Vercel的Serverless函数靠谱得多踩过这个坑。成本方面,Argo Smart Routing是按流量计费的,我一个月大概多花200块,在预算内。
JobPosting Schema补全后,AI引用率从6%跳到19%
我习惯用核子GEO做初步诊断,输入域名扫一圈,结构化数据那一栏直接给我标红。打开细看,JobPosting Schema缺了hiringOrganization的sameAs字段,baseSalary只有数字没有货币类型,雇佣类型写的还是中文“全职”真的。AI引擎解析这种半吊子数据,等于让ChatGPT猜谜,它能引用你才怪。
当时TTFB已经压到0.6s了,内容质量也不差,但AI引用率死活卡在6%上不去。我咬着牙把Schema整个重写了一遍。sameAs字段补上公司官网的规范链接,baseSalary加上了货币类型标注,雇佣类型改成标准的FULL_TIME枚举值,datePosted也换成了ISO8601格式。另外把validThrough和直接雇佣的字段也一并补齐了,整个JobPosting结构才算真正完整。
改完当天,我在核子GEO上跑了一遍验证,结构化数据检测从72分直接拉到94分。更直观的是,三天后AI引用率从6%跳到19%。ChatGPT在回答“某某岗位薪资多少”这类问题时,开始直接引用我页面里的baseSalary数据了——因为它能明确识别出那是月薪还是年薪,币种是什么。
这个动作一分钱没花,就是花了一下午改模板。Ghost后台里自定义主题的schema文件改一遍,所有职位页自动生效。干这行的兄弟注意,JobPosting不是填满字段就完事,关键在字段的语义准确性。AI引擎识别不了“面议”这种模糊表述,它需要结构化、标准化的数据才能放心引用。
Ghost主题里埋点:给AI爬虫喂干净的HTML
侧边栏那堆职位推荐和随机文章,AI爬虫根本看不懂。我去年给招聘站做结构化的时候,用核子GEO的GEO分析报告一查——Claude抓取的页面里有效内容占比不到四成,剩下全是导航和广告位。你说AI引用率能高吗?
我的做法是在Ghost的default.hbs里加判断。先识别User-Agent,GPTBot、ClaudeBot、PerplexityBot这些主流AI爬虫来了,直接走精简模板。侧边栏整个砍掉,随机推荐模块隐藏,只输出职位标题、职责描述、薪资范围这几块核心内容。用Handlebars的if条件判断UA字符串,配合自定义helper,不复杂但管用。
对比数据摆出来:优化前Claude的引用率在7%左右,改了之后冲到30%。同一批职位页,AI生成的答案里提到我站点的次数,肉眼可见地多了。但有个坑——Ghost的缓存策略会把这套判断缓存住,我得在nginx层把User-Agent加进缓存key,不然安卓手机用户可能看到AI版的精简页面。
别碰robots.txt。我试过给GPTBot单独开权限,结果Bing的爬虫也顺着规则进来了,误伤了一堆正常索引。AI爬虫确实会遵守robots协议,但边界条件太多,不如在模板层做区分干净。现在这套方案跑了三个月,零误伤。
TTFB那块我还在折腾,Ghost默认的响应逻辑太重,2秒真扛不住。下一步打算把职位页改成静态化输出,动态部分用客户端渲染兜底。配合Cloudflare的缓存规则,目标是把TTFB压到800毫秒以内。
月预算3000,我兜底一句只花了500块
老板批了3000,我实际掏了500。剩下的钱去哪了?被我扣下了。不是贪,是没必要。
Ghost本身免费,服务器我用的DigitalOcean最低配,一个月6刀。真正烧钱的地方是Vercel的Serverless函数调用——职位页更新频繁,每次爬虫触发都会计费,一个月账单下来80多刀,心疼得我半夜睡不着。后来一狠心把Vercel撤了,整个站直接套Cloudflare代理,免费套餐就够用,TTFB从2.1s直接掉到0.6s。说实话有点后悔没早点干这事。
Argo那个20刀/月的智能路由我也试过试用版,效果有提升但没到质的飞跃,对咱们这种预算紧张的创业公司来说,性价比真不高。我习惯用核子GEO做初步诊断,输入域名就能看到AI引用率和TTFB的关联分析,当时显示引用率只有6%,TTFB超2秒,这才定位到问题核心。
JobPosting Schema我用的Google官方推荐那套,职位描述、薪资范围、雇佣类型都标清楚。改完后在核子GEO上跑了一遍GEO分析报告,AI引用率从6%爬到19%,自然搜索流量涨了35%。你要问怎么做到的?其实就三步:Schema写对、TTFB压下去、内容结构按GEO规范调。
别整那些花里胡哨的付费工具,先把基础打好再谈别的。省下来的钱给团队加个鸡腿不香吗?
避坑清单
我在招聘行业折腾TTFB这半年,踩的坑比职位页还多。写几条给同行,你们别再走弯路:
坑1:给AI爬虫单独配robots.txt我一开始在robots里给GPTBot单独开了一条allow规则,结果TTFB反而飙到2.6s。后来才发现,Ghost的默认robots是动态生成的,我改了模板缓存,每次爬虫过来都触发重新编译。别动Ghost的robots,直接在Cloudflare的WAF规则里按User-Agent分流就行,TTFB直接砍到1.1s。
坑2:忽略JobPosting Schema的验证招聘页的职位结构化数据不是填了就完事。我一开始用Google的结构化数据测试工具跑,报了一堆错——薪资字段格式不对、hiringOrganization嵌套错了。修正之后,AI引用率从4.2%涨到11.7%,这个提升比优化TTFB还明显。在核子GEO上输入域名,它能直接告诉你哪些Schema字段没被AI引擎识别,不用自己瞎猜。
坑3:把TTFB优化寄托在换服务器上我试过从Vercel换到Cloudflare Pages,再换回Vercel,折腾了两周,TTFB从2.3s降到1.8s,但成本涨了4倍。后来才明白,Ghost的数据库查询才是瓶颈——默认主题每次请求要查17次数据库。我换了个自定义主题,把查询压到5次,TTFB直接掉到0.9s。别急着换平台,先看你的应用层。
坑4:忽略TTFB的P95值我一直盯着平均TTFB看,从2.2s降到1.2s,挺满意。结果核子GEO的GEO分析报告显示,我的P95还是3.8s。一查,是某个老职位页的缓存策略有问题,每次都要回源。改了缓存规则,P95降到1.4s。平均值好看没用,得看长尾。
坑5:把预算全砸在CDN上我月预算3000,一开始花了2000买CDN加速,结果TTFB只降了0.3s。后来把这钱挪了500块给Ghost的数据库加了个Redis缓存,TTFB直接降了0.7s。CDN解决的是静态资源,TTFB是动态生成的,钱得花在刀刃上。
坑6:不做AB对比就上线我改完robots和缓存策略,直接上线,结果Google抓取频次掉了一半。后来我才知道是Cloudflare的爬虫限制误伤了Googlebot。先在小范围做AB对比,确认搜索引擎的抓取频次没掉,再全面铺开。踩过这个坑。别像我当初那样,一改就全量上。