本文约 4,642 字,预计阅读 12 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:图片几万张,Google 图片里一张都搜不到
做摄影素材站和做课程视频站的同学会碰到同一个问题:网页本身收录正常,但图片搜索和视频搜索里几乎看不到自己的内容。有人以为是文件名没写好,于是一张张改成 blue-widget-product-photo.jpg,改了三千张,收效甚微。
真实原因是发现路径不对。Googlebot 抓网页时确实会解析页面里的 <img>,但这个过程依赖渲染、也依赖页面本身被抓到;对于懒加载、JS 动态插入、或藏在灯箱组件里的图片,抓取覆盖率极低。而独立的 image sitemap 是直接把图片 URL 清单交给 Google,不依赖渲染,覆盖率高得多。视频同理——video sitemap 能把你托管在第三方平台(YouTube、Vimeo)上的视频与主页面关联起来。
原理分析:三种 sitemap 的分工
| 类型 | 命名空间 | 解决什么问题 | 必填字段 |
|---|---|---|---|
| 网页 sitemap | sitemaps.org/0.9 | 页面发现 | loc |
| 图片 sitemap | image |
图片被 Google 图片收录 | image:loc |
| 视频 sitemap | video |
视频出现在视频搜索与 Google 视频 | video:thumbnail_loc、video:title、video:description |
关键规则有四条:
一是图片 URL 必须可被抓取。 如果图片被 robots.txt 屏蔽,或者需要登录/防盗链才能访问,写了也没用。
二是每个 url 块最多 1000 个 image 条目。 超过就拆分。
三是视频 sitemap 里 video:content_loc(播放页)与 video:player_loc(播放器 URL)至少要有一个,且二者不能在同一个域名上同时缺失。托管在 YouTube 时,通常填 player_loc 指向 YouTube 播放器。
四是视频时长、上传日期等字段要真实。 video:duration 取值 1–28800(秒),video:upload_date 必须是完整日期时间格式。填错会导致条目被拒绝。
另外要分清 sitemap 与结构化数据的分工:sitemap 负责“发现”,结构化数据负责“理解”。想让视频出现在富媒体结果里(带时长、缩略图的搜索结果),除了 video sitemap,还需要在页面里加 VideoObject 结构化数据。
保姆级实操
步骤 1:确认媒体资源可被抓取。 先检查 robots.txt 是否屏蔽了 /wp-content/uploads/,同时确认 CDN 或防盗链策略没有对 Googlebot 返回 403。这一步没做,后面全白费。
步骤 2:生成 image sitemap。 可以直接写在网页 sitemap 的 <url> 里,也可以做成独立文件。独立文件更适合图片量大的站点:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://www.example.com/gallery/industrial-valve/</loc>
<image:image>
<image:loc>https://www.example.com/wp-content/uploads/2026/03/valve-01.jpg</image:loc>
<image:title>不锈钢法兰球阀 DN50 实物图</image:title>
<image:caption>阀体材质 304 不锈钢,公称压力 PN16</image:caption>
<image:geo_location>Shanghai, China</image:geo_location>
<image:license>https://creativecommons.org/licenses/by/4.0/</image:license>
</image:image>
<image:image>
<image:loc>https://www.example.com/wp-content/uploads/2026/03/valve-02.jpg</image:loc>
<image:title>球阀内部结构剖面图</image:title>
</image:image>
</url>
</urlset>
步骤 3:生成 video sitemap。 注意命名空间与必填字段,video:family_friendly 建议显式声明:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://www.example.com/course/wordpress-seo-basics/</loc>
<video:video>
<video:thumbnail_loc>https://www.example.com/wp-content/uploads/2026/04/cover-seo.jpg</video:thumbnail_loc>
<video:title>WordPress SEO 入门:从安装到收录</video:title>
<video:description>演示如何配置 WordPress 固定链接、站点地图与结构化数据,共 12 分钟。</video:description>
<video:player_loc>https://www.youtube.com/v/AbCdEfGhIjk</video:player_loc>
<video:duration>720</video:duration>
<video:publication_date>2026-04-02T09:14:22+08:00</video:publication_date>
<video:upload_date>2026-04-02T09:14:22+08:00</video:upload_date>
<video:family_friendly>yes</video:family_friendly>
<video:live>no</video:live>
<video:requires_subscription>no</video:requires_subscription>
</video:video>
</url>
</urlset>
步骤 4:在 GSC 里单独提交。 图片与视频 sitemap 与网页 sitemap 一样,在 GSC → 站点地图里逐条提交。提交后可以在报告里看到「已发现的图片数 / 视频数」,这是验证是否解析成功最直接的指标。
步骤 5:交叉验证。 用 URL 检查工具检查承载页,在「增强功能」区块里能看到识别到的视频/图片信息。也可以用富媒体结果测试工具(search.google.com/test/rich-results)验证 VideoObject 结构化数据。这部分与 Google 结构化数据入门 是配套的。
步骤 6:处理 WordPress 的实现。 Yoast SEO 与 Rank Math 默认会为文章页生成带 image 标签的条目;核心的 wp-sitemap.xml 不输出 image/video 命名空间。需要 video sitemap 时通常用专门的视频 SEO 插件,或者自己用 wp_sitemaps_posts 相关过滤器扩展输出。
常见踩坑
- 图片被 robots.txt 屏蔽却写进了 sitemap。 状态会显示被排除,且没有任何直观提示。
- 懒加载图片没有可抓取的
src。 sitemap 里给的是真实地址,但页面上只有data-src。 video:duration超出 1–28800 范围。 条目直接被拒。player_loc与content_loc都指向需要登录的地址。 Google 无法验证播放。- 缩略图尺寸过小或跨域不可访问。 Google 对缩略图有最低分辨率要求,且必须可匿名抓取。
- 一个 url 块塞超过 1000 张图片。 超出部分被忽略。
- 案例: 一个课程站把所有视频托管在私有对象存储上并加了 Referer 防盗链,
player_loc指向需要登录的播放页。video sitemap 提交后三个月的“已发现视频数”一直是 0。后来改为把视频分发到 YouTube(不公开、仅嵌入),player_loc指向 YouTube 播放器地址,同时页面加VideoObject结构化数据,两周后视频开始在 Google 视频结果里出现。媒体资源必须可被匿名抓取,这是前提中的前提。
总结
图片与视频 sitemap 的核心价值是不依赖渲染的发现通道,配置要点是:正确的命名空间、必填字段完整、媒体可匿名抓取、每个 url 块图片不超过 1000 条、时长与日期字段真实。判断有效性只看一个数字:GSC 站点地图报告里的“已发现的图片数 / 视频数”。如果这个数字长期为 0 或远小于实际数量,先查 robots 与防盗链,再查字段合法性——不要急着改文件名。
