Author:
    Creation:2026-06-11Last update:2026-09-12

    рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реНрдХреИрди рдХрд░реЗрдВ

    scan рдХрдорд╛рдВрдб рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ URL рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдХреБрд▓ рдкреЗрдЬ рдЖрдХрд╛рд░ рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ, рдФрд░ рдкреЗрдЬ рдХреЗ i18n рдФрд░ SEO рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдСрдбрд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕реНрдХреЛрд░ рд░рд┐рдкреЛрд░реНрдЯ (0-100) рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ, рдХреИрдиреЛрдирд┐рдХрд▓ рд▓рд┐рдВрдХ, hreflang рдЯреИрдЧ, robots.txt, sitemap.xml, рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдЖрдВрддрд░рд┐рдХ рд▓рд┐рдВрдХ рдФрд░ JavaScript рдмрдВрдбрд▓ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдбреЗрдЯрд╛ рдХрд╛ рднрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред

    рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдм puppeteer рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреИрди рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдмрдВрдбрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ (lazy-loaded) JavaScript рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рдЕрдиреНрдпрдерд╛ рдпрд╣ HTML рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕реАрдзреЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реАрдХреНрд╖рдг рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

    рдЙрдкрдпреЛрдЧ

    bash
    npx intlayer scan <url>
    

    рдЙрджрд╛рд╣рд░рдг

    bash
    npx intlayer scan https://example.com
    

    рдирдореВрдирд╛ рдЖрдЙрдЯрдкреБрдЯ:

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

    рд╡рд┐рдХрд▓реНрдк

    <url> (рдЖрд╡рд╢реНрдпрдХ)

    рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг URL (рдЬреИрд╕реЗ https://example.com)ред

    --no-deep

    рдЧрд╣рди рд░реЗрдВрдбрд░-рдЖрдзрд╛рд░рд┐рдд рд╕реНрдХреИрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред

    рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рдХрд┐рд╕реА рд╣реЗрдбрд▓реЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреЗрдЬ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ, рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ JavaScript рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЖрдХрд╛рд░ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП puppeteer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ puppeteer рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореВрд▓ рдореЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

    puppeteer рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рднреА рдореВрд▓ рдореЛрдб рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --no-deep рдкрд╛рд╕ рдХрд░реЗрдВред

    рдЙрджрд╛рд╣рд░рдг: npx intlayer scan https://example.com --no-deep

    --json

    рд╕реНрд╡рд░реВрдкрд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдкреВрд░реНрдг рд╕реНрдХреИрди рдкрд░рд┐рдгрд╛рдо рдХреЛ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЙрдкрдпреЛрдЧ рдпрд╛ CI рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред

    рдЙрджрд╛рд╣рд░рдг: npx intlayer scan https://example.com --json

    рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк

    • --base-dir тАФ intlayer.config.* рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ред
    • -e, --env тАФ рд▓рдХреНрд╖реНрдп рд╡рд╛рддрд╛рд╡рд░рдг (рдЬреИрд╕реЗ development, production)ред
    • --env-file тАФ рдХрд╕реНрдЯрдо .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрдеред
    • --no-cache тАФ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╢ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред
    • --ci тАФ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд╣рд░ Intlayer рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдЪрд▓рд╛рдиреЗ рдкрд░ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ)ред рдкреНрд░рддрд┐-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ INTLAYER_PROJECT_CREDENTIALS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд╛рде рдХреЛ { "clientId", "clientSecret" } рд╕реЗ рдореИрдк рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
    • --verbose тАФ рд╡рд┐рд╕реНрддреГрдд рд▓реЙрдЧрд┐рдВрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ (CLI рдореЛрдб рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ)ред
    • --prefix тАФ рдХрд╕реНрдЯрдо рд▓реЙрдЧ рдЙрдкрд╕рд░реНрдЧред

    рдХреНрдпрд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ

    рдЬрд╛рдБрдЪрд╡рд┐рд╡рд░рдгрд╕реНрдХреЛрд░ рднрд╛рд░
    html lang<html lang="тАж"> рд╡рд┐рд╢реЗрд╖рддрд╛ рдореМрдЬреВрдж рд╣реИ9
    html dir<html dir="тАж"> рд╡рд┐рд╢реЗрд╖рддрд╛ рдореМрдЬреВрдж рд╣реИ3
    canonical<link rel="canonical"> рдореМрдЬреВрдж рд╣реИ10
    hreflang<link rel="alternate" hreflang="тАж"> рдЯреИрдЧ рдореМрдЬреВрдж рд╣реИрдВ9
    x-default hreflangрдПрдХ x-default hreflang рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реИ7
    localized linksрдХрдо рд╕реЗ рдХрдо рдПрдХ рдЖрдВрддрд░рд┐рдХ рд▓рд┐рдВрдХ рдореЗрдВ рднрд╛рд╖рд╛ рдЦрдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИ5
    all links localizedрдкреНрд░рддреНрдпреЗрдХ рдЖрдВрддрд░рд┐рдХ рд▓рд┐рдВрдХ рдореЗрдВ рднрд╛рд╖рд╛ рдЦрдВрдб рд╢рд╛рдорд┐рд▓ рд╣реИ5
    current localeрдкреЗрдЬ рдХреА рднрд╛рд╖рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ3
    robots.txt present/robots.txt рдПрдХ 200 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ10
    robots.txt locale pathsrobots.txt рдореЗрдВ рдХреЛрдИ рднреА рднрд╛рд╖рд╛ рдкрде рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИ10
    sitemap.xml present/sitemap.xml рдПрдХ 200 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ10
    sitemap locale coverageрдкреНрд░рддреНрдпреЗрдХ рдкрд╣рдЪрд╛рдиреА рдЧрдИ рднрд╛рд╖рд╛ рд╕рд╛рдЗрдЯрдореИрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ10
    sitemap alternatesрд╕рд╛рдЗрдЯрдореИрдк рдореЗрдВ hreflang рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ5
    sitemap x-defaultрд╕рд╛рдЗрдЯрдореИрдк рдореЗрдВ x-default hreflang рд╢рд╛рдорд┐рд▓ рд╣реИ5
    unused bundle contentJS рдмрдВрдбрд▓ рдЕрддреНрдпрдзрд┐рдХ рдЕрдкреНрд░рдпреБрдХреНрдд рднрд╛рд╖рд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ9

    рдЕрдВрддрд┐рдо рд╕реНрдХреЛрд░ рдЙрддреНрддреАрд░реНрдг рдХреА рдЧрдИ рд╕рднреА рдЬрд╛рдБрдЪреЛрдВ рдХрд╛ рднрд╛рд░рд┐рдд рдпреЛрдЧ рдкреНрд░рддрд┐рд╢рдд рдореЗрдВ (0-100) рд╣реЛрддрд╛ рд╣реИред

    рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреИрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

    scan рдлрд╝рдВрдХреНрд╢рди рдХреЛ @intlayer/cli рд╕реЗ рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЖрдкрдХреА рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ:

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

    рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкрд╣реБрдБрдЪ рдХреЗ рд▓рд┐рдП, @intlayer/engine/scan рд╕реЗ scanWebsite рдПрдХ рд╕рдВрд░рдЪрд┐рдд ScanResult рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

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