CommunityImagengithub.com

orlandoneto/claude-seo-seo-images

Análisis de optimización de imágenes para SEO y rendimiento. Verifica texto alternativo, tamaños de archivo, formatos, imágenes responsivas, carga diferida, prevención de CLS, posicionamiento en SERP de imágenes (a través de DataForSEO) y optimización de archivos de imagen (conversión a WebP/AVIF, inyección de metadatos IPTC/XMP).

¿Qué es claude-seo-seo-images?

Esta habilidad para agentes de IA realiza una auditoría integral de optimización de imágenes para SEO y rendimiento web. Está diseñada para desarrolladores y especialistas en SEO que buscan mejorar la visibilidad en buscadores de imágenes, la velocidad de carga y la experiencia del usuario. Las principales plataformas compatibles incluyen Claude Code, Cursor y Codex, entre otros agentes similares. La habilidad analiza cada imagen en una página web, verificando la presencia y calidad del texto alternativo (alt text), el tamaño de los archivos (con umbrales por tipo de imagen: miniatura, contenido, hero/banner), el formato servido (detectando WebP, AVIF, JPEG, etc. mediante análisis de bytes mágicos), el uso de imágenes responsivas con `srcset` y `sizes`, la implementación de carga diferida (lazy loading) con detección del método utilizado (nativo, Perfmatters, EWWW, JS-genérico o ninguno), la prevención de desplazamiento acumulativo (CLS) mediante dimensiones explícitas, el uso de `fetchpriority="high"` en imágenes LCP y `decoding="async"` en imágenes no LCP, y la optimización de nombres de archivo y uso de CDN. Además, integra análisis de SERP de imágenes cuando el servicio DataForSEO está disponible, permitiendo cruzar las imágenes de la página con los resultados de búsqueda de Google Images para identificar oportunidades. También ofrece optimización directa de archivos mediante conversión a WebP/AVIF, inyección de metadatos IPTC/XMP (incluyendo el etiquetado `DigitalSourceType` requerido por Google Merchant Center para imágenes generadas por IA) y compresión. Su funcionamiento se basa en scripts Python (`parse_html.py`, `iptc_ai_label.py`) que se ejecutan localmente y herramientas de línea de comandos como `exiftool`, `cwebp`, ImageMagick y FFmpeg. Todo el análisis se guía por principios de SEO técnico y mejores prácticas de rendimiento web, produciendo informes detallados con métricas, listas priorizadas y recomendaciones accionables.

Compatible con✓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 Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Vista previa

Del README del skill

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

Documentación

Análisis de Optimización de Imágenes

Verificaciones

Texto Alternativo (Alt Text)

  • Presente en todos los elementos <img> (excepto decorativos: role="presentation"). parse_html.py marca estos con decorative: true; no los señales por falta de texto alternativo.
  • Descriptivo: describe el contenido de la imagen, no "imagen.jpg" o "foto"
  • Incluye palabras clave relevantes donde sea natural, sin relleno de palabras clave
  • Longitud: 10-125 caracteres

Buenos ejemplos:

  • "Fontanero profesional reparando grifo de cocina"
  • "Toyota Camry rojo 2024 vista frontal"
  • "Reunión de equipo en sala de conferencias moderna"

Malos ejemplos:

  • "imagen.jpg" (nombre de archivo, no descripción)
  • "fontanero fontanería fontanero servicios" (relleno de palabras clave)
  • "Haga clic aquí" (no descriptivo)

Tamaño de Archivo

Umbrales por categoría de imagen:

Categoría de ImagenObjetivoAdvertenciaCrítico
Miniaturas< 50KB> 100KB> 200KB
Imágenes de contenido< 100KB> 200KB> 500KB
Imágenes hero/banner< 200KB> 300KB> 700KB

Recomendar compresión hasta los umbrales objetivo cuando sea posible sin pérdida de calidad.

Formato

FormatoSoporte del NavegadorCaso de Uso
WebP97%+Recomendación predeterminada
AVIF92%+Mejor compresión, más reciente
JPEG100%Alternativa para fotos
PNG100%Gráficos con transparencia
SVG100%Iconos, logotipos, ilustraciones

Recomendar WebP/AVIF sobre JPEG/PNG. Verificar el elemento <picture> con alternativas de formato.

Evaluar el formato servido, no la extensión de la URL

Muchos sitios sirven WebP o AVIF desde una URL .jpg/.png cuando el navegador lo solicita (plugins de WordPress como EWWW, ShortPixel, WebP Express e Imagify, Cloudflare Polish, CDNs de imágenes). La extensión no es el formato que reciben los visitantes. Ejecuta "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url <url> --probe-images --json, que obtiene cada imagen con un encabezado Accept del navegador y añade a cada entrada de imagen (para una imagen con carga diferida, analiza resolved_src, la fuente real, porque src es entonces un marcador de posición):

CampoSignificado
served_formatFormato realmente servido (webp, avif, jpeg, png, gif, svg, jxl), a partir de los bytes mágicos, de lo contrario null
served_bytesTamaño realmente servido (Content-Length), o null cuando el servidor lo omite
negotiatedtrue cuando la respuesta tiene Vary: Accept, por lo que el formato depende del navegador
probe_errorPor qué la imagen no pudo ser verificada (fallo de obtención, URL malformada, o la respuesta no es una imagen reconocida, como un error HTML o una página de protección de enlace directo), de lo contrario null
  • Señala "Formato Incorrecto" y ahorros de tamaño solo a partir de served_format / served_bytes. Una URL .jpg con served_format: webp ya está optimizada: no recomiendes convertirla.
  • Si probe_error está establecido, informa el formato como no verificado. Nunca lo infieras a partir de la extensión.
  • Nunca sugieras una URL de imagen de reemplazo (por ejemplo, photo.webp) sin confirmar que devuelve HTTP 200.

Patrón Recomendado del Elemento <picture>

Utiliza mejora progresiva con el formato más eficiente primero:

<picture>
  <source srcset="imagen.avif" type="image/avif">
  <source srcset="imagen.webp" type="image/webp">
  <img src="imagen.jpg" alt="Texto alternativo descriptivo" width="800" height="600" loading="lazy" decoding="async">
</picture>

El navegador utilizará el primer formato compatible. Soporte global del navegador (caniuse.com, consultado 2026-09-28): AVIF alrededor del 95.4%, WebP alrededor del 96.8%. Revisa caniuse antes de citar.

JPEG XL: Formato Emergente

Informes de terceros y Wikipedia describen un decodificador JPEG XL basado en Rust que se envió en Chrome 145 estable (2026-02-10) detrás de la bandera chrome://flags/#enable-jxl-image-format, no habilitado por defecto; no se recuperó una confirmación de propiedad de Google en el paquete de datos. Debido a que el soporte predeterminado no está confirmado, aún no es práctico para la entrega web en producción. Continúa sirviendo AVIF/WebP con alternativa JPEG y monitorea.

Imágenes Responsivas

  • Atributo srcset para múltiples tamaños
  • Atributo sizes que coincida con los puntos de interrupción del diseño
  • Resolución adecuada para las relaciones de píxeles del dispositivo
<img
  src="imagen-800.jpg"
  srcset="imagen-400.jpg 400w, imagen-800.jpg 800w, imagen-1200.jpg 1200w"
  sizes="(max-width: 600px) 400px, (max-width: 1200px) 800px, 1200px"
  alt="Descripción"
>

Carga Diferida (Lazy Loading)

  • loading="lazy" en imágenes debajo del pliegue
  • NO cargar diferidamente imágenes arriba del pliegue/hero (perjudica LCP)
  • Verificar carga diferida nativa vs basada en JavaScript
<!-- Debajo del pliegue - carga diferida -->
<img src="foto.jpg" loading="lazy" alt="Descripción">

<!-- Arriba del pliegue - carga inmediata (predeterminado) -->
<img src="hero.jpg" alt="Imagen hero">

Métodos de carga diferida detectados (campo lazy_method)

"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py clasifica el mecanismo de carga diferida de cada imagen mediante el campo lazy_method en cada entrada de imagen. Cinco valores:

lazy_methodSeñal detectadaPila común
nativeAtributo HTML loading="lazy"Navegadores modernos, HTML simple
perfmattersdata-perfmatters-src/-srcset O clase perfmatters-lazyWordPress + plugin Perfmatters
ewwwdata-ewww-src / data-eio O clase lazyload-eioWordPress + EWWW Image Optimizer
js-genericdata-src / data-lazy-src / data-original / data-srcset O clase lazyload/lazyloaded/lazyLazysizes, vanilla-lazyload, plugins jQuery
noneSin señal de atributo ni claseLa página no está cargando diferidamente esta imagen

Al auditar SEO de imágenes, informa lazy_method junto con loading para que los usuarios sepan si su sitio está utilizando un cargador diferido basado en JS (en cuyo caso el atributo nativo loading="lazy" está intencionalmente ausente, eso no es una regresión).

fetchpriority="high" para Imágenes LCP

Añade fetchpriority="high" a tu imagen hero/LCP para priorizar su descarga en la cola de red del navegador:

<img src="hero.webp" fetchpriority="high" alt="Descripción de imagen hero" width="1200" height="630">

Importante: NO cargues diferidamente imágenes arriba del pliegue/LCP. Usar loading="lazy" en imágenes LCP perjudica directamente las puntuaciones LCP. Reserva loading="lazy" solo para imágenes debajo del pliegue.

decoding="async" para Imágenes No LCP

Añade decoding="async" a imágenes no LCP para evitar que la decodificación de imágenes bloquee el hilo principal:

<img src="foto.webp" alt="Descripción" width="600" height="400" loading="lazy" decoding="async">

Prevención de CLS

  • Atributos width y height establecidos en todos los elementos <img>
  • aspect-ratio CSS como alternativa
  • Señala imágenes sin dimensiones
<!-- Bien - dimensiones establecidas -->
<img src="foto.jpg" width="800" height="600" alt="Descripción">

<!-- Bien - relación de aspecto CSS -->
<img src="foto.jpg" style="aspect-ratio: 4/3" alt="Descripción">

<!-- Mal - sin dimensiones -->
<img src="foto.jpg" alt="Descripción">

Nombres de Archivo

  • Descriptivo: zapatillas-azules-correr.webp no IMG_1234.jpg
  • Separados por guiones, minúsculas, sin caracteres especiales
  • Incluir palabras clave relevantes

Uso de CDN

  • Verificar si las imágenes se sirven desde CDN (dominio diferente, encabezados CDN)
  • Recomendar CDN para sitios con muchas imágenes
  • Verificar encabezados de caché perimetral

Salida

Resumen de Auditoría de Imágenes

MétricaEstadoCantidad
Imágenes Totales-XX
Texto Alternativo Faltante❌XX
Sobredimensionadas (>200KB)⚠️XX
Formato Incorrecto⚠️XX
Sin Dimensiones⚠️XX
Sin Carga Diferida⚠️XX

Lista Priorizada de Optimización

Ordenada por impacto de tamaño de archivo (mayores ahorros primero):

ImagenTamaño ActualFormatoProblemasAhorro Est.
...............

Recomendaciones

  1. Convertir X imágenes a formato WebP (est. ahorro XX KB)
  2. Añadir texto alternativo a X imágenes
  3. Añadir dimensiones a X imágenes
  4. Habilitar carga diferida en X imágenes debajo del pliegue
  5. Comprimir X imágenes sobredimensionadas

Análisis de SERP de Imágenes

Cuando DataForSEO MCP esté disponible, mejora la auditoría de imágenes con datos competitivos.

/seo images serp <keyword>

Cruza las imágenes de la página con los resultados de imágenes visibles en la SERP de Google.

Flujo de trabajo:

  1. El servidor MCP de DataForSEO anclado (2.8.10) no tiene una herramienta de SERP de Google Images. Usa el elemento images de serp_organic_live_advanced (depth=100) cuando la SERP tenga uno, y di claramente cuando no haya datos de SERP de imágenes disponibles
  2. Extrae: dominios principales, tipos de imagen, patrones de texto alternativo
  3. Genera el panorama de la SERP de imágenes de la competencia

Salida:

RangoDominioTítulo/Texto AltURL de ImagenURL de Página
1ejemplo.com"Zapatillas azules para correr...".../zapatillas.webp/productos/...

El análisis incluye:

  • Dominio dominante: qué sitios poseen la mayoría de las posiciones de imagen (top 10 por cantidad)
  • Patrones de texto alternativo: patrones comunes de título/texto alt en imágenes mejor posicionadas
  • Distribución de formato: WebP vs JPEG vs PNG en resultados principales
  • Puntuación de oportunidad: palabras clave donde tienes posiciones en la página pero no presencia en imágenes

Si DataForSEO MCP no está disponible, informa al usuario y sugiere instalar la extensión.


Optimización de Archivos de Imagen

Optimiza archivos de imagen para SEO: conversión de formato, inyección de metadatos, compresión.

/seo images optimize <ruta>

Optimiza archivos de imagen para web y SEO. Convierte a WebP/AVIF, inyecta metadatos IPTC, comprime y genera variantes responsivas.

Herramientas utilizadas (en orden de preferencia):

  • exiftool -- Lectura/escritura de EXIF/IPTC/XMP (instalar: sudo apt install libimage-exiftool-perl)
  • cwebp -- Conversión a WebP (instalar: sudo apt install webp)
  • ImageMagick convert -- Conversión de formato, redimensionamiento (preinstalado en la mayoría de sistemas)
  • FFmpeg -- Alternativa para conversión de formato (preinstalado)

Antes de ejecutar: Verifica qué herramientas están disponibles con which exiftool cwebp convert ffmpeg.

Conversión de Formato

Convierte imágenes a formatos modernos con preservación de metadatos:

# WebP (recomendado por defecto) - con metadatos preservados
cwebp -q 82 -metadata all input.jpg -o output.webp

# WebP vía ImageMagick (alternativa si cwebp no está instalado)
convert input.jpg -quality 82 output.webp

# AVIF vía FFmpeg (codificación más lenta, mejor compresión)
ffmpeg -i input.jpg -c:v libaom-av1 -crf 30 -still-picture 1 output.avif

# Variantes responsivas (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

Inyección de Metadatos (IPTC para Visualización en Google Imágenes)

Google Imágenes muestra el Creador IPTC, la Línea de Crédito y los Derechos de Autor en los resultados de búsqueda. Esto NO es un factor de posicionamiento pero puede mejorar la visualización en Google Imágenes y la atribución de marca.

Con exiftool (preferido):

# Leer todos los metadatos
exiftool image.jpg

# Inyectar metadatos IPTC + XMP para resultados enriquecidos de Google Images
exiftool \
  -IPTC:ObjectName="Descripción de foto de producto" \
  -IPTC:Caption-Abstract="Descripción detallada de la imagen" \
  -IPTC:By-line="Fotografía de Marca" \
  -IPTC:Credit="Nombre de Marca" \
  -IPTC:CopyrightNotice="Copyright 2026 Nombre de Marca" \
  -IPTC:Source="nombremarca.com" \
  -XMP:Title="Descripción de foto de producto" \
  -XMP:Description="Descripción detallada de la imagen" \
  -XMP:Creator="Fotografía de Marca" \
  -XMP:Rights="Copyright 2026 Nombre de Marca" \
  image.jpg

# Inyección por lotes en todas las imágenes del directorio
exiftool -overwrite_original \
  -IPTC:By-line="Nombre de Marca" \
  -IPTC:CopyrightNotice="Copyright 2026 Nombre de Marca" \
  *.jpg *.webp *.png

Con ImageMagick (alternativa):

identify -verbose image.jpg | head -50

convert input.jpg \
  -set comment "Descripción de foto de producto" \
  -set IPTC:2:80 "Fotografía de Marca" \
  -set IPTC:2:116 "Copyright 2026 Nombre de Marca" \
  output.jpg

Nota: WebP admite EXIF y XMP pero no IPTC de forma nativa. Para archivos WebP, usa campos XMP en lugar de IPTC. exiftool maneja esta conversión automáticamente.

Imágenes Generadas por IA: DigitalSourceType (Requisito de Merchant Center)

Para imágenes de producto producidas por IA generativa, Google Merchant Center requiere metadatos IPTC DigitalSourceType: TrainedAlgorithmicMedia. Esto es un requisito de política operativa, no un factor de posicionamiento: los feeds que carecen de esta etiqueta en imágenes generadas por IA pueden ser rechazados.

Fuente principal (política de contenido generado por IA de Merchant Center): https://support.google.com/merchants/answer/14743464 (la guía de optimización de IA no documenta etiquetado DigitalSourceType/IPTC/Merchant.)

Comando de auditoría:

# Auditar un directorio para la etiqueta IPTC (cuentas: faltante, ia, capturada, etc.)
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./images/ --json

# Auditar una sola imagen
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./hero.webp --json

# Inyectar la etiqueta IA en una imagen
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py inject ./ai-hero.webp \
    --source-type trainedAlgorithmicMedia

# Otros valores de vocabulario:
#   compositeSynthetic               (mezcla de elementos capturados + IA)
#   algorithmicMedia                 (creado puramente por algoritmo, NO a partir de datos de entrenamiento muestreados)
#   compositeWithTrainedAlgorithmicMedia (ej. inpainting/outpainting de IA sobre medios reales)
#   digitalCapture                   (fotografía completamente capturada)

Equivalentes de exiftool sin procesar (para uso ad-hoc):

# Inyectar manualmente
exiftool \
  -XMP-iptcExt:DigitalSourceType="https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia" \
  producto-generado-ia.jpg

# Auditoría: encontrar imágenes que carecen de la etiqueta en un directorio
exiftool -if 'not $XMP-iptcExt:DigitalSourceType' \
  -filename -DigitalSourceType *.jpg *.webp *.png

Google extrae estos valores IPTC DigitalSourceType:

  • trainedAlgorithmicMedia: completamente generado por IA (úselo para imágenes de producto de modelo de difusión)
  • compositeSynthetic: mezcla elementos capturados + generados por IA
  • algorithmicMedia: creado puramente por un algoritmo, no a partir de datos muestreados

Individual skills in this repo

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

Skills relacionados