Community图像github.com

orlandoneto/claude-seo-seo-images

图像优化分析,用于SEO和性能优化。检查alt文本、文件大小、格式、响应式图片、懒加载、CLS预防、图片SERP排名(通过DataForSEO)以及图片文件优化(WebP/AVIF转换、IPTC/XMP元数据注入)。

claude-seo-seo-images 是什么?

这是一个专门用于图片SEO和性能优化的AI技能,适用于Claude Code、Cursor、Codex等AI代理平台。它能够全面审计网页图片,包括alt文本完整性、文件大小阈值、图片格式(WebP/AVIF/JPEG/PNG/SVG)、响应式图片(srcset/sizes)、懒加载实现方式(原生或JavaScript驱动)、CLS(累积布局偏移)预防所需的宽高属性、文件命名规范以及CDN使用情况。该技能通过`parse_html.py`脚本探测实际传输的格式和服务字节数,而非依赖URL扩展名,从而准确判断优化状态。它还支持通过DataForSEO MCP进行图片SERP分析,交叉参考页面图片与Google搜索结果中的图片排名,以及图片文件优化功能,包括格式转换(WebP/AVIF)、IPTC/XMP元数据注入(含AI生成图像的DigitalSourceType标签)、压缩和生成响应式变体。其独特的价值在于将图片SEO审计、性能优化和SERP竞争分析整合到单一工作流中,并提供可操作的优化建议。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/orlandoneto/agent-skills/tree/HEAD/skills/community/claude-seo-seo-images

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

预览

来自技能 README

claude-seo-seo-images preview
claude-seo-seo-images preview
claude-seo-seo-images preview
claude-seo-seo-images preview
claude-seo-seo-images preview
claude-seo-seo-images preview

文档

图片优化分析

检查项

Alt文本

  • 所有 <img> 元素上必须存在(除装饰性图片:role="presentation")。parse_html.py 会将此类图片标记为 decorative: true;请勿将这些图片标记为缺少alt文本。
  • 描述性:描述图片内容,而非“image.jpg”或“photo”
  • 在自然的前提下包含相关关键词,不要堆砌关键词
  • 长度:10-125个字符

好的示例:

  • "Professional plumber repairing kitchen sink faucet"
  • "Red 2024 Toyota Camry sedan front view"
  • "Team meeting in modern office conference room"

差的示例:

  • "image.jpg"(文件名,非描述)
  • "plumber plumbing plumber services"(关键词堆砌)
  • "Click here"(无描述性)

文件大小

按图片类别的分层阈值:

图片类别目标警告严重
缩略图< 50KB> 100KB> 200KB
内容图片< 100KB> 200KB> 500KB
英雄横幅图片< 200KB> 300KB> 700KB

在可能且不损失画质的前提下,建议压缩至目标阈值。

格式

格式浏览器支持使用场景
WebP97%+默认推荐
AVIF92%+最佳压缩,较新格式
JPEG100%照片的回退格式
PNG100%带透明度的图形
SVG100%图标、Logo、插图

推荐使用WebP/AVIF替代JPEG/PNG。检查是否使用了带有格式回退的 <picture> 元素。

判断实际提供的格式,而非URL扩展名

许多网站当浏览器请求时,会从 .jpg/.png URL 提供 WebP 或 AVIF 格式(如 WordPress 的 WebP 插件 EWWW、ShortPixel、WebP Express 和 Imagify、Cloudflare Polish、图片 CDN)。扩展名并非访问者接收到的格式。运行 "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url <url> --probe-images --json ,该命令使用浏览器的 Accept 请求头获取每张图片,并为每个图片条目添加以下字段(对于懒加载图片,它会探测 resolved_src(真实来源),因为此时 src 是一个占位符):

字段含义
served_format实际提供的格式(webp、avif、jpeg、png、gif、svg、jxl),根据魔法字节判断,否则为 null
served_bytes实际提供的大小(Content-Length),当服务器省略时返回 null
negotiated当响应包含 Vary: Accept 时为 true,表示格式取决于浏览器
probe_error无法检查图片的原因(请求失败、URL格式错误、或响应不是可识别的图片,例如 HTML 错误页面或防盗链页面),否则为 null
  • 仅在 served_format / served_bytes 的基础上标记“格式错误”和大小节省。一个 .jpg URL 但 served_format: webp 表明已优化:不要建议进行转换。
  • 如果设置了 probe_error,则将格式报告为未验证。切勿从扩展名推断格式。
  • 在未经确认返回HTTP 200之前,切勿建议替换图片URL(例如 photo.webp)。

推荐的 <picture> 元素模式

使用渐进增强,优先使用最高效的格式:

<picture>
  <source srcset="image.avif" type="image/avif">
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" alt="描述性alt文本" width="800" height="600" loading="lazy" decoding="async">
</picture>

浏览器将使用它支持的第一个格式。全球浏览器支持(caniuse.com,2026-09-28检查):AVIF约95.4%,WebP约96.8%。在引用前请重新检查caniuse。

JPEG XL:新兴格式

第三方报告和维基百科描述了一个基于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检测到的信号常见技术栈
nativeloading="lazy" HTML属性现代浏览器、纯HTML
perfmattersdata-perfmatters-src/-srcset 或类名 perfmatters-lazyWordPress + Perfmatters插件
ewwwdata-ewww-src / data-eio 或类名 lazyload-eioWordPress + EWWW Image Optimizer
js-genericdata-src / data-lazy-src / data-original / data-srcset 或类名 lazyload/lazyloaded/lazyLazysizes、vanilla-lazyload、jQuery插件
none未检测到属性和类名信号页面未对此图片进行懒加载

审计图片SEO时,请将 lazy_method 与 loading 一同报告,以便用户了解其网站是否使用了JavaScript驱动的懒加载器(这种情况下原生 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-ratio CSS作为替代
  • 标记未设置尺寸的图片
<!-- 良好 - 已设置尺寸 -->
<img src="photo.jpg" width="800" height="600" alt="Description">

<!-- 良好 - 使用CSS宽高比 -->
<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
缺少Alt文本❌XX
尺寸过大(>200KB)⚠️XX
格式错误⚠️XX
未设置尺寸⚠️XX
未懒加载⚠️XX

优先级优化列表

按文件大小影响排序(节省空间最大的优先):

图片当前大小格式问题预估节省空间
...............

建议

  1. 将X张图片转换为WebP格式(预估节省XX KB)
  2. 为X张图片添加alt文本
  3. 为X张图片添加尺寸属性
  4. 对视口以下的X张图片启用懒加载
  5. 压缩X张尺寸过大的图片

图片SERP分析

当DataForSEO MCP可用时,使用竞争数据增强图片审计。

/seo images serp <keyword>

将页面内图片与Google SERP中显示的图片结果进行交叉引用。

工作流程:

  1. 已固定的DataForSEO MCP服务器(2.8.10)没有Google Images SERP工具。 当SERP包含图片元素时,请使用 serp_organic_live_advanced(depth=100)的 images 元素,并在没有图片SERP数据可用时明确说明。
  2. 提取:顶级域名、图片类型、alt文本模式
  3. 输出竞争对手图片SERP格局

输出:

排名域名标题/Alt图片URL页面URL
1example.com"Blue running shoes...".../shoes.webp/products/...

分析包括:

  • 域名主导地位:哪些域名拥有最多的图片位置(按数量排名前10)
  • Alt文本模式:排名靠前的图片中常见的标题/alt模式
  • 格式分布:排名靠前的结果中WebP、JPEG、PNG的分布情况
  • 机会评分:您拥有页面排名但缺乏图片存在感的关键词

如果DataForSEO MCP不可用,请告知用户并建议安装扩展。


图片文件优化

优化图片文件以提升SEO:格式转换、元数据注入、压缩。

/seo images optimize <path>

针对网页和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(推荐默认) - 保留元数据
cwebp -q 82 -metadata all input.jpg -o output.webp

# 通过ImageMagick转换WebP(如果未安装cwebp则为备用方案)
convert input.jpg -quality 82 output.webp

# 通过FFmpeg转换AVIF(编码较慢,压缩最佳)
ffmpeg -i input.jpg -c:v libaom-av1 -crf 30 -still-picture 1 output.avif

# 响应式变体(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创作者、署名行和版权信息。这不是排名因素,但能改善Google图片展示和品牌归属。

使用exiftool(推荐):

# 读取所有元数据
exiftool image.jpg

# 为Google图片富结果注入IPTC + XMP元数据
exiftool \
  -IPTC:ObjectName="产品照片描述" \
  -IPTC:Caption-Abstract="详细的图片描述" \
  -IPTC:By-line="品牌名称摄影" \
  -IPTC:Credit="品牌名称" \
  -IPTC:CopyrightNotice="版权所有2026 品牌名称" \
  -IPTC:Source="brandname.com" \
  -XMP:Title="产品照片描述" \
  -XMP:Description="详细的图片描述" \
  -XMP:Creator="品牌名称摄影" \
  -XMP:Rights="版权所有2026 品牌名称" \
  image.jpg

# 批量注入到目录下的所有图片
exiftool -overwrite_original \
  -IPTC:By-line="品牌名称" \
  -IPTC:CopyrightNotice="版权所有2026 品牌名称" \
  *.jpg *.webp *.png

使用ImageMagick(备用方案):

identify -verbose image.jpg | head -50

convert input.jpg \
  -set comment "产品照片描述" \
  -set IPTC:2:80 "品牌名称摄影" \
  -set IPTC:2:116 "版权所有2026 品牌名称" \
  output.jpg

注意:WebP原生支持EXIF和XMP,但不原生支持IPTC。对于WebP文件,请使用XMP字段替代IPTC。exiftool会自动处理此转换。

AI生成图片:DigitalSourceType(Merchant Center要求)

对于由生成式AI生成的产品图片,Google Merchant Center 要求填写IPTC DigitalSourceType: TrainedAlgorithmicMedia 元数据。这是运营策略要求,而非排名因素:缺少此标签的AI生成图片源可能会被拒绝。

主要来源(Merchant Center AI生成内容政策): https://support.google.com/merchants/answer/14743464 (ai-optimization-guide 未记录 DigitalSourceType/IPTC/Merchant 标签。)

审计命令:

# 审计目录下的IPTC标签(统计:缺失、AI生成、相机拍摄等)
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./images/ --json

# 审计单张图片
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./hero.webp --json

# 向图片注入AI标签
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py inject ./ai-hero.webp \
    --source-type trainedAlgorithmicMedia

# 其他词汇值:
#   compositeSynthetic               (相机拍摄+AI元素的混合)
#   algorithmicMedia                 (纯粹由算法创建,不来自采样训练数据)
#   compositeWithTrainedAlgorithmicMedia(例如,在真实媒体上进行AI内绘/外绘)
#   digitalCapture                   (完全由相机拍摄的照片)

原始的exiftool等效命令(用于临时使用):

# 手动注入
exiftool \
  -XMP-iptcExt:DigitalSourceType="https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia" \
  ai-generated-product.jpg

# 审计:查找目录中缺少标签的图片
exiftool -if 'not $XMP-iptcExt:DigitalSourceType' \
  -filename -DigitalSourceType *.jpg *.webp *.png

Google提取的IPTC DigitalSourceType 值:

  • trainedAlgorithmicMedia:完全由AI生成(对扩散模型生成的产品图片使用此值)
  • compositeSynthetic:混合了相机拍摄和AI生成元素
  • algorithmicMedia:纯粹由算法创建,不来自采样训练数据

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能