Technical SEO Audit Checklist: 100-Point Guide

Complete 100-point technical SEO audit checklist covering crawlability, Core Web Vitals, structured data, international SEO, indexation, and site architecture for 2026.

E
ECOSIRE Research and Development Team
|19 de março de 202611 min de leitura2.5k Palavras|

Lista de verificação de auditoria técnica de SEO: guia de 100 pontos

Uma auditoria técnica de SEO não envolve meta tags e densidade de palavras-chave - é uma revisão sistemática de engenharia de quão bem o seu site se comunica com os mecanismos de pesquisa. Rastreabilidade, indexação, Core Web Vitals, dados estruturados, canonização e sinais internacionais afetam sua classificação antes que um único conteúdo seja avaliado. Em 2026, com os mecanismos de pesquisa baseados em IA e o AEO (Answer Engine Optimization) se tornando tão importantes quanto o SEO tradicional, a base técnica é mais importante do que nunca.

Esta lista de verificação de 100 pontos é organizada por categoria. Trabalhe sistematicamente e acompanhe as descobertas em uma planilha. Corrija itens críticos (marcados com C) antes de qualquer outro trabalho de otimização – eles podem impedir que o resto tenha qualquer efeito.

Principais conclusões

  • A rastreabilidade é a primeira porta — se o Googlebot não conseguir acessar suas páginas, nada mais importa
  • Core Web Vitals (LCP, INP, CLS) são sinais de classificação confirmados; LCP alvo <2,5s, INP <200ms, CLS <0,1
  • Tags canônicas evitam a diluição de conteúdo duplicado – cada página precisa de uma apontando para si mesma
  • hreflang é obrigatório para sites multilíngues; x-default deve ser definido para cada grupo de URLs
  • Dados estruturados (JSON-LD) permitem resultados aprimorados e são essenciais para atribuição de origem de AI/LLM
  • HTTPS é o que está em jogo em 2026; conteúdo misto bloqueia a indexação das páginas afetadas
  • A indexação que prioriza dispositivos móveis significa que sua experiência móvel é o que o Google avalia
  • O link interno com texto âncora descritivo distribui o PageRank e sinaliza a relevância do tópico

Seção 1: Rastreabilidade e Indexação (C = Crítico)

robôs.txt

  • (C) robots.txt está acessível em /robots.txt e retorna 200
  • (C) URL do Sitemap declarado: Sitemap: https://example.com/sitemap.xml
  • [] As páginas principais não são bloqueadas acidentalmente por Disallow
  • [] Diretivas separadas de taxa de rastreamento para bots agressivos
  • [] rastreadores de IA explicitamente permitidos ou proibidos por política (GPTBot, ClaudeBot, OAI-SearchBot)
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Disallow: /auth/
Sitemap: https://ecosire.com/sitemap.xml

# Allow AI indexers
User-agent: GPTBot
Allow: /
User-agent: ClaudeBot
Allow: /

Mapa do site XML

  • [] (C) Sitemap retorna 200 com Content-Type: application/xml correto
  • (C) Todos os URLs canônicos incluídos; nenhum URL bloqueado por robots.txt ou noindex
  • [] <lastmod> as datas são precisas (nem todas são a mesma data estática)
  • [] <priority> e <changefreq> definidos apropriadamente por tipo de página
  • [] Sitemap dividido em índice + subsitemaps para sites com mais de 50.000 URLs
  • [] Mapa do site enviado ao Google Search Console e às Ferramentas do Google para webmasters
  • [] Mapa do site de imagem incluído para páginas com muitas imagens
  • [] URLs de idiomas alternativos no mapa do site (hreflang)
// Next.js sitemap.ts — programmatic with correct lastmod
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getAllBlogPosts();
  return [
    {
      url: 'https://ecosire.com',
      lastModified: new Date(),
      changeFrequency: 'daily',
      priority: 1.0,
    },
    ...posts.map((post) => ({
      url: `https://ecosire.com/blog/${post.slug}`,
      lastModified: new Date(post.updatedAt),
      changeFrequency: 'weekly' as const,
      priority: 0.8,
    })),
  ];
}

Orçamento de rastreamento

  • [] As páginas de paginação usam rel="next" / rel="prev" (ou rolagem infinita com SSR)
  • [] URLs de navegação facetados são canônicos ou não indexados
  • [] IDs de sessão e parâmetros de rastreamento excluídos de URLs indexados
  • [] Cadeias de redirecionamento limitadas a um salto (A para B, não A para B para C)
  • [] Sem soft 404s – 404 páginas retornam HTTP 404, não 200

Seção 2: HTTPS e segurança

  • (C) Todas as páginas servidas por HTTPS com certificado válido
  • [] (C) Redirecionamentos HTTP para HTTPS (301, não 302)
  • (C) Sem avisos de conteúdo misto (recursos HTTP em páginas HTTPS)
  • [] HSTS habilitado com max-age=31536000; includeSubDomains; preload
  • [] O certificado SSL tem mais de 90 dias restantes
  • [] O certificado cobre variantes www e não www
  • [] Cadeia de certificados concluída (nenhuma CA intermediária faltando)
# Nginx HTTPS configuration
server {
    listen 443 ssl http2;
    server_name ecosire.com;

    ssl_certificate     /etc/letsencrypt/live/ecosire.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ecosire.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}

Seção 3: Principais sinais vitais da Web

Largest Contentful Paint (LCP) – Meta: menos de 2,5s

  • (C) Elemento LCP identificado no CrUX/PageSpeed Insights
  • [] Imagem/vídeo herói pré-carregado com <link rel="preload" as="image">
  • [] Imagem LCP veiculada com o atributo fetchpriority="high" correto
  • Imagens em formato WebP ou AVIF, não PNG/JPEG sempre que possível
  • [] Imagens com tamanho adequado (nenhuma imagem de 4000px exibida em 800px)
  • [] CDN servindo ativos estáticos com cache de borda
  • [] Servidor TTFB abaixo de 800ms (reduz a janela LCP)
// Next.js: priority prop preloads the hero image
<Image
  src="/hero.webp"
  alt="Hero image"
  width={1200}
  height={630}
  priority
  sizes="100vw"
/>

Interação com a próxima pintura (INP) — Meta: menos de 200 ms

  • [] Tarefas longas (mais de 50ms) identificadas e divididas
  • [] JavaScript pesado adiado ou carregado lentamente
  • [] Os manipuladores de eventos são eficientes e não causam recálculos de layout
  • [] Scripts de terceiros carregados com async ou defer

Mudança cumulativa de layout (CLS) — Meta: abaixo de 0,1

  • (C) Todas as imagens e vídeos possuem atributos width e height explícitos
  • [] Fontes da Web usam font-display: optional ou swap com substituto de ajuste de tamanho
  • [] Os locais de anúncio têm dimensões reservadas
  • [] Conteúdo injetado dinamicamente acima da dobra evitado
  • [] As animações usam apenas transform e opacity (não top, left, width)

Seção 4: Estrutura de URL e canonização

  • (C) Cada página possui uma tag canônica autorreferenciada
  • (C) O URL da tag canônica corresponde ao URL real veiculado (barra final consistente)
  • [] www e não www redirecionam para a versão canônica
  • URLs estão em letras minúsculas, hífens como separadores de palavras, sem sublinhados
  • [] Profundidade de URL no máximo 4 níveis a partir da raiz para páginas importantes
  • [] Nenhum parâmetro de URL que crie conteúdo duplicado sem canonização
  • [] Séries paginadas canonizadas para a primeira página (ou cada página autocanônica)
// Next.js generateMetadata with canonical
export async function generateMetadata({ params }: Props): Promise<Metadata> {
  const { locale, slug } = await params;
  const base = locale === 'en' ? '' : `/${locale}`;
  const canonicalUrl = `https://ecosire.com${base}/blog/${slug}`;

  return {
    alternates: {
      canonical: canonicalUrl,
      languages: buildHreflangUrls(slug), // all 11 locales
    },
  };
}

Seção 5: Metadados e SEO On-Page

  • (C) Cada página tem uma tag <title> exclusiva (50-60 caracteres)
  • (C) Cada página tem um <meta name="description"> exclusivo (150-160 caracteres)
  • Os títulos seguem o padrão: Primary Keyword | Brand Name
  • [] Sem tags de título duplicadas em todo o site
  • [] Tags de gráfico aberto: og:title, og:description, og:image, og:url, og:type
  • [] Tags do cartão Twitter/X: twitter:card, twitter:title, twitter:image
  • [] As imagens OG têm 1200x630px, menos de 8 MB, servidas pela CDN
  • [] <meta name="robots"> usado apenas para restringir (não redundante index,follow)
  • [] <html lang="en"> definido corretamente para todas as páginas

Seção 6: Dados Estruturados (JSON-LD)

  • (C) JSON-LD preferido em vez de Microdata/RDFa (mais fácil de manter, amigável ao analisador)
  • [] Esquema da organização na página inicial com URLs de perfil social sameAs
  • [] Esquema do site com SearchAction para caixa de pesquisa de sitelinks
  • [] Esquema BreadcrumbList em todas as páginas abaixo da página inicial
  • [] Esquema de artigo em postagens de blog com datePublished, dateModified, author
  • [] Esquema FAQPage em páginas com seções de FAQ
  • [] Esquema do produto nas páginas do produto com offers, aggregateRating
  • [] Esquema de serviço em páginas de serviço com areaServed, serviceType
  • Propriedade [] inLanguage em todos os esquemas para atribuição de IA multilíngue
  • [] Dados estruturados validados no teste de pesquisa aprimorada do Google
// JSON-LD with XSS protection
// The .replace() encodes the less-than sign to prevent </script> breakout,
// making this safe for use in a script tag (no untrusted HTML rendered)
export function JsonLd({ data }: { data: Record<string, unknown> }) {
  const safeJson = JSON.stringify(data).replace(/</g, '\\u003c');

  return (
    <script
      type="application/ld+json"
      // Safe: safeJson is a sanitized JSON string, not HTML
      dangerouslySetInnerHTML={{ __html: safeJson }}
    />
  );
}

// Usage
const schema = {
  '@context': 'https://schema.org',
  '@type': 'FAQPage',
  inLanguage: locale,
  mainEntity: faqs.map((faq) => ({
    '@type': 'Question',
    name: faq.question,
    acceptedAnswer: { '@type': 'Answer', text: faq.answer },
  })),
};

<JsonLd data={schema} />

Seção 7: SEO Internacional

  • [] (C) tags hreflang em todas as páginas com variantes de idioma
  • [] (C) x-default hreflang definido para cada grupo de URL
  • atributos hreflang são bidirecionais (se /en/ vincular a /fr/, /fr/ deverá vincular de volta a /en/)
  • [] URLs de localidade usam códigos de idioma ISO 639-1 + códigos de região ISO 3166-1 quando necessário
  • [] <html lang="xx"> corresponde ao local hreflang dessa página
  • [] idiomas RTL (árabe, hebraico, urdu) usam dir="rtl" em <html>
  • [] O conteúdo é traduzido, não apenas traduzido automaticamente sem revisão
  • [] Segmentação geográfica definida no Google Search Console por subdiretório local
// Next.js hreflang via generateMetadata
const locales = ['en', 'zh', 'es', 'ar', 'pt', 'fr', 'de', 'ja', 'tr', 'hi', 'ur'];

// In generateMetadata:
// alternates.languages keys must be BCP 47 language tags
alternates: {
  languages: Object.fromEntries([
    ['x-default', `https://ecosire.com/blog/${slug}`],
    ['en',        `https://ecosire.com/blog/${slug}`],
    ['zh',        `https://ecosire.com/zh/blog/${slug}`],
    ['ar',        `https://ecosire.com/ar/blog/${slug}`],
    // ... all 11 locales
  ]),
},

Seção 8: Desempenho e infraestrutura

  • [] Ativos estáticos atendidos por CDN (CloudFront, Cloudflare, Fastly)
  • [] Cache do navegador: Cache-Control: public, max-age=31536000, immutable para ativos com hash
  • [] Compressão Gzip ou Brotli habilitada no servidor
  • [] HTTP/2 ou HTTP/3 ativado
  • [] DNS TTL 3600s ou menos para failover ágil
  • [] Tempo de resposta do servidor abaixo de 200 ms para HTML (medida TTFB)
  • [] pacote JavaScript com carga inicial de 250 KB (compactado em gzip)
  • [] JavaScript não utilizado eliminado (tremor de árvore, divisão de código)
  • [] CSS eliminado de regras não utilizadas na produção
# Nginx compression + caching headers
gzip on;
gzip_types text/html text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;

location /_next/static/ {
    expires max;
    add_header Cache-Control "public, max-age=31536000, immutable";
}

Seção 9: Experiência móvel e do usuário

  • (C) Meta tag da janela de visualização: <meta name="viewport" content="width=device-width, initial-scale=1">
  • [] Todos os elementos interativos têm alvos de toque de pelo menos 48x48px
  • [] Sem rolagem horizontal no celular (largura máxima: 100vw)
  • [] Tamanho da fonte de pelo menos 16px para o corpo do texto (evita o zoom automático do iOS no foco de entrada)
  • [] Navegação móvel testada em dispositivos reais (iOS Safari, Chrome Android)
  • [] Pop-ups e intersticiais não cobrem o conteúdo principal em dispositivos móveis
  • [] Toque para ligar em números de telefone para visitantes móveis

Seção 10: AEO (Otimização do Mecanismo de Resposta)

Cada vez mais importante para motores de busca de IA e assistentes de voz:

  • [] Respostas principais agrupadas no atributo data-speakable
  • <details>/<summary> usado para conteúdo recolhível de perguntas frequentes (rastreável, semântico)
  • [] /llms.txt e /.well-known/llms.txt publicados para rastreadores de IA
  • [] Parágrafos de resposta concisos e factuais no topo das seções principais (otimização de snippet em destaque)
  • [] Relacionamentos entre entidades claros em dados estruturados (Organização para Serviços e Produtos)
  • [] Nome da marca consistente em todas as páginas, perfis sociais e diretórios
  • [] API IndexNow usada para envio instantâneo de URL após a publicação de novo conteúdo

Perguntas frequentes

Com que frequência devo realizar uma auditoria técnica de SEO?

Execute uma auditoria completa trimestralmente e um rastreamento leve (Screaming Frog ou Sitebulb) mensalmente. Qualquer mudança significativa no site – nova pilha de tecnologia, migração, adição de conteúdo internacional, grande reformulação – justifica uma auditoria imediata. Configure o monitoramento contínuo por meio de alertas do Google Search Console para quedas repentinas em páginas indexadas ou erros de rastreamento.

Quais ferramentas eu preciso para uma auditoria técnica de SEO?

No mínimo: Google Search Console (gratuito, canônico), Screaming Frog ou Sitebulb (análise de rastreamento), PageSpeed ​​​​Insights (Core Web Vitals), Google Rich Results Test (dados estruturados), WebAIM Contrast Checker (acessibilidade/UX) e Ahrefs ou SEMrush (backlinks, classificação de palavras-chave). Para sites com muito JavaScript, adicione Rendertron ou Botify para rastreamento renderizado.

Qual é o problema crítico de SEO mais comum encontrado em auditorias?

As configurações incorretas de tags canônicas são a descoberta crítica mais comum – ou totalmente ausentes, apontando para o URL errado (geralmente um domínio de desenvolvimento ou de teste deixado em produção) ou inconsistentes com o uso da barra final. O segundo mais comum são as diretivas noindex acidentais de plug-ins CMS ou configurações de teste deixadas em compilações de produção.

O Next.js App Router ajuda com SEO técnico?

Sim, significativamente. A renderização do lado do servidor significa que todo o conteúdo está na resposta HTML inicial (não é necessário JavaScript para rastreamento). generateMetadata() metadados por página evitam erros globais de metadados estáticos. As convenções sitemap.ts e robots.ts facilitam a manutenção desses arquivos programaticamente. O componente Image integrado impõe largura e altura para prevenção de CLS e gera automaticamente variantes WebP/AVIF.

Como lidar com SEO para conteúdo paginado?

Para arquivos de blog paginados ou listagens de produtos, cada página deve ter uma auto-referência canônica (não canônica para a página 1), um título descritivo indicando o número da página e, se o conteúdo for substancial, permitir a indexação. Para páginas paginadas finas, considere noindex nas páginas além da página 3. O Google descontinuado rel="next"/rel="prev" em 2019, mas ainda é usado por outros mecanismos de pesquisa.


Próximas etapas

Uma auditoria técnica de SEO é um investimento único que multiplica o ROI de todo o seu conteúdo e trabalho de marketing. Os 100 pontos nesta lista de verificação cobrem todo o escopo daquilo que os mecanismos de pesquisa avaliam antes de classificar seu conteúdo.

ECOSIRE implementa as melhores práticas técnicas de SEO como parte padrão de cada projeto Next.js - desde mapas de sites programáticos e hreflang para 11 localidades até dados estruturados, otimização Core Web Vitals e integração de API IndexNow. Explore nossos serviços de desenvolvimento web para saber como construímos visibilidade de pesquisa desde o primeiro dia.

E

Escrito por

ECOSIRE Research and Development Team

Construindo produtos digitais de nível empresarial na ECOSIRE. Compartilhando insights sobre integrações Odoo, automação de e-commerce e soluções de negócios com IA.

Converse no WhatsApp