Todos os artigos
63 artigos · atualizado semanalmente Veja nossas Ferramentas
Todos os artigos
Tutoriais

SEO técnico: checklist completo para sites novos

robots.txt, sitemap, canonical, hreflang e dados estruturados — o que revisar antes de lançar um site e por que conteúdo bom não ranqueia sem base técnica correta.

COVER · Tutoriais

Você leu o básico sobre SEO, entendeu como o Google indexa páginas e já sabe que title e meta description importam. Aí abre o Search Console dois meses depois do lançamento e vê: 40% das URLs com problema de indexação, hreflang com erro de reciprocidade, dados estruturados inválidos. O conteúdo está bom. O problema é técnico — e técnico tem checklist.

Se você ainda está no início — entendendo como crawling, indexação e ranking funcionam — o post SEO para iniciantes cobre esse terreno. Aqui o foco é o que vem depois: as configurações que o Google lê antes de qualquer palavra do seu conteúdo.


robots.txt: o que bloquear (e o que nunca bloquear)

O robots.txt vive em https://seudominio.com/robots.txt e é a primeira coisa que qualquer crawler lê. Erro mais comum em sites novos: o arquivo foi copiado de staging para produção com Disallow: / — e o site inteiro fica bloqueado para rastreamento sem nenhum aviso visível.

Estrutura básica:

User-agent: *
Disallow: /admin/
Disallow: /checkout/
Disallow: /busca?
Allow: /

Sitemap: https://seudominio.com/sitemap.xml

O Allow: / explícito resolve conflitos quando você tem uma regra geral restritiva e precisa abrir uma subseção. Sem ele, a interpretação depende da implementação do crawler.

O que bloquear:

  • Páginas administrativas e de login
  • Páginas de busca interna com parâmetros (/busca?q=, ?sort=, ?page=)
  • Ambientes de staging se estiverem no mesmo domínio (idealmente, use subdomínio separado com senha)
  • Páginas de carrinho e checkout em e-commerces

O que nunca bloquear:

  • CSS e JavaScript que o Google precisa renderizar a página
  • Imagens que aparecem no conteúdo
  • A URL canônica de qualquer página que você quer indexada

Em 2026, o robots.txt ganhou um novo nível de atenção: bots de IA (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) rastreiam seu site para treinamento e para citar em respostas. Se você não quer que seu conteúdo alimente modelos de linguagem mas quer aparecer na busca tradicional, precisa de diretivas específicas:

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Googlebot
Allow: /

Essa separação é válida — cada bot obedece apenas às regras do seu próprio User-agent.


Sitemap XML: o que o Google realmente usa

Sitemap é uma lista de URLs que você quer que o Google conheça. O que muita gente não sabe: o Google usa principalmente o campo <lastmod> como sinal de frescor. Se você não atualiza o lastmod quando o conteúdo muda, o crawler pode não revisitar a página.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://seudominio.com/produto/widget-x</loc>
    <lastmod>2026-05-15</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

Regras que a maioria ignora:

  1. Só URLs com status 200 e sem noindex. Colocar URLs que retornam 301, 404 ou têm noindex no sitemap manda um sinal contraditório ao Google.

  2. URLs canônicas, não variantes. Se /produto?cor=azul tem canonical apontando para /produto, coloque /produto no sitemap — não a variante com parâmetro.

  3. <priority> é relativo entre páginas do mesmo site. O Google documentou que raramente usa esse campo. O <lastmod> tem muito mais peso.

Para sites grandes (mais de 50 mil URLs), use sitemap index — um arquivo mestre que referencia múltiplos sitemaps por categoria ou tipo de conteúdo. Limite por sitemap: 50 mil URLs ou 50 MB não comprimido.

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://seudominio.com/sitemap-blog.xml</loc>
    <lastmod>2026-06-13</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://seudominio.com/sitemap-produtos.xml</loc>
    <lastmod>2026-06-13</lastmod>
  </sitemap>
</sitemapindex>

Canonical: quando usar e quando você está errando

A tag <link rel="canonical"> resolve o problema de conteúdo duplicado dizendo ao Google qual é a versão principal de uma URL. Parece simples. Os erros são sutis.

Problema 1: canonical apontando para URL com redirect. Se o canonical aponta para /produto e essa URL faz redirect 301 para /produtos/widget, o Google segue o redirect mas fica confuso sobre qual URL consolidar. Canonical sempre deve apontar para a URL final, com status 200.

Problema 2: canonical + noindex na mesma página. Se você coloca noindex em /produto?cor=azul mas essa página recebe canonical para /produto, está mandando dois sinais conflitantes. O noindex diz "não indexe esta página". O canonical diz "consolidar sinal para esta outra URL". O Google pode simplesmente ignorar o canonical.

Problema 3: canonical "self" ausente. Toda página deve ter uma tag canonical apontando para si mesma, mesmo que não haja duplicatas. Sem ela, parâmetros de UTM (?utm_source=newsletter) podem criar duplicatas acidentais no índice.

<!-- Em /pt/ferramentas/gerador-qr-code -->
<link rel="canonical" href="https://seudominio.com/pt/ferramentas/gerador-qr-code" />

Hreflang: o erro de reciprocidade que ninguém percebe

Se o seu site serve múltiplos idiomas ou regiões, hreflang é obrigatório — e é a parte de SEO técnico com maior índice de implementação errada.

A regra fundamental: o hreflang é bidireccional. Se a versão /en/ referencia a versão /pt/, a versão /pt/ precisa referenciar de volta a versão /en/. Se qualquer uma das páginas do cluster não referenciar todas as outras, o Google ignora a anotação inteira para aquela página.

<!-- Em /en/tools/qr-code-generator -->
<link rel="alternate" hreflang="en" href="https://seudominio.com/en/tools/qr-code-generator" />
<link rel="alternate" hreflang="pt" href="https://seudominio.com/pt/ferramentas/gerador-qr-code" />
<link rel="alternate" hreflang="es" href="https://seudominio.com/es/herramientas/generador-qr" />
<link rel="alternate" hreflang="x-default" href="https://seudominio.com/en/tools/qr-code-generator" />

x-default é a URL para usuários cujo idioma não tem versão específica no site — normalmente aponta para a versão em inglês ou para uma página de seleção de idioma.

Além do <head>, você pode implementar hreflang via HTTP header (útil para PDFs e arquivos não-HTML) ou via sitemap. Para sites grandes, o sitemap é mais fácil de manter — você não depende de cada template ter o hreflang correto.

O que verificar:

  • Cada URL no cluster referencia todas as outras (incluindo a si mesma)
  • Os códigos de idioma seguem BCP 47: pt, pt-BR, pt-PT, en, en-US, não portuguese ou brazil
  • As URLs no hreflang retornam 200, não 301

Dados estruturados: não é só para rich results

Structured data com Schema.org não é mais uma otimização opcional para conseguir estrelinhas na SERP. Em 2026, com AI Overviews, ChatGPT Search e Perplexity citando conteúdo, Schema.org é como bots de IA entendem quem você é, o que você oferece, e se você é uma fonte confiável.

O vocabulário mínimo para qualquer site:

Organization / WebSite:

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Quick Tools",
  "url": "https://quickeasy.tools",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://quickeasy.tools/pt/tools?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

Para artigos de blog:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "SEO técnico: checklist para sites novos",
  "datePublished": "2026-06-13",
  "dateModified": "2026-06-13",
  "author": {
    "@type": "Person",
    "name": "Rafael Duarte"
  }
}

Para FAQs: o tipo FAQPage ainda gera rich result no Google em 2026 — perguntas e respostas aparecem expandidas na SERP, aumentando o espaço visual que seu resultado ocupa.

Valide os dados estruturados com o Rich Results Test do Google antes de subir em produção. É uma requisição GET — leva trinta segundos.


Indexabilidade: o que verificar antes de lançar

Com tudo configurado, o checklist final antes de lançar um site novo:

1. Confirmar que noindex foi removido do ambiente de staging. Esse é o erro mais cometido e o mais invisível. O site fica no ar, parece funcionar, e o Google simplesmente não indexa nada porque o <meta name="robots" content="noindex"> ficou no <head>.

2. Verificar headers HTTP. Além da meta tag, um X-Robots-Tag: noindex no header HTTP tem o mesmo efeito. Pode estar configurado no servidor ou CDN sem aparecer no HTML.

curl -I https://seudominio.com/pagina-importante
# Procure por: X-Robots-Tag: noindex

3. Confirmar que o sitemap está submetido no Search Console. Search Console → Sitemaps → Adicionar sitemap. Sem isso, o Google pode levar semanas para descobrir suas URLs via crawl orgânico.

4. Testar a renderização JavaScript. Se o seu site é um SPA ou usa SSR parcial, o conteúdo renderizado por JavaScript pode não estar chegando ao índice. No Search Console, "Inspecionar URL" → "Ver como Googlebot" mostra o screenshot e o HTML renderizado que o Google está vendo.

5. Verificar redirecionamentos. Chains longas de redirect (A → B → C → D) desperdiçam crawl budget e enfraquecem o link equity. Cada hop em uma cadeia reduz o sinal. O ideal é redirect direto de A para D.

Para construir e testar o robots.txt, uso o Gerador de robots.txt — especialmente útil para gerar as diretivas de AI bots sem errar a sintaxe.


Perguntas frequentes

Qual a diferença entre robots.txt e a tag noindex?

robots.txt bloqueia o rastreamento — o Googlebot não visita a URL. A tag noindex permite o rastreamento mas bloqueia a indexação — o Google visita, lê o conteúdo, mas não salva no índice. O erro crítico: bloquear via robots.txt uma URL que recebe links externos. O Google vai indexar a URL (porque os links apontam para ela) sem conseguir ler o conteúdo — e vai rankear a página vazia ou com mensagem de erro.

Preciso de hreflang se meu site está só em português?

Se o site está em um único idioma e não segmenta regiões diferentes (exemplo: Brasil vs. Portugal), não precisa de hreflang. Mas se você tem /pt-BR/ e /pt-PT/ com conteúdo diferente, ou qualquer outra combinação de idioma + região, hreflang é necessário — sem ele o Google pode exibir a versão errada para o usuário.

Dados estruturados melhoram o ranking?

Diretamente, não — o Google não usa Schema.org como sinal de ranking no algoritmo principal. O impacto indireto é real: rich results aumentam CTR, e CTR é um sinal de relevância. Além disso, em 2026, AI Overviews e buscadores com IA usam dados estruturados para decidir quem citar. Para sites de conteúdo, Article e FAQPage são os tipos com maior retorno visível.

Como saber se meu hreflang está correto?

O Google Search Console tem um relatório específico em "Internacionalização" que lista os erros de hreflang por tipo — falta de tag recíproca, código de idioma inválido, URL com erro. Também é possível usar ferramentas como o Screaming Frog para auditar hreflang em escala antes de subir.


O SEO técnico é o chão, não o teto

Conteúdo ótimo em cima de base técnica quebrada não ranqueia — o crawler nem chega até o conteúdo. A ordem correta é sempre: indexabilidade primeiro, depois on-page, depois autoridade (links). SEO técnico não é glamouroso, não tem métrica de vaidade, e a maior parte do trabalho é confirmar que nada está errado — não inventar coisas novas.

O checklist mínimo: robots.txt correto, sitemap atualizado com lastmod real, canonical self em todas as páginas, hreflang recíproco se multi-idioma, dados estruturados válidos, zero noindex acidental em produção. Feito isso, o Google consegue fazer o trabalho dele. O que acontece depois disso é SEO de conteúdo — e é outro post.

RD
Autor
Rafael Duarte
Desenvolvedor backend com passagem por fintech e SaaS B2B — trabalhou em times que escalaram APIs de zero a milhões de requisições. Carrega cicatrizes de produção suficientes para ter opiniões fortes sobre ferramentas, padrões e decisões de arquitetura. Não é acadêmico: leu a RFC do UUID quando precisou escolher entre v4 e v7 para uma tabela de alta escrita.
Ver perfil