Tác giả:
    Ngày tạo:2026-06-11Cập nhật lần cuối:2026-09-12

    Quét trang web

    Lệnh scan tìm nạp một URL công khai, đo lường tổng kích thước trang và kiểm toán sức khỏe i18n cũng như SEO của trang. Nó tạo ra một báo cáo tính điểm (0–100) bao gồm các thuộc tính HTML, các liên kết chuẩn (canonical), thẻ hreflang, robots.txt, sitemap.xml, các liên kết nội bộ được bản địa hóa và dung lượng ngôn ngữ của gói JavaScript.

    Không yêu cầu thêm bất kỳ phụ thuộc nào. Khi puppeteer được cài đặt, quá trình quét có thể chụp các phân đoạn JavaScript tải chậm (lazy-loaded) để phân tích gói mã nguồn chính xác hơn; nếu không, nó sẽ quay lại kiểm tra các tập lệnh tải trực tiếp được khai báo trong HTML.

    Cách sử dụng

    bash
    npx intlayer scan <url>
    

    Ví dụ

    bash
    npx intlayer scan https://example.com
    

    Kết quả mẫu:

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

    Tùy chọn

    <url> (bắt buộc)

    URL đầy đủ và hợp lệ để quét (ví dụ: https://example.com).

    --no-deep

    Tắt quét sâu dựa trên kết xuất giao diện (rendering).

    Theo mặc định, lệnh cố gắng sử dụng puppeteer để kết xuất trang trong một trình duyệt không giao diện (headless browser), chụp các phân đoạn JavaScript tải chậm và đo kích thước truyền tải dây mạng thực tế. Nếu không cài đặt puppeteer, lệnh sẽ tự động chuyển về chế độ cơ bản.

    Truyền --no-deep để buộc sử dụng chế độ cơ bản ngay cả khi có sẵn puppeteer.

    Ví dụ: npx intlayer scan https://example.com --no-deep

    --json

    Xuất toàn bộ kết quả quét dưới dạng đối tượng JSON thay vì báo cáo được định dạng sẵn. Hữu ích cho việc sử dụng theo chương trình hoặc luồng CI.

    Ví dụ: npx intlayer scan https://example.com --json

    Tùy chọn cấu hình tiêu chuẩn

    • --base-dir — Thư mục gốc dùng để xác định vị trí của tệp intlayer.config.*.
    • -e, --env — Môi trường đích (ví dụ: development, production).
    • --env-file — Đường dẫn đến tệp .env tùy chỉnh.
    • --no-cache — Tắt bộ nhớ đệm cấu hình.
    • --ci — Chạy lệnh trong mọi dự án Intlayer của monorepo (hoặc chỉ dự án hiện tại khi chạy từ thư mục dự án). Thông tin xác thực theo từng dự án có thể được đưa vào qua INTLAYER_PROJECT_CREDENTIALS, một đối tượng JSON ánh xạ đường dẫn dự án tới { "clientId", "clientSecret" }.
    • --verbose — Bật ghi nhật ký chi tiết (mặc định trong chế độ CLI).
    • --prefix — Tiền tố nhật ký tùy chỉnh.

    Những gì được kiểm tra

    Kiểm traMô tảTrọng số điểm
    html langThuộc tính <html lang="…"> có xuất hiện9
    html dirThuộc tính <html dir="…"> có xuất hiện3
    canonicalThẻ <link rel="canonical"> có xuất hiện10
    hreflangCác thẻ <link rel="alternate" hreflang="…"> có xuất hiện9
    x-default hreflangCó sự tồn tại của hreflang thay thế x-default7
    localized linksÍt nhất một liên kết nội bộ bao gồm phân đoạn ngôn ngữ5
    all links localizedMỗi liên kết nội bộ đều bao gồm phân đoạn ngôn ngữ5
    current localeCó thể phát hiện được ngôn ngữ của trang3
    robots.txt presentĐường dẫn /robots.txt trả về phản hồi 20010
    robots.txt locale pathsKhông có đường dẫn ngôn ngữ nào bị chặn trong robots.txt10
    sitemap.xml presentĐường dẫn /sitemap.xml trả về phản hồi 20010
    sitemap locale coverageMọi ngôn ngữ được phát hiện đều xuất hiện trong sơ đồ trang web (sitemap)10
    sitemap alternatesSơ đồ trang web chứa các liên kết thay thế hreflang5
    sitemap x-defaultSơ đồ trang web chứa hreflang x-default5
    unused bundle contentGói JS không mang theo quá nhiều dữ liệu ngôn ngữ không sử dụng9

    Điểm số cuối cùng là tổng trọng số của tất cả các bài kiểm tra đạt yêu cầu, được biểu thị dưới dạng phần trăm (0–100).

    Sử dụng hàm quét theo chương trình

    Hàm scan cũng được xuất bản từ gói @intlayer/cli để bạn có thể gọi từ các tập lệnh của riêng mình:

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

    Để truy cập ở cấp độ thấp hơn, scanWebsite từ @intlayer/engine/scan sẽ trả về một đối tượng ScanResult có cấu trúc:

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