Technical SEO

JSON-LD

Định dạng phổ biến nhất để triển khai structured data, được chèn trong thẻ `<script type="application/ld+json">`.

2 lượt xem Cập nhật: 27/05/2026

JSON-LD là gì?

JSON-LD (JavaScript Object Notation for Linked Data) là một định dạng dữ liệu có cấu trúc, dùng để mô tả nội dung trang web dưới dạng các thực thể và mối quan hệ giữa chúng — theo chuẩn của schema.org. Khác với Microdata hay RDFa, JSON-LD không nhúng trực tiếp vào HTML mà được chèn riêng trong thẻ <script type="application/ld+json">, thường đặt trong phần <head> hoặc đầu phần <body>.

Đây là định dạng được Google ưu tiên hỗ trợ từ năm 2015 và hiện là lựa chọn hàng đầu để triển khai structured data trong Technical SEO.

Tại sao quan trọng trong SEO?

JSON-LD giúp công cụ tìm kiếm hiểu rõ hơn nội dung trang — từ loại hình doanh nghiệp, sản phẩm, bài viết đến sự kiện hoặc cá nhân. Khi dữ liệu có cấu trúc chính xác, Google có thể hiển thị kết quả phong phú hơn (rich results), như: đánh giá sao, giá sản phẩm, thời gian nấu ăn, ngày sự kiện… Những kết quả này tăng tỷ lệ nhấp (CTR) trung bình lên 20–30% so với kết quả thông thường (theo nghiên cứu của Search Engine Journal, 2022).

Ngoài ra, JSON-LD ít gây xung đột với mã nguồn, dễ bảo trì, không ảnh hưởng đến tốc độ tải trang nếu được triển khai đúng cách — điều mà Microdata hoặc RDFa đôi khi gặp phải do thay đổi markup HTML gốc.

Cách hoạt động

JSON-LD hoạt động bằng cách cung cấp một khối dữ liệu độc lập, tuân thủ cú pháp JSON và gắn nhãn theo từ vựng schema.org. Trình thu thập dữ liệu của Google (Googlebot) đọc khối script này riêng biệt, phân tích các thuộc tính như @context, @type, name, url… rồi liên kết chúng với nội dung thực tế trên trang.

Quá trình này không yêu cầu dữ liệu phải khớp 1:1 với HTML hiển thị — miễn là thông tin hợp lý và không mâu thuẫn. Ví dụ: bạn có thể khai báo "price": "1.299.000 VND" trong JSON-LD dù trang hiển thị giá dưới dạng ảnh hoặc văn bản không định dạng.

Hướng dẫn thực hiện

  1. Chọn loại schema phù hợp: Xác định mục đích trang — ví dụ: Article cho bài blog, LocalBusiness cho cửa hàng, Product cho trang sản phẩm.
  2. Dùng công cụ tạo JSON-LD: Sử dụng trình tạo đáng tin cậy như TechnicalSEO Schema Generator, Schema App hoặc Google Rich Results Test (đã ngừng, thay bằng Google Search Console → Enhancements).
  3. Thêm vào trang: Dán đoạn mã vào thẻ <script type="application/ld+json"> trong phần <head> hoặc ngay sau <body>. Không chèn nhiều lần trên cùng một trang.
  4. Kiểm tra và gửi lại: Dùng Google Search Console → mục Enhancements để xác minh dữ liệu có được nhận diện không. Nếu có lỗi, sửa và gửi lại yêu cầu kiểm tra.
  5. Theo dõi hiệu quả: Theo dõi báo cáo Rich Results trong GSC sau 7–28 ngày. Lưu ý: việc xuất hiện rich result không đảm bảo xếp hạng cao hơn, nhưng cải thiện khả năng hiển thị.

Lỗi thường gặp

  • Sai cú pháp JSON: Dấu phẩy thừa, thiếu ngoặc kép, ký tự Unicode không được escape → khiến toàn bộ khối bị bỏ qua. Cách khắc phục: dán mã vào JSONLint để kiểm tra.
  • Thiếu hoặc sai @context: Giá trị bắt buộc là "https://schema.org". Một số trường hợp dùng "https://schema.org/" (có dấu gạch chéo cuối) vẫn hoạt động, nhưng nên thống nhất theo chuẩn.
  • Khai báo trùng lặp: Nhiều khối JSON-LD cùng kiểu (ví dụ hai khối Organization) gây nhầm lẫn. Chỉ giữ một khối chính cho mỗi loại thực thể.
  • Dữ liệu không khớp nội dung trang: Ví dụ khai báo "reviewCount": 42 trong khi trang chỉ hiển thị 5 đánh giá → Google có thể từ chối hiển thị rich result. Luôn đảm bảo tính nhất quán.
  • Chèn trong thẻ <noscript> hoặc comment HTML: JSON-LD phải nằm trong thẻ <script>type="application/ld+json" và không bị vô hiệu hóa.

Ví dụ thực tế

Dưới đây là JSON-LD cho một bài viết tin tức (Article), được tối ưu cho rich result dạng News Article:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Cách tối ưu JSON-LD cho website Việt Nam",
  "description": "Hướng dẫn chi tiết triển khai JSON-LD chuẩn SEO, tránh lỗi và tăng khả năng xuất hiện rich result.",
  "datePublished": "2024-04-15T08:30:00+07:00",
  "dateModified": "2024-04-15T09:15:00+07:00",
  "author": {
    "@type": "Person",
    "name": "Nguyễn Văn A"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Bách Khoa SEO",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/json-ld-la-gi"
  }
}

Câu hỏi thường gặp

JSON-LD có làm chậm trang không?

Không — nếu khối JSON-LD nhỏ (dưới 10 KB) và không chứa tài nguyên ngoài (như ảnh, script). Googlebot xử lý script này ở giai đoạn thu thập, không ảnh hưởng đến thời gian render hay LCP. Tuy nhiên, nếu chèn hàng chục khối lớn trên một trang, cần xem xét tối ưu.

Có thể dùng JSON-LD cho toàn bộ site không?

Có thể, nhưng không nên. Mỗi trang chỉ nên khai báo dữ liệu liên quan trực tiếp đến nội dung trang đó. Việc chèn JSON-LD của trang chủ vào tất cả các trang con (ví dụ: khai báo Organization trên mọi trang) là hợp lệ và phổ biến. Nhưng khai báo Product trên trang danh mục hoặc Event trên trang giới thiệu là không phù hợp — tùy trường hợp, Google có thể bỏ qua hoặc cảnh báo.

JSON-LD có thay thế được Meta Description không?

Không. JSON-LD không ảnh hưởng đến thẻ <meta name="description">. Mô tả trong JSON-LD (thuộc tính description) chỉ hỗ trợ rich result và hiểu ngữ nghĩa — còn meta description vẫn là yếu tố chính để Google hiển thị đoạn mô tả trong kết quả tìm kiếm thông thường.

Yếu tố JSON-LD Microdata RDFa
Vị trí triển khai Trong thẻ <script> (head hoặc body) Nhúng trực tiếp vào HTML (div, span…) Nhúng qua thuộc tính HTML (itemscope, itemtype…)
Dễ bảo trì Cao — tách biệt hoàn toàn với giao diện Trung bình — thay đổi markup có thể ảnh hưởng giao diện Thấp — dễ xung đột với CSS/JS
Hỗ trợ bởi Google Ưu tiên hàng đầu Hỗ trợ đầy đủ Hỗ trợ đầy đủ
Khả năng gây lỗi khi cập nhật giao diện Không Có thể — nếu xóa/div thay đổi Có thể — nếu thuộc tính bị mất