先看现象。文章页一个 URL 里挂了五张配图,生成的图片 sitemap 在一个 url 节点下写了五个 image:loc,提交后必应只认出前三张,后两张在报告里完全看不到。

排查方向其实有限,先把可能性排一排。图片 sitemap 对同一 url 下的 image 节点有数量限制,超出的被丢弃。另一种情况是生成脚本没有分块,把所有配图塞进同一条 url。

不容易想到的是,image:loc 用了相对路径,部分节点直接解析失败。

还有一种情况,压缩后的 sitemap 超过单文件大小上限,尾部被截断。

动手时先抽查一条 url 下实际输出了几个 image 节点

curl -s https://www.example.com/post-image-sitemap.xml | grep -c 'image:loc'

随后把配图拆成多条 url 节点

python build_image_sitemap.py --per-url 1

接着确认 image:loc 全部是绝对地址

grep -o '<image:loc>[^<]*' sitemap_img.xml | head -5

校验单文件体积和条目数

ls -lh sitemap_img.xml; grep -c '<url>' sitemap_img.xml

怎么算真的好了,看的是同一批现象。每条 url 下只保留一个 image:loc,重新提交后图片收录数从三张涨到全部,报告里不再出现被忽略的节点。

图片 sitemap 的粒度要跟页面地址对齐,一个地址塞多张图看起来省事,实际会把后面的图全丢掉。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189