事情本身不复杂,线索都在日志里。商品页 JSON-LD 里 offers.price 写的是 19.90,Search Console 富媒体报告提示价格格式无效,同一批商品里 199 的能通过,带两位小数的全部报错。
第一反应是「priceCurrency 没写,解析器无法确定小数位含义」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。price 要求字符串且不带千分位,写成数字类型被判类型不符。另一种情况是价格里混了货币符号和空格,只该保留数字和小数点。
少数情况下是促销价和原价放在同一个 offer 里,字段互相覆盖。
先看页面输出的 price 原始值
curl -s https://www.example.com/p/123 | grep -o '"price"[^,]*'
再往下在模板里把价格改成字符串
grep -rn 'offers' templates/product.html
本地校验 JSON-LD 结构
python -c "import json;json.load(open('schema.json'))"
复查该 URL 的富媒体状态
curl -s 'https://search.google.com/test/rich-results?url=https://www.example.com/p/123' | grep -o 'price' | head
恢复的判定其实很直接。富媒体报告里价格类错误清零,带两位小数的商品也能通过,搜索结果重新出现价格区间。
容易忽略的是,JSON-LD 里的数字不会保留尾随零,19.90 会被解析成 19.9,用字符串才稳定。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
