Autor:
    Creación:2026-06-11Última actualización:2026-09-12

    Escanear sitio web

    El comando scan obtiene una URL pública, mide el tamaño total de la página y audita la salud de i18n y SEO de la página. Produce un informe puntuado (0–100) que cubre atributos HTML, enlaces canónicos, etiquetas hreflang, robots.txt, sitemap.xml, enlaces internos localizados y el peso de las locales en el bundle de JavaScript.

    No se requieren dependencias adicionales. Cuando puppeteer está instalado, el escaneo puede capturar fragmentos de JavaScript cargados de forma diferida para un análisis de bundle más preciso; de lo contrario, recurre a inspeccionar los scripts cargados de forma activa declarados en el HTML.

    Uso

    bash
    npx intlayer scan <url>
    

    Ejemplo

    bash
    npx intlayer scan https://example.com
    

    Ejemplo de salida:

    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%)
    

    Opciones

    <url> (requerido)

    La URL completa a escanear (por ejemplo, https://example.com).

    --no-deep

    Desactiva el escaneo profundo basado en renderizado.

    Por defecto, el comando intenta utilizar puppeteer para renderizar la página en un navegador sin interfaz gráfica, capturar fragmentos de JavaScript cargados de forma diferida y medir el tamaño real de transferencia. Si puppeteer no está instalado, el comando recurre automáticamente al modo básico.

    Pase --no-deep para forzar el modo básico incluso cuando puppeteer esté disponible.

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

    --json

    Muestra el resultado completo del escaneo como un objeto JSON en lugar de un informe formateado. Útil para el consumo programático o pipelines de CI.

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

    Opciones de configuración estándar

    • --base-dir — Directorio base utilizado para localizar el archivo intlayer.config.*.
    • -e, --env — Entorno de destino (por ejemplo, development, production).
    • --env-file — Ruta a un archivo .env personalizado.
    • --no-cache — Desactivar la caché de configuración.
    • --ci — Ejecuta el comando en cada proyecto Intlayer del monorepo (o solo en el actual si se ejecuta desde un directorio de proyecto). Se pueden inyectar credenciales por proyecto mediante INTLAYER_PROJECT_CREDENTIALS, un objeto JSON que asocia cada ruta de proyecto a { "clientId", "clientSecret" }.
    • --verbose — Activar el registro detallado (por defecto en modo CLI).
    • --prefix — Prefijo de registro personalizado.

    Qué se comprueba

    ComprobaciónDescripciónPeso de la puntuación
    html langEl atributo <html lang="…"> está presente9
    html dirEl atributo <html dir="…"> está presente3
    canonical<link rel="canonical"> está presente10
    hreflangLas etiquetas <link rel="alternate" hreflang="…"> están presentes9
    x-default hreflangExiste una alternativa hreflang x-default7
    localized linksAl menos un enlace interno incluye un segmento de idioma5
    all links localizedCada enlace interno incluye un segmento de idioma5
    current localeSe puede detectar el idioma de la página3
    robots.txt present/robots.txt devuelve una respuesta 20010
    robots.txt locale pathsNinguna ruta de idioma está bloqueada en robots.txt10
    sitemap.xml present/sitemap.xml devuelve una respuesta 20010
    sitemap locale coverageCada idioma detectado aparece en el sitemap10
    sitemap alternatesEl sitemap contiene enlaces alternativos hreflang5
    sitemap x-defaultEl sitemap contiene un hreflang x-default5
    unused bundle contentEl bundle JS no contiene datos de idiomas no utilizados excesivos9

    La puntuación final es la suma ponderada de todas las comprobaciones aprobadas expresada como un porcentaje (0–100).

    Uso programático de la función de escaneo

    La función scan también se exporta desde @intlayer/cli para que pueda llamarse desde sus propios scripts:

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

    Para un acceso de nivel inferior, scanWebsite de @intlayer/engine/scan devuelve un objeto ScanResult estructurado:

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