问题出现得很突然,日志倒是留得挺全。食谱页的 cookTime 写成 30 分钟,结构化数据测试提示时长格式不符,Recipe 富媒体在搜索里一直不出现,改成 30M 也不行。

刚开始盯着「prepTime 和 cookTime 用了同一段自由文本」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。cookTime 要用 ISO 8601 时长格式,例如 PT30M。也可能是中文单位不在支持范围。

还有一种情况,totalTime 与两者互相冲突,整段被忽略。

第一件事是看当前输出的时长字段

curl -s https://www.example.com/recipe/1/ | Select-String cookTime

随后改成 ISO 8601 时长

echo '<meta itemprop="cookTime" content="PT30M">';

补齐 prepTime 和 totalTime

echo '<meta itemprop="totalTime" content="PT45M">';

复核富媒体状态

curl -s "https://search.google.com/test/rich-results?url=https://www.example.com/recipe/1/" -o /dev/null -w "%{http_code}"

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

这台环境是别人交接的,不少默认值被动过,只能一项项核。

改完先别撤,确认这几项。三个时长字段都能被解析,富媒体测试通过,食谱页在移动端出现步骤富媒体。

这里还有个坑。时长只认 PnYnMnDTnHnMnS 这套写法,中文和纯数字都不行。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189