Análise de Otimização de Imagens
Verificações
Texto Alternativo (Alt Text)
- Presente em todos os elementos
<img>(exceto decorativos:role="presentation"). Oparse_html.pymarca estes comdecorative: true; não os sinalize por falta de texto alternativo. - Descritivo: descreve o conteúdo da imagem, não "imagem.jpg" ou "foto"
- Inclui palavras-chave relevantes onde natural, sem excesso de palavras-chave
- Comprimento: 10-125 caracteres
Exemplos bons:
- "Profissional encanador consertando torneira de cozinha"
- "Toyota Camry 2024 vermelha vista frontal"
- "Reunião de equipe em sala de conferência moderna"
Exemplos ruins:
- "imagem.jpg" (nome do arquivo, não descrição)
- "encanador encanamento encanador serviços" (excesso de palavras-chave)
- "Clique aqui" (não descritivo)
Tamanho do Arquivo
Limites por categoria de imagem:
| Categoria da Imagem | Alvo | Aviso | Crítico |
|---|---|---|---|
| Miniaturas | < 50KB | > 100KB | > 200KB |
| Imagens de conteúdo | < 100KB | > 200KB | > 500KB |
| Imagens hero/banner | < 200KB | > 300KB | > 700KB |
Recomende compressão para os limites alvo sempre que possível, sem perda de qualidade.
Formato
| Formato | Suporte do Navegador | Caso de Uso |
|---|---|---|
| WebP | 97%+ | Recomendação padrão |
| AVIF | 92%+ | Melhor compressão, mais recente |
| JPEG | 100% | Fallback para fotos |
| PNG | 100% | Gráficos com transparência |
| SVG | 100% | Ícones, logotipos, ilustrações |
Recomende WebP/AVIF em vez de JPEG/PNG. Verifique a presença do elemento <picture> com fallbacks de formato.
Julgue o formato servido, não a extensão da URL
Muitos sites servem WebP ou AVIF a partir de uma URL .jpg/.png quando o navegador solicita (plugins WordPress WebP como EWWW, ShortPixel, WebP Express e Imagify, Cloudflare Polish, CDNs de imagem). A extensão não é o formato que os visitantes recebem. Execute
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url <url> --probe-images --json,
que busca cada imagem com um cabeçalho Accept do navegador e adiciona a cada entrada de imagem (para uma imagem com carregamento lazy, ele testa resolved_src, a fonte real, porque src é então um espaço reservado):
| Campo | Significado |
|---|---|
served_format | Formato realmente servido (webp, avif, jpeg, png, gif, svg, jxl), a partir dos bytes mágicos, senão null |
served_bytes | Tamanho realmente servido (Content-Length), ou null quando o servidor o omite |
negotiated | true quando a resposta tem Vary: Accept, então o formato depende do navegador |
probe_error | Por que a imagem não pôde ser verificada (falha na busca, URL malformada, ou a resposta não é uma imagem reconhecida, como um erro HTML ou página de proteção de hotlink), senão null |
- Sinalize "Formato Errado" e economia de tamanho apenas a partir de
served_format/served_bytes. Uma URL.jpgcomserved_format: webpjá está otimizada: não recomende convertê-la. - Se
probe_errorestiver definido, reporte o formato como não verificado. Nunca o infira a partir da extensão. - Nunca sugira uma URL de imagem substituta (ex.:
photo.webp) sem confirmar que ela retorna HTTP 200.
Padrão Recomendado do Elemento <picture>
Use melhoria progressiva com o formato mais eficiente primeiro:
<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Texto alternativo descritivo" width="800" height="600" loading="lazy" decoding="async">
</picture>
O navegador usará o primeiro formato suportado. Suporte global do navegador (caniuse.com, verificado em 28/09/2026): AVIF cerca de 95,4%, WebP cerca de 96,8%. Re-verifique caniuse antes de citar.
JPEG XL: Formato Emergente
Relatórios de terceiros e a Wikipedia descrevem um decodificador JPEG XL baseado em Rust enviado no Chrome 145 estável (10/02/2026) por trás da flag chrome://flags/#enable-jxl-image-format, não habilitado por padrão; nenhuma confirmação de propriedade do Google foi recuperada no pacote de fatos. Como o suporte padrão não é confirmado, ainda não é prático para entrega web em produção. Continue servindo AVIF/WebP com fallback JPEG e monitore.
Imagens Responsivas
- Atributo
srcsetpara múltiplos tamanhos - Atributo
sizescorrespondente aos breakpoints do layout - Resolução apropriada para proporções de pixel do dispositivo
<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="Descrição"
>
Carregamento Lento (Lazy Loading)
loading="lazy"em imagens abaixo da dobra (below-fold)- NÃO use lazy-load em imagens acima da dobra/hero (prejudica o LCP)
- Verifique lazy loading nativo vs baseado em JavaScript
<!-- Abaixo da dobra - lazy load -->
<img src="photo.jpg" loading="lazy" alt="Descrição">
<!-- Acima da dobra - eager load (padrão) -->
<img src="hero.jpg" alt="Imagem hero">
Métodos de lazy-loader detectados (campo lazy_method)
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py classifica o mecanismo de lazy-loading de cada imagem através do campo lazy_method em cada entrada de imagem. Cinco valores:
lazy_method | Sinal detectado | Stack comum |
|---|---|---|
native | Atributo HTML loading="lazy" | Navegadores modernos, HTML simples |
perfmatters | data-perfmatters-src/-srcset OU classe perfmatters-lazy | WordPress + plugin Perfmatters |
ewww | data-ewww-src / data-eio OU classe lazyload-eio | WordPress + EWWW Image Optimizer |
js-generic | data-src / data-lazy-src / data-original / data-srcset OU classe lazyload/lazyloaded/lazy | Lazysizes, vanilla-lazyload, plugins jQuery |
none | Nenhum sinal de atributo ou classe | A página não está usando lazy-loading nesta imagem |
Ao auditar SEO de imagens, reporte lazy_method junto com loading para que os usuários saibam se seu site está usando um lazy-loader baseado em JS (caso em que o atributo nativo loading="lazy" está intencionalmente ausente, isso não é uma regressão).
fetchpriority="high" para Imagens LCP
Adicione fetchpriority="high" à sua imagem hero/LCP para priorizar seu download na fila de rede do navegador:
<img src="hero.webp" fetchpriority="high" alt="Descrição da imagem hero" width="1200" height="630">
Crítico: NÃO use lazy-load em imagens acima da dobra/LCP. Usar loading="lazy" em imagens LCP prejudica diretamente as pontuações LCP. Reserve loading="lazy" apenas para imagens abaixo da dobra.
decoding="async" para Imagens Não-LCP
Adicione decoding="async" a imagens não-LCP para evitar que a decodificação da imagem bloqueie a thread principal:
<img src="photo.webp" alt="Descrição" width="600" height="400" loading="lazy" decoding="async">
Prevenção de CLS
- Atributos
widtheheightdefinidos em todos os elementos<img> - CSS
aspect-ratiocomo alternativa - Sinalize imagens sem dimensões
<!-- Bom - dimensões definidas -->
<img src="photo.jpg" width="800" height="600" alt="Descrição">
<!-- Bom - CSS aspect ratio -->
<img src="photo.jpg" style="aspect-ratio: 4/3" alt="Descrição">
<!-- Ruim - sem dimensões -->
<img src="photo.jpg" alt="Descrição">
Nomes de Arquivo
- Descritivos:
tenis-corrida-azul.webpnãoIMG_1234.jpg - Hifenizados, minúsculos, sem caracteres especiais
- Incluir palavras-chave relevantes
Uso de CDN
- Verifique se as imagens são servidas de uma CDN (domínio diferente, cabeçalhos CDN)
- Recomende CDN para sites com muitas imagens
- Verifique cabeçalhos de cache de borda
Saída
Resumo da Auditoria de Imagens
| Métrica | Status | Contagem |
|---|---|---|
| Imagens Totais | - | XX |
| Texto Alt Ausente | ❌ | XX |
| Superdimensionadas (>200KB) | ⚠️ | XX |
| Formato Errado | ⚠️ | XX |
| Sem Dimensões | ⚠️ | XX |
| Sem Lazy Load | ⚠️ | XX |
Lista de Otimização Priorizada
Ordenada por impacto no tamanho do arquivo (maiores economias primeiro):
| Imagem | Tamanho Atual | Formato | Problemas | Economia Est. |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
Recomendações
- Converter X imagens para formato WebP (economia estimada de XX KB)
- Adicionar texto alternativo a X imagens
- Adicionar dimensões a X imagens
- Ativar lazy loading em X imagens abaixo da dobra
- Comprimir X imagens superdimensionadas
Análise SERP de Imagens
Quando o MCP do DataForSEO estiver disponível, enriqueça a auditoria de imagens com dados competitivos.
/seo images serp <keyword>
Faça referência cruzada das imagens na página com os resultados de imagem visíveis no SERP do Google.
Fluxo de trabalho:
- O servidor MCP fixado do DataForSEO (2.8.10) não tem ferramenta de SERP de Imagens do Google.
Use o elemento
imagesdeserp_organic_live_advanced(depth=100) quando o SERP tiver um, e diga claramente quando nenhum dado de SERP de imagem estiver disponível - Extraia: principais domínios, tipos de imagem, padrões de texto alternativo
- Produza o panorama do SERP de imagens dos concorrentes
Saída:
| Rank | Domínio | Título/Alt | URL da Imagem | URL da Página |
|---|---|---|---|---|
| 1 | exemplo.com.br | "Tênis de corrida azuis..." | .../tenis.webp | /produtos/... |
A análise inclui:
- Dominância de domínio: quais sites possuem mais posições de imagem (top 10 por contagem)
- Padrões de texto alternativo: padrões comuns de título/alt nas imagens de melhor ranking
- Distribuição de formato: WebP vs JPEG vs PNG nos principais resultados
- Pontuação de oportunidade: palavras-chave onde você tem rankings de página mas nenhuma presença de imagem
Se o MCP do DataForSEO não estiver disponível, informe o usuário e sugira instalar a extensão.
Otimização de Arquivos de Imagem
Otimize arquivos de imagem para SEO: conversão de formato, injeção de metadados, compressão.
/seo images optimize <caminho>
Otimize arquivo(s) de imagem para web e SEO. Converte para WebP/AVIF, injeta metadados IPTC, comprime e gera variantes responsivas.
Ferramentas utilizadas (em ordem de preferência):
exiftool-- Leitura/escrita EXIF/IPTC/XMP (instalar:sudo apt install libimage-exiftool-perl)cwebp-- Conversão WebP (instalar:sudo apt install webp)- ImageMagick
convert-- Conversão de formato, redimensionamento (pré-instalado na maioria dos sistemas) - FFmpeg -- Fallback para conversão de formato (pré-instalado)
Antes de executar: Verifique quais ferramentas estão disponíveis com which exiftool cwebp convert ffmpeg.
Conversão de Formato
Converta imagens para formatos modernos com preservação de metadados:
# WebP (recomendado padrão) - com metadados preservados
cwebp -q 82 -metadata all input.jpg -o output.webp
# WebP via ImageMagick (fallback se cwebp não instalado)
convert input.jpg -quality 82 output.webp
# AVIF via FFmpeg (codificação mais lenta, melhor compressão)
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
Injeção de Metadados (IPTC para Exibição no Google Imagens)
O Google Imagens exibe o Criador IPTC, Linha de Crédito e Direitos Autorais nos resultados de pesquisa. Isso NÃO é um fator de ranking, mas pode melhorar a exibição no Google Imagens e a atribuição de marca.
Com exiftool (preferido):
# Ler todos os metadados
exiftool image.jpg
# Injetar metadados IPTC + XMP para resultados rich do Google Imagens
exiftool \
-IPTC:ObjectName="Descrição da Foto do Produto" \
-IPTC:Caption-Abstract="Descrição detalhada da imagem" \
-IPTC:By-line="Fotografia Nome da Marca" \
-IPTC:Credit="Nome da Marca" \
-IPTC:CopyrightNotice="Copyright 2026 Nome da Marca" \
-IPTC:Source="nomedamarca.com.br" \
-XMP:Title="Descrição da Foto do Produto" \
-XMP:Description="Descrição detalhada da imagem" \
-XMP:Creator="Fotografia Nome da Marca" \
-XMP:Rights="Copyright 2026 Nome da Marca" \
image.jpg
# Injeção em lote em todas as imagens de um diretório
exiftool -overwrite_original \
-IPTC:By-line="Nome da Marca" \
-IPTC:CopyrightNotice="Copyright 2026 Nome da Marca" \
*.jpg *.webp *.png
Com ImageMagick (fallback):
identify -verbose image.jpg | head -50
convert input.jpg \
-set comment "Descrição da Foto do Produto" \
-set IPTC:2:80 "Fotografia Nome da Marca" \
-set IPTC:2:116 "Copyright 2026 Nome da Marca" \
output.jpg
Nota: WebP suporta EXIF e XMP, mas não IPTC nativamente. Para arquivos WebP, use campos XMP em vez de IPTC. O exiftool lida com essa conversão automaticamente.
Imagens Geradas por IA: DigitalSourceType (Requisito do Merchant Center)
Para imagens de produto produzidas por IA generativa, o Google Merchant Center exige
o metadado IPTC DigitalSourceType: TrainedAlgorithmicMedia. Este é um
requisito de política operacional, não um fator de ranking: feeds sem este rótulo
em imagens geradas por IA podem ser reprovados.
Fonte primária (política de conteúdo gerado por IA do Merchant Center): https://support.google.com/merchants/answer/14743464 (o guia de otimização de IA não documenta a rotulagem DigitalSourceType/IPTC/Merchant.)
Comando de auditoria:
# Auditar um diretório pelo rótulo IPTC (contagens: ausente, ia, capturado, etc.)
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./images/ --json
# Auditar uma única imagem
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py audit ./hero.webp --json
# Injetar o rótulo de IA em uma imagem
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run iptc_ai_label.py inject ./ai-hero.webp \
--source-type trainedAlgorithmicMedia
# Outros valores de vocabulário:
# compositeSynthetic (mistura de elementos capturados + IA)
# algorithmicMedia (criado puramente por algoritmo, NÃO a partir de dados de treinamento amostrados)
# compositeWithTrainedAlgorithmicMedia (ex.: inpainting/outpainting de IA sobre mídia real)
# digitalCapture (fotografia totalmente capturada)
Equivalentes raw do exiftool (para uso ad-hoc):
# Injetar manualmente
exiftool \
-XMP-iptcExt:DigitalSourceType="https://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia" \
ai-generated-product.jpg
# Auditoria: encontrar imagens sem o rótulo em um diretório
exiftool -if 'not $XMP-iptcExt:DigitalSourceType' \
-filename -DigitalSourceType *.jpg *.webp *.png
O Google extrai estes valores IPTC DigitalSourceType:
trainedAlgorithmicMedia: totalmente gerado por IA (use este para imagens de produto de modelo de difusão)compositeSynthetic: mistura elementos capturados + gerados por IAalgorithmicMedia: criado puramente por um algoritmo, não a partir de dados amostrados
...
[truncado para tradução]





