SEO Web Performance Frontend

SEO técnico para desenvolvedores: o checklist completo

Canonical URLs, schema markup, Core Web Vitals, sitemap, robots.txt e Open Graph. Tudo que um dev precisa configurar para que o Google indexe corretamente.

N
Neryx Digital Architects
19 de janeiro de 2026
16 min de leitura
270 profissionais leram
Categoria: Geral Público: Times de engenharia e produto Etapa: Aprendizado

SEO não é só palavras-chave e backlinks. Existe uma camada inteira que vive no código — e que a maioria dos projetos ignora até o site estar no ar e com problema de indexação. Este checklist cobre os itens técnicos que um desenvolvedor controla diretamente, com exemplos de implementação em cada um.

1. Canonical URL: evitando conteúdo duplicado

A canonical URL diz ao Google qual é a versão "oficial" de uma página quando o mesmo conteúdo pode ser acessado por URLs diferentes. Sem ela, o Google pode dividir a autoridade entre variantes e rankear a versão errada.

<!-- No <head> de cada página -->
<link rel="canonical" href="https://www.seusite.com.br/pagina/" />

Pontos de atenção:

  • www vs não-www: escolha um e redirecione o outro com 301. A canonical deve refletir o domínio canônico.
  • Trailing slash: /pagina e /pagina/ são URLs diferentes para o Google. Seja consistente e use a mesma forma na canonical e no sitemap.
  • Parâmetros de query: /produtos?cor=azul não deve ter canonical para /produtos a não ser que o conteúdo seja idêntico.
  • Páginas paginadas: cada página de paginação deve ter canonical para si mesma (não para a página 1).

2. Meta tags essenciais

Além de <title> e <meta name="description">, existem tags que impactam diretamente o comportamento do crawler e a exibição em redes sociais.

<!-- Controle de indexação -->
<meta name="robots" content="index, follow" />
<!-- Para páginas que não devem indexar: -->
<meta name="robots" content="noindex, nofollow" />

<!-- Open Graph (Facebook, LinkedIn, WhatsApp) -->
<meta property="og:title" content="Título da página" />
<meta property="og:description" content="Descrição em até 300 chars" />
<meta property="og:type" content="website" /> <!-- ou "article" para posts -->
<meta property="og:url" content="https://www.seusite.com.br/pagina/" />
<meta property="og:image" content="https://www.seusite.com.br/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:locale" content="pt_BR" />

<!-- Twitter/X Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Título da página" />
<meta name="twitter:description" content="Descrição" />
<meta name="twitter:image" content="https://www.seusite.com.br/og-image.png" />

Limites que importam: título entre 30 e 60 caracteres (o Google trunca depois disso no SERP), description entre 120 e 160 caracteres. OG image ideal: 1200×630px, menos de 1MB.

3. Schema.org: dados estruturados

Schema markup é código JSON-LD no <head> que diz ao Google o que sua página representa. Isso habilita rich snippets — estrelas de avaliação, perguntas frequentes, breadcrumbs, preços — que aumentam o CTR sem mudar o conteúdo visível.

Organization (toda empresa deve ter)

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Nome da Empresa",
  "url": "https://www.seusite.com.br",
  "logo": {
    "@type": "ImageObject",
    "url": "https://www.seusite.com.br/logo.png",
    "width": 400,
    "height": 400
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer service",
    "email": "contato@empresa.com.br"
  },
  "sameAs": [
    "https://www.linkedin.com/company/empresa",
    "https://www.instagram.com/empresa"
  ]
}

BreadcrumbList (navegação hierárquica)

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.seusite.com.br" },
    { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.seusite.com.br/blog" },
    { "@type": "ListItem", "position": 3, "name": "Título do Artigo", "item": "https://www.seusite.com.br/blog/slug" }
  ]
}

FAQPage (perguntas frequentes — gera rich snippet)

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Qual o prazo de entrega?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "O prazo depende do escopo do projeto..."
      }
    }
  ]
}

BlogPosting (artigos do blog)

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Título do artigo",
  "description": "Descrição breve",
  "datePublished": "2026-01-20",
  "dateModified": "2026-01-20",
  "inLanguage": "pt-BR",
  "keywords": "keyword1, keyword2",
  "author": {
    "@type": "Organization",
    "name": "Neryx",
    "url": "https://www.neryx.com.br"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Neryx",
    "logo": { "@type": "ImageObject", "url": "https://www.neryx.com.br/logo.png" }
  },
  "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.seusite.com.br/blog/slug" }
}

Valide sempre em search.google.com/test/rich-results.

4. robots.txt

O robots.txt controla quais URLs o crawler pode visitar. Um erro aqui pode desindexar o site inteiro. Configuração mínima segura:

User-agent: *
Allow: /

# Bloqueia parâmetros de busca interna (evita conteúdo duplicado)
Disallow: /*?q=
Disallow: /*?s=
Disallow: /*?search=

# Bloqueia rotas de admin/API que não devem ser indexadas
Disallow: /admin/
Disallow: /api/

Sitemap: https://www.seusite.com.br/sitemap-index.xml

Atenção: Disallow: / bloqueia tudo. Disallow: /admin/ bloqueia só a pasta admin. Teste em Search Console → Testador de robots.txt antes de publicar.

5. Sitemap XML

O sitemap informa ao Google quais URLs existem no site e quando foram atualizadas pela última vez. Para sites Astro, o @astrojs/sitemap gera automaticamente. Para outros frameworks:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.seusite.com.br/</loc>
    <lastmod>2026-01-20</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://www.seusite.com.br/sobre/</loc>
    <lastmod>2026-01-15</lastmod>
    <priority>0.8</priority>
  </url>
</urlset>

Regras importantes:

  • Inclua apenas URLs que devem ser indexadas (sem noindex, sem redirecionamentos)
  • Use sempre a URL canônica (com ou sem trailing slash, consistente com a canonical tag)
  • Exclua URLs com parâmetros de query, páginas de erro e páginas de obrigado
  • Submeta o sitemap no Google Search Console

6. Performance como fator de SEO

Core Web Vitals são um fator de ranqueamento. Os três pontos de maior impacto no score do Google:

  • LCP ≤ 2,5s: maior elemento visível deve renderizar rápido. Principal causa: imagens sem fetchpriority e fontes externas.
  • CLS ≤ 0,1: sem saltos de layout. Principal causa: imagens sem width/height declarados.
  • INP ≤ 200ms: respostas às interações devem ser rápidas. Principal causa: JavaScript pesado no main thread.

Para sites estáticos, a maneira mais rápida de melhorar TTFB (Time to First Byte) — que influencia LCP — é usar um CDN na borda como Cloudflare Pages ou Vercel Edge Network. O HTML fica fisicamente próximo do usuário.

7. URLs amigáveis e estrutura de navegação

URLs legíveis facilitam o entendimento do Google sobre a hierarquia do site e melhoram CTR nos SERPs porque o usuário sabe o que vai encontrar antes de clicar.

  • Use hífens como separador: /desenvolvimento-de-software não /desenvolvimento_de_software
  • Evite parâmetros de ID: /blog/meu-artigo é melhor que /blog?id=123
  • Hierarquia clara: /blog/categoria/slug sinaliza estrutura ao crawler
  • Evite URLs muito longas (mais de 5 segmentos) — o Google lê mas não favorece

8. Links internos

Links internos distribuem autoridade (PageRank) entre páginas e ajudam o Google a entender quais páginas são mais importantes. Práticas essenciais:

  • Use anchor text descritivo: "saiba mais sobre arquitetura de microsserviços" é melhor que "clique aqui"
  • Páginas importantes (serviços, contato) devem receber links de várias outras páginas do site
  • Artigos do blog devem linkar para páginas de serviço relevantes — o leitor do artigo é lead potencial
  • Não deixe páginas "órfãs" (sem links apontando para elas) — o crawler pode não encontrá-las

9. Internacionalização e hreflang

Se o site tem versões em diferentes idiomas ou regiões, o atributo hreflang diz ao Google qual versão servir para cada localidade:

<link rel="alternate" hreflang="pt-BR" href="https://www.seusite.com.br/pagina/" />
<link rel="alternate" hreflang="en" href="https://www.seusite.com/en/page/" />
<link rel="alternate" hreflang="x-default" href="https://www.seusite.com.br/pagina/" />

Para sites exclusivamente em português do Brasil, não é necessário — mas use lang="pt-BR" no <html> para sinalizar o idioma.

Checklist de auditoria rápida

Execute esses comandos antes de publicar qualquer projeto:

  • Cada página tem <title> único entre 30–60 chars?
  • Cada página tem <meta name="description"> único entre 120–160 chars?
  • Cada página tem <link rel="canonical"> apontando para si mesma?
  • Imagens têm width, height e alt?
  • A imagem LCP tem fetchpriority="high"?
  • Fontes são auto-hospedadas ou usam font-display: swap?
  • O robots.txt não bloqueia páginas importantes?
  • O sitemap está referenciado no robots.txt e submetido no Search Console?
  • Há schema Organization na homepage?
  • Páginas que não devem indexar têm noindex e estão excluídas do sitemap?
  • PageSpeed Insights mostra verde nos Core Web Vitals?

SEO técnico não é mágica — é engenharia. Cada item do checklist acima remove um obstáculo que o Google enfrentaria para entender, rastrear ou rankear o seu site. A diferença entre dois sites com conteúdo similar muitas vezes está aqui, no código.

Quer transformar esse aprendizado em plano de ação?

Se o tema deste artigo se parece com o momento do seu time, podemos ajudar a decidir o próximo passo com clareza.

Falar com um especialista

Newsletter

Receba artigos como este no seu e-mail

Conteúdo técnico sobre arquitetura de software, .NET, IA e gestão de produto. Sem spam.