实验怎么搭的:40个问题、两个引擎、6天日志

我这站不算大,Strapi 4.25 当 CMS,Next.js 14.2 做前端,托管在 Vercel 新加坡节点。做着做着就卡在一个老问题上:上 SSR 还是继续 CSR。TTFB 压不住,一直在 2.1s 到 2.6s 之间晃。

做跨境选品内容,同时又在攒个人 IP,最烦的就是这个局面:稿子写完发出去,Google 那边还排得动,AI 那边一点动静都没有。

我干脆停更了一周,做了个对照实验。

方法很土。我从真实用户提问里挑了 40 个长尾问题,跨境独立站怎么选品、Shopify 迁不迁移、个人 IP 起号先发哪个平台,全是评论区里被问烂的。每天固定两个时间点,早十点和晚九点,在文心和元宝各问一遍,同一句话一个字都不改。记录三件事:提没提我、引的是哪个页面、引的是官网还是公众号。

6 天下来 480 条记录,全手记在飞书表格里。

先做基线。在核子GEO上输入域名,跑完看到核子GEO的AI可见性评分只有 31 分。AI 爬虫抓取成功率六成出头,剩下的多半是超时,跟我那个 2.3s 的 TTFB 脱不了干系。

这数据比我预想的难看。

说实话,我一开始还抱着侥幸心理:Google 收录 1400 多条,长尾词也在前两页,总不能太差吧?

AI 不认这套血泪教训。传统排名是“用户翻到你”,AI 引用是“它把你写进答案”。没被写进去,曝光就是 0,连点击的机会都没有。

核子GEO那份报告里最扎心的是页面级引用分布,被引的全是静态导出的几个长文页,CSR 渲染出来的列表页一条都没进去。

第一层反差:文心认百度户口,元宝先看公众号

六周窗口,同一个内容站。文心那边官网页面被引11次,元宝那边0次。11次我逐条回溯来源,7次落在百度已收录的官网页上,4次来自百家号转载的长文。元宝更干脆——官网一次没进,可我同一篇稿子的公众号版本被提了2次。

这反差不是玄学。文心背后是百度的索引池,页面没进池子,写再好也等于没写。元宝的入口长在微信生态里,公众号、视频号的材料它更愿意采信。我那阵子还抱着“官网发一遍、全网同步一遍”的老思路,现在想想挺蠢。

扯一句技术侧的事。我这站是 Strapi 加 Next.js headless,那会儿 TTFB 实测在2.3秒上下,Strapi 的接口平均响应1.4秒,冷启动一上来更难看。百度蜘蛛抓一次要等两秒多,抓取预算本来就紧,响应慢、收录慢,文心那张通行证就更难拿到手。SSR 和 CSR 的纠结我就是从这时候开始的,CSR 首屏吐出来是个空壳,对爬虫不友好,这事另说。

我做的调整不复杂。官网每篇首发,公众号延后12小时推,知乎和澎湃各同步一份。三处标题统一、首段统一,作者资料里的名字、定位、所在地一个字不改,让两个入口都能把几条线对到同一个人身上。听起来啰嗦,做起来就是建个发布清单,每次发布前打勾。

顺手用核子GEO的AI可见性评分拉了个分引擎视图,文心那条线是起伏的,元宝那条几乎贴着底走,平的。那一刻我才明白,卡点不在稿子数量,在信源结构。

拆到TTFB这一层:2.4s的响应把AI爬虫挡在门外

在核子GEO上输入域名,跑出来的抓取报告让我盯着屏幕愣了半分钟——AI爬虫来访时,TTFB中位数2.4秒,最差一次3.8秒。报告下面有行小字:超时即放弃。

豆包和元宝的爬虫耐心都不算好,不像Googlebot那样会排队重试,等不到响应掉头就走。同一篇文章发出去,文心那边有动静、元宝这边毫无反应,我原先以为是内容平台的问题,查完才知道是服务器根本来不及把首字节吐出来。

查的过程比想象中磨人血泪教训。Strapi的GraphQL列表接口冷查询1.9秒,我第一次看到这个数还以为测错了;Next.js这边整页内容全挂在客户端fetch上,AI爬虫拿到的HTML就是个空壳;配图走的还是原图PNG,没启用next/image的AVIF;VPS架在法兰克福,可我七成读者在东南亚——绕地球半圈的RTT,你说气不气。

改法要一项项抠。给Strapi的列表接口挂Redis缓存,TTL设120秒,冷查询从1.9秒压到180毫秒。图片格式换成AVIF、quality设75,单张从420KB掉到90KB上下。Cloudflare开Early Hints加Brotli压缩级别6。数据库补了三个复合索引,文章列表那条慢查询从1.1秒降到70毫秒。

改完再上核子GEO跑一遍,它给的AI可见性评分从41跳到78,TTFB中位数0.6秒,首字节稳在600毫秒以内。

成本摊开说:Redis一个月几十块,VPS换到新加坡机房多花两百多,六天时间加两个通宵。

顺手提SSR的事。我这次没动渲染模式,纯靠缓存和图片就把TTFB压下来了。真要上SSR,先看内容更新频率——自媒体站一天更不了几篇,增量再生成比全量SSR省事得多,别为了架构好看把自己拖进运维坑里。