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.pymarca estos condecorative: 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 Imagen | Objetivo | Advertencia | Crí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
| Formato | Soporte del Navegador | Caso de Uso |
|---|---|---|
| WebP | 97%+ | Recomendación predeterminada |
| AVIF | 92%+ | Mejor compresión, más reciente |
| JPEG | 100% | Alternativa para fotos |
| PNG | 100% | Gráficos con transparencia |
| SVG | 100% | 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):
| Campo | Significado |
|---|---|
served_format | Formato realmente servido (webp, avif, jpeg, png, gif, svg, jxl), a partir de los bytes mágicos, de lo contrario null |
served_bytes | Tamaño realmente servido (Content-Length), o null cuando el servidor lo omite |
negotiated | true cuando la respuesta tiene Vary: Accept, por lo que el formato depende del navegador |
probe_error | Por 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.jpgconserved_format: webpya está optimizada: no recomiendes convertirla. - Si
probe_errorestá 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
srcsetpara múltiples tamaños - Atributo
sizesque 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_method | Señal detectada | Pila común |
|---|---|---|
native | Atributo HTML loading="lazy" | Navegadores modernos, HTML simple |
perfmatters | data-perfmatters-src/-srcset O clase perfmatters-lazy | WordPress + plugin Perfmatters |
ewww | data-ewww-src / data-eio O clase lazyload-eio | WordPress + EWWW Image Optimizer |
js-generic | data-src / data-lazy-src / data-original / data-srcset O clase lazyload/lazyloaded/lazy | Lazysizes, vanilla-lazyload, plugins jQuery |
none | Sin señal de atributo ni clase | La 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
widthyheightestablecidos en todos los elementos<img> aspect-ratioCSS 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.webpnoIMG_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étrica | Estado | Cantidad |
|---|---|---|
| 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):
| Imagen | Tamaño Actual | Formato | Problemas | Ahorro Est. |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
Recomendaciones
- Convertir X imágenes a formato WebP (est. ahorro XX KB)
- Añadir texto alternativo a X imágenes
- Añadir dimensiones a X imágenes
- Habilitar carga diferida en X imágenes debajo del pliegue
- 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:
- El servidor MCP de DataForSEO anclado (2.8.10) no tiene una herramienta de SERP de Google Images.
Usa el elemento
imagesdeserp_organic_live_advanced(depth=100) cuando la SERP tenga uno, y di claramente cuando no haya datos de SERP de imágenes disponibles - Extrae: dominios principales, tipos de imagen, patrones de texto alternativo
- Genera el panorama de la SERP de imágenes de la competencia
Salida:
| Rango | Dominio | Título/Texto Alt | URL de Imagen | URL de Página |
|---|---|---|---|---|
| 1 | ejemplo.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 IAalgorithmicMedia: creado puramente por un algoritmo, no a partir de datos muestreados





