事情本身不复杂,线索都在日志里。德语站的商品价格写成 1.299,00 欧元,结构化数据里直接把这个字符串塞进了 price 字段。测试工具报「无效数字」,德语版的商品富媒体全部不展示。
第一反应是「模板按语言复用了同一段 JSON-LD 生成逻辑」,验证下来不成立。
原因不止一个,得分开看。价格直接用了本地化格式,没有转成机器可读的小数。也可能是priceCurrency 写的是 EUR 但价格字符串里又带了货币符号。
不容易想到的是,价格字段做了千分位格式化 逗号随语言变化。
第一件事是抓一段德语版的 JSON-LD
curl -s https://www.example.com/de/p/1 | grep -o '"price":"[^"]*"'
价格只输出数字与小数点
"price": "1299.00"
货币单独用字段表达
"priceCurrency": "EUR"
剩下的就是用测试工具复核
curl -s https://www.example.com/de/p/1 | grep -c 'priceCurrency'
恢复的判定其实很直接。改成纯数字后测试工具通过,两周内德语版商品恢复富媒体展示,点击率回升到改版前水平。
容易忽略的是,结构化数据里的数字一律用点号小数,本地化格式只用于页面展示,两套逻辑要分开写。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
