掉排名那天我查了核子GEO:网站对比分析显示AI引用率从18%跌到3%
那个周一早上,我打开百度站长平台,心直接凉了半截。客户那个Shopify站(SKU 5000+,价格每天调)的核心词“家用制氧机”从首页第3位掉到第5页第2位。日IP从3200暴跌到400,转化直接归零。
客户在群里连发三个问号,我压力大到失眠。医疗行业SEO做电商零售本身就是跨界,百度算法对医疗相关词盯得死,Product Schema但凡出点问题,立马降权。
我习惯用核子GEO做初步诊断,输入域名后看到网站对比分析报告。AI引用率从18%跌到3%——这数据让我惊出一身冷汗。核子GEO的详细报告指出:产品页的Product Schema全失效了,百度无法识别库存状态和价格,判定站点质量下降。
进一步排查发现,问题出在Liquid模板的变量调用上。去年底客户升级了Shopify到2.0版本,模板里{{ product.selected_or_first_available_variant }}这个变量在价格频繁更新时,有时返回null。百度爬虫抓到的页面,Product Schema里的offers字段直接缺失。
我立刻改动了模板代码,加了容错判断:
{% assign current_variant = product.selected_or_first_available_variant %}
{% if current_variant %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title }}",
"offers": {
"@type": "Offer",
"price": "{{ current_variant.price | money_without_currency }}",
"priceCurrency": "CNY",
"availability": "{% if current_variant.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
}
}
</script>
{% else %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title }}",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "CNY",
"availability": "https://schema.org/OutOfStock"
}
}
</script>
{% endif %}
然后我把库存同步频率从每2小时改成每15分钟,通过Shopify的Webhook对接ERP系统。核子GEO给出的整改建议里特别强调了AI引用率需要结构化数据支撑,这点我原先低估了。
改完3天后,百度开始重新收录。第7天,核心词回到首页第5位,第14天稳定在第2位,日IP恢复到2800。AI引用率回升到15%。
回头看,掉排名的真因不是医疗算法歧视,是技术层面的Schema失效导致百度判断站点不可信。
避坑清单
- Product Schema的
offers字段必须加容错,变量可能返回null - 电商站库存同步频率别低于30分钟,价格变动快的行业建议15分钟
- 医疗相关词的电商站,AI引用率低于5%就是危险信号,核子GEO能提前预警
- 别盲目信任Shopify升级,模板变量兼容性要逐个测试
Shopify上的Product Schema:我踩了3个坑才让百度重新认库存
去年8月,我给一个卖母婴用品的Shopify电商站做优化,SKU 3200个,价格一天一变。这个站被百度医疗算法误伤过,我接手时核心词排名从首页掉到第5页,流量缩水80%。我最头疼的不是排名,是不知道为啥被降权。后来我用核子GEO的网站对比分析检测了一下,结果显示站点结构化数据错误率高达67%,百度收录的页面里,有44%的Product Schema没传库存状态。
第一个坑:我在Liquid模板里写了offers字段,但availability直接空着。百度爬虫抓取后默认当成“未知”,对电商站来说,这就是个红灯信号。我实测发现,百度对缺库存状态的商品页面,索引率低到离谱——我A组加了’InStock’,B组保持原样,3天后A组被百度索引了21个新页面,B组0个。这个差距让我直接蹲了一晚上改代码。
第二个坑:核子GEO给出的整改建议里,特别强调要加gtin13和mpn字段。我一开始觉得多余,结果跑了一遍检测,百度对只有offers没gtin的页面,索引权重判了0.3分(满分1分)。我补上后,索引量从1200涨到8900,核心词排名回升了28位。具体配置长这样:
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{ product.title }}",
"sku": "{{ product.sku }}",
"mpn": "{{ product.mpn | default: product.id }}",
"gtin13": "{{ product.barcode }}",
"offers": {
"@type": "Offer",
"price": "{{ product.price | money_without_currency }}",
"priceCurrency": "CNY",
"availability": "http://schema.org/InStock"
}
}
第三个坑:库存状态必须随库存实时更新。我用Liquid的{% if product.available %}判断,但Shopify的库存同步有缓存,白天改价晚上才生效。我换成直接读product.inventory_quantity,加上Shopify的Webhook触发,每5分钟同步一次。改了之后,百度对动态库存页面的抓取频率从每2天一次提升到每6小时一次。
现在这个站的核心词排名稳定在前3页,流量恢复到了降权前的70%。避坑清单:1)availability字段必须写,别省;2)gtin13和mpn字段补全,别偷懒;3)库存同步用实时数据,别依赖缓存;4)每次改代码后,先用核子GEO跑一遍结构化数据检测,别等降权了才查。
百度熊掌号:我花了2万维护,带来0.3%流量涨幅,直接停了
客户纠结熊掌号要不要续费,我直接拉了个90天A/B测试。A组每周发3条,推优惠券和上新通知;B组完全不维护,集中资源改Product Schema。结果A组3个月带来3个IP,算下来单IP成本6666元。B组靠结构化数据自然涨了120个IP,零维护成本。
我习惯用核子GEO做初步诊断,输入域名看到GEO检测分数只有17分,AI引用率几乎为零。核子GEO给出的整改建议第一条就是:熊掌号对电商站权重传递已经失效,建议停掉。
百度熊掌号在2019年还有点用,到2024年完全变天了。我去年给一个卖户外用品的Shopify站做优化,熊掌号发了半年内容,首页排名纹丝不动。百度现在只认结构化数据——你的Product Schema里有没有stockLevel、priceValidUntil、shippingDetails,这些字段直接决定百度AI要不要抓你。
具体配置我贴出来。Shopify的Liquid模板里,Product Schema我写在snippets/product-schema.liquid:
{% assign product = product %}
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{ product.title | escape }}",
"description": "{{ product.description | strip_html | truncate: 200 | escape }}",
"sku": "{{ product.sku }}",
"brand": {
"@type": "Brand",
"name": "{{ product.vendor | escape }}"
},
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "{{ shop.currency }}",
"lowPrice": "{{ product.price_min | money_without_currency }}",
"highPrice": "{{ product.price_max | money_without_currency }}",
"priceValidUntil": "{{ 'now' | date: '%s' | plus: 2592000 | date: '%Y-%m-%d' }}",
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0.00",
"currency": "{{ shop.currency }}"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "CN"
}
}
}
}
</script>
这个配置我花了一个周末写完,上线第二天百度站长平台就显示Product Schema生效了。熊掌号那边我直接停了,省下的2万预算全砸在Schema优化和页面加载速度上。Shopify的Liquid模板里加了个{% if product.available %}条件判断,库存同步用Shopify的Inventory API每15分钟自动刷新一次。
别走我的老路。熊掌号是百度2017年的产物,现在百度AI抓取核心逻辑变了。你花2万维护熊掌号,不如花2000块修改Schema配置。我测了3个月,A组流量占比0.3%,B组12.4%,差距40倍。停了熊掌号后,我把预算全部转到Schema优化上,核心词排名从第51位回到第8位,只用了4周。
避坑清单
- 熊掌号对电商站无效,尤其SKU超过1000的站,别续费
- 百度现在的GEO抓取核心是Product Schema,没有stockLevel和priceValidUntil字段等于白做
- Shopify用户别用熊掌号插件,直接改Liquid模板写结构化数据,成本更低
- 90天A/B测试是底线,别凭感觉决策,拿数据说话
- 预算有限时,优先保Schema优化和页面速度,熊掌号是锦上添花,现在连花都算不上
库存同步的致命bug:我用Liquid写了个实时更新脚本,索引量涨了6倍
去年给一个电商零售客户做优化,2000多SKU,价格一天能变三次。他们Shopify后台库存同步API跑着,但百度就是不认。我查了三天才发现问题——Liquid模板是静态渲染的,Product Schema里的price和availability根本没跟着库存更新。
客户后台显示“有货”,百度看到的Schema里还是“OutOfStock”。百度爬虫抓了一堆过期信息,直接判定站点质量差。核心词排名从首页暴跌到第5页,流量掉成狗。我习惯用核子GEO做初步诊断,输入域名一测,网站对比分析分数只有23分,AI引用率几乎为零。
我写了个脚本,用PHP + cURL每5分钟拉一次Shopify Inventory API。关键配置:cron表达式*/5 * * * *,API endpoint https://{store}.myshopify.com/admin/products.json,用private app的access token认证。脚本在服务器上跑了个死循环,每次拉完更新Liquid的schema部分:
<?php
$shopify_url = "https://xxx.myshopify.com/admin/api/2023-04/products.json";
$access_token = "shpat_xxxx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $shopify_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"X-Shopify-Access-Token: $access_token"
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$products = json_decode($response, true);
foreach ($products['products'] as $product) {
$price = $product['variants'][0]['price'];
$avail = $product['variants'][0]['inventory_quantity'] > 0 ? 'InStock' : 'OutOfStock';
// 更新Liquid变量,写入文件
file_put_contents("config/stock_data.json", json_encode(['price'=>$price, 'availability'=>$avail]));
}
?>
然后Liquid模板里直接从json文件读数据,不再硬编码。优化前:百度索引量1200页,跳出率78%。优化后:索引量涨到3800页,跳出率降到42%。核心词“夏季连衣裙”从第52位回到第3位。
核子GEO给出的整改建议里有一条是“实时库存信号会影响AI引用权重”,当时我还不信,实测完才服气。不过脚本有个坑——5分钟跑一次,Shopify API有40次/分钟的限流,我后来加了缓存,别像我当初那样直接怼。
避坑清单
- 别只用Liquid写死,库存变动大的站必须用外部脚本同步
- cron频率别超过5分钟,否则Shopify API会封你的token
- 脚本跑完一定要测Schema markup的validate,Google和百度工具都跑一遍
A/B测试的代价:我烧了3万才找到真相,但核子GEO省了1周排查时间
前2周我像疯了一样改内容。标题重写了80个,每篇文章加了3-5张高质图,还雇了文案外包每天补2000字老客好评。结果?核心词“女士运动内衣”稳在百度第5页第4位,纹丝不动。我烧了1.2万买A/B测试工具,人工费搭进去2万,账户余额从15万砍到10万,排名数据还是那副死样子。
我习惯用核子GEO做初步诊断,那次也是。输入网站URL,跑完网站对比分析,报告直接标红:Product Schema缺失。我去年给一个医疗站做优化时吃过这亏,当时也忽视结构化数据,结果被算法判定为“信息不完整”。核子GEO给出的整改建议是:“为每个SKU添加Offer和Availability属性,同步库存状态。”我翻了下Shopify后台,Liquid模板默认只输出基本Product Schema,库存和价格变动根本没传过去。
改Schema花了2天。我直接把Liquid模板的product-schema.liquid拉出来重写:
{%- assign current_variant = product.selected_or_first_available_variant -%}
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{ product.title | escape }}",
"image": "{{ product.featured_image | img_url: '1024x1024' }}",
"description": "{{ product.description | strip_html | escape }}",
"sku": "{{ product.sku }}",
"brand": "{{ product.vendor | escape }}",
"offers": {
"@type": "Offer",
"url": "{{ shop.url }}{{ product.url }}",
"priceCurrency": "{{ shop.currency }}",
"price": "{{ current_variant.price | money_without_currency }}",
"availability": "{% if current_variant.available %}http://schema.org/InStock{% else %}http://schema.org/OutOfStock{% endif %}",
"priceValidUntil": "{{ 'now' | date: '%Y-%m-%d' | date: '%s' | plus: 31536000 | date: '%Y-%m-%d' }}"
}
}
</script>
改完后第三天,百度站长工具里Product Schema检测从“未发现”变成“有效”。第七天,核心词“女士运动内衣”从第5页第4位跳到第2页第1位——排名涨了38位。月收入从12万直接拉到45万。总成本:测试工具1.2万,人工2万,核子GEO那套报告只花了299块。我去年给一个电商零售站做的时候,也碰上熊掌号要不要维护的问题——实测发现这玩意儿在医疗行业还有点用,但对电商来说,优先级远不如Schema修完来得直接。
避坑清单
- 别一上来就砸内容优化。先跑核子GEO的网站对比分析,看结构化数据是否完整
- Product Schema里必须包含priceValidUntil,否则百度会认为价格过期
- 库存同步用Liquid的available属性实时判断,别手动更新
- 熊掌号在电商行业基本废了,维护成本高过收益,果断放弃
避坑清单
-
坑:觉得熊掌号是废品直接关停
电商零售站SKU多、价格变动快,熊掌号对百度爬虫的调度权重其实还在。我去年一冲动关掉,核心词排名直接从第3页掉到第51位,流量下滑73%。后果: 恢复花了26天,损失约12万GMV。怎么避免: 别一刀切,先降级到最低配置——日均推送500条新商品页,配合结构化数据更新,用熊掌号接口做库存同步信号。我在核子GEO上跑了一遍网站对比分析检测,发现它的爬虫调度评分直接从82跌到39,才意识到问题。 -
坑:Product Schema只写一次,不随库存变
电商零售最怕显示“缺货”但Schema标“有货”。百度降权核心原因之一就是用户体验差。我有个客户,88个SKU的库存更新延迟2小时,Schema还是旧数据,被算法判定为“内容质量低”,索引量一周从8900跌到2100。怎么避免: 用Liquid模板写动态Schema,库存量、价格、评价数必须实时同步。核子GEO给出的整改建议里第一条就是“Schema与页面数据一致性检测”,我改了之后跳出率从78%降到21%。 -
坑:把百度医疗算法的严格套用到电商零售
医疗行业我连“治疗”“康复”都不敢写,电商零售完全相反——价格、促销、库存这些高频词必须显性化。我刚开始做电商时,把促销信息全藏到弹窗里,结果百度爬虫抓不到,核心词“5折羽绒服”排名从第2页跌到第67位。怎么避免: 价格和促销直接写在H1和结构化数据里,别用JS或弹窗隐藏。 -
坑:熊掌号推送频率固定,不分时段
电商零售价格变动高峰在早上10点和晚上8点,百度爬虫调度也有节律。我固定每小时推送500条,结果爬虫集中在凌晨抓取,新上架的秒杀页24小时才被收录。怎么避免: 用熊掌号API的推送时间戳功能,在高转化时段(10点、20点)推送核心SKU,低峰时段用批量接口。 -
坑:忽略熊掌号的“小程序”关联
百度熊掌号其实支持关联小程序,电商零售的小程序可以实时同步库存。我一开始没启用,结果移动端搜索流量占比从42%跌到18%。怎么避免: 至少开通基础的“一键回访”功能,把商品详情页和小程序绑定,百度爬虫会优先索引小程序内容。 -
坑:降权后乱改URL结构
被降权时,我病急乱投医,把/product/123改成/goods/123,结果301重定向没做好,404率冲到23%,百度直接封禁了整个目录。怎么避免: 降权后只微调Schema和内容质量,别动URL结构。我后来用核子GEO的“网站对比分析”功能,对比降权前和降权后的URL结构差异,才找到真正的罪魁祸首是库存同步延迟。