Otimização de SEO
Otimização para mecanismos de busca baseada em auditorias SEO do Lighthouse e diretrizes do Google Search. Foco em SEO técnico, otimização on-page e dados estruturados.
Fundamentos de SEO
Fatores de ranking em mecanismos de busca (influência aproximada):
| Fator | Influência | Esta Skill |
|---|---|---|
| Qualidade e relevância de conteúdo | ~40% | Parcial (estrutura) |
| Backlinks e autoridade | ~25% | ✗ |
| SEO técnico | ~15% | ✓ |
| Experiência de página (Core Web Vitals) | ~10% | Veja Core Web Vitals |
| SEO on-page | ~10% | ✓ |
SEO técnico
Rastreabilidade
robots.txt:
# /robots.txt
User-agent: *
Allow: /
# Bloquear áreas administrativas/privadas
Disallow: /admin/
Disallow: /api/
Disallow: /private/
# Não bloquear recursos necessários para renderização
# ❌ Disallow: /static/
Sitemap: https://example.com/sitemap.xml
Meta robots:
<!-- Padrão: indexável, seguir links -->
<meta name="robots" content="index, follow">
<!-- Noindex em páginas específicas -->
<meta name="robots" content="noindex, nofollow">
<!-- Indexável mas não seguir links -->
<meta name="robots" content="index, nofollow">
<!-- Controlar trechos -->
<meta name="robots" content="max-snippet:150, max-image-preview:large">
URLs canônicas:
<!-- Prevenir problemas de conteúdo duplicado -->
<link rel="canonical" href="https://example.com/page">
<!-- URL canônica auto-referenciada (recomendado) -->
<link rel="canonical" href="https://example.com/current-page">
<!-- Para conteúdo paginado -->
<link rel="canonical" href="https://example.com/products">
<!-- Ou use rel="prev" / rel="next" para paginação explícita -->
Sitemap XML
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2024-01-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/products</loc>
<lastmod>2024-01-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Boas práticas de sitemap:
- Máximo 50.000 URLs ou 50MB por sitemap
- Use índice de sitemap para sites maiores
- Inclua apenas URLs canônicas e indexáveis
- Atualize
lastmodquando o conteúdo mudar - Envie para Google Search Console
Estrutura de URL
✅ URLs boas:
https://example.com/products/blue-widget
https://example.com/blog/how-to-use-widgets
❌ URLs ruins:
https://example.com/p?id=12345
https://example.com/products/item/category/subcategory/blue-widget-2024-sale-discount
Diretrizes de URL:
- Use hífens, não underscores
- Apenas minúsculas
- Mantenha curtas (< 75 caracteres)
- Inclua palavras-chave alvo naturalmente
- Evite parâmetros quando possível
- Use sempre HTTPS
HTTPS e segurança
<!-- Certifique-se de que todos os recursos usam HTTPS -->
<img src="https://example.com/image.jpg">
<!-- Não: -->
<img src="http://example.com/image.jpg">
Headers de segurança como sinais de confiança para SEO:
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
SEO on-page
Title tags
<!-- ❌ Ausente ou genérico -->
<title>Page</title>
<title>Home</title>
<!-- ✅ Descritivo com palavra-chave primária -->
<title>Blue Widgets para Venda | Qualidade Premium | Example Store</title>
Diretrizes de title tag:
- 50-60 caracteres (Google trunca ~60)
- Palavra-chave primária perto do início
- Única para cada página
- Nome da marca no final (exceto homepage)
- Orientado para ação quando apropriado
Meta descriptions
<!-- ❌ Ausente ou duplicada -->
<meta name="description" content="">
<!-- ✅ Atraente e única -->
<meta name="description" content="Compre blue widgets premium com frete grátis. Devoluções em 30 dias. Classificação 4.9/5 por mais de 10.000 clientes. Peça agora e economize 20%.">
Diretrizes de meta description:
- 150-160 caracteres
- Inclua palavra-chave primária naturalmente
- Call-to-action atraente
- Única para cada página
- Corresponda ao conteúdo da página
Estrutura de headings
<!-- ❌ Estrutura pobre -->
<h2>Bem-vindo à nossa loja</h2>
<h4>Produtos</h4>
<h1>Entre em contato</h1>
<!-- ✅ Hierarquia apropriada -->
<h1>Blue Widgets - Qualidade Premium</h1>
<h2>Características do produto</h2>
<h3>Durabilidade</h3>
<h3>Design</h3>
<h2>Avaliações de clientes</h2>
<h2>Preços</h2>
Diretrizes de headings:
- Um único
<h1>por página (o tema principal) - Hierarquia lógica (não pule níveis)
- Inclua palavras-chave naturalmente
- Descritivos, não genéricos
SEO de imagens
<!-- ❌ SEO de imagem pobre -->
<img src="IMG_12345.jpg">
<!-- ✅ Imagem otimizada -->
<img src="blue-widget-product-photo.webp"
alt="Blue widget com acabamento cromado, vista lateral mostrando painel de controle"
width="800"
height="600"
loading="lazy">
Diretrizes de imagem:
- Nomes de arquivo descritivos com palavras-chave
- Texto alt descreve o conteúdo da imagem
- Comprimida e redimensionada adequadamente
- WebP/AVIF com fallbacks
- Carregamento lazy para imagens abaixo da dobra
Links internos
<!-- ❌ Não-descritivo -->
<a href="/products">Clique aqui</a>
<a href="/widgets">Leia mais</a>
<!-- ✅ Texto âncora descritivo -->
<a href="/products/blue-widgets">Navegue nossa coleção de blue widgets</a>
<a href="/guides/widget-maintenance">Aprenda como manter seus widgets</a>
Diretrizes de links:
- Texto âncora descritivo com palavras-chave
- Links para páginas internas relevantes
- Número razoável de links por página
- Corrija links quebrados rapidamente
- Use breadcrumbs para hierarquia
Dados estruturados (JSON-LD)
Organization
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Company",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://twitter.com/example",
"https://linkedin.com/company/example"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-555-123-4567",
"contactType": "customer service"
}
}
</script>
Article
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Como escolher o widget certo",
"description": "Guia completo para selecionar widgets de acordo com suas necessidades.",
"image": "https://example.com/article-image.jpg",
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://example.com/authors/jane-smith"
},
"publisher": {
"@type": "Organization",
"name": "Example Blog",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2024-01-15",
"dateModified": "2024-01-20"
}
</script>
Product
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Blue Widget Pro",
"image": "https://example.com/blue-widget.jpg",
"description": "Blue widget premium com recursos avançados.",
"brand": {
"@type": "Brand",
"name": "WidgetCo"
},
"offers": {
"@type": "Offer",
"price": "49.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/blue-widget"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "1250"
}
}
</script>
FAQ
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Quais cores estão disponíveis?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Nossos widgets estão disponíveis em azul, vermelho e verde."
}
},
{
"@type": "Question",
"name": "Qual é a garantia?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Todos os widgets incluem garantia de 2 anos."
}
}
]
}
</script>
Breadcrumbs
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Produtos",
"item": "https://example.com/products"
},
{
"@type": "ListItem",
"position": 3,
"name": "Blue Widgets",
"item": "https://example.com/products/blue-widgets"
}
]
}
</script>
Validação
Teste dados estruturados em:
SEO mobile
Design responsivo
<!-- ❌ Não é amigável para mobile -->
<meta name="viewport" content="width=1024">
<!-- ✅ Viewport responsivo -->
<meta name="viewport" content="width=device-width, initial-scale=1">
Alvo de toque
/* ❌ Muito pequeno para mobile */
.small-link {
padding: 4px;
font-size: 12px;
}
/* ✅ Alvo de toque adequado */
.mobile-friendly-link {
padding: 12px;
font-size: 16px;
min-height: 48px;
min-width: 48px;
}
Tamanhos de fonte
/* ❌ Muito pequeno em mobile */
body {
font-size: 10px;
}
/* ✅ Legível sem zoom */
body {
font-size: 16px;
line-height: 1.5;
}
SEO internacional
Tags hreflang
<!-- Para sites multi-idioma -->
<link rel="alternate" hreflang="en" href="https://example.com/page">
<link rel="alternate" hreflang="es" href="https://example.com/es/page">
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">
Declaração de idioma
<html lang="en">
<!-- ou -->
<html lang="es-MX">
Checklist de auditoria SEO
Crítico
- HTTPS habilitado
- robots.txt permite rastreamento
- Nenhum
noindexem páginas importantes - Title tags presentes e únicas
- Um único
<h1>por página
Alta prioridade
- Meta descriptions presentes
- Sitemap enviado
- URLs canônicas definidas
- Responsivo para mobile
- Core Web Vitals passando
Prioridade média
- Dados estruturados implementados
- Estratégia de links internos
- Texto alt em imagens
- URLs descritivas
- Navegação por breadcrumb
Contínuo
- Corrija erros de rastreamento no Search Console
- Atualize sitemap quando o conteúdo mudar
- Monitore mudanças de ranking
- Verifique links quebrados
- Revise insights do Search Console
Ferramentas
| Ferramenta | Uso |
|---|---|
| Google Search Console | Monitorar indexação, corrigir problemas |
| Google PageSpeed Insights | Performance + Core Web Vitals |
| Rich Results Test | Validar dados estruturados |
| Lighthouse | Auditoria SEO completa |
| Screaming Frog | Análise de rastreamento |