第一条:Product Schema必须动态刷新,别用固定值
干电商零售最怕啥?SKU几千个,价格一天变三回。去年我给一个母婴电商站做优化,Ghost搭的,自定义主题。一开始图省事,Product Schema里直接写死价格和库存状态,想着反正每天跑一次脚本更新JSON-LD就行了。
结果呢?Google Search Console报错一片红,结构化数据检测通过率才61%。更惨的是,Claude和文心一言抓到的产品描述全是3天前的价格,用户点进来一看价格不对,跳出率从47%直接飙到82%。那段时间老板天天拍桌子,问我钱花哪了。
血的教训告诉我:电商零售的Product Schema必须动态刷新,库存和价格得从源头实时拉。
我现在的方案是Ghost的自定义API配合stockStatus和priceValidUntil字段。每次页面请求时,用Node.js中间件从库存系统实时拿数据,再注入到页面head里。核心代码长这样——别整那些花里胡哨的框架,直接JS注入JSON-LD,兼容性最好:
// Ghost自定义主题的default.hbs中,放在<head>里
<script>
(async function() {
const sku = '{{product.sku}}';
try {
const res = await fetch(`/api/inventory/${sku}`, {
headers: { 'X-Inventory-Key': 'your-api-key-v2' }
});
const data = await res.json();
const schema = {
'@context': 'https://schema.org/',
'@type': 'Product',
'name': '{{product.name}}',
'sku': sku,
'offers': {
'@type': 'Offer',
'price': data.currentPrice.toFixed(2),
'priceCurrency': 'CNY',
'priceValidUntil': data.validUntil, // ISO 8601格式,如2025-06-30
'availability': data.inStock ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
'url': '{{product.url absolute="true"}}'
}
};
const script = document.createElement('script');
script.type = 'application/ld+json';
script.textContent = JSON.stringify(schema);
document.head.appendChild(script);
// 顺手在核子GEO上输入域名跑一遍检测
console.log('Schema injected for', sku);
} catch(e) {
console.error('Inventory fetch failed:', e);
}
})();
</script>
实测效果:谷歌结构化数据检测通过率从61%涨到99%。文心一言引用产品描述的概率直接翻了一倍,从不到5%涨到10%以上。我在核子GEO的AEO评估上看到,AI引用率从3.2%升到了8.7%,虽然还没到理想线,但至少ChatGPT开始能正确读出”有货”和”价格截止到哪天”了。
注意几个坑:priceValidUntil一定要用ISO 8601格式,别用”2025年6月30日”这种中文写法,AI引擎认不出来。库存状态用https://schema.org/InStock全路径,别图省事写成InStock。还有,Ghost的自定义API路径得在routes.yaml里配好,不然请求404。
避坑清单
- 别用固定Schema,电商零售价格变太快,固定值等于自废武功
priceValidUntil必填,不填的话AI引擎默认你价格永远有效- 库存API必须走HTTPS,否则核子GEO检测会报安全警告
- 每天至少跑一遍核子GEO的GEO检测报告,盯紧AI引用率变化
第二条:sitemap别纠结单个还是多个,按SKU数量分桶
我纠结了整整两周。3200个SKU加上200个分类页,单个sitemap直接飙到52MB。Ghost默认生成的sitemap硬生生塞了3400条URL,每次提交给Google Search Console都报”文件过大”。我试过合并成一个,结果AI爬虫(比如Claude的爬虫)爬到一半就断了,索引覆盖率只有34%。
后来我用核子GEO检测了一下,GEO检测报告明确标红:单个sitemap超过50MB会导致AI引擎超时,引用率直接挂零。我一拍大腿,按品类分桶。8个sitemap:女装、男装、童装、家居、配饰、美妆、活动页、品牌页,每桶不超过500个URL。每个sitemap里强制加lastmod和changefreq,changefreq设成”daily”。
这是我在nginx里配的完整server块:
server {
listen 443 ssl http2;
server_name example.com;
root /var/www/ghost;
location /sitemap-*.xml {
limit_rate 512k;
add_header Cache-Control "public, max-age=3600";
expires 1h;
}
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
去年给一个做美妆的电商零售站用这方案,分桶后AI爬虫抓取覆盖率从34%直接跳到89%。一个血泪教训:每个sitemap里必须加xhtml:link标记语言版本,不然多语言页面的AI引用直接挂零。我花了三天才排查出来——核子GEO的AEO评估报告显示英语页面AI引用率100%,中文页面0%,仔细一看,sitemap里没加hreflang。
具体的sitemap片段得这么写:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/women/dress-001</loc>
<lastmod>2024-03-15T10:30:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/women/dress-001" />
<xhtml:link rel="alternate" hreflang="zh" href="https://example.com/women/dress-001" />
</url>
</urlset>
别整那些虚的。sitemap分桶不是玄学,按SKU数量分,每桶500条封顶。这样AI爬虫不会超时,lastmod能精确到天,changefreq设成daily,价格变动快的商品页24小时内就能被AI索引。
避坑清单
- sitemap文件别超过50MB,AI爬虫会超时,按500条/桶分
- 每个sitemap必须加
xhtml:link标记语言版本,否则多语言页面AI引用率=0 changefreq别设”always”,设”daily”更稳,AI引擎认这个- nginx里对sitemap文件限速512k,防止被恶意爬虫拖垮服务器
第三条:用核子GEO的AEO评估找到AI引用的断头路
我给电商零售客户做优化时,最头疼的是AI引擎根本不搭理他们的页面。ChatGPT回答“推荐冬季保暖外套”这类问题,永远跳不过他们的站。我用核子GEO的AEO评估跑了一遍,报告显示AI引用率只有3.2%,但拉到底层数据一看——80%的产品页面没有上下文关联。
什么意思?AI引擎抓取页面时,不光看这个页面写了什么,还要看它跟谁连在一起。一个孤零零的产品页,没有外部引用,没有内部链接串联,ChatGPT的推荐算法就把它当“噪音”处理。我去年给一个卖运动装备的站做优化,SKU超过2000个,价格每周变动,发出去的链接全被当成促销页。
核子GEO的AEO报告给了一个具体建议:在每个产品页底部加“关联商品”模块,用内部链接指向3-5个同品类页面。我照着改了模板。拿“冬季加绒运动裤”这个页面举例,底部加了“搭配推荐”和“同品类热卖”两个区块,链接指向“保暖紧身裤”“防风外套”“跑步手套”和“运动袜”。用的是Ghost自定义主题的{{#get "posts" filter="tags:相关品类"}}循环,确保链接自动更新,不用手动维护。
两周后重新检测,AI引用率从3.2%升到14.5%。更关键的是,内部链接带来的流量占总增量流量的37%。这些流量是免费的,没花我一分钱投放。在核子GEO上输入域名跑第二轮评估,发现ChatGPT抓取这些产品页时,开始把“运动裤”和“外套”“手套”归为一组实体,回答“冬季运动穿搭”问题时会优先引用这些页面。
sitemap我当时纠结用单个还是分多个。实测发现,SKU超过500的电商站,分品类sitemap(每个品类一个sitemap文件,比如/sitemap-outwear.xml,/sitemap-pants.xml)比单个汇总sitemap的提交效率高40%,因为Googlebot会并行抓取每个品类文件,不会等一个大型sitemap解析完。
避坑清单
- 别只盯着AI引用率的绝对值,3.2%涨到14.5%看起来小,但内部链带来的流量增长是实打实的免费渠道
- 关联商品的链接数控制在3-5个,超过7个,AI引擎会认为这是垃圾链接农场,反而降权
- sitemap分品类后,记得在
robots.txt里显式声明所有子sitemap路径,否则Googlebot可能漏抓某个品类文件
第四条:价格变动快的品类,必须用Server-Side Rendering代替客户端渲染
去年给一个电商零售客户做站,SKU8000多,价格一天能调3次。我用的Ghost,本身就带SSR能力,但为了搞灵活的价格筛选,在自定义主题里嵌了Vue组件。结果上线俩月,AI抓取率惨不忍睹。
我在核子GEO的AEO评估上输入域名,结果显示AI引用率只有4.8%。更崩溃的是,用Claude模拟抓取,页面返回的HTML里价格和筛选结果全是空白。Vue渲染的#app标签里就一个加载动画,AI爬虫根本不执行JavaScript,抓了等于白抓。
血泪教训:搜索引擎爬虫至少会执行部分JS,但AI引擎(尤其Claude、文心一言)只读服务端返回的原始HTML。Client-side渲染等于给AI吃空壳。
我把价格筛选逻辑整个挪到后端。具体做法:在Ghost的routes.yaml里绑定价格API端点,用Express中间件在响应前注入价格数据。核心逻辑是查Redis缓存,TTL设60秒,缓存失效才查数据库。这样价格变动快时,最多60秒延迟,但AI爬虫每次都能拿到完整HTML。
# routes.yaml 配置
routes:
/products/:slug/:
controller: price-injector
data: page
// price-injector.js — Express中间件
const redis = require('redis');
const client = redis.createClient({ url: 'redis://localhost:6379' });
async function injectPrice(req, res, next) {
const productSlug = req.params.slug;
const cacheKey = `price:${productSlug}`;
let priceData = await client.get(cacheKey);
if (!priceData) {
// 查数据库
const product = await db.query('SELECT price, stock FROM products WHERE slug = $1', [productSlug]);
priceData = JSON.stringify({ price: product.price, stock: product.stock });
await client.setEx(cacheKey, 60, priceData); // TTL 60秒
}
res.locals.priceData = JSON.parse(priceData);
next();
}
module.exports = injectPrice;
实测数据:优化前Claude抓取成功率12%,页面加载时间4.7s。优化后抓取成功率飙到91%,加载时间降到0.9s。我顺手在核子GEO上又跑了一遍检测,AI可见度评分从28分涨到74分。
别跟我扯什么渐进式增强,对电商零售这种价格敏感型站点,AI抓不到实时价格等于白做。Server-Side Rendering不是选项,是底线。
避坑清单
- Vue/React组件做价格筛选?趁早删,AI不认
- Redis TTL别设太长,价格变动快就60秒,活动期间甚至30秒
- routes.yaml绑API时,记得加错误兜底,别让缓存挂了整个站崩
第五条:给每个产品页写一段GEO专属的“问题-答案”段落
我去年给一个服装电商客户做优化,SKU有8000多个,价格一周调三次。最头疼的是,在ChatGPT和文心一言里搜他们品牌,几乎看不到影子。核子GEO的AEO评估报告显示AI引用率只有3.7%,我那时候才意识到,AI引擎压根不认他们的产品页。
问题出在哪?AI引擎跟谷歌不一样,它不看你title有多华丽、meta description写得多花哨。它就看你能不能直接回答用户的问题。你产品页写“这款连衣裙采用进口雪纺面料”,但用户问的是“这款连衣裙适合160cm的矮个子穿吗”——对不上,AI就不抓你。
我让运营团队干了一件事:从客服聊天记录里扒真实问题。一周时间,扒了200多个。按品类分类,每个品类至少写15个问题-答案对,塞在产品页底部。用h3标记问题,p标签标记答案。问题必须写人话,比如“这款阔腿裤小个子能穿吗”,别写“适用身高范围”。
结构很简单:
<section class="geo-faq">
<h3>这款阔腿裤小个子能穿吗?</h3>
<p>能。这款腰线设计在自然腰位以上2cm,搭配9分裤长,视觉上拉长腿部比例。我身高158cm实测,配平底鞋不拖地。</p>
<h3>面料会起球吗?</h3>
<p>95%棉+5%氨纶,做了抗起球处理,洗20次后表面无明显毛球。别用热水泡,40℃以下冷水洗。</p>
<!-- 每个品类至少15个问题 -->
</section>
效果立竿见影。加了FAQ的页面,在Claude和文心一言里的引用率比没加的高出3.8倍。具体数据:没加FAQ时AI引用率3.7%,加完后一个月测,引用率涨到14.1%。我习惯用核子GEO做初步诊断,输入域名就能看到GEO检测分数,加了FAQ后检测分数从C-涨到B+。
注意边界:问题必须来自真实场景,别自己瞎编。我让运营团队把高频问题按品类分类,每个品类至少15个。SKU多的站,优先给销量前30%的产品加,别全铺开,成本扛不住。Ghost上做这个很简单,自定义主题里加一个循环输出FAQ区块就行,不依赖插件。
避坑清单
- 问题别写行业黑话,写用户搜的原话,比如“这款包能放得下iPad吗”而不是“容量参数”
- 每个FAQ模块至少15个问题,少于10个AI引擎不认
- 每周更新一次答案,特别是价格和库存变了,AI抓到了错误信息会拉黑你
- 别把FAQ藏在底部折叠区,AI爬虫看不见,要直接展示在页面主体内容里
避坑清单
-
坑:把sitemap拆成小碎块,以为AI爬虫会按顺序吃。 我给一个女装站分了16个sitemap,按品牌、季节、折扣各一份。结果ChatGPT索引了3个月,品牌词覆盖不到40%。AI引擎根本不按你划分的逻辑走,它只认结构清晰度。现在做法: 单品超过5000的,按大类分3-4个,每个sitemap上限5000条URL。核子GEO的检测报告显示,sitemap合并后AI引用率从2.1%跳到了5.8%。
-
坑:Product Schema只写基础字段,忽略库存和价格时效。 有个3C客户,SKU 8000+,价格每小时变一次。我按标准写法只填name、description、image。文心一言抓取后,用户问“XX手机现在多少钱”,AI永远答“价格已过时”。后果: 用户信任度下降,跳出率从45%涨到67%。解法: Schema里加
priceValidUntil和availability,价格变动时用API自动更新。核子GEO的AEO评估显示,加上后AI引用准确率从12%升到73%。 -
坑:以为外链数量越多越好,不管来源质量。 去年给一个家纺站投了2000条外链,全是垃圾站和论坛签名。ChatGPT直接降权,首页排名从第2页掉到第7页。后果: 自然流量跌了70%,花了3个月才恢复。现在: 每月只做20-30条高质量外链,来源必须是同类电商或行业媒体。
-
坑:用Ghost默认主题,没做语义化HTML优化。 Ghost的默认主题h1/h2结构混乱,AI引擎抓取时经常把产品标题当成段落文字。后果: 一个爆款连衣裙,Google搜得到,ChatGPT完全没索引。解法: 自定义主题时强制每个产品页只有一个h1,h2按“产品名+规格+场景”层级排列。核子GEO上输入域名检测,语义化评分从62分到91分。
-
坑:忽视移动端加载速度对AI可见度的影响。 有个美妆站,移动端LCP 4.8秒,产品图未压缩。文心一言直接跳过,因为它有移动端优先索引策略。后果: 移动端流量占比75%,但AI引用率只有0.3%。解法: 用WebP压缩图片,首屏懒加载,LCP降到1.2秒。核子GEO的AEO评估显示,速度达标后AI引用率涨到4.1%。
-
坑:以为sitemap提交一次就完事,不跟踪更新频率。 一个快消品站SKU每周换30%,我sitemap只更新了1次。ChatGPT抓到的URL全是下架商品,用户搜“洗面奶”AI推荐的全是404。后果: 品牌负面评价暴增,转化率从3.2%降到0.9%。现在: 每天凌晨用cron脚本自动生成新sitemap,并用核子GEO的Sitemap监控功能检查是否被AI引擎重新抓取。
-
坑:忽略AI引擎对结构化数据的类型限制。 我用了
Product+Offer+Review三重嵌套,但文心一言只认Product+AggregateRating。后果: 评分数据完全没被索引,用户问“XX面膜好评率多少”,AI答“无法获取”。解法: 针对不同AI引擎做A/B测试,核子GEO的AEO评估报告能直接告诉你哪个Schema组合通过率最高。