mcpField
S
seo-images

seo-images

github.com/agricidaniel营销与增长89478 次安装2 周前更新
代码仓库

关于 seo-images

用于审查图片标记和文件的 SEO 技能,检查替代文本、格式、响应式交付、加载方式、尺寸及元数据。它还提供文件优化流程,并可选用 DataForSEO 分析 Google 图片搜索结果。

主要功能

  1. 01替代文本和图片标记审查
  2. 02文件大小与格式检查
  3. 03响应式图片和延迟加载检查
  4. 04元数据审查与写入指引
  5. 05WebP 和 AVIF 优化流程
  6. 06可选的图片搜索结果分析

适用场景

  1. 01发现缺失或不完善的图片描述
  2. 02确定大文件压缩优先级
  3. 03生成响应式图片变体
  4. 04将页面图片与图片搜索结果对照

MCP 相关

如有 DataForSEO MCP,该技能可查询 Google 图片结果以进行可选的图片搜索结果分析。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agricidaniel/codex-seo --skill seo-images

安装后在 Claude Code 中输入/seo-images确认已加载。

附带文件LICENSE.txt

详细介绍

图片优化分析

共享数据缓存

步骤 0 —— 检查共享数据缓存:

开始收集前,检查 .seo-cache/ 中是否有可复用的相关 SEO 技能上下文。 参考 ../seo/references/shared-data-cache.md,了解架构和依赖关系图。

检查以下缓存文件(如果存在):

  • .seo-cache/site-meta.json:域名、业务类型、行业和抓取上下文

  • .seo-cache/audit-scores.json:之前完整审计的优先级

  • .seo-cache/pages/{url-slug}/page-analysis.json:提供 URL 时的页面级上下文

  • 如果找到:解析并使用明确有效的字段(注明“使用来自 [date] 的缓存 [X]”)

  • 如果缺失、损坏或不相关:继续收集新证据

  • 如果用户说“refresh”或“re-run”:忽略缓存读取,并在写入时覆盖

检查项

Alt 文本
  • 所有 <img> 元素都应提供(装饰性图片除外:role="presentation")
  • 描述清晰:描述图片内容,而不是“image.jpg”或“photo”
  • 自然地包含相关关键词,不要堆砌关键词
  • 长度:10-125 个字符

良好示例:

  • “专业水管工正在维修厨房水槽龙头”
  • “红色 2024 款丰田凯美瑞轿车正面图”
  • “现代办公室会议室中的团队会议”

不良示例:

  • “image.jpg”(文件名,不是描述)
  • “plumber plumbing plumber services”(关键词堆砌)
  • “Click here”(描述不清晰)
文件大小

按图片类别划分的分级阈值:

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

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

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

建议优先使用 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">
对 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">


<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. 通过 serp_google_images_live_advanced 获取 Google 图片结果(depth=100)
  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>

为 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 会自动处理此转换。

元数据审计
# 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,请对每张图片执行以下流程:

  1. 审计现有元数据:exiftool -IPTC:all -XMP:all image.jpg
  2. 注入 IPTC/XMP 元数据:Creator、Copyright、Description
  3. 转换为 WebP:cwebp -q 82 -metadata all image.jpg -o image.webp
  4. 生成响应式变体:400w、800w、1200w
  5. 验证元数据是否保留:exiftool image.webp
  6. 生成 <picture> HTML:AVIF > WebP > JPEG 回退链
Google 图片搜索中哪些因素重要,哪些不重要
因素影响设置位置
替代文本至关重要(排名)HTML <img alt="">
文件名高(排名)文件系统(描述性名称,使用连字符分隔)
页面上下文高(排名)周围的 HTML 内容
文件大小/速度中(通过 CWV 间接影响)压缩 + 格式转换
IPTC 创作者/版权低(仅影响显示)图像文件元数据
EXIF 相机数据无与 SEO 无关
IPTC 关键词无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 不可用跳过“图片 SERP 分析”部分。注明未安装扩展。

写入共享数据缓存

完成所有工作后,如果工作流产生了可长期保留的发现,则将简洁的 JSON 摘要写入 .seo-cache/。 使用 ../seo/references/shared-data-cache.md 中的架构和命名规则;至少包含 cache_type、analyzed_at、源 URL/域名、关键发现、问题、建议和工具限制。如果缺少 .seo-cache/,请将其添加到 .gitignore。

评论

支持 Markdown