关于 seo-images
seo-images 是用于网站图片 SEO 审核与优化的技能,面向网站维护者和 SEO 从业者。它检查图片描述、格式、尺寸与加载方式,并提供图片文件优化和 SERP 分析流程。
主要功能
- 01检查替代文本与图片文件名
- 02评估大小、格式和响应式设置
- 03检查延迟加载及 LCP 优先级
- 04审计尺寸与布局偏移风险
- 05转换压缩图片并处理元数据
- 06分析图片 SERP 竞争情况
适用场景
- 01审核网站图片 SEO 问题
- 02优化图片格式与文件体积
- 03检查 AI 生成商品图的 IPTC 标签
- 04对照 Google 图片结果分析竞争
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agricidaniel/ claude-seo --skill seo-images安装后在 Claude Code 中输入/seo-images确认已加载。
附带文件LICENSE.txt
详细介绍
图片优化分析
检查项
替代文本
- 所有
<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>
浏览器会使用第一个受支持的格式。全球浏览器支持率(数据来源:caniuse.com,查询日期:2026-09-28):AVIF 约为 95.4%,WebP 约为 96.8%。引用数据前请重新检查 caniuse。
JPEG XL:新兴格式
第三方报道和 Wikipedia 称,基于 Rust 的 JPEG XL 解码器已随 Chrome 145 稳定版发布(2026-02-10),但需要启用 chrome://flags/#enable-jxl-image-format 标志,且默认未启用;事实资料包中未找到 Google 官方确认。由于尚未确认默认支持,目前还不适合用于生产环境中的网页交付。请继续提供 AVIF/WebP 和 JPEG 回退,并持续关注。
响应式图片
- 使用
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 字段)
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py 会通过每个图片条目中的 lazy_method 字段,对图片的延迟加载机制进行分类。共有五种取值:
lazy_method | 检测到的信号 | 常见技术栈 |
|---|---|---|
native | loading="lazy" HTML 属性 | 现代浏览器、纯 HTML |
perfmatters | data-perfmatters-src/-srcset 或 class perfmatters-lazy | WordPress + Perfmatters 插件 |
ewww | data-ewww-src/data-eio 或 class lazyload-eio | WordPress + EWWW Image Optimizer |
js-generic | data-src/data-lazy-src/data-original/data-srcset 或 class lazyload/lazyloaded/lazy | Lazysizes、vanilla-lazyload、jQuery 插件 |
none | 没有属性或 class 信号 | 页面未对该图片启用延迟加载 |
审计图片 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属性 - 或使用
aspect-ratioCSS - 标记未设置尺寸的图片
<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 中可见的图片结果交叉对照。
工作流:
- 固定版本的 DataForSEO MCP 服务(2.8.10)没有 Google Images SERP 工具。
如果 SERP 中有
images元素,则使用serp_organic_live_advanced的images元素(depth=100);如果没有图片 SERP 数据,则明确说明 - 提取:排名靠前的域名、图片类型、替代文本模式
- 输出竞争对手的图片 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 Images 展示的 IPTC)
Google Images 会在搜索结果中显示 IPTC Creator、Credit Line 和 Copyright。 这不是排名因素,但可以改善 Google Images 中的展示效果和品牌归属信息。
使用 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 中缺少此标签,
可能会被拒登。
主要来源(Merchant Center AI 生成内容政策): https://support.google.com/merchants/answer/14743464 (ai-optimization-guide 未记录 DigitalSourceType/IPTC/Merchant 标注。)
审计命令:
# Audit a directory for the IPTC label (counts: missing, ai, captured, etc.)
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./images/ --json
# Audit a single image
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./hero.webp --json
# Inject the AI label into an image
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py inject ./ai-hero.webp \
--source-type trainedAlgorithmicMedia
# Other vocabulary values:
# compositeSynthetic (mix of captured + AI elements)
# algorithmicMedia (created purely by algorithm, NOT from sampled training data)
# compositeWithTrainedAlgorithmicMedia (e.g. AI inpainting/outpainting over real media)
# 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
Google 会提取以下 IPTC DigitalSourceType 值:
trainedAlgorithmicMedia:完全由 AI 生成(扩散模型生成的产品图片应使用此值)compositeSynthetic:混合实拍与 AI 生成的元素algorithmicMedia:纯粹由算法创建,并非基于采样的训练数据compositeWithTrainedAlgorithmicMedia:训练算法生成的媒体与其他媒体合成(例如,在真实照片上通过 AI 修补或扩展图像)digitalCapture:完全由相机拍摄的照片(注意:digitalCapture不在 Google 提取值列表中,但它是有效的 IPTC 值)
来源信号(面向消费者): SynthID 水印和 C2PA Content Credentials 是新兴的 AI 媒体识别信号。除非已从最新的 Google 官方来源核实, 否则应视其在产品界面上的覆盖情况可能发生变化。 这是检测/透明度措施,不是 IPTC DigitalSourceType 之外额外必需的商品 Feed 字段。
**可授权图片:**若要获得 Licensable 徽章,请提供以下任一项:结构化 数据(包含
license属性及acquireLicensePage的ImageObject,用于 “获取此图片”链接),或嵌入的 IPTC 照片元数据(许可方 URL/权利声明)。 通过交叉引用seo-schema获取 ImageObject 标记。
发现说明:图片发现现在还包括跨 Lens/AI Mode/Circle to Search 的视觉搜索扩展 (Gemini 多模态场景/对象理解),因此图片会通过场景、对象和材质呈现,而非仅靠 alt 文本。目前尚无新的已发布图片 SEO 方法;请继续使用描述性 alt 文本和 整洁的结构化数据。
运行 /seo images optimize 处理 AI 生成的素材时,应提示用户
确认来源类型,并自动注入匹配的 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 元数据:创作者、版权、描述
- 转换为 WebP:
cwebp -q 82 -metadata all image.jpg -o image.webp - 生成响应式变体:400w、800w、1200w
- 验证元数据是否保留:
exiftool image.webp - 生成
<picture>HTML:AVIF > WebP > JPEG 回退链
对 Google 图片搜索而言,哪些因素重要,哪些不重要
| 因素 | 影响 | 设置位置 |
|---|---|---|
| Alt 文本 | 关键(排名) | HTML <img alt=""> |
| 文件名 | 高(排名) | 文件系统(描述性名称,使用连字符) |
| 页面上下文 | 高(排名) | 周围的 HTML 内容 |
| 文件大小/速度 | 中(通过 CWV 间接影响) | 压缩 + 格式转换 |
| IPTC Creator/Copyright | 低(仅影响展示) | 图片文件元数据 |
| EXIF 相机数据 | 无 | 与 SEO 无关 |
| IPTC Keywords | 无 | Google 会忽略 |
错误处理
| 场景 | 操作 |
|---|---|
| URL 无法访问 | 报告连接错误及状态码。建议核实 URL,并检查网站是否需要身份验证。 |
| 页面上未找到图片 | 报告未检测到 <img> 元素。建议检查图片是否通过 JavaScript 或 CSS background-image 加载。 |
| 图片位于 CDN 后方或需要身份验证 | 说明无法直接访问图片文件以分析尺寸。报告可用的元数据(alt 文本、尺寸、标记中的格式),并标记无法访问的资源。 |
| 未安装 exiftool | 使用 ImageMagick 作为元数据处理的后备方案。建议:sudo apt install libimage-exiftool-perl |
| 未安装 cwebp | 使用 ImageMagick 或 FFmpeg 作为 WebP 转换的后备方案。建议:sudo apt install webp |
| DataForSEO MCP 不可用 | 跳过 Image SERP Analysis 部分。说明未安装该扩展。 |