Schema & Structured Data

@id

Thuộc tính JSON-LD định danh duy nhất cho thực thể, hỗ trợ liên kết dữ liệu giữa các trang hoặc hệ thống.

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

@id là gì?

@id là thuộc tính bắt buộc trong định dạng JSON-LD dùng để gán một định danh duy nhất (URI hoặc IRI) cho một thực thể — như trang web, tổ chức, sản phẩm, bài viết hoặc người. Đây không phải là tên hiển thị hay mô tả, mà là địa chỉ kỹ thuật giúp máy móc nhận diện chính xác thực thể đó trong hệ thống dữ liệu liên kết (Linked Data). Giá trị @id phải là một URI hợp lệ (ví dụ: https://example.com/#organization hoặc https://example.com/product/123), và phải duy nhất trong toàn bộ đồ thị dữ liệu.

Tại sao quan trọng trong SEO?

@id hỗ trợ công cụ tìm kiếm hiểu rõ mối quan hệ giữa các trang và thực thể, từ đó cải thiện khả năng lập chỉ mục, giảm trùng lặp nội dung và tăng độ tin cậy của dữ liệu có cấu trúc. Khi nhiều trang cùng mô tả một thực thể (ví dụ: trang chủ, trang giới thiệu, trang sản phẩm), @id giúp Google biết tất cả đều nói về cùng một tổ chức — nhờ đó gộp thông tin thành một hồ sơ thống nhất. Điều này trực tiếp hỗ trợ rich result, Knowledge Graph và tính năng hiển thị mở rộng trên SERP. Ngoài ra, @id là điều kiện tiên quyết để tích hợp với hệ sinh thái dữ liệu liên kết (như Schema.org, Wikidata, DBpedia), mở ra tiềm năng hợp tác dữ liệu dài hạn.

Cách hoạt động

@id hoạt động như một 'chứng minh thư số' cho thực thể trong đồ thị JSON-LD. Khi một đoạn mã JSON-LD chứa @id, mọi thuộc tính khác trong cùng khối (như name, url, sameAs) đều được hiểu là thuộc về thực thể đó. Nếu một khối khác dùng cùng giá trị @id, trình phân tích sẽ coi chúng là mô tả bổ sung cho cùng một thực thể — chứ không tạo thực thể mới. Cơ chế này dựa trên nguyên tắc identity by reference trong chuẩn RDF và JSON-LD, đảm bảo tính nhất quán khi dữ liệu được chia sẻ giữa nhiều nguồn.

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

  1. Chọn URI ổn định: Dùng URL tuyệt đối, ưu tiên miền chính thức của bạn (ví dụ: https://congtyabc.vn/#company). Tránh URL tạm thời, tham số truy vấn hoặc hash không kiểm soát được.
  2. Đặt @id ở cấp cao nhất: Trong khối JSON-LD, @id phải nằm ngang hàng với các thuộc tính như @type, name, không được lồng sâu trong mảng hay đối tượng con.
  3. Sử dụng đúng định dạng: Giá trị @id phải là chuỗi (string), không phải số hoặc boolean. Không đặt dấu cách đầu/cuối, không dùng ký tự đặc biệt ngoài /, #, ?, = theo chuẩn URI.
  4. Kiểm tra tính duy nhất: Đảm bảo không có hai khối JSON-LD trên cùng một trang dùng cùng giá trị @id trừ khi chúng mô tả cùng một thực thể.
  5. Xác thực bằng công cụ: Dùng Rich Results Test hoặc Schema Markup Validator để kiểm tra lỗi cú pháp và giải quyết @id.

Lỗi thường gặp

  • @id bị thiếu: Một số nhà phát triển bỏ qua @id vì nghĩ nó không bắt buộc — nhưng với nhiều loại schema (như Organization, WebSite, Person), thiếu @id làm giảm độ tin cậy của dữ liệu. Cách khắc phục: Thêm @id vào mọi khối JSON-LD mô tả thực thể độc lập.
  • @id dùng relative URL: Ví dụ: "@id": "#product" — trình phân tích có thể hiểu sai ngữ cảnh. Cách khắc phục: Luôn dùng URI tuyệt đối: "@id": "https://example.com/product/456#item".
  • @id trùng lặp không mong muốn: Hai khối mô tả thực thể khác nhau (ví dụ: doanh nghiệp và sản phẩm) lại dùng cùng @id. Cách khắc phục: Kiểm tra logic từng khối, đảm bảo mỗi thực thể có URI riêng — có thể dùng fragment identifier (#) để phân biệt trên cùng miền.
  • @id chứa ký tự không hợp lệ: Như khoảng trắng, ký tự Unicode chưa được mã hóa. Cách khắc phục: Dùng hàm encodeURIComponent() nếu cần chèn tham số động, hoặc kiểm tra bằng trình validator.

Ví dụ thực tế

Dưới đây là đoạn JSON-LD mô tả một doanh nghiệp, tích hợp @id đúng chuẩn:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://maytinhviet.vn/#company",
  "name": "Công ty Máy Tính Việt",
  "url": "https://maytinhviet.vn/",
  "logo": {
    "@type": "ImageObject",
    "@id": "https://maytinhviet.vn/logo.png#logo"
  },
  "sameAs": [
    "https://facebook.com/maytinhviet",
    "https://linkedin.com/company/maytinhviet"
  ]
}

Trong ví dụ trên:
@id xác định doanh nghiệp là một thực thể duy nhất.
– Logo cũng có @id riêng (phân biệt bằng fragment #logo), giúp liên kết rõ ràng giữa thực thể và tài nguyên phụ.
– Các URL trong sameAs giúp Google xác minh danh tính qua nền tảng bên ngoài.

Loại schema Có bắt buộc @id? Gợi ý định dạng @id Lưu ý
Organization Có (khuyến nghị mạnh) https://domain.com/#organization Giúp gộp dữ liệu từ nhiều trang
WebSite Có (bắt buộc nếu dùng cùng WebPage) https://domain.com/#website Phải khớp với mainEntityOfPage
Product Khuyến nghị https://domain.com/san-pham/abc#product Ưu tiên ID sản phẩm thực tế
Article Tùy trường hợp https://domain.com/bai-viet/xyz#article Nếu bài viết xuất hiện ở nhiều phiên bản (AMP, canonical), nên dùng chung @id

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

@id có ảnh hưởng trực tiếp đến thứ hạng tìm kiếm không?

Không. @id không phải yếu tố xếp hạng trực tiếp, nhưng là điều kiện nền tảng để dữ liệu có cấu trúc được hiểu đúng — từ đó kích hoạt rich result, cải thiện CTR và hỗ trợ lập chỉ mục hiệu quả hơn. Thiếu @id có thể khiến schema bị bỏ qua hoàn toàn.

Có thể dùng @id để liên kết giữa các trang khác nhau không?

Có. Đây là một trong những chức năng chính của @id. Ví dụ: trang chủ có khối Organization với @id: "https://abc.vn/#org", và trang giới thiệu cũng khai báo cùng @id — Google sẽ hiểu cả hai trang đều mô tả cùng một tổ chức.

@id và sameAs khác nhau thế nào?

@id định danh thực thể *bên trong* đồ thị dữ liệu của bạn; còn sameAs là thuộc tính dùng để *liên kết* thực thể đó với các định danh tương đương ở hệ thống bên ngoài (như Wikipedia, Facebook). Chúng bổ trợ lẫn nhau: @id tạo danh tính nội bộ, sameAs mở rộng danh tính ra môi trường toàn cầu.