CommunityImagemgithub.com

orlandoneto/claude-seo-seo-images

Análise de otimização de imagens para SEO e performance. Verifica texto alternativo, tamanhos de arquivo, formatos, imagens responsivas, carregamento lento, prevenção de CLS, rankings de imagens no SERP (via DataForSEO) e otimização de arquivos de imagem (conversão WebP/AVIF, injeção de metadados IPTC/XMP).

O que é claude-seo-seo-images?

Este skill automatiza a auditoria e otimização de imagens para SEO e performance web. Ele verifica se todas as imagens possuem texto alternativo descritivo, tamanhos de arquivo adequados (com limites por categoria), formatos modernos como WebP e AVIF, atributos de imagens responsivas (`srcset`/`sizes`), carregamento lazy para imagens abaixo da dobra e prevenção de Cumulative Layout Shift (CLS) com dimensões explícitas. Além disso, integra-se com a API do DataForSEO para analisar o desempenho das imagens nos resultados de pesquisa do Google (SERP) e oferece otimização de arquivos, incluindo conversão para formatos modernos e injeção de metadados IPTC/XMP para melhor exibição no Google Imagens. É compatível com agentes como Claude Code, Cursor e Codex, e utiliza scripts Python e ferramentas de linha de comando (`exiftool`, `cwebp`, `ffmpeg`, ImageMagick) para realizar as análises e otimizações de forma precisa, detectando o formato real servido, o método de lazy loading e até mesmo a presença de rótulos de Inteligência Artificial em imagens geradas por IA, atendendo a requisitos do Google Merchant Center.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Prévia

Do README da 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

Documentação

Análise de Otimização de Imagens

Verificações

Texto Alternativo (Alt Text)

  • Presente em todos os elementos <img> (exceto decorativos: role="presentation"). O parse_html.py marca estes com decorative: 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 ImagemAlvoAvisoCrí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

FormatoSuporte do NavegadorCaso de Uso
WebP97%+Recomendação padrão
AVIF92%+Melhor compressão, mais recente
JPEG100%Fallback para fotos
PNG100%Gráficos com transparência
SVG100%Í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):

CampoSignificado
served_formatFormato realmente servido (webp, avif, jpeg, png, gif, svg, jxl), a partir dos bytes mágicos, senão null
served_bytesTamanho realmente servido (Content-Length), ou null quando o servidor o omite
negotiatedtrue quando a resposta tem Vary: Accept, então o formato depende do navegador
probe_errorPor 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 .jpg com served_format: webp já está otimizada: não recomende convertê-la.
  • Se probe_error estiver 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 srcset para múltiplos tamanhos
  • Atributo sizes correspondente 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_methodSinal detectadoStack comum
nativeAtributo HTML loading="lazy"Navegadores modernos, HTML simples
perfmattersdata-perfmatters-src/-srcset OU classe perfmatters-lazyWordPress + plugin Perfmatters
ewwwdata-ewww-src / data-eio OU classe lazyload-eioWordPress + EWWW Image Optimizer
js-genericdata-src / data-lazy-src / data-original / data-srcset OU classe lazyload/lazyloaded/lazyLazysizes, vanilla-lazyload, plugins jQuery
noneNenhum sinal de atributo ou classeA 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 width e height definidos em todos os elementos <img>
  • CSS aspect-ratio como 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.webp não IMG_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étricaStatusContagem
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):

ImagemTamanho AtualFormatoProblemasEconomia Est.
...............

Recomendações

  1. Converter X imagens para formato WebP (economia estimada de XX KB)
  2. Adicionar texto alternativo a X imagens
  3. Adicionar dimensões a X imagens
  4. Ativar lazy loading em X imagens abaixo da dobra
  5. 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:

  1. O servidor MCP fixado do DataForSEO (2.8.10) não tem ferramenta de SERP de Imagens do Google. Use o elemento images de serp_organic_live_advanced (depth=100) quando o SERP tiver um, e diga claramente quando nenhum dado de SERP de imagem estiver disponível
  2. Extraia: principais domínios, tipos de imagem, padrões de texto alternativo
  3. Produza o panorama do SERP de imagens dos concorrentes

Saída:

RankDomínioTítulo/AltURL da ImagemURL da Página
1exemplo.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 IA
  • algorithmicMedia: criado puramente por um algoritmo, não a partir de dados amostrados

...

[truncado para tradução]

Individual skills in this repo

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

Habilidades Relacionadas