seo

Otimize para visibilidade e ranking em mecanismos de busca. Use quando solicitado a "melhorar SEO", "otimizar para busca", "corrigir meta tags", "adicionar dados estruturados", "otimização de sitemap"

SKILL.md

GitHub

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 lastmod quando 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 noindex em 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

Referências