Autor:
    Criação:2026-06-11Última atualização:2026-09-12

    Escanear Website

    O comando scan obtém um URL público, mede o tamanho total da página e audita a saúde de i18n e SEO da página. Produz um relatório com pontuação (0–100) que cobre atributos HTML, links canónicos, tags hreflang, robots.txt, sitemap.xml, links internos localizados e o peso de cada idioma no bundle JavaScript.

    Não são necessárias dependências adicionais. Quando o puppeteer está instalado, o scan pode capturar partes de JavaScript carregadas dinamicamente (lazy-loaded) para uma análise de bundle mais precisa; caso contrário, recorre à inspeção dos scripts carregados diretamente declarados no HTML.

    Utilização

    bash
    npx intlayer scan <url>
    

    Exemplo

    bash
    npx intlayer scan https://example.com
    

    Exemplo de saída:

    plaintext
    🔍 Scanned https://example.com (basic mode)
    
    Score: 90/100
    Page size: 10.60 MB (HTML 42.31 KB)
    Locales: en, fr, es, de, …
    
    Checks:
      ✓ html lang attribute
      ✓ html dir attribute
      ✓ canonical link
      ✓ hreflang tags
      ✓ x-default hreflang
      ✓ localized internal links
      ⚠ all internal links localized
      ✓ current locale detected
      ✓ robots.txt present
      ✓ robots.txt keeps locale paths crawlable
      ✓ sitemap.xml present
      ✓ sitemap lists every locale
      ✓ sitemap has alternate links
      ✓ sitemap has x-default
    
    Bundle locale weight:
      Translations shipped: 120.50 KB
      Unused (other locales): 45.20 KB (37%)
    

    Opções

    <url> (obrigatório)

    O URL completo a escanear (por exemplo, https://example.com).

    --no-deep

    Desativa o scan profundo baseado em renderização.

    Por padrão, o comando tenta utilizar o puppeteer para renderizar a página num navegador headless, capturar as partes de JavaScript carregadas de forma diferida e medir o tamanho real de transferência. Se o puppeteer não estiver instalado, o comando recorre automaticamente ao modo básico.

    Passe --no-deep para forçar o modo básico mesmo quando o puppeteer estiver disponível.

    Exemplo: npx intlayer scan https://example.com --no-deep

    --json

    Apresenta o resultado completo do scan como um objeto JSON em vez de um relatório formatado. Útil para consumo programático ou pipelines de CI.

    Exemplo: npx intlayer scan https://example.com --json

    Opções de configuração padrão

    • --base-dir — Diretório base utilizado para localizar o ficheiro intlayer.config.*.
    • -e, --env — Ambiente de destino (por exemplo, development, production).
    • --env-file — Caminho para um ficheiro .env personalizado.
    • --no-cache — Desativar cache de configuração.
    • --ci — Executa o comando em cada projeto Intlayer do monorepo (ou apenas no atual quando executado de dentro de um diretório de projeto). Credenciais por projeto podem ser injetadas via INTLAYER_PROJECT_CREDENTIALS, um objeto JSON que associa cada caminho de projeto a { "clientId", "clientSecret" }.
    • --verbose — Ativar logs detalhados (padrão no modo CLI).
    • --prefix — Prefixo de log personalizado.

    O que é verificado

    VerificaçãoDescriçãoPeso da pontuação
    html langO atributo <html lang="…"> está presente9
    html dirO atributo <html dir="…"> está presente3
    canonical<link rel="canonical"> está presente10
    hreflangAs tags <link rel="alternate" hreflang="…"> estão presentes9
    x-default hreflangExiste uma alternativa hreflang x-default7
    localized linksPelo menos um link interno inclui um segmento de idioma5
    all links localizedCada link interno inclui um segmento de idioma5
    current localeO idioma da página pode ser detetado3
    robots.txt present/robots.txt devolve uma resposta 20010
    robots.txt locale pathsNenhum caminho de idioma está bloqueado no robots.txt10
    sitemap.xml present/sitemap.xml devolve uma resposta 20010
    sitemap locale coverageCada idioma detetado aparece no sitemap10
    sitemap alternatesO sitemap contém links alternativos hreflang5
    sitemap x-defaultO sitemap contém um hreflang x-default5
    unused bundle contentO bundle JS não contém dados excessivos de idiomas não utilizados9

    A pontuação final é a soma ponderada de todas as verificações bem-sucedidas expressa em percentagem (0–100).

    Utilização programática da função de scan

    A função scan também é exportada a partir de @intlayer/cli para que possa ser chamada nos seus próprios scripts:

    ts
    import { scan } from "@intlayer/cli";
    
    await scan("https://example.com", {
      deep: false,
      json: false,
    });
    

    Para acesso de nível inferior, scanWebsite de @intlayer/engine/scan devolve um objeto ScanResult estruturado:

    ts
    import { scanWebsite } from "@intlayer/engine/scan";
    
    const result = await scanWebsite("https://example.com", { deep: false });
    console.log(result.score, result.totalPageSize, result.events);