ItemList Schema
Schema biểu diễn danh sách có thứ tự hoặc không thứ tự, thường dùng cho danh sách sản phẩm, bài viết hoặc bước hướng dẫn.
ItemList Schema là gì?
ItemList Schema là một loại markup cấu trúc (structured data) do Schema.org định nghĩa, dùng để mô tả một danh sách các mục — có thể là danh sách có thứ tự (ordered list) hoặc không thứ tự (unordered list). Đây không phải là thẻ HTML <ul> hay <ol>, mà là dữ liệu JSON-LD hoặc Microdata giúp công cụ tìm kiếm hiểu rõ hơn về mối quan hệ giữa các phần tử trong danh sách: thứ tự xuất hiện, số lượng phần tử, và vai trò của từng mục trong chuỗi.
ItemList thường được áp dụng cho các trang như: danh sách sản phẩm trên trang danh mục, bài viết liên quan ở cuối bài, bước hướng dẫn (how-to), hoặc danh sách FAQ. Nó hỗ trợ công cụ tìm kiếm xác định đâu là phần tử đầu tiên, cuối cùng, phần tử kế tiếp và phần tử trước đó — điều đặc biệt hữu ích với các nội dung dạng chuỗi hoặc tuần tự.
Tại sao quan trọng trong SEO?
ItemList Schema không trực tiếp nâng hạng từ khóa, nhưng nó tăng khả năng xuất hiện trong các định dạng kết quả tìm kiếm nâng cao (rich results), từ đó cải thiện CTR và trải nghiệm người dùng. Khi Google hiểu rõ cấu trúc danh sách, nó có thể hiển thị toàn bộ danh sách dưới dạng một khối thống nhất — ví dụ: hiển thị 5 bước hướng dẫn trong một đoạn rich snippet thay vì chỉ tiêu đề bài viết.
Theo tài liệu chính thức của Google (cập nhật tháng 04/2024), ItemList được hỗ trợ cho các loại rich result như: How-to, QAPage, và WebPage (khi kết hợp với mainEntity). Ngoài ra, việc triển khai đúng ItemList còn giúp giảm tỷ lệ bỏ qua (bounce rate) nhờ cung cấp thông tin nhanh và rõ ràng ngay trên trang kết quả tìm kiếm.
Cách hoạt động
ItemList Schema hoạt động bằng cách khai báo một đối tượng @type: "ItemList", sau đó liệt kê các phần tử con thông qua thuộc tính itemListElement. Mỗi phần tử trong danh sách có thể là một đối tượng độc lập (ví dụ: Product, Article) hoặc một giá trị đơn giản (như chuỗi văn bản). Thuộc tính bắt buộc gồm:
itemListElement: mảng chứa các phần tử — tối thiểu 1 phần tửitemListOrder: giá trị"ItemListOrderAscending","ItemListOrderDescending"hoặc"Unordered"numberOfItems: số lượng phần tử trong danh sách (khuyến nghị, không bắt buộc)
Google không yêu cầu tất cả thuộc tính, nhưng thiếu itemListElement hoặc khai báo sai kiểu dữ liệu sẽ khiến markup bị bỏ qua hoàn toàn.
Hướng dẫn thực hiện
Dưới đây là các bước triển khai ItemList Schema chuẩn xác:
- Xác định mục đích danh sách: Phân biệt rõ đây là danh sách sản phẩm, bước hướng dẫn, hay bài viết liên quan — để chọn kiểu item phù hợp (
Product,HowToStep,Article…). - Chọn định dạng markup: Ưu tiên JSON-LD (đặt trong thẻ
<script type="application/ld+json">trong<head>hoặc trước </body>). Tránh Microdata nếu trang dùng nhiều framework (có thể xung đột). - Khai báo ItemList cơ bản: Đảm bảo có
@context,@type,itemListElementvàitemListOrder. - Điền dữ liệu cho từng phần tử: Mỗi phần tử trong
itemListElementphải là một đối tượng hợp lệ theo Schema.org — ví dụ:{"@type": "Product", "name": "Tên sản phẩm"}. - Kiểm tra bằng công cụ chính thức: Dùng URL Inspection Tool hoặc Schema Markup Validator để xác minh lỗi cú pháp và khả năng xử lý.
Lỗi thường gặp
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
Thiếu itemListElement |
Markup không chứa mảng phần tử hoặc mảng rỗng | Thêm ít nhất một phần tử vào itemListElement; kiểm tra dấu phẩy và ngoặc vuông trong JSON-LD. |
itemListOrder sai giá trị |
Nhập "ascending" thay vì "ItemListOrderAscending" |
Sử dụng đúng URI đầy đủ: "https://schema.org/ItemListOrderAscending" hoặc giá trị ngắn đã được chấp nhận: "ItemListOrderAscending". |
Mỗi phần tử không có @type |
Đưa chuỗi thuần (ví dụ: "Bước 1") thay vì đối tượng có @type |
Với danh sách hướng dẫn, dùng {"@type": "HowToStep", "name": "Bước 1"}; với danh sách sản phẩm, bắt buộc Product. |
Trùng ID hoặc thiếu @id khi cần |
Không khai báo @id cho các phần tử khi chúng liên kết tới URL riêng |
Nếu phần tử trỏ tới trang khác, thêm @id là URL đầy đủ (ví dụ: "https://example.com/san-pham/a"). |
Ví dụ thực tế
Dưới đây là mã JSON-LD cho danh sách 3 bước hướng dẫn làm bánh bông lan — tuân thủ chuẩn Schema.org và hỗ trợ rich result How-to:
{ "@context": "https://schema.org", "@type": "HowTo", "name": "Cách làm bánh bông lan mềm mịn", "step": { "@type": "ItemList", "itemListOrder": "ItemListOrderAscending", "numberOfItems": 3, "itemListElement": [ { "@type": "HowToStep", "name": "Trộn bột khô", "text": "Rây bột mì, bột nở và muối vào âu lớn." }, { "@type": "HowToStep", "name": "Đánh bông trứng", "text": "Đánh trứng và đường đến khi bông xốp, nhạt màu." }, { "@type": "HowToStep", "name": "Nướng bánh", "text": "Đổ hỗn hợp vào khuôn, nướng 35 phút ở 175°C." } ] } }
Lưu ý: Với danh sách sản phẩm, bạn sẽ thay HowToStep bằng Product và bổ sung thuộc tính như offers, image, url — tùy trường hợp.
Câu hỏi thường gặp
ItemList Schema có ảnh hưởng trực tiếp đến thứ hạng Google không?
Không. Google khẳng định rõ ràng rằng structured data — bao gồm ItemList — không phải yếu tố xếp hạng. Tuy nhiên, nó ảnh hưởng gián tiếp qua việc tăng CTR, giảm bounce rate và hỗ trợ hiển thị rich result — những yếu tố góp phần vào hiệu suất tổng thể của trang.
Có bắt buộc phải dùng ItemList cho mọi danh sách trên trang không?
Không. Chỉ nên triển khai khi danh sách mang giá trị thông tin cao và có tính tuần tự hoặc phân cấp rõ ràng — ví dụ: bước hướng dẫn, danh sách sản phẩm nổi bật, hoặc bài viết trong loạt chủ đề. Danh sách nhỏ (dưới 3 mục) hoặc danh sách trang trí không cần markup.
Có thể kết hợp ItemList với các schema khác như Breadcrumb hay Article không?
Có thể. ItemList thường nằm trong một schema cha — ví dụ: HowTo, WebPage hoặc CollectionPage. Việc kết hợp nhiều schema trên cùng một trang là bình thường, miễn là không mâu thuẫn về ngữ nghĩa và mỗi schema có phạm vi rõ ràng. Cần kiểm tra tính tương thích qua công cụ validator.