关于 seo-images
seo-images 是用于网站图片 SEO 审核与优化的技能,检查替代文本、格式、文件大小、响应式展示、加载方式、尺寸和元数据。提供 DataForSEO MCP 时,还可分析图片搜索结果。
主要功能
- 01审核替代文本与图片尺寸
- 02检查格式、大小和加载方式
- 03检查响应式图片设置
- 04转换并压缩图片文件
- 05检查并添加图片元数据
- 06借助 DataForSEO 分析图片搜索结果
适用场景
- 01查找缺失或不合适的替代文本
- 02缩减过大的图片文件
- 03检查图片交付与加载设置
- 04标注 AI 生成的商品图片
- 05评估图片搜索可见度
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill seo-images安装后在 Claude Code 中输入/seo-images确认已加载。
详细介绍
图像优化分析
检查项
替代文本
- 所有
<img>元素都具有替代文本(装饰性元素除外:role="presentation") - 描述性强:描述图像内容,而不是“image.jpg”或“photo”
- 自然地包含相关关键词,避免堆砌关键词
- 长度:10-125 个字符
好的示例:
- “专业水管工正在维修厨房水槽水龙头”
- “红色 2024 款 Toyota Camry 轿车正面图”
- “现代办公室会议室中的团队会议”
不好的示例:
- “image.jpg”(文件名,不是描述)
- “水管工 管道 水管工服务”(堆砌关键词)
- “点击此处”(描述性不足)
文件大小
按图像类别划分的分级阈值:
| 图像类别 | 目标值 | 警告 | 严重 |
|---|---|---|---|
| 缩略图 | < 50KB | > 100KB | > 200KB |
| 内容图像 | < 100KB | > 200KB | > 500KB |
| 主视觉图像/横幅图像 | < 200KB | > 300KB | > 700KB |
建议尽可能压缩图像,使其达到目标阈值,同时不损失画质。
格式
| 格式 | 浏览器支持率 | 用途 |
|---|---|---|
| WebP | 97%+ | 默认推荐 |
| AVIF | 92%+ | 压缩效果最佳,较新 |
| JPEG | 100% | 照片的备用格式 |
| PNG | 100% | 带透明效果的图形 |
| SVG | 100% | 图标、徽标、插图 |
建议使用 WebP/AVIF,而非 JPEG/PNG。检查是否使用了带格式回退的 <picture> 元素。
推荐的 <picture> 元素模式
采用渐进增强,优先使用效率最高的格式:
<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Descriptive alt text" width="800" height="600" loading="lazy" decoding="async">
</picture>
浏览器会使用其支持的第一种格式。当前浏览器支持率:AVIF 为 93.8%,WebP 为 95.3%。
JPEG XL:新兴格式
2025 年 11 月,Google 的 Chromium 团队推翻了其 2022 年的决定,并宣布将通过基于 Rust 的解码器恢复 Chrome 对 JPEG XL 的支持。该实现已完成功能开发,但尚未纳入 Chrome 稳定版。JPEG XL 支持无损 JPEG 重新压缩(在画质零损失的情况下可节省约 20% 空间),且有竞争力的有损压缩效果。目前尚不适合实际用于 Web 部署,但值得持续关注其未来应用。
响应式图像
- 使用
srcset属性提供多个尺寸 - 使用与布局断点相匹配的
sizes属性 - 根据设备像素比选择合适的分辨率
<img
src="image-800.jpg"
srcset="image-400.jpg 400w, image-800.jpg 800w, image-1200.jpg 1200w"
sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px"
alt="Description"
>
懒加载
- 对首屏以下的图像使用
loading="lazy" - 不要对首屏/主视觉图像进行懒加载(会损害 LCP)
- 检查使用的是原生懒加载还是基于 JavaScript 的懒加载
<img src="photo.jpg" loading="lazy" alt="Description">
<img src="hero.jpg" alt="Hero image">
检测到的懒加载方法(lazy_method 字段)
scripts/parse_html.py 会通过每个图像条目中的 lazy_method 字段,对图像使用的懒加载机制进行分类。共有五种值:
lazy_method | 检测到的信号 | 常见技术栈 |
|---|---|---|
native | loading="lazy" HTML 属性 | 现代浏览器、纯 HTML |
perfmatters | data-perfmatters-src/-srcset 或 perfmatters-lazy 类 | WordPress + Perfmatters 插件 |
ewww | data-ewww-src / data-eio 或 lazyload-eio 类 | WordPress + EWWW Image Optimizer |
js-generic | data-src / data-lazy-src / data-original / data-srcset 或 lazyload/lazyloaded/lazy 类 | Lazysizes、vanilla-lazyload、jQuery 插件 |
none | 没有属性或类信号 | 页面未对该图像进行懒加载 |
审核图像 SEO 时,应同时报告 lazy_method 和 loading,让用户了解其网站是否使用了由 JS 驱动的懒加载器(这种情况下会有意省略原生 loading="lazy" 属性,这不代表功能退化)。
对 LCP 图像使用 fetchpriority="high"
为主视觉/LCP 图像添加 fetchpriority="high",以提升其在浏览器网络队列中的下载优先级:
<img src="hero.webp" fetchpriority="high" alt="Hero image description" width="1200" height="630">
**重要:**不要对首屏以上/LCP 图像进行懒加载。对 LCP 图像使用 loading="lazy" 会直接损害 LCP 分数。仅对首屏以下的图像使用 loading="lazy"。
对非 LCP 图像使用 decoding="async"
为非 LCP 图像添加 decoding="async",避免图像解码阻塞主线程:
<img src="photo.webp" alt="Description" width="600" height="400" loading="lazy" decoding="async">
CLS 防护
- 为所有
<img>元素设置width和height属性 - 可使用 CSS
aspect-ratio作为替代方案 - 标记未设置尺寸的图片
<img src="photo.jpg" width="800" height="600" alt="Description">
<img src="photo.jpg" style="aspect-ratio: 4/3" alt="Description">
<img src="photo.jpg" alt="Description">
文件名
- 使用描述性名称:
blue-running-shoes.webp,而非IMG_1234.jpg - 使用小写字母和连字符,不含特殊字符
- 包含相关关键词
CDN 使用情况
- 检查图片是否通过 CDN 提供(不同的域名、CDN 标头)
- 对图片较多的网站推荐使用 CDN
- 检查边缘缓存标头
输出
图片审计摘要
| 指标 | 状态 | 数量 |
|---|---|---|
| 图片总数 | - | XX |
| 缺少替代文本 | ❌ | XX |
| 超大(>200KB) | ⚠️ | XX |
| 格式不当 | ⚠️ | XX |
| 未设置尺寸 | ⚠️ | XX |
| 未启用延迟加载 | ⚠️ | XX |
优先优化列表
按文件大小影响排序(节省空间最多的排在最前):
| 图片 | 当前大小 | 格式 | 问题 | 预计节省 |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
建议
- 将 X 张图片转换为 WebP 格式(预计节省 XX KB)
- 为 X 张图片添加替代文本
- 为 X 张图片设置尺寸
- 为 X 张首屏以下的图片启用延迟加载
- 压缩 X 张超大图片
图片 SERP 分析
当 DataForSEO MCP 可用时,可通过竞争数据增强图片审计。
/seo images serp <keyword>
将页面图片与 Google 图片 SERP 排名进行交叉比对。
工作流:
- 通过
serp_google_images_live_advanced(depth=100)获取 Google 图片结果 - 提取:排名靠前的域名、图片类型、替代文本模式
- 输出竞争对手图片 SERP 概况
输出:
| 排名 | 域名 | 标题/替代文本 | 图片 URL | 页面 URL |
|---|---|---|---|---|
| 1 | example.com | "蓝色跑鞋..." | .../shoes.webp | /products/... |
分析包括:
- 域名优势:哪些网站占据最多图片排名位置(按数量列出前 10 名)
- 替代文本模式:排名靠前的图片中常见的标题/替代文本模式
- 格式分布:排名靠前的结果中 WebP、JPEG 和 PNG 的分布情况
- 机会评分:页面已有排名,但没有图片展示的关键词
如果 DataForSEO MCP 不可用,请告知用户并建议安装扩展。
图片文件优化
优化图片文件以提升 SEO:转换格式、注入元数据、压缩。
/seo images optimize <path>
优化用于 Web 和 SEO 的图片文件。转换为 WebP/AVIF、注入 IPTC 元数据、压缩,并生成响应式变体。
使用的工具(按优先顺序):
exiftool-- EXIF/IPTC/XMP 读写(安装:sudo apt install libimage-exiftool-perl)cwebp-- WebP 转换(安装:sudo apt install webp)- ImageMagick
convert-- 格式转换、调整大小(大多数系统已预装) - FFmpeg -- 格式转换备用工具(已预装)
运行前: 使用 which exiftool cwebp convert ffmpeg 检查哪些工具可用。
格式转换
转换图片为现代格式,同时保留元数据:
# WebP (recommended default) - with metadata preserved
cwebp -q 82 -metadata all input.jpg -o output.webp
# WebP via ImageMagick (fallback if cwebp not installed)
convert input.jpg -quality 82 output.webp
# AVIF via FFmpeg (slower encode, best compression)
ffmpeg -i input.jpg -c:v libaom-av1 -crf 30 -still-picture 1 output.avif
# Responsive variants (400w, 800w, 1200w)
convert input.jpg -resize 400x -quality 82 image-400.webp
convert input.jpg -resize 800x -quality 82 image-800.webp
convert input.jpg -resize 1200x -quality 82 image-1200.webp
元数据注入(用于 Google 富媒体搜索结果的 IPTC)
Google 图片会在搜索结果中显示 IPTC Creator、Credit Line 和 Copyright。 这不会影响排名,但能改善富媒体搜索结果的展示和品牌归属标注。
使用 exiftool(首选):
# Read all metadata
exiftool image.jpg
# Inject IPTC + XMP metadata for Google Images rich results
exiftool \
-IPTC:ObjectName="Product Photo Description" \
-IPTC:Caption-Abstract="Detailed image description" \
-IPTC:By-line="Brand Name Photography" \
-IPTC:Credit="Brand Name" \
-IPTC:CopyrightNotice="Copyright 2026 Brand Name" \
-IPTC:Source="brandname.com" \
-XMP:Title="Product Photo Description" \
-XMP:Description="Detailed image description" \
-XMP:Creator="Brand Name Photography" \
-XMP:Rights="Copyright 2026 Brand Name" \
image.jpg
# Batch inject to all images in directory
exiftool -overwrite_original \
-IPTC:By-line="Brand Name" \
-IPTC:CopyrightNotice="Copyright 2026 Brand Name" \
*.jpg *.webp *.png
使用 ImageMagick(备用):
identify -verbose image.jpg | head -50
convert input.jpg \
-set comment "Product Photo Description" \
-set IPTC:2:80 "Brand Name Photography" \
-set IPTC:2:116 "Copyright 2026 Brand Name" \
output.jpg
重要: WebP 支持 EXIF 和 XMP,但原生不支持 IPTC。对于 WebP 文件, 请使用 XMP 字段代替 IPTC。exiftool 会自动处理此转换。
AI 生成的图片:DigitalSourceType(Merchant Center 要求)
对于通过生成式 AI 制作的商品图片,Google Merchant Center 要求
提供 IPTC DigitalSourceType: TrainedAlgorithmicMedia 元数据。这是
一项运营政策要求,而非排名因素——AI 生成图片未包含此标签的 Feed
可能会被拒绝。
主要来源: https://developers.google.com/search/docs/fundamentals/ai-optimization-guide (引用了 Merchant Center 关于 AI 媒体标注的基础政策)。
审核命令:
# Audit a directory for the IPTC label (counts: missing, ai, captured, etc.)
python scripts/iptc_ai_label.py audit ./images/ --json
# Audit a single image
python scripts/iptc_ai_label.py audit ./hero.webp --json
# Inject the AI label into an image
python scripts/iptc_ai_label.py inject ./ai-hero.webp \
--source-type trainedAlgorithmicMedia
# Other vocabulary values:
# compositeSynthetic (mix of captured + AI elements)
# digitalCapture (fully captured photograph)
原始 exiftool 等效命令(供临时使用):
# Inject manually
exiftool \
-XMP-iptcExt:DigitalSourceType="https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia" \
ai-generated-product.jpg
# Audit: find images missing the label across a directory
exiftool -if 'not $XMP-iptcExt:DigitalSourceType' \
-filename -DigitalSourceType *.jpg *.webp *.png
IPTC 词汇表还定义了:
trainedAlgorithmicMedia— 完全由 AI 生成(扩散模型生成的商品图片请使用此项)compositeSynthetic— 混合拍摄元素和 AI 生成元素digitalCapture— 完全由相机拍摄的照片(不含 AI 元素)
对 AI 生成素材运行 /seo images optimize 时,请提示用户确认来源类型,并自动注入相应的 IPTC 值。
对于 AI 生成的商品标题和描述,Google Merchant Center 还要求在 Feed 中单独指定并标注 AI 生成的文本。这一要求在 Feed 层面强制执行,而非页面层面——请在与 seo-ecommerce 交叉引用时注明这一点。
元数据审核
# Quick audit with exiftool
exiftool -IPTC:all -XMP:all -EXIF:ImageDescription image.jpg
# Batch audit - find images missing IPTC Creator
exiftool -if 'not $IPTC:By-line' -filename *.jpg *.webp *.png
完整优化流程
为获得最佳图片 SEO 效果,请对每张图片运行以下流程:
- 审核现有元数据:
exiftool -IPTC:all -XMP:all image.jpg - 注入 IPTC/XMP 元数据:Creator、Copyright、Description
- 转换为 WebP:
cwebp -q 82 -metadata all image.jpg -o image.webp - 生成响应式变体:400w、800w、1200w
- 验证元数据是否保留:
exiftool image.webp - 生成
<picture>HTML:AVIF > WebP > JPEG 回退链
对 Google 图片搜索有影响与无影响的因素
| 因素 | 影响 | 设置位置 |
|---|---|---|
| 替代文本 | 关键(排名) | HTML <img alt=""> |
| 文件名 | 高(排名) | 文件系统(描述性名称,以连字符分隔) |
| 页面上下文 | 高(排名) | 周围的 HTML 内容 |
| 文件大小/速度 | 中(通过 CWV 间接影响) | 压缩 + 格式转换 |
| IPTC Creator/Copyright | 低(仅影响显示) | 图片文件元数据 |
| EXIF 相机数据 | 无 | 与 SEO 无关 |
| IPTC Keywords | 无 | Google 会忽略这些信息 |
错误处理
| 场景 | 操作 |
|---|---|
| URL 无法访问 | 报告连接错误及状态代码。建议验证 URL 并检查网站是否需要身份验证。 |
| 页面上未找到图片 | 报告未检测到 <img> 元素。建议检查图片是否通过 JavaScript 或 CSS background-image 加载。 |
| 图片位于 CDN 后方或需要身份验证 | 说明无法直接访问图片文件以分析大小。报告可用的元数据(替代文本、尺寸、标记中的格式),并标记无法访问的资源。 |
| 未安装 exiftool | 改用 ImageMagick 读取元数据。建议:sudo apt install libimage-exiftool-perl |
| 未安装 cwebp | 改用 ImageMagick 或 FFmpeg 转换为 WebP。建议:sudo apt install webp |
| DataForSEO MCP 不可用 | 跳过 Image SERP Analysis 部分。注明未安装扩展。 |