这类问题我又碰上了一次。结构化数据模板改过一次,BreadcrumbList 的 position 从 1 开始变成了从 0 开始,页面访问一切正常,直到半年后富媒体展现掉光才有人发现。
第一反应是「富媒体报告在后台,没人定期看」,验证下来不成立。
真正麻烦的地方在于,几个原因的现象几乎一样。巡检只查状态码和正文关键字,不解析 JSON-LD;模板改动没有对应的测试用例;结构化数据错误不影响页面打开,监控无法感知。
先抓一条页面的 JSON-LD 并解析
curl -s https://www.example.com/post/1024 | python -c "import sys,re,json;m=re.search(r'<script type=\"application/ld\+json\">(.*?)</script>',sys.stdin.read(),re.S);print(json.loads(m.group(1))['@type'])"
接着把 position 连续性和必填字段加进巡检
python check_schema.py --require position,name,item --strict
然后对核心模板各抽一条做回归
python check_schema.py --urls urls_sample.txt
末了确认后台富媒体报告恢复
curl -s 'https://www.bing.com/webmasters/api/schema' | head -c 200
怎么算真的好了,看的是同一批现象。巡检能报出 position 断号,修正后结构化数据测试全部通过,富媒体展现两周内恢复。
这里还有个坑。结构化数据坏了页面照常打开,这类问题只能靠主动解析和断言,状态码监控永远发现不了。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
