商品有多个规格,价格区间是 99 到 299,结构化数据用了 AggregateOffer 只写了 price,测试工具报 lowPrice 必填,富媒体展示一直不出现。

排查方向其实有限,先把可能性排一排。AggregateOffer 必须提供 lowPrice 和 priceCurrency;只写 price 会被当成单值,与 AggregateOffer 类型冲突;highPrice 可省略,但 lowPrice 不能省;多规格页面的 offers 被输出成数组,解析器只读了第一个。

第一件事是抓取页面里的 offers 结构

curl -s https://www.example.com/product/1024/ | findstr /i lowPrice

接着确认规格价格区间

SELECT MIN(price) AS low, MAX(price) AS high FROM sku_price WHERE product_id=1024;

补上 lowPrice 与 highPrice

echo json_encode(['lowPrice'=>99,'highPrice'=>299,'priceCurrency'=>'CNY']);

复验富媒体报告

curl -s https://www.example.com/product/1024/ | findstr /c:"AggregateOffer"

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

改完先别撤,确认这几项。补全区间字段后测试通过,一周后商品在搜索结果里带上了价格区间。

补一句。用 AggregateOffer 就别再写单个 price,两种字段混在一起,解析器只会挑一个读。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189