Schema markup và JSON-LD là gì: hướng dẫn cho người mới
Đội ngũ KDIGIĐăng 11 phút đọc
Schema markup là đoạn dữ liệu có cấu trúc, dùng bộ từ vựng của schema.org, cho công cụ tìm kiếm biết chính xác một trang nói về cái gì (bài viết, sản phẩm, doanh nghiệp, câu hỏi…). JSON-LD là định dạng để viết schema markup dưới dạng một khối <script type="application/ld+json"> tách khỏi HTML hiển thị, và là định dạng Google khuyên dùng.
Tóm tắt nhanh
- Schema.org là bộ từ vựng chung (loại thực thể và thuộc tính); JSON-LD, Microdata, RDFa là các cách viết bộ từ vựng đó vào trang.
- JSON-LD là cú pháp dựa trên JSON, nằm trong một thẻ
<script>, không đụng đến HTML hiển thị nên dễ bảo trì nhất.- Schema giúp máy hiểu trang và có thể đủ điều kiện hiển thị rich result, nhưng không phải yếu tố xếp hạng trực tiếp và không bảo đảm rich result.
- Markup phải khớp nội dung nhìn thấy trên trang; markup sai hoặc gian dối có thể bị Google xử lý theo chính sách.
- Kiểm tra bằng Rich Results Test và Schema Markup Validator trước khi đưa lên production.
- KDIGI CMS sinh sẵn một đồ thị JSON-LD (
@graph) cho từng bài viết, trang, sản phẩm khi lưu, và trả về trongseo.jsonLd.raw.
Schema markup là gì
Một trang web viết cho người đọc, còn máy phải đoán: dãy số 450.000 là giá hay số điện thoại, "Lê Văn A" là tác giả hay nhân vật trong bài? Dữ liệu có cấu trúc (structured data) nói thẳng với máy: đây là Product, giá là 450000 VND; đây là BlogPosting, tác giả là Person tên "Lê Văn A".
Schema.org là dự án chung của Google, Microsoft, Yahoo và Yandex, khởi động năm 2011, định nghĩa danh mục các loại thực thể (Article, Product, Organization, FAQPage, BreadcrumbList…) và thuộc tính của chúng. "Schema markup" là việc áp bộ từ vựng này vào trang của bạn.
JSON-LD, Microdata và RDFa khác nhau thế nào
Cả ba đều biểu diễn cùng một bộ từ vựng schema.org, khác ở cách viết:
| JSON-LD | Microdata | RDFa | |
|---|---|---|---|
| Vị trí | Khối <script type="application/ld+json"> riêng |
Thuộc tính itemscope, itemprop gắn vào thẻ HTML |
Thuộc tính typeof, property gắn vào thẻ HTML |
| Đụng vào HTML hiển thị | Không | Có | Có |
| Dễ bảo trì, sinh tự động từ CMS | Rất dễ | Khó | Khó |
| Lời khuyên của Google | Khuyên dùng | Hỗ trợ | Hỗ trợ |
JSON-LD ("JSON for Linking Data") là một khuyến nghị (Recommendation) của W3C. Vì nằm tách biệt, bạn có thể sinh nó từ dữ liệu trong CMS mà không phải sửa template HTML, điều này đặc biệt hợp với website headless.
Ví dụ JSON-LD đầu tiên
Đây là một bài viết tối giản:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Schema markup và JSON-LD là gì",
"datePublished": "2026-11-02",
"dateModified": "2026-11-03",
"author": { "@type": "Person", "name": "Đội ngũ KDIGI" },
"publisher": { "@type": "Organization", "name": "KDIGI" },
"mainEntityOfPage": "https://opencms.kdigi.vn/blog/schema-markup-json-ld-la-gi"
}
</script>
Đọc từng phần:
@contextcho biết từ vựng đang dùng là schema.org.@typelà loại thực thể.- Các khoá còn lại là thuộc tính; giá trị có thể là chuỗi, số hoặc một thực thể lồng (như
author).
Các loại schema thường dùng cho website
| Loại | Dùng cho | Ghi chú |
|---|---|---|
Organization / LocalBusiness |
Thông tin doanh nghiệp: tên, logo, địa chỉ, giờ mở cửa, sameAs |
Nên có ở mọi site, khai một lần |
WebSite |
Website nói chung, SearchAction nếu có tìm kiếm nội bộ |
Một lần cho cả site |
WebPage / AboutPage / ContactPage |
Từng trang | Gắn với BreadcrumbList |
BreadcrumbList |
Đường dẫn phân cấp | Phản ánh điều hướng thật |
Article / BlogPosting |
Bài viết | Kèm tác giả, ngày đăng, ngày sửa, ảnh |
Person |
Tác giả | Trang tác giả đầy đủ giúp tăng E-E-A-T |
Product + Offer |
Sản phẩm, giá | Giá phải có thật, khớp trang |
FAQPage |
Câu hỏi thường gặp | Xem lưu ý bên dưới |
SoftwareApplication |
Phần mềm | Giá, hệ điều hành, phiên bản |
Lưu ý về FAQPage
Theo trang cập nhật tài liệu của Google Search Central, Google đã ngừng hiển thị FAQ rich result và gỡ tài liệu riêng của tính năng này (thông báo ngừng vào tháng 5/2026, gỡ tài liệu tháng 6/2026). Điều đó không có nghĩa bạn phải bỏ phần FAQ trên trang: câu hỏi thường gặp vẫn hữu ích cho người đọc, và markup FAQPage vẫn là cách hợp lệ để mô tả nội dung đó cho các hệ thống khác. Chỉ đừng kỳ vọng nó mang lại hiển thị đặc biệt trên Google.
Schema có giúp tăng thứ hạng không
Không trực tiếp. Google nói rõ trong hướng dẫn về AI Overviews và AI Mode rằng không có schema.org đặc biệt nào bạn cần thêm để xuất hiện trong các tính năng AI, và "overfocusing on structured data" nằm trong danh sách những thứ không cần quá tập trung. Giá trị thực của schema là:
- Giúp máy hiểu đúng thực thể và quan hệ giữa chúng (tác giả, tổ chức, trang).
- Giúp trang đủ điều kiện cho một số rich result còn được hỗ trợ (ví dụ breadcrumb, sản phẩm, đánh giá), nhưng điều kiện đủ không đồng nghĩa với việc được hiển thị.
- Là một phần của bộ SEO kỹ thuật chuẩn, dễ kiểm tra và dễ tự động hoá.
Quy tắc bất biến: markup phải khớp nội dung nhìn thấy. Đừng đánh dấu đánh giá, giá hay FAQ không có trên trang. Xem thêm hướng dẫn chung của Google về dữ liệu có cấu trúc.
Cách thêm schema markup vào website
Với WordPress
Dùng plugin SEO như Yoast SEO hoặc Rank Math: cả hai tự sinh một đồ thị JSON-LD cho bài viết, trang và tổ chức. Bạn chỉ cần khai báo thông tin site (tên, logo, mạng xã hội) trong phần cài đặt.
Với website headless
CMS lưu nội dung, frontend của bạn chịu trách nhiệm xuất <script type="application/ld+json"> vào HTML. Có hai cách:
- Tự sinh ở frontend từ dữ liệu bài viết (tiêu đề, tác giả, ngày…). Linh hoạt nhưng bạn phải tự bảo trì và kiểm thử.
- Dùng JSON-LD do CMS sinh sẵn và chèn nguyên văn. Cách này nhất quán giữa nhiều frontend và nhiều site.
Với KDIGI CMS
KDIGI CMS chọn cách thứ hai. Khi bạn lưu pages, posts, products, landings hoặc taxonomies, một hook dựng một @graph schema.org với các @id ổn định ({siteUrl}/#organization, {siteUrl}/#website, {pageUrl}#webpage, {pageUrl}#breadcrumb) rồi lưu vào seo.jsonLd.raw. Giá trị này là nguyên phần tử <script type="application/ld+json">…</script>, frontend chèn nguyên văn; mọi ký tự < trong payload được escape thành \u003c nên tiêu đề chứa </script> không thể phá HTML.
| Loại tài liệu | Các node trong graph |
|---|---|
Bài viết (posts) |
BlogPosting, Person (tác giả), WebPage, ImageObject, BreadcrumbList, WebSite, Organization, Place; FAQ của bài lồng trong BlogPosting |
Trang (pages) |
WebPage (hoặc ContactPage/AboutPage theo slug như lien-he, gioi-thieu), ImageObject, BreadcrumbList, FAQPage, node site, LocalBusiness theo từng văn phòng khai báo |
Sản phẩm (products) |
Product (kèm Offer, AggregateRating khi đủ điều kiện), ItemPage, ImageObject, BreadcrumbList, FAQPage |
Chuyên mục (taxonomies) |
CollectionPage, ImageObject, BreadcrumbList |
Một số quy tắc cụ thể của CMS, đều chống markup gian dối:
offerschỉ xuất khiprices[0].currentPrice > 0; thiếu giá hoặc giá 0 thì không phát offer.aggregateRatingchỉ xuất khi điểm chưa tuyệt đối (avg < 5) và đủ số đánh giá cùng ít nhất một bình luận đã duyệt (hoặc bậtaggregateRatingOverride). Điểm sao nhập từ WordPress đơn thuần không tạo raaggregateRating.- Mục FAQ thiếu câu hỏi hoặc câu trả lời bị loại; không còn mục nào thì node
FAQPagebị bỏ.
Thông tin tổ chức (Organization) đến từ nhóm knowledgeGraph của site: tên, tên pháp lý, mô tả, logo, địa chỉ, giờ mở cửa, sameAs (mạng xã hội, Wikidata, Wikipedia). Xem chi tiết ở trang SEO và JSON-LD và Headless API.
Khi chuyển từ WordPress, JSON-LD không được import mà được sinh lại từ dữ liệu tài liệu và knowledge graph của site; xem chuyển từ WordPress và bài chuyển WordPress sang headless không mất SEO.
Cách kiểm tra schema markup
- Rich Results Test của Google: dán URL hoặc mã, xem trang đủ điều kiện rich result nào và có lỗi/cảnh báo nào.
- Schema Markup Validator (validator.schema.org): kiểm tra cú pháp theo schema.org, không chỉ theo các loại Google hỗ trợ.
- Search Console: các báo cáo Enhancements cho thấy lỗi trên toàn site sau khi Google crawl.
- Kiểm tay:
curltrang và tìmapplication/ld+jsonđể chắc chắn markup có trong HTML phản hồi ban đầu, không phụ thuộc JavaScript.
curl -s https://example.com/bai-viet/ | grep -o '<script type="application/ld+json">' | wc -l
Số trả về lớn hơn 0 nghĩa là markup có trong HTML gốc.
Lỗi thường gặp
| Lỗi | Vì sao nguy hiểm | Cách sửa |
|---|---|---|
| Markup không khớp nội dung nhìn thấy | Vi phạm chính sách dữ liệu có cấu trúc | Chỉ đánh dấu những gì có trên trang |
| Đánh dấu đánh giá, giá "ảo" | Có thể bị xử lý thủ công | Chỉ phát Offer, AggregateRating khi dữ liệu thật |
| Trùng lặp từ plugin + theme | Hai đồ thị mâu thuẫn | Giữ một nguồn duy nhất |
| JSON không hợp lệ (dấu phẩy thừa, ngoặc) | Cả khối bị bỏ qua | Dùng validator trước khi deploy |
Dùng https:// sai domain/canonical |
Thực thể trỏ về URL sai | Dùng URL tuyệt đối đúng canonical |
| Chèn schema bằng JavaScript client | Có thể bị bỏ sót khi render lỗi | Xuất trong HTML server-render |
Quên cập nhật dateModified |
Mất tín hiệu độ mới | Lấy từ ngày sửa thật của nội dung |
Quy trình triển khai gọn cho một website mới
- Khai báo
OrganizationvàWebSitemột lần ở cấp site (logo, tên, mạng xã hội). - Bật
BreadcrumbListcho mọi trang không phải trang chủ. - Thêm
BlogPosting+Personcho bài viết,WebPagecho trang tĩnh. - Chỉ thêm
Product/Offer/FAQPagekhi nội dung thật sự có trên trang. - Kiểm tra bằng Rich Results Test và Schema Markup Validator.
- Theo dõi báo cáo Enhancements trong Search Console sau khi đưa lên production.
Với website dùng KDIGI CMS, bước 1–4 do CMS sinh sẵn từ dữ liệu bạn đã nhập; bạn chỉ cần chèn seo.jsonLd.raw vào <head> và kiểm tra. Để đạt kết quả nhất quán cho cả tìm kiếm truyền thống lẫn AI, xem thêm bài llms.txt là gì và cách tối ưu website cho AI.
Câu hỏi thường gặp
Schema markup là gì, nói đơn giản?
Schema markup là phần dữ liệu ẩn trong trang, viết theo từ vựng schema.org, giúp công cụ tìm kiếm biết chính xác trang là bài viết, sản phẩm hay doanh nghiệp, tác giả là ai, giá bao nhiêu. Người đọc không nhìn thấy nó; máy đọc nó để hiểu nội dung chính xác hơn và có thể tạo rich result khi đủ điều kiện.
JSON-LD khác schema.org ở điểm nào?
Schema.org là bộ từ vựng, tức danh sách loại thực thể và thuộc tính. JSON-LD là cú pháp để viết các thuộc tính đó thành một khối JSON trong thẻ script. Có thể hiểu schema.org là ngôn ngữ, JSON-LD là cách viết ra giấy. Microdata và RDFa là hai cách viết khác cho cùng bộ từ vựng, nhưng Google khuyên dùng JSON-LD.
Schema markup có giúp tăng thứ hạng không?
Không trực tiếp. Schema giúp máy hiểu trang và có thể đủ điều kiện cho rich result, nhưng Google nói rõ không có schema đặc biệt nào bắt buộc để xuất hiện trong AI Overviews hay AI Mode. Nó là một phần của SEO kỹ thuật chuẩn; nội dung hữu ích và trang có thể lập chỉ mục vẫn quan trọng hơn.
Có cần schema markup nếu dùng WordPress hay headless CMS không?
Nên có, vì chi phí thấp nếu được sinh tự động. WordPress dùng plugin như Yoast hay Rank Math. Với headless, bạn tự xuất JSON-LD ở frontend hoặc dùng bản CMS sinh sẵn. KDIGI CMS lưu sẵn đồ thị JSON-LD trong seo.jsonLd.raw mỗi lần lưu bài, frontend chỉ cần chèn nguyên văn vào trang.
FAQ schema còn tác dụng không?
Google đã ngừng hiển thị FAQ rich result và gỡ tài liệu của tính năng này năm 2026, nên đừng kỳ vọng nó đổi giao diện kết quả tìm kiếm. Phần FAQ trên trang vẫn có giá trị cho người đọc, và markup FAQPage vẫn hợp lệ nếu khớp nội dung hiển thị. Hãy làm FAQ vì người đọc, không phải vì rich result.
Kiểm tra schema markup bằng công cụ nào?
Dùng Rich Results Test của Google để xem trang đủ điều kiện rich result nào, và Schema Markup Validator (validator.schema.org) để kiểm cú pháp theo schema.org. Sau khi lên production, theo dõi báo cáo Enhancements trong Search Console. Nhớ kiểm tra thêm bằng curl rằng khối application/ld+json có trong HTML gốc.
Nguồn
- Schema.org, Getting started và danh mục loại
- W3C, JSON-LD 1.1
- Google Search Central, Introduction to structured data
- Google Search Central, AI features and your website và Optimizing your website for generative AI features
- Google Search Central, Latest documentation updates (FAQ rich result)
- Google, Rich Results Test và Schema Markup Validator
- KDIGI CMS, tài liệu SEO (
docs/seo.md)
Bài viết liên quan
Sitemap là gì? Cách tạo và khai báo sitemap.xml
Sitemap là tệp liệt kê URL để công cụ tìm kiếm khám phá nội dung. Cách tạo sitemap.xml, khai báo qua Search Console, lỗi thường gặp và cách dùng IndexNow.
Hướng dẫn làm SEO website từ A–Z cho người mới (2026)
Hướng dẫn làm SEO website từ A–Z: nghiên cứu từ khóa, on-page, nội dung, kỹ thuật, backlink và đo lường bằng Search Console, kèm checklist 20 điểm.
Chính sách biên tập: bài viết do đội ngũ KDIGI biên soạn, thông tin sản phẩm đối chiếu với mã nguồn và tài liệu chính thức, thông tin về sản phẩm khác kèm nguồn dẫn. Xem thêm giới thiệu KDIGI.