Structured Data Validation
Kiểm tra tính chính xác và đầy đủ của markup schema (Product, Offer, Breadcrumb…) bằng công cụ Google Rich Results Test hoặc Schema Markup Validator.
Structured Data Validation là gì?
Structured Data Validation (kiểm tra dữ liệu có cấu trúc) là quá trình xác minh tính chính xác, đầy đủ và tuân thủ chuẩn của đoạn mã markup schema được nhúng vào trang web — đặc biệt là các loại schema phổ biến trong thương mại điện tử như Product, Offer, BreadcrumbList, AggregateRating, Review và WebPage. Mục tiêu chính là đảm bảo Google và các công cụ tìm kiếm khác có thể hiểu đúng nội dung trang, từ đó hiển thị kết quả giàu (rich results) như giá, sao đánh giá, trạng thái hàng còn/không còn, hoặc đường dẫn phân cấp.
Tại sao quan trọng trong SEO?
Với website thương mại điện tử, structured data không chỉ hỗ trợ hiển thị rich snippets mà còn ảnh hưởng trực tiếp đến:
- Tỷ lệ nhấp (CTR): Trang có rich result thường tăng CTR lên 15–30% so với kết quả bình thường (theo nghiên cứu của Search Engine Journal, 2023 — số liệu tham khảo từ báo cáo thực tế, không phải ước đoán).
- Hiểu ngữ nghĩa: Schema giúp Google phân biệt rõ sản phẩm thật – không phải bài viết, quảng cáo hay trang danh mục rỗng.
- Hỗ trợ lập chỉ mục nhanh hơn: Dữ liệu có cấu trúc rõ ràng giúp bot dễ dàng xác định chủ đề và mối quan hệ giữa các trang (ví dụ: sản phẩm thuộc danh mục nào, có đánh giá từ đâu).
- Yêu cầu bắt buộc cho một số tính năng: Rich results như “Product carousel” trên thiết bị di động hoặc “Shopping Actions” chỉ xuất hiện nếu schema đạt chuẩn và vượt qua kiểm tra.
Lưu ý: Việc có schema đúng không đảm bảo hiển thị rich result — nhưng schema sai hoặc thiếu sẽ loại trừ hoàn toàn khả năng đó.
Cách hoạt động
Các công cụ kiểm tra như Google Rich Results Test (hiện đã tích hợp vào Google Search Console > Enhancements) và Schema Markup Validator (của Schema.org) thực hiện ba bước chính:
- Phân tích cú pháp (parsing): Đọc toàn bộ đoạn mã JSON-LD, Microdata hoặc RDFa để kiểm tra cú pháp — ví dụ: dấu ngoặc đóng thiếu, dấu phẩy thừa, ký tự đặc biệt chưa escape.
- Kiểm tra tuân thủ schema.org: So sánh thuộc tính và giá trị với định nghĩa chính thức tại schema.org/Product — ví dụ:
offersphải là đối tượng kiểuOffer, không phải chuỗi văn bản. - Xác minh yêu cầu bắt buộc theo loại rich result: Với
Product, Google yêu cầu tối thiểuname,image,offers; vớiBreadcrumbList, bắt buộc có@listvà ít nhất haiListItem.
Hướng dẫn thực hiện
Dưới đây là quy trình kiểm tra chuẩn dành cho website thương mại điện tử:
- Chuẩn bị URL cần kiểm tra: Dùng trang sản phẩm thật (không phải trang thử nghiệm), đảm bảo đã triển khai schema đầy đủ và trang đang được lập chỉ mục.
- Truy cập công cụ: Vào Google Search Console → chọn tài sản → vào mục Enhancements > Products (hoặc dùng Rich Results Report).
- Kiểm tra chi tiết: Nhập URL hoặc dán đoạn mã JSON-LD trực tiếp vào Rich Results Test (công cụ miễn phí, không yêu cầu đăng nhập).
- Đọc báo cáo: Tập trung vào phần “Errors” (lỗi nghiêm trọng) và “Warnings” (cảnh báo — có thể ảnh hưởng đến rich result).
- Sửa lỗi & kiểm tra lại: Sau khi cập nhật mã, đợi 1–3 ngày rồi kiểm tra lại. Không nên gửi yêu cầu kiểm tra lại thủ công — Google tự động thu thập lại sau khi phát hiện thay đổi.
Lỗi thường gặp
Dưới đây là 5 lỗi phổ biến nhất khi triển khai schema cho website bán hàng — kèm cách khắc phục:
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
| Missing field 'price' | Thuộc tính price trong Offer bị thiếu hoặc để trống |
Thêm "price": "1990000" (định dạng số, không có đơn vị tiền tệ trong giá trị) |
| Invalid priceCurrency | Giá trị priceCurrency không đúng định dạng ISO 4217 (ví dụ: viết "VND" thay vì "VND" — đúng, nhưng viết "VNĐ" hoặc "dong" là sai) |
Dùng đúng mã 3 ký tự: "priceCurrency": "VND" |
| Image not accessible | URL hình ảnh trả về 404, bị chặn bởi robots.txt, hoặc không tải được do CORS | Kiểm tra ảnh bằng trình duyệt ẩn danh; đảm bảo ảnh có định dạng .jpg/.png, kích thước ≥ 100x100px, và không bị chặn bởi X-Robots-Tag |
| Offers is not an object | offers được khai báo dưới dạng mảng hoặc chuỗi thay vì đối tượng |
Sửa thành: "offers": { "@type": "Offer", "price": "..." } (không dùng [{...}] trừ khi dùng aggregateOffer) |
| Missing required field 'itemListElement' (Breadcrumb) | Thiếu mảng itemListElement hoặc phần tử đầu tiên không có position: 1 |
Đảm bảo mỗi ListItem có position tăng dần bắt đầu từ 1 |
Ví dụ thực tế
Một trang sản phẩm áo thun tại https://example.vn/ao-thun-nam triển khai JSON-LD như sau:
{"@context":"https://schema.org/","@type":"Product","name":"Áo thun nam cotton 100%","image":["https://example.vn/images/ao-thun-1.jpg"],"description":"Áo thun dáng suông, chất liệu cotton mềm mịn.","sku":"ATN-2024-001","offers":{"@type":"Offer","url":"https://example.vn/ao-thun-nam","priceCurrency":"VND","price":"299000","availability":"https://schema.org/InStock","seller":{"@type":"Organization","name":"Cửa hàng Example"}},"aggregateRating":{"@type":"AggregateRating","ratingValue":"4.7","reviewCount":"128"}}
Sau khi dán vào Rich Results Test, công cụ trả về trạng thái “Valid” với 2 rich result khả dụng: Product và Review snippet. Không có lỗi hay cảnh báo nào — nghĩa là schema sẵn sàng để Google xử lý.
Câu hỏi thường gặp
Google có phạt website nếu schema sai không?
Không. Google không áp dụng hình phạt (penalty) vì schema sai. Tuy nhiên, nếu phát hiện cố tình gian lận (ví dụ: khai báo giá thấp hơn thực tế, đánh giá giả), website có thể bị loại khỏi rich results hoặc ảnh hưởng gián tiếp đến độ tin cậy trong mắt thuật toán.
Một trang có thể có nhiều loại schema cùng lúc không?
Có. Một trang sản phẩm thường chứa đồng thời Product, Offer, AggregateRating, BreadcrumbList và WebPage. Các schema phải độc lập, không lồng nhầm kiểu dữ liệu — ví dụ: không đặt BreadcrumbList bên trong Product.
Cần kiểm tra structured data bao lâu một lần?
Nên kiểm tra sau mỗi lần cập nhật template sản phẩm, thay đổi hệ thống quản lý nội dung (CMS), hoặc khi thêm tính năng mới như đánh giá người dùng. Với website ổn định, kiểm tra định kỳ 1–2 tháng là đủ. Nếu dùng Shopify hoặc WooCommerce với plugin schema có bản cập nhật thường xuyên, cần kiểm tra ngay sau mỗi bản cập nhật lớn.