Microdata vs RDFa vs JSON-LD
Ba định dạng markup cấu trúc dữ liệu; JSON-LD là định dạng được Google khuyến nghị vì dễ triển khai và không can thiệp vào HTML hiển thị.
Microdata vs RDFa vs JSON-LD là gì?
Ba định dạng này đều là cách để thêm dữ liệu có cấu trúc (structured data) vào trang web — tức là đánh dấu thông tin như tên sản phẩm, giá, đánh giá, ngày xuất bản… sao cho máy tìm kiếm (như Google) hiểu rõ nội dung hơn. Chúng không hiển thị cho người dùng, mà chỉ giúp công cụ tìm kiếm đọc và diễn giải dữ liệu chính xác.
- Microdata: Là phần mở rộng của HTML5, dùng các thuộc tính như
itemscope,itemtype,itempropđể gắn dữ liệu vào các thẻ HTML hiện có (ví dụ:<div itemscope itemtype="https://schema.org/Product"><span itemprop="name">Điện thoại X1</span></div>). - RDFa (Resource Description Framework in Attributes): Là tiêu chuẩn W3C, hỗ trợ nhiều loại từ vựng (không chỉ Schema.org), dùng thuộc tính như
typeof,property,resource. Có thể áp dụng trên cả XHTML và HTML5, nhưng cú pháp phức tạp hơn. - JSON-LD (JavaScript Object Notation for Linked Data): Là đoạn mã JSON chèn trong thẻ
<script type="application/ld+json">ở phần<head>hoặc đầu<body>. Dữ liệu được viết tách biệt hoàn toàn với HTML hiển thị.
Tại sao quan trọng trong SEO?
Dữ liệu có cấu trúc giúp Google hiểu đúng ngữ cảnh nội dung — từ đó tăng khả năng xuất hiện trong rich result (kết quả mở rộng như sao đánh giá, giá sản phẩm, thời gian nấu ăn…). Theo tài liệu chính thức của Google, việc triển khai đúng structured data là yếu tố hỗ trợ (không phải xếp hạng trực tiếp), nhưng ảnh hưởng rõ rệt đến tỷ lệ nhấp (CTR) nhờ hiển thị hấp dẫn hơn trong kết quả tìm kiếm.
Google khuyến nghị dùng JSON-LD vì: dễ kiểm tra, ít gây lỗi khi cập nhật giao diện, tương thích tốt với các hệ thống quản lý nội dung (CMS), và không làm rối HTML hiển thị. Microdata và RDFa vẫn hoạt động, nhưng dễ bị sai do can thiệp vào markup hiển thị.
Cách hoạt động
Cả ba định dạng đều ánh xạ dữ liệu lên các lớp từ vựng chuẩn (chủ yếu là Schema.org). Khi Google thu thập trang, bộ phân tích (parser) sẽ đọc các markup này, trích xuất thông tin và liên kết chúng với thực thể tương ứng (ví dụ: một nhà hàng, một bài viết, một sản phẩm). Kết quả được dùng để tạo rich snippet, cải thiện trải nghiệm tìm kiếm và hỗ trợ các tính năng như Google Knowledge Graph.
Khác biệt lớn nhất nằm ở vị trí và cách nhúng:
- Microdata & RDFa: Gắn trực tiếp vào thẻ HTML đang hiển thị → phụ thuộc vào cấu trúc DOM.
- JSON-LD: Độc lập, nằm trong thẻ
<script>→ không phụ thuộc vào thứ tự hay sự tồn tại của phần tử HTML.
Hướng dẫn thực hiện
- Xác định loại dữ liệu cần đánh dấu: Ví dụ: bài viết (
Article), sản phẩm (Product), doanh nghiệp địa phương (LocalBusiness). - Chọn định dạng: Ưu tiên JSON-LD theo khuyến nghị của Google.
- Tạo markup: Dùng công cụ như Google Rich Results Test hoặc Schema Markup Validator để sinh mã chuẩn.
- Chèn vào trang: Đặt đoạn JSON-LD trong thẻ
<head>hoặc ngay sau<body>. Đảm bảotype="application/ld+json"và không có ký tự đặc biệt ngoài JSON. - Kiểm tra và gửi lại: Dùng Google Search Console để kiểm tra báo cáo “Hiệu suất dữ liệu có cấu trúc” và xác minh hiển thị rich result.
Lỗi thường gặp
- Thiếu thuộc tính bắt buộc: Ví dụ
Productyêu cầunamevàoffers; thiếu sẽ khiến rich result không kích hoạt. → Khắc phục: Dùng trình kiểm tra để phát hiện trường bắt buộc còn thiếu. - Sai định dạng ngày/giá: Ngày phải đúng chuẩn ISO 8601 (
2024-04-15), giá phải cópriceCurrencyvà định dạng số (không dùng dấu chấm phẩy). → Khắc phục: Kiểm tra kỹ định dạng trước khi triển khai. - JSON-LD bị đặt sai vị trí hoặc chứa lỗi cú pháp: Như dấu phẩy thừa, ngoặc thiếu, ký tự Unicode không hợp lệ. → Khắc phục: Dán vào trình kiểm tra JSON (ví dụ: jsonlint.com) trước khi đưa lên website.
- Microdata/RDFa bị ngắt giữa chừng do thay đổi layout: Khi CMS hoặc theme cập nhật, các thẻ
itemscopecó thể bị xóa hoặc lệch vị trí. → Khắc phục: Ưu tiên JSON-LD để tránh phụ thuộc vào HTML hiển thị.
Ví dụ thực tế
Dưới đây là cùng một thông tin sản phẩm được biểu diễn bằng cả ba định dạng:
| Định dạng | Mã ví dụ |
|---|---|
| JSON-LD | {
"@context": "https://schema.org",
"@type": "Product",
"name": "Tai nghe Bluetooth X1",
"image": "https://example.com/x1.jpg",
"description": "Tai nghe không dây, pin 20 giờ",
"offers": {
"@type": "Offer",
"price": "1290000",
"priceCurrency": "VND"
}
} |
| Microdata | <div itemscope itemtype="https://schema.org/Product">
<h1 itemprop="name">Tai nghe Bluetooth X1</h1>
<img itemprop="image" src="https://example.com/x1.jpg" alt="">
<p itemprop="description">Tai nghe không dây, pin 20 giờ</p>
<div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
<meta itemprop="price" content="1290000" />
<meta itemprop="priceCurrency" content="VND" />
</div>
</div> |
| RDFa | <div vocab="https://schema.org/" typeof="Product">
<h1 property="name">Tai nghe Bluetooth X1</h1>
<img property="image" src="https://example.com/x1.jpg" />
<p property="description">Tai nghe không dây, pin 20 giờ</p>
<div property="offers" typeof="Offer">
<meta property="price" content="1290000" />
<meta property="priceCurrency" content="VND" />
</div>
</div> |
Câu hỏi thường gặp
Google ưu tiên định dạng nào?
Google chính thức khuyến nghị dùng JSON-LD vì độ tin cậy cao, dễ bảo trì và ít xung đột với HTML. Microdata và RDFa vẫn được hỗ trợ, nhưng không còn được ưu tiên trong tài liệu hướng dẫn mới nhất.
Có nên dùng nhiều định dạng cùng lúc trên một trang?
Không nên. Việc triển khai đồng thời JSON-LD + Microdata cho cùng một thực thể có thể gây mâu thuẫn hoặc khiến Google chọn sai nguồn dữ liệu. Nên chọn một định dạng duy nhất và đảm bảo tính nhất quán.
JSON-LD có ảnh hưởng đến tốc độ tải trang không?
JSON-LD là đoạn script nhỏ, thường dưới 5 KB. Nếu đặt đúng vị trí (trong <head> hoặc đầu <body>) và không chứa logic chạy JavaScript, nó không làm chậm tải trang. Tuy nhiên, nếu chèn quá nhiều markup không cần thiết hoặc lặp lại, có thể làm tăng kích thước HTML — tùy trường hợp cần kiểm tra.