Schema & Structured Data

ListItem Schema

Phần tử con của ItemList Schema, đại diện cho một mục đơn lẻ trong danh sách, bao gồm thuộc tính position để xác định thứ tự.

3 lượt xem Cập nhật: 28/05/2026

ListItem Schema là gì?

ListItem Schema là một loại schema markup thuộc nhóm ItemList, dùng để đánh dấu từng phần tử riêng lẻ trong một danh sách có thứ tự (ví dụ: danh sách bài viết, sản phẩm, bước hướng dẫn hay kết quả tìm kiếm). Đây không phải schema độc lập mà luôn xuất hiện như phần tử con của ItemList, và bắt buộc phải có thuộc tính position — xác định vị trí thứ tự của mục đó trong danh sách (bắt đầu từ số 1).

Theo tiêu chuẩn chính thức từ schema.org, ListItem chỉ hỗ trợ hai thuộc tính bắt buộc hoặc thường dùng nhất: position (số nguyên dương) và item (đối tượng được liệt kê — có thể là URL, Thing, hoặc một schema con như Article, Product…). Không tồn tại thuộc tính như name hay description trực tiếp trên ListItem — những thông tin này phải nằm trong đối tượng được tham chiếu qua item.

Tại sao quan trọng trong SEO?

ListItem Schema giúp công cụ tìm kiếm hiểu rõ cấu trúc danh sách trên trang — đặc biệt với các trang dạng tổng hợp (top 10, hướng dẫn nhiều bước, danh sách so sánh, kết quả tìm kiếm nội bộ…). Khi được triển khai đúng, nó góp phần:

  • Hỗ trợ hiển thị rich result dạng list carousel hoặc multi-item snippet trên Google (tùy vào ngữ cảnh và chất lượng nội dung);
  • Cải thiện khả năng lập chỉ mục cho các mục con — nhất là khi chúng liên kết tới các trang con khác nhau;
  • Tăng độ tin cậy về tổ chức nội dung, từ đó gián tiếp hỗ trợ xếp hạng cho cả trang cha và các trang con;
  • Phục vụ tốt hơn cho trải nghiệm người dùng trên thiết bị di động và trợ lý giọng nói, vì dữ liệu có cấu trúc giúp máy đọc hiểu thứ bậc và mối quan hệ giữa các phần tử.

Lưu ý: ListItem Schema không trực tiếp làm tăng thứ hạng, nhưng là thành phần then chốt trong hệ sinh thái structured data giúp Google diễn giải đúng nội dung — yếu tố ngày càng quan trọng trong bối cảnh AI-overview và SGE.

Cách hoạt động

Google và các công cụ tìm kiếm phân tích mã schema để xây dựng mô hình hiểu biết về trang. Với ItemList + các ListItem con, hệ thống nhận diện:

  • Một tập hợp các mục có thứ tự rõ ràng (khác với danh sách không thứ tự như unordered list);
  • Vị trí chính xác của từng mục (position);
  • Đối tượng thực tế mà mỗi mục đại diện (item — thường là một URL hoặc schema chi tiết hơn).

Việc thiếu position, hoặc đặt giá trị không liên tục (ví dụ: 1 → 3 → 5), có thể khiến Google bỏ qua toàn bộ markup. Thứ tự phải là dãy số nguyên dương tăng dần, bắt đầu từ 1, không lặp và không bỏ sót — trừ trường hợp lược bỏ mục ẩn (tùy trường hợp).

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

Dưới đây là các bước triển khai ListItem Schema chuẩn xác:

  1. Xác định danh sách cần đánh dấu: Chỉ áp dụng cho danh sách có thứ tự rõ ràng (dùng thẻ HTML <ol> hoặc <div role="list"> với các mục con có thứ bậc).
  2. Chọn định dạng markup: JSON-LD là lựa chọn ưu tiên (đặt trong thẻ <script type="application/ld+json"> ở phần <head> hoặc trước </body>). Microdata và RDFa ít được khuyến nghị do dễ sai cấu trúc.
  3. Xây dựng cấu trúc:
    • Bắt đầu bằng ItemList chứa itemListElement — mảng gồm các ListItem;
    • Mỗi ListItem phải có @type: "ListItem", position (số), và item (URL hoặc schema đầy đủ);
    • Nếu item là trang web, dùng "@id" hoặc "url"; nếu là đối tượng phong phú, nên dùng schema đầy đủ (ví dụ: Article) để tăng giá trị dữ liệu.
  4. Kiểm tra kỹ thuật: Dùng URL Inspection Tool hoặc Schema Markup Validator để xác minh lỗi cú pháp và khả năng nhận diện.
  5. Giám sát hiệu quả: Theo dõi báo cáo Enhancements > ItemList trong Google Search Console sau 7–28 ngày.

Lỗi thường gặp

Lỗi Dấu hiệu Cách khắc phục
Thiếu thuộc tính position Validator báo “missing field” hoặc Google không hiển thị rich result Thêm "position": 1, "position": 2… cho từng ListItem. Giá trị phải là số nguyên dương.
Thứ tự position không liên tục Danh sách bị cắt ngang trong kết quả tìm kiếm Sắp xếp lại thứ tự theo trình tự xuất hiện thực tế trên trang — không bỏ số (1, 2, 3…), không lặp.
Dùng ListItem ngoài ngữ cảnh ItemList Markup bị coi là không hợp lệ Luôn bao bọc các ListItem trong một ItemList cha, có itemListElement là mảng chứa chúng.
item trỏ tới URL không tồn tại hoặc bị chặn Google báo “invalid URL” hoặc không lập chỉ mục mục con Kiểm tra status code (200 OK), robots.txt, thẻ noindex — đảm bảo URL khả dụng và có thể thu thập.

Ví dụ thực tế

Dưới đây là đoạn JSON-LD đánh dấu danh sách “5 bước chăm sóc da mùa hanh khô”, mỗi bước liên kết tới một phần trong cùng trang (anchor) hoặc trang con:

{ "@context": "https://schema.org", "@type": "ItemList", "itemListElement": [ { "@type": "ListItem", "position": 1, "item": { "@id": "https://example.com/cham-soc-da-buoc-1", "@type": "Article", "headline": "Làm sạch da nhẹ nhàng" } }, { "@type": "ListItem", "position": 2, "item": { "@id": "https://example.com/cham-soc-da-buoc-2", "@type": "Article", "headline": "Tẩy tế bào chết 1–2 lần/tuần" } } ] }

Lưu ý: Nếu các bước nằm trong cùng một trang (dùng anchor), @id có thể là "https://example.com/#buoc-1" — nhưng nên ưu tiên trang con riêng biệt để tối ưu SEO hơn.

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

ListItem Schema có bắt buộc phải dùng JSON-LD?

Không bắt buộc, nhưng JSON-LD là định dạng được Google khuyến nghị mạnh mẽ nhất vì dễ triển khai, ít xung đột với HTML và dễ bảo trì. Microdata và RDFa có thể dùng nhưng dễ phát sinh lỗi định dạng khi trang thay đổi cấu trúc.

Một trang có thể có nhiều ListItem Schema không?

Có thể — miễn là mỗi cái đại diện cho một danh sách riêng biệt và không chồng lấn (ví dụ: danh sách bài viết + danh sách sản phẩm trên cùng trang). Mỗi ItemList phải độc lập, không lồng ghép sai cấp.

ListItem Schema hỗ trợ tất cả loại danh sách không?

Không. Chỉ danh sách có thứ tự rõ ràng (ordered list) mới phù hợp. Danh sách không thứ tự (như các thẻ <ul> không mang tính tuần tự) nên dùng CollectionPage hoặc không cần schema — trừ khi có lý do đặc biệt. Việc gán ListItem cho danh sách ngẫu nhiên có thể gây nhiễu dữ liệu.