关于 seo-images-media
seo-images-media 是用于检查图像描述、尺寸、格式和嵌入视频元数据的 SEO 审计技能。它帮助团队发现无障碍访问和媒体标记问题,并仅依据页面上下文提出替代文本和修复建议。
主要功能
- 01检查图像替代文本是否存在及合适
- 02标记缺少尺寸的图像
- 03检查旧式图像格式
- 04检测缺少 VideoObject 结构化数据的视频
- 05提出符合上下文的替代文本
适用场景
- 01查找缺少替代文本的内容图像
- 02找出未预留显示尺寸的图像
- 03审计嵌入视频的结构化数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-images-media安装后在 Claude Code 中输入/seo-images-media确认已加载。
详细介绍
seo-images-media (M9)
易于访问且描述清晰的媒体内容既会被排名系统读取,也会被 AI 提取器读取——alt 文本是图像的主要语义标识。参考:references/schema-tier1.md(VideoObject 行)。
输入
根据调度信封中指定的 PageSnapshot 操作:从 <run_dir>/pages/<slug>.json 读取 parsed(images[] 中包含 alt_present/sized/lazy、iframes、jsonld[]);在 pages/<slug>.html 中使用 Grep 查找原文证据;站点资料位于 <run_dir>/site/{robots.json,sitemaps.json,discovery.json}。audit.mjs 已输出的确定性发现列在 <run_dir>/findings.deterministic.json 中——不要重新输出这些 id;仅添加经模型判断的发现。如果直接使用 URL/路径调用且不存在快照,请先运行 node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" 并使用打印出的快照路径。
审计
基于 PageSnapshot 操作(当 render.used 不为 none 时使用 parsed_rendered,否则使用 parsed):
- Alt 是否存在:每个内容
<img>都必须有alt属性。区分装饰性图像(alt=""+role="presentation"是正确做法,不算发现)和完全缺少alt(不合格)。 - Alt 质量:内容图像的 alt 不应为空,也不应只是文件名(
IMG_2031.jpg),不同图像的 alt 不应逐字重复,也不应堆砌关键词(逗号分隔的关键词列表是一种反模式)。Alt 应结合周围内容,提供描述性信息。目标长度约为 80-140 个字符——既要足够具体,又要简洁,以免屏幕阅读器/AI 截断。 - 尺寸:在
<img>上设置width和height(或在 CSS 中预留宽高比),以避免布局偏移(CLS,是 Core Web Vitals 的一项输入——CWV 测量本身交由性能模块处理)。 - 格式:如果现代格式(WebP/AVIF)或响应式
<picture>/srcset能减小字节数,则标记旧式jpg/png。 - 视频:嵌入的视频(
<video>、YouTube/Vimeo iframe)若没有VideoObjectJSON-LD,则应标记——与 M5 协调;必需/推荐属性见references/schema-tier1.md。
修复
- 自动(
fixable: auto):根据源资源的固有尺寸,为<img>添加width/height(确定性、增量式、可验证)——以差异形式输出,供fix使用。 - 建议(
fixable: proposed):根据图像及其周围的标题/说明/段落,生成符合上下文的 alt 文本草稿。每项草稿都需人工接受(alt 属于编辑内容)。绝不根据页面上下文无法支持的信息臆测图像内容——上下文不足时,留下明确标记的TODO: describe image占位符,或询问用户。 - 提示(
fixable: advisory):格式升级(WebP/AVIF、srcset)。该工具无法转码二进制文件,因此绝不会写入这些更改——只提供建议。
验证
- 方法
dom_assert:重新解析快照并断言条件(alt 非空、存在width+height、不是文件名等)。 - 当尺寸检查需要远程资源的固有尺寸但没有可用的抓取层时,状态为
needs_api,绝不能错误地判定为pass。
发现
按 schema/finding.schema.json 输出发现;轴为 both;整个模块的严重性均为 3。严重性策略:5 专用于站点/模板级别的灾难性事实(会导致失去资格);4 重大 · 3 中等 · 2 轻微 · 1 表面 · 0 仅供参考——只有处于活跃类别中的 established 严重性为 5 的 fail 才能限制评分(references/scoring-model.md)。M9 中没有任何内容达到 4。
M9.alt.missing— 内容<img>缺少alt属性。状态为fail,fixable: proposed,置信度为established。evidence.observed引用有问题的<img>标签。M9.img.no_dimensions—<img>缺少width/height。状态为warn,fixable: auto,置信度为directional(与 CLS 相关)。M9.video.missing_videoobject— 嵌入的视频缺少 VideoObject schema。状态为warn,fixable: proposed,置信度为established。 每条发现:evidence.observed引用页面内容;verification.reproduce是可运行的命令,例如node "${CLAUDE_PLUGIN_ROOT}/scripts/parse-html.mjs" --snapshot <pages/<slug>.json>(或--url <u>),然后检查images块(missing_alt、empty_alt、missing_dimensions)。expected_impact按区间表达,并标注置信度(不提供没有上下文的百分比)。
诚信原则
- Alt 文本有助于无障碍访问以及图片理解/AI 理解;应将排名提升视为
directional,而非有保证的收益——不要承诺重写 alt 文本能带来流量。 - Alt 文本中堆砌关键词有害无益——应标记此问题,绝不要生成这类文本。
- WebP/AVIF 可减少字节数(这是影响性能的实际因素),但格式本身并非有记录的排名因素;应将其保持为
advisory/low影响程度。