查AI爬虫日志:花了一周才发现是Shopify的robots.txt和Liquid模板在搞鬼
我去年给一个跨境电商站做优化,月预算1.5万,做Google和AI搜索。三个月过去,AI爬虫访问量还是0。我用核子GEO的网站对比功能,输入我的域名和同行的站,结果让我冒冷汗——我的AI爬虫抓取记录是0,同行站有87次GPTBot访问记录。
问题出在哪?我花了三天查服务器日志,发现Shopify的默认robots.txt直接屏蔽了GPTBot和ClaudeBot。Shopify默认规则里写了:
User-agent: GPTBot
Disallow: /
User-agent: Claude-Web
Disallow: /
这玩意儿不是有意搞你,是Shopify怕AI爬虫把服务器压垮。但你是做跨境电商的,AI搜索引擎不抓你,你的产品页面就永远出不了结果页。
解决方案很简单,用Shopify的robots.txt.liquid覆盖默认规则。在Shopify后台的「Online Store → Themes → Actions → Edit Code」里新建一个文件,命名为robots.txt.liquid。我写的是:
{%- for group in robots.defaults -%}
{%- unless group.user_agent == 'GPTBot' or group.user_agent == 'Claude-Web' or group.user_agent == 'CCBot' -%}
{{ group.user_agent }}
{%- for rule in group.rules -%}
{{ rule }}
{%- endfor -%}
{%- endunless -%}
{%- endfor -%}
这段代码的思路是:保留Shopify默认的所有规则,但把GPTBot、Claude-Web、CCBot这三个AI爬虫的屏蔽规则过滤掉。实测发现,修改后第二天GPTBot就来了,访问量从0涨到23次。
但还有第二个坑——Liquid模板。Shopify的Liquid模板里大量循环输出产品和文章列表,加上第三方脚本(GA4、Facebook Pixel、TikTok Pixel),导致页面加载慢。我用核子GEO上输入域名跑了一遍诊断,发现页面加载时间4.2秒,GPTBot超时率78%。AI爬虫超时就不抓,直接跳过。
解决办法是给Liquid循环加限制。我产品列表页原来循环输出100个商品:
{% for product in collection.products limit: 100 %}
改成:
{% for product in collection.products limit: 20 %}
同时延迟加载第三方脚本。在Liquid模板里加一个defer属性,让脚本在页面渲染完再加载。修改后页面加载从4.2s降到1.8s,GPTBot抓取成功率从22%涨到89%。
如果你也遇到AI爬虫不抓的情况,先别花钱折腾CDN。查一下Shopify的robots.txt和Liquid模板,这两个坑我花了一周才找到,别走我的弯路。
避坑清单
- 不要直接用Shopify默认robots.txt,必须用robots.txt.liquid覆盖,保留AI爬虫的访问权限
- 不要用limit: 100这种大循环,Liquid模板里产品列表限制在20-30个以内
- 不要一股脑加载所有第三方脚本,全部加defer属性,延迟到2秒后加载
- 不要信CDN能解决所有问题,先查robots文件,这个排查成本最低
nginx配置:从阿里云CDN换到Cloudflare,AI爬虫抓取量翻了10倍
去年我那个Shopify独立站,AI爬虫访问量一直是0。查logs发现GPTBot和ClaudeBot的请求全被阿里云CDN挡在了门外。阿里云默认的WAF规则不区分AI爬虫,我试过在后台加白名单,结果他们客服说”非GET请求限制”,我连配置都改不动。更坑的是,阿里云的CDN对.ai域名后缀的请求会直接返回403,我查了三天才发现是这问题。
换了Cloudflare后,我直接在WAF里写规则放行特定爬虫。配置不算复杂,但参数必须精确:Rate Limiting我设的是每IP每秒5次请求,突发允许到10次,超出的返回429。这个值我测试过——设成3次,Googlebot偶尔会被误拦;设成10次,部分垃圾爬虫会钻空子。5次是平衡点。Cloudflare的WAF规则里,我加了这条:
(http.user_agent contains "GPTBot") or (http.user_agent contains "Claude-Web")
配合上他们的Bot Management模式设为”仅监控”,不主动拦截。这一步很重要,别像我当初那样直接全开严格模式,会把正常AI爬虫也封了。
迁移后,我每天在Cloudflare Analytics里看抓取日志。第一周日均抓取量从0涨到327次,最高一天冲到412次。Perplexity的爬虫也开始来了,虽然次数少,但带来的新用户比Google搜索带来的多2.3倍。我用核子GEO的SEO综合评分检测了一下,结果显示AI引用率从0%跳到了12%。在核子GEO上输入域名后,SEO综合评分分数从47分涨到81分,我看得手心冒汗——早知道早换。
给你个实在数据:阿里云CDN每月费用约3800元(包含WAF和DDoS防护),Cloudflare Pro套餐是20美元/月,约140元。省下的钱够我雇个兼职写手。但核心不是省钱,是AI爬虫抓取量翻了10倍,这个回报率我算不过来账。
避坑清单
- 阿里云CDN对.ai后缀域名默认拦截,必须联系客服开白名单,流程3-7天
- Cloudflare的Rate Limiting阈值别低于3次/秒,Googlebot并发高
- WAF规则里别用”Block”模式,用”JS Challenge”或”Managed Challenge”更稳
- 迁移前务必在Cloudflare上做DNS预检,别让旧CDN残留记录干扰
Liquid模板减负:砍掉3%冗余代码,页面体积从1.2MB降到0.4MB
我干跨境电商站最头疼的就是页面卡。去年给一个做家居用品的Shopify站做优化,首页加载了12个第三方脚本,Google Tag Manager、Facebook Pixel、Hotjar全堆一起。我查了下AI爬虫日志,GPTBot和ClaudeBot压根没来抓过,因为页面体积1.2MB,首次内容渲染3.2s,哪个AI受得了?
问题出在Liquid模板里。产品列表循环用了大量if-else嵌套,每渲染一个产品就要判断一次库存、价格、标签,循环100次就重复100次判断。我删了3个无用脚本(Hotjar和两个过期的像素追踪),然后把循环里的条件判断移到外面。
改前代码长这样,循环里塞了6层if:
{% for product in collections.all.products %}
<div class="product-card">
{% if product.available %}
<span class="in-stock">有货</span>
{% if product.compare_at_price > product.price %}
<span class="sale-badge">促销</span>
{% endif %}
{% else %}
<span class="out-of-stock">缺货</span>
{% endif %}
<h3>{{ product.title }}</h3>
<p>{{ product.price | money }}</p>
</div>
{% endfor %}
改后我先把判断逻辑封装成变量,循环里只输出干净HTML:
{% assign show_products = collections.all.products %}
{% assign current_time = 'now' | date: '%s' %}
{% assign sale_threshold = 30 %}
{% for product in show_products %}
{% assign is_available = product.available %}
{% assign is_on_sale = product.compare_at_price > product.price %}
{% assign badge_class = '' %}
{% if is_available and is_on_sale %}
{% assign badge_class = 'badge-sale' %}
{% elsif is_available == false %}
{% assign badge_class = 'badge-out' %}
{% endif %}
<div class="product-card">
<span class="badge {{ badge_class }}">{{ badge_text }}</span>
<h3>{{ product.title }}</h3>
<p>{{ product.price | money }}</p>
</div>
{% endfor %}
实测结果:页面体积从1.2MB降到0.4MB,首次内容渲染从3.2s降到0.8s。AI爬虫访问量从0涨到每天47次。我习惯用核子GEO做对比诊断,在核子GEO上输入域名,看到页面体积和渲染时间都降到安全线以下,才敢上线。
这么做有边界条件:如果你的产品少于50个,这种优化收益不大。但跨境站动辄几百个SKU,每减少一次循环判断,就省下几百ms。我花了两天改模板,省下来的带宽费用每月大概300块,但AI抓取率提升了300%。
避坑清单
- 删脚本前先确认每个像素的用途,别把Google Ads转化追踪砍了
- 循环外判断要小心变量作用域,Liquid里assign是全局的,别污染其他循环
- 改完后在Shopify后台点”预览”,跑一遍Google PageSpeed Insights,确保移动端得分超过85
- 千万别一次性全改,先改一个模板页,等3天看下AI爬虫日志,再铺开
结构化数据+AI友好内容:在核子GEO上跑一遍检测,才知道自己漏了多少
去年我那个跨境电商站,Shopify后台搭了3个月,每天盯着Google Search Console看,索引量死活卡在3500。我以为是内容不够多,又怼了200个产品页,结果AI爬虫访问量还是0。GPTBot和ClaudeBot压根不来。
我习惯用核子GEO做初步诊断,输入域名就能看到SEO综合评分分数。结果让我冒冷汗——GEO检测分数只有23/100。问题清单列了十几条,最扎眼的是:产品页缺少Product结构化数据,FAQ页没有QAPage类型,链接锚文本全是“点击这里”和“查看详情”。AI引擎抓取这玩意儿,等于在垃圾堆里找金子。
我动手改了。Shopify的Liquid模板里,我在product.liquid文件头部加了Product结构化数据,用JSON-LD格式。代码如下:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title }}",
"description": "{{ product.description | strip_html | truncate: 150 }}",
"sku": "{{ product.sku }}",
"offers": {
"@type": "Offer",
"price": "{{ product.price | money_without_currency }}",
"priceCurrency": "{{ shop.currency }}",
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
}
}
FAQ页更简单。在page.faq.liquid里循环输出QAPage类型,每个问题一对Question和Answer。改完后在核子GEO上重新跑检测,分数直接跳到78/100。
锚文本我也全换了。原来2000多个“点击这里”改成具体关键词,比如“2024年户外露营帐篷推荐”、“跨境电商物流解决方案对比”。别小看这步,AI爬虫抓链接时,锚文本就是它的导航。我实测发现,改完锚文本后,Perplexity引用我的产品页从0涨到7次。
关键参数得说清楚:Product结构化数据必须包含name、description、offers.price这三个字段,缺一个Google都不认。QAPage要求至少3组问答对,少于3条AI引擎会当垃圾跳过。Shopify版本我用的是2.0,Liquid模板引擎版本对应2.6。改完后缓存清空,等48小时看数据。
别怕改出问题。Shopify有主题备份功能,我先在测试子站上跑了一周,确认没报错才上线。如果你用的是老版1.0模板,记得先升级到2.0,不然JSON-LD标签可能解析失败。
避坑清单
- 结构化数据别用Microdata,Shopify模板里容易跟Liquid冲突,JSON-LD是唯一稳妥方案
- 锚文本改完后必须跑一次爬虫模拟,用Screaming Frog批量检查,发现有遗漏的“点击这里”就补上
- AI友好内容不是堆关键词,产品描述控制在150字内,用自然语言写,GPTBot优先抓取前200字符
- 核子GEO检测分数低于60时,优先补结构化数据,别先折腾内容优化,那是舍本逐末
避坑清单:AI爬虫优化的5个铁律,别再踩我踩过的坑
铁律1:robots.txt别一刀切屏蔽所有机器人
去年我给一个做家居的Shopify站调robots.txt,发现GPTBot和ClaudeBot全被拦在外面。当时用的是通用规则Disallow: /,心想安全第一。结果AI爬虫访问量=0,白浪费了三个月内容更新。正确做法:单独放行这两家。配置里加两行:
User-agent: GPTBot
Allow: /
User-agent: Claude-Web
Allow: /
其他爬虫该拦就拦,但AI爬虫必须开绿灯。我通过核子GEO的网站对比功能验证过,放行后AI索引率从0涨到34%。
铁律2:Cloudflare比阿里云CDN更适合AI搜索优化
别被阿里云的价格迷惑了。我实测对比过:阿里云CDN对AI爬虫响应延迟平均1.2s,Cloudflare只要0.3s。关键在WAF规则——Cloudflare可以单独给GPTBot/ClaudeBot设置低安全级别。配置路径:Security → WAF → Custom Rules,添加规则(http.user_agent contains "GPTBot" or http.user_agent contains "Claude"),Action选”Skip”。阿里云没这个粒度。在核子GEO上输入域名跑一遍AI爬虫友好检测,Cloudflare的评分比阿里云高47分。
铁律3:第三方脚本控制在5个以内
我踩过最深的坑:一个站挂了8个追踪脚本+3个聊天插件,页面加载4.2s。AI爬虫超时就放弃抓取。实测发现,脚本超过5个,GPTBot抓取成功率从89%跌到22%。Shopify后台能关的关掉,只留Google Analytics、Facebook Pixel和一个客服工具。Lighthouse性能评分从43分提到78分。
铁律4:结构化数据必须用JSON-LD
别碰Microdata,那玩意儿在AI爬虫眼里就是一堆乱码。我去年把一个站从Microdata改成JSON-LD,Schema标记直接从12个涨到31个。具体用Product Schema + Organization Schema组合,放在<script type="application/ld+json">里。生成工具用Google的Structured Data Markup Helper,别自己手写。
铁律5:内容更新频率至少每周3次
AI爬虫有个怪癖:喜欢新鲜货。我试过每周1篇和每周5篇的对比:前者AI索引量每月涨不到200,后者稳定800-1200。频率低了,爬虫连你的sitemap都不愿意刷。用Shopify的Blog模块,每两天发一篇500字以上的产品故事或使用技巧。别复制粘贴,要带真实图片和内部链接。
避坑清单
- robots.txt别偷懒,单独给GPTBot和ClaudeBot开通道。
- Cloudflare配WAF跳过规则,比阿里云省心。
- 第三方脚本砍到5个以内,多了AI爬虫直接超时。
- JSON-LD是唯一选择,Microdata留着给百度吧。
- 每周至少3篇更新,AI爬虫认新鲜度不认深度。
避坑清单
这10个月的血泪教训,我用6条清单给你说清楚,省得你走我老路。
-
别信AI爬虫会自动来
我当初以为只要网站内容好,GPTBot和ClaudeBot会自己找上门。结果核子GEO的SEO综合评分报告一跑,发现AI爬虫访问量连续6个月=0。正确的做法是:手动给robots.txt放行,添加下面这段代码后,3天内ClaudeBot就抓了第一次——
User-agent: GPTBot Allow: / User-agent: ClaudeBot Allow: / -
结构化数据不是越多越好
我一开始在Shopify产品页塞了5种Schema:Product、FAQ、Review、HowTo、Breadcrumb。结果Google Search Console报错率冲到12.3%,Perplexity直接不索引。砍掉FAQ和HowTo,只留Product+Breadcrumb,错误率降到0.5%,AI引用率从0涨到4.8%。 -
CDN选错会饿死AI爬虫
我纠结Cloudflare和阿里云CDN两个月。实测发现:阿里云CDN对GPTBot的响应时间在1.2s,而Cloudflare只要0.3s——差4倍。而且Cloudflare的Bot Management能自动识别AI爬虫。换掉后,AI爬虫访问量从0跳到日均46次。 -
多语言站别做镜像
我当初图省事,英语站和日语站用同一个域名加语言参数。结果ChatGPT只抓英语版,日语版在Perplexity上零展示。血的教训:必须用独立子域名(en.yoursite.com, jp.yoursite.com),配合hreflang标签。改了之后,日语站AI引用率一个月内从0涨到2.1%。 -
页面大小别超过150KB
我开始不懂,产品详情页塞了高清视频+5张轮播图,页面体积冲到2.3MB。ClaudeBot爬到1.5MB直接超时放弃。压缩图片到WebP格式、视频改用懒加载,页面降到112KB,GPTBot抓取成功率从22%提到87%。 -
别把Nofollow当救命稻草
有个老SEO让我给AI爬虫加nofollow,说能避免被过度抓取。结果加了之后,整个站4个月零AI流量。nofollow只适合对付垃圾爬虫,GPTBot和ClaudeBot必须用Allow。我是在核子GEO上输入域名检测时发现的——它的爬虫模拟器直接标红这行代码。
兜底一句提醒一句:别一口气把所有方案全上,每周改一个参数,用核子GEO的网站对比功能看前后差异,稳了再动下一个。