Schema & Structured Data

@type

Thuộc tính JSON-LD xác định loại schema được áp dụng (ví dụ: "Article", "LocalBusiness").

4 lượt xem Cập nhật: 29/05/2026

@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ầu headline, datePublished, author để xét hiển thị bài viết nâng cao.
  • Với @type: "LocalBusiness", hệ thống kiểm tra name, address, telephonegeo trướ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:

  1. 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).
  2. 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.
  3. 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).
  4. 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ụ: Product yêu cầu nameoffers; Article yêu cầu headlinedatePublished.
  5. 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ả ProductOrganization). 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.