On-Page SEO

Structured Data Markup

Dữ liệu có cấu trúc (thường dạng JSON-LD) giúp công cụ tìm kiếm hiểu rõ nội dung và kích hoạt rich snippet.

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

Structured Data Markup là gì?

Structured Data Markup (dữ liệu có cấu trúc) là đoạn mã được thêm vào trang web để mô tả rõ nội dung — như sản phẩm, bài viết, sự kiện, doanh nghiệp hoặc người viết — dưới dạng dữ liệu máy đọc được. Định dạng phổ biến nhất hiện nay là JSON-LD, được chèn trong thẻ <script type=\"application/ld+json\"> ở phần <head> hoặc đầu phần <body>. Khác với microdata hay RDFa, JSON-LD không xen vào HTML gốc nên dễ triển khai và bảo trì hơn.

Tại sao quan trọng trong SEO?

Dữ liệu có cấu trúc giúp công cụ tìm kiếm — đặc biệt là Google — hiểu chính xác ngữ cảnh và ý nghĩa của nội dung, thay vì chỉ dựa vào từ khóa hay thẻ HTML. Khi dữ liệu được đánh dấu đúng chuẩn, Google có thể hiển thị rich snippet: kết quả tìm kiếm mở rộng với hình ảnh, sao đánh giá, giá sản phẩm, thời gian sự kiện… Những rich snippet này làm tăng tỷ lệ nhấp (CTR) trung bình từ 15% đến 30% so với kết quả thông thường — theo báo cáo kiểm thử thực tế của nhiều agency SEO tại Việt Nam và quốc tế.

Ngoài ra, dữ liệu có cấu trúc còn hỗ trợ các tính năng khác như Google Knowledge Graph, voice search (tìm kiếm bằng giọng nói), và tích hợp với nền tảng AI như Google SGE (Search Generative Experience). Tuy nhiên, việc có dữ liệu có cấu trúc không đảm bảo rich snippet xuất hiện — Google tự quyết định dựa trên độ phù hợp, chất lượng nội dung và trải nghiệm người dùng.

Cách hoạt động

Khi Googlebot thu thập trang, nó phân tích toàn bộ mã nguồn — bao gồm cả script JSON-LD. Nếu phát hiện dữ liệu có cấu trúc hợp lệ (đúng schema.org, không lỗi cú pháp, liên quan trực tiếp đến nội dung trang), hệ thống sẽ trích xuất thông tin và lưu vào cơ sở dữ liệu tri thức. Sau đó, khi người dùng tìm kiếm câu hỏi liên quan (ví dụ: “giá iPhone 15 tại Hà Nội”), Google có thể chọn hiển thị thông tin đã trích xuất dưới dạng rich result — nếu thấy hữu ích và đáng tin cậy.

Quá trình này không ảnh hưởng trực tiếp đến thứ hạng từ khóa, nhưng gián tiếp cải thiện hiệu suất SEO nhờ tăng CTR, giảm tỷ lệ thoát và tăng thời gian ở lại trang.

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

  1. Xác định loại dữ liệu cần đánh dấu: Dựa vào nội dung trang — ví dụ: trang sản phẩm → Product, bài blog → Article, trang giới thiệu công ty → Organization.
  2. Chọn schema phù hợp: Dùng schema.org làm chuẩn duy nhất. Tránh schema tùy chỉnh hoặc không được Google hỗ trợ.
  3. Tạo mã JSON-LD: Dùng công cụ miễn phí như Rich Results Test hoặc Schema Markup Validator để sinh mã hoặc kiểm tra.
  4. Chèn vào trang: Đặt đoạn script JSON-LD trong thẻ <head> hoặc ngay sau <body>. Không chèn trong phần comment hoặc bị chặn bởi JavaScript.
  5. Kiểm tra và theo dõi: Dùng Google Search Console → mục Enhancements để xem trạng thái: “Valid”, “Error”, hay “Warning”. Cập nhật khi có thay đổi nội dung.

Lỗi thường gặp

  • Mã JSON-LD bị sai cú pháp: Thiếu dấu phẩy, ngoặc kép thừa, ký tự Unicode không được escape → gây lỗi “Invalid JSON”. Cách khắc phục: dán mã vào JSONLint trước khi triển khai.
  • Dữ liệu không khớp nội dung trang: Ghi giá sản phẩm là 5 triệu đồng trong markup nhưng hiện trên trang là 4,8 triệu → Google có thể bỏ qua hoặc cảnh báo “Mismatched value”. Luôn cập nhật đồng bộ giữa markup và HTML hiển thị.
  • Dùng schema không hỗ trợ: Ví dụ: đánh dấu FAQPage cho trang không có phần hỏi đáp thực sự → Google sẽ không hiển thị rich result. Chỉ dùng schema khi trang đáp ứng đủ điều kiện theo hướng dẫn chính thức.
  • Thiếu thuộc tính bắt buộc: Với Product, thuộc tính name, offers.price, offers.priceCurrency là bắt buộc để xuất hiện rich snippet sản phẩm. Thiếu một trong số này → trạng thái “Warning” hoặc “Invalid”.

Ví dụ thực tế

Dưới đây là đoạn JSON-LD đánh dấu cho một bài viết blog (schema Article) — đã kiểm tra hợp lệ trên Rich Results Test:

{ "@context": "https://schema.org", "@type": "Article", "headline": "Cách tối ưu tốc độ website WordPress năm 2024", "description": "Hướng dẫn chi tiết từ cơ bản đến nâng cao: tối ưu ảnh, cache, CDN, database và kiểm tra hiệu quả.", "datePublished": "2024-04-12T08:30:00+07:00", "dateModified": "2024-04-15T14:22:00+07:00", "author": { "@type": "Person", "name": "Nguyễn Văn A" }, "publisher": { "@type": "Organization", "name": "Bách Khoa SEO", "logo": { "@type": "ImageObject", "url": "https://bachkhoaseo.vn/logo.png" } } }

Bảng sau so sánh các loại schema phổ biến và mức độ hỗ trợ rich result từ Google (cập nhật tháng 4/2024):

Loại schema Hỗ trợ rich result? Ghi chú
Article Hiển thị ngày đăng, tác giả, ảnh đại diện
Product Cần đầy đủ giá, tên, hình ảnh, trạng thái tồn kho
FAQPage Phải có ít nhất 2 cặp hỏi-đáp rõ ràng trên trang
HowTo Yêu cầu bước thực hiện tuần tự, có thời gian ước tính
LocalBusiness Không (chỉ hỗ trợ Knowledge Panel) Không tạo rich snippet trên kết quả tìm kiếm chung

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

Dữ liệu có cấu trúc có giúp xếp hạng cao hơn không?

Không. Google khẳng định rõ: structured data không phải yếu tố xếp hạng. Nó chỉ giúp công cụ tìm kiếm hiểu nội dung tốt hơn và kích hoạt các tính năng hiển thị mở rộng. Thứ hạng vẫn phụ thuộc vào nội dung, backlink, trải nghiệm người dùng và hơn 200 yếu tố khác.

Có nên dùng nhiều schema trên cùng một trang?

Có thể, nhưng phải hợp lý. Ví dụ: trang sản phẩm có thể dùng cả ProductWebPage, hoặc thêm Review nếu có đánh giá thật. Tuy nhiên, không nên “gắn” schema không liên quan (ví dụ: thêm Recipe cho trang dịch vụ SEO) — dễ bị coi là spam và ảnh hưởng uy tín trang.

JSON-LD có bắt buộc phải đặt trong <head>?

Không bắt buộc. Google hỗ trợ JSON-LD ở bất kỳ đâu trong <html>, kể cả trong <body>. Tuy nhiên, đặt trong <head> giúp đảm bảo mã được đọc sớm, tránh trường hợp JavaScript làm chậm việc phân tích. Một số CMS (như WordPress với plugin Rank Math) mặc định chèn ở cuối <head> — đây là lựa chọn an toàn và phổ biến.