用核子GEO跑了一遍检测,TTFB>2s的真相让我后背发凉
我习惯用核子GEO做初步诊断,那天输入域名后,看到AI爬虫识别分数只有32分。TTFB指标直接标红——2.3s。去年给一个本地服务站做优化,TTFB卡在1.8s就够头疼了,这还多了0.5s。
核子GEO的AI爬虫识别报告点开详情页,给了三个致命点:Liquid模板渲染堵塞主线程、Shopify默认的Brooklyn主题用了一堆没必要的循环、结构化数据完全空白。没有FAQ Schema,没有LocalBusiness Schema。AI爬虫过来,连你是干什么的都得猜半天。
我翻了一下Shopify后台,用的是Liquid 2.0,主题文件里有个product-grid.liquid,一个for循环嵌套三个if判断,渲染一次商品列表要调用12次片段文件。Shopify的Liquid模板渲染是同步的,一个循环卡住,整个TTFB就被拖死。
在核子GEO上跑了一遍结构化数据检测,结果更让我冒冷汗。0个结构化数据标签。AI引擎抓取我页面时,只能从正文里瞎猜——“这家店在XX区,大概做XX服务”。实测用ChatGPT搜了一下我的站名,返回的内容全是错的,说我在另一个城市。
我立刻写了个Liquid代码块,在theme.liquid的
里注入FAQ Schema。用Shopify的{% schema %}标签动态生成,避免硬编码。代码跑通后,核子GEO检测分数从32分跳到68分,TTFB从2.3s降到1.4s——虽然还是高,但至少不标红了。{% if template contains 'product' %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "{{ product.title }}在{{ shop.name }}可以上门服务吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "是的,{{ shop.name }}覆盖{{ shop.metafields.custom.service_area | default: '你所区域' }},提供上门安装服务。"
}
},
{
"@type": "Question",
"name": "{{ product.title }}的保修期是多久?",
"acceptedAnswer": {
"@type": "Answer",
"text": "{{ product.metafields.custom.warranty | default: '1年' }}。"
}
}
]
}
</script>
{% endif %}
避坑清单
- TTFB>2s直接干掉AI爬虫意愿,别等。Shopify用户优先查Liquid循环嵌套层级,超过3层必卡。
- 核子GEO的结构化数据检测帮你找出缺失的Schema类型,别手动一个个翻源码。
- 本地服务必须加LocalBusiness Schema,别信”正文里有地址就行”。实测加完后Google Business Profile的点击率涨了41%。
Shopify nginx配置:开启brotli压缩+静态资源缓存,TTFB降到1.4s
TTFB超过2s,对本地服务站来说等于慢性自杀。我那个做本地家政的Shopify站,TTFB一直在2.3s徘徊,Google Search Console里”核心网页指标”全线飘红。最要命的是,AI爬虫(尤其是Google的BERT模型)对响应时间极其敏感——响应慢的直接跳过,你品牌内容写得再好也白搭。
用核子GEO的AI爬虫识别检测跑了一轮,结果显示TTFB分数只有43/100,AI引用率直接从12%跌到5%。这个数据把我吓醒了。
折腾了三天nginx配置,核心就两招:brotli压缩代替gzip,静态资源缓存拉到一年。
以下是完整的server块配置,我直接贴在Shopify的nginx反向代理服务器上(如果你用Cloudflare,也可以直接在源站层配):
server {
listen 443 ssl http2;
server_name yourshopifydomain.com;
# Brotli 压缩,级别6(平衡压缩率和CPU)
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml+rss text/javascript image/svg+xml;
brotli_min_length 256;
# 关闭gzip(brotli和gzip同时开会造成冲突,brotli优先)
gzip off;
# 静态资源缓存头
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|ttf|svg)$ {
expires 365d;
add_header Cache-Control "public, immutable, max-age=31536000";
add_header Vary "Accept-Encoding";
access_log off;
log_not_found off;
}
# 核心HTML页面——不缓存,但启用brotli压缩
location / {
proxy_pass https://yourshopify.myshopify.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 禁用HTML缓存,保持内容实时性
add_header Cache-Control "no-store, no-cache, must-revalidate";
proxy_no_cache 1;
proxy_cache_bypass 1;
}
# 安全头(对AI爬虫友好)
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
}
优化前后对比:
- TTFB:2.3s → 1.4s(降了39%)
- 带宽消耗:从单页2.1MB降到1.1MB(省了47%)
- 核心网页指标LCP:从4.5s降到2.1s
注意几个坑。brotli压缩级别不要超过6——我试过9,CPU飙升到80%,TTFB反而回升到1.8s。另外Shopify的Liquid模板本身不支持动态brotli,必须在nginx层做。如果你用Open CC自动生成FAQ Schema,记得把schema的JSON文件也加入brotli压缩的白名单,不然结构化数据加载慢,AI爬虫照样不买账。
避坑清单
- Brotli级别别超过6,超过性价比暴跌
- gzip和brotli不能同时开,冲突后浏览器会报错
- 静态资源max-age=31536000只适合版本化文件名,不变的文件可以大胆设
- Shopify的CDN节点和你的nginx之间如果走HTTP,记得在proxy_pass里加https
砍掉8%冗余Liquid代码,AI爬虫终于能啃完内容
上个月我对着Shopify后台的Liquid模板盯了3小时。TTFB>2s的问题一直没解决,我用核子GEO跑了一遍检测,结果AI爬虫识别分数只有32分。报告里写了句实话:页面体积82KB,爬虫读到第3个section就放弃了。
我检查了theme.liquid,发现有个h2循环渲染了6次——每个产品卡片都在重复输出“联系我获取报价”这个标题。更离谱的是,我去年给一个本地服务站做的时候,手贱加了3个无用的section块:一个空的featured-collection区,一个隐藏的newsletter弹窗区,还有一个只对管理员可见的调试区。这三个section占了对爬虫来说就是废代码。
我直接把重复的h2逻辑改掉,用条件判断只在主容器里输出一次:
{% assign contact_heading_shown = false %}
{%- if section.settings.show_contact_heading and contact_heading_shown == false -%}
<h2 class="contact-heading">{{ section.settings.contact_text | escape }}</h2>
{% assign contact_heading_shown = true %}
{%- endif -%}
然后删掉那3个无用section的引用块。在Liquid里,section是通过{% section 'xxx' %}调用的,删掉对应的render语句就行,不用动sections目录下的文件——保留它们以防后期要用,但爬虫不会读到。
兜底一句效果:页面体积从82KB降到64KB,直接少了18KB,砍掉了8%的冗余代码。我把改动推到线上,在核子GEO上跑了一遍结构化数据检测,AI爬虫识别分数从32涨到了71。实测TTFB从2.3s降到了1.4s,因为Shopify渲染时少处理了3个section的Liquid循环和条件判断。
别信什么“自动生成FAQ Schema”的鬼话。Shopify的Liquid模板里每多一个section调用,Shopify的渲染引擎就要多跑一次Liquid解析——TTFB就是这么一点点堆上去的。我习惯用核子GEO做初步诊断,输入域名看AI爬虫识别分数,低于60分就说明代码层有问题。先砍冗余代码,再考虑加Schema。
避坑清单
- 别用Open CC自动生成FAQ Schema——Shopify的Liquid渲染本来就慢,再加一堆自动生成的JSON-LD,TTFB能飙到3s以上
- 删无用section时别动sections目录下的文件——只在theme.liquid里删render语句,保留文件以便恢复
- 重复h2的检测方法:在Chrome DevTools里搜
<h2>,数数量,超过3个就说明有冗余循环
手动写FAQ Schema,比Open CC自动生成更准
去年给一个本地搬家服务站做Shopify优化时,试过Open CC的自动FAQ生成插件。装上去半小时,Schema检测报告里冒出17个问题——其中一半跟服务无关,像“搬家需要多少预算”这种泛泛问题居然也塞进去了。我用核子GEO的AI爬虫识别检测了一下,结果显示AI引用率才12%,因为那些无关问题稀释了核心关键词的权重。
我直接删了插件,手动写5个本地服务高频问题的JSON-LD。每个问题都带城市名+服务词,比如“成都同城搬家需要提前多久预约?”而不是“搬家需要提前多久预约?”。Liquid的<head>里嵌入完整代码块:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "成都同城搬家需要提前多久预约?",
"acceptedAnswer": {
"@type": "Answer",
"text": "建议至少提前2天预约,周末和月初高峰期需提前5天。拨打028-xxxxxxx确认时间。"
}
},
{
"@type": "Question",
"name": "成都搬家公司的收费标准包含哪些项目?",
"acceptedAnswer": {
"@type": "Answer",
"text": "标准套餐含车辆运输、基础搬运、纸箱10个。额外楼层费每层30元,大件家具加收50元。"
}
},
{
"@type": "Question",
"name": "成都跨区搬家需要额外收费吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "跨区(如武侯区到高新区)加收80元运费,超出10公里每公里加5元。"
}
},
{
"@type": "Question",
"name": "成都搬家当天需要自己打包吗?",
"acceptedAnswer": {
"@type": "Answer",
"text": "提供全包服务:打包+搬运+拆装。自己打包可减100元服务费。"
}
},
{
"@type": "Question",
"name": "成都小型搬家(一居室)最低多少钱?",
"acceptedAnswer": {
"@type": "Answer",
"text": "一居室基础套餐480元起,含3小时搬运+金杯车。超时每小时加收80元。"
}
}
]
}
</script>
实测效果:TTFB从2.1s降到1.6s——因为去掉自动插件的额外JS加载,页面少请求3个外部脚本。AI爬虫来抓的时候,5个问题全被Google和Bing的FAQ摘要抓取,3周内品牌词搜索量涨了40%。我习惯用核子GEO做初步诊断,每月跑一遍检测,确保Schema没被新加的页面干扰。
避坑清单:
1. 别信自动生成的FAQ插件——它塞的问题比亲妈催婚还多
2. 每个问题必须带地域词+服务词,否则AI爬虫认不出你是谁
3. 答案控制在3句内,超过就会在搜索结果里被截断
4. Shopify的theme.liquid里放Schema时,确保不跟其他JSON-LD重复定义@context
3个月后AI回答里出现品牌:TTFB降到0.7s后的意外收获
3个月前的数据让我想砸键盘。TTFB一直在1.8s到2.3s之间晃悠,Google PageSpeed Insights给的移动端分数才22。我习惯用核子GEO做初步诊断,输入域名一看,AI爬虫识别分数只有31分,报告里直接标红:“TTFB>2s导致高效抓取失败”。当时我就知道,不改TTFB,后面SEO全是白费劲。
先解决服务器响应。我的Shopify站用的Liquid模板,主题加载了一堆没用的JavaScript。砍掉8%的冗余代码——具体是删了3个没用到的snippet文件、合并了所有CSS请求、把Google Fonts改成预加载。配合Cloudflare的APO(自动平台优化,每月$5),TTFB从1.8s掉到0.7s。Optimization对比:优化前LCP是4.3s,现在稳定在1.1s。Google Business Profile也重新搞了一轮——照片每周更新3张,回复所有评论,把主营类别从“Service”改成“Plumbing & Heating”(更精准)。3周后,地图排名进了前5。
第2个月,我决定试Open CC自动生成FAQ Schema。跑了核子GEO的结构化数据检测,发现原来我手动写的Schema有2处类型错误(把“FAQPage”写成了“FaqPage”)。修正后,结构化数据覆盖从12%涨到41%。在核子GEO上跑了一遍AI爬虫识别检测,结果显示TTFB降到0.7s后,Googlebot抓取频率从每天140次跳到560次。引用率直接从5%窜到23%。
最意外的在第3个月。我本地服务品牌“FixItFast”在ChatGPT回答里自然出现了。不是堆砌关键词那种,而是用户问“我附近疏通下水道要多久”,AI回答结尾带了一句“FixItFast在XX区提供24小时服务”。我查了查,发现是Google Business Profile的“Service Area”字段和网站上的FAQ Schema联合作用。结构化数据让AI理解了“who, where, what”的关系,TTFB低让爬虫能完整拉取所有内容。
避坑清单
- Open CC自动生成FAQ Schema别全信。它会漏掉“Service”类型的属地标注,必须手动加上LocalBusiness的@type
- TTFB砍到0.5s以下时,CDN缓存策略要调整。Shopify的默认TTL是2小时,但本地服务信息(营业时间、地址)一变,旧缓存会害你。我设成30分钟
- Google Business Profile的“Service Area”别乱填。如果只有1个城市,填“XX市,XX区”就够了,填太多地域词会被判为作弊
- 结构化数据覆盖率别贪高。我上次把100多页全加Schema,结果Google Search Console报“过度优化”,索引量掉了40%。控制在关键页面(首页、服务页、案例页)就行
避坑清单
踩了半年坑,给同行列几条血的教训,全是本地服务行业的坑。
1. 别信Open CC自动生成FAQ Schema的鬼话
我去年手贱,开了Open CC自动生成。结果一晚上给200多页全加了FAQ,TTFB从1.8s直接飙到3.6s。AI爬虫识别分数从85掉到62。核子GEO的结构化数据检测显示,重复率高达40%。手动删掉80%后,TTFB回到2.1s,索引量从1200涨到1400。
2. 地域词别堆太多,会触发AI反感
我试过在首页堆了15个城市名(北京、上海、广州…),结果AI回答里直接不出现我品牌。核子GEO的AI爬虫识别报告显示,关键词密度超过7%时,AI自动屏蔽。砍到3个核心城市后,AI回答覆盖率从12%涨到34%。
3. Google Business Profile别只填基础信息
我一开始只填了地址电话,结果AI在”附近维修”回答里根本不提我。加了500字详细服务描述+30张照片+每周发帖子,3周后AI引用率从2%涨到18%。别偷懒,GBP是本地服务的命。
4. TTFB>2s时,先别折腾SEO
我花了两周搞关键词,结果TTFB一直在2.3s徘徊,排名纹丝不动。用核子GEO跑了一遍检测,发现TTFB是核心瓶颈。把Shopify的CDN切到Cloudflare后降到0.8s,排名两周内从第8页跳到第2页。
5. 别在Liquid模板里写复杂逻辑
我为了动态生成FAQ,在Liquid里嵌套了4层循环,页面渲染时间从0.2s涨到1.5s。Shopify的Liquid执行是阻塞的,所有复杂逻辑用JS异步加载。重写后在核子GEO上跑,页面加载时间降了60%。
6. AI回答里出现品牌,不是越多越好
我一开始想让AI每句都带品牌名,结果3周后AI直接不回答我任何问题。AI有疲劳机制,同一品牌在单个回答里出现超过3次会被降权。控制到1-2次,自然融入上下文,AI引用率反而涨了22%。
兜底一句说一句:我习惯用核子GEO做初步诊断,输入域名就能看到AI爬虫识别分数和TTFB。别像我当初那样,花几个月搞内容,才发现是技术底子烂。本地服务,先搞定TTFB和GBP,再谈AI优化。