@type
Thuộc tính JSON-LD xác định loại schema được áp dụng (ví dụ: "Article", "LocalBusiness").
@type là gì?
@type là thuộc tính bắt buộc trong định dạng JSON-LD dùng để khai báo loại schema cụ thể đang được triển khai. Đây là giá trị chuỗi (string) xác định danh mục cấu trúc dữ liệu — ví dụ: "Article", "LocalBusiness", "Product", "Organization" hoặc "FAQPage". Giá trị @type phải khớp chính xác với tên lớp schema.org đã được công nhận, viết hoa chữ cái đầu và không chứa khoảng trắng hay ký tự đặc biệt.
Giá trị @type không phải do người làm SEO tự đặt — nó được quy định cứng trong bộ từ vựng schema.org. Nếu dùng sai tên lớp (ví dụ ghi "article" thường hoặc "blogpost"), Google sẽ bỏ qua toàn bộ đoạn JSON-LD.
Tại sao quan trọng trong SEO?
@type là chìa khóa giúp công cụ tìm kiếm hiểu ngữ cảnh nội dung một cách chính xác. Khi Google đọc được @type đúng, hệ thống có thể:
- Hiển thị kết quả nâng cao (rich results) như snippet bài viết, đánh giá sao, giá sản phẩm, giờ mở cửa doanh nghiệp…
- Phân loại trang vào đúng nhóm nội dung trong hệ thống phân tích — ảnh hưởng gián tiếp đến khả năng hiển thị trong các tính năng như Discover hoặc Tìm kiếm bằng giọng nói.
- Giảm thiểu nhầm lẫn khi trang có nhiều chủ đề (ví dụ: trang giới thiệu doanh nghiệp nhưng cũng chứa bài blog — cần tách riêng schema cho từng phần).
Theo tài liệu chính thức của Google (cập nhật tháng 04/2024), hơn 92% rich result thành công đều dựa trên schema có @type hợp lệ và đầy đủ thuộc tính bắt buộc tương ứng. Không có @type đúng = không có rich result — bất kể các thuộc tính khác hoàn chỉnh đến đâu.
Cách hoạt động
@type hoạt động như một thẻ nhận diện trong hệ thống schema. Khi Googlebot tải trang và phát hiện khối JSON-LD, nó kiểm tra giá trị @type trước tiên. Nếu giá trị tồn tại và khớp với lớp schema.org được hỗ trợ, Google sẽ kích hoạt bộ quy tắc xử lý dành riêng cho lớp đó — ví dụ:
- Với
@type: "Article", Google yêu cầuheadline,datePublished,authorđể xét hiển thị bài viết nâng cao. - Với
@type: "LocalBusiness", hệ thống kiểm traname,address,telephonevàgeotrước khi hiển thị thông tin doanh nghiệp trên bản đồ.
Nếu @type không tồn tại, hoặc không khớp với lớp nào trong schema.org, khối JSON-LD bị coi là “không xác định” và bị bỏ qua hoàn toàn — không gây lỗi kỹ thuật, nhưng cũng không mang lại giá trị SEO.
Hướng dẫn thực hiện
Dưới đây là 5 bước triển khai @type chuẩn xác:
- Xác định mục tiêu rich result: Kiểm tra danh sách hỗ trợ hiện hành tại Google Search Gallery — chọn loại phù hợp với nội dung trang (ví dụ: trang sản phẩm →
Product). - Chọn lớp schema.org đúng: Truy cập schema.org, tìm lớp tương ứng, kiểm tra phần “Subtypes” và “Used on these types” để đảm bảo lớp đó áp dụng được cho trang của bạn.
- Khai báo @type trong JSON-LD: Luôn đặt ở vị trí đầu tiên trong đối tượng, dưới dạng chuỗi — ví dụ:
@type: "Product". Không dùng dấu gạch ngang, không viết thường, không thêm tiền tố (nhưschema:Product). - Bổ sung thuộc tính bắt buộc: Mỗi lớp @type có danh sách thuộc tính bắt buộc riêng (required properties). Ví dụ:
Productyêu cầunamevàoffers;Articleyêu cầuheadlinevàdatePublished. - Kiểm tra bằng công cụ chính thức: Dùng URL Inspection Tool trong Google Search Console hoặc Rich Results Test để xác minh @type được nhận diện và không có cảnh báo.
Lỗi thường gặp
Dưới đây là những sai lầm phổ biến khi dùng @type và cách khắc phục:
| Lỗi | Hệ quả | Cách sửa |
|---|---|---|
Ghi @type thường (ví dụ: "article") |
Google bỏ qua toàn bộ schema | Viết hoa chữ cái đầu: "Article" |
Dùng lớp không tồn tại (ví dụ: "BlogPost" thay vì "BlogPosting") |
Không hiển thị rich result, không báo lỗi rõ ràng | Luôn kiểm tra tên lớp tại schema.org — BlogPosting mới là tên chuẩn |
| Đặt @type trong mảng hoặc đối tượng con không đúng cấu trúc | JSON-LD không được parse | @type phải nằm trực tiếp trong đối tượng gốc hoặc trong mỗi item của @graph |
| Trộn nhiều @type không rõ ràng trong cùng khối (không dùng @graph) | Google chỉ đọc @type đầu tiên, bỏ qua phần còn lại | Dùng @graph để khai báo nhiều loại độc lập, mỗi đối tượng có @type riêng |
Ví dụ thực tế
Dưới đây là khối JSON-LD chuẩn cho trang sản phẩm, sử dụng @type đúng và đầy đủ thuộc tính bắt buộc:
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Điện thoại Samsung Galaxy S24",
"image": ["https://example.com/s24-front.jpg"],
"description": "Smartphone cao cấp với camera AI và pin 5000mAh.",
"sku": "S24-256GB-BLACK",
"offers": {
"@type": "Offer",
"url": "https://example.com/samsung-s24",
"priceCurrency": "VND",
"price": "24990000",
"priceValidUntil": "2025-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock"
}
}
Lưu ý: @type: "Product" đứng đầu, viết hoa đúng chuẩn, và khối chứa đủ name + offers — hai thuộc tính bắt buộc theo quy định schema.org.
Câu hỏi thường gặp
@type có thể dùng nhiều lần trên một trang không?
Có thể — nhưng phải dùng đúng cấu trúc @graph. Mỗi đối tượng trong mảng @graph có thể có @type riêng (ví dụ: một trang có cả Product và Organization). Không được đặt nhiều @type trong cùng một đối tượng — điều này vi phạm cú pháp JSON-LD.
Google hỗ trợ tất cả các lớp @type trên schema.org?
Không. Google chỉ hỗ trợ một tập con các lớp để hiển thị rich result — danh sách cập nhật liên tục tại Search Gallery. Các lớp khác (ví dụ: Event, Course) vẫn được công nhận về mặt kỹ thuật, nhưng chưa kích hoạt rich result — tùy trường hợp.
Có cần thêm @type nếu chỉ dùng Microdata hoặc RDFa?
Có. Dù định dạng khác nhau, vai trò của @type (hoặc itemtype trong Microdata, typeof trong RDFa) là như nhau: xác định lớp schema. Trong Microdata, bạn viết itemscope itemtype="https://schema.org/Product"; trong RDFa: typeof="schema:Product". Cách viết khác nhau, nhưng chức năng và mức độ quan trọng là như nhau.