Hướng Dẫn Sử Dụng JSON-LD Để Tối Ưu Trang So Sánh Sản Phẩm và Giành Lợi Thế Rich Snippets Trên Google
Sử dụng JSON-LD chuẩn và đầy đủ cho trang so sánh sản phẩm giúp tăng tỉ lệ click (CTR) lên đến 30%, cải thiện thứ hạng tìm kiếm và tận dụng hiệu quả các rich snippets như đánh giá sao, giá cả hay FAQ trên Google.

Hướng Dẫn Sử Dụng JSON-LD Để Tối Ưu Trang So Sánh Sản Phẩm và Giành Lợi Thế Rich Snippets Trên Google
Việc tạo các trang so sánh sản phẩm nếu không tận dụng JSON-LD sẽ là bỏ lỡ nhiều cơ hội gia tăng lượng truy cập. Rich snippets – với các thành phần như đánh giá sao, phạm vi giá, số lượng đánh giá hiện trực tiếp ngay trên kết quả tìm kiếm Google – có thể cải thiện tỷ lệ nhấp (CTR) lên đến 30% hoặc hơn.
JSON-LD cho phép bạn thể hiện rõ ràng sản phẩm nào được so sánh, thông số và đánh giá tổng hợp ra sao, đồng thời giúp trang xuất hiện trong các carousel so sánh sản phẩm của Google. Cùng tìm hiểu cách thức triển khai chuẩn JSON-LD theo kinh nghiệm từ dịch vụ SmartReview.
Tại sao chọn JSON-LD cho trang so sánh?
Google hiện hỗ trợ nhiều định dạng dữ liệu có cấu trúc nhưng khuyến nghị dùng JSON-LD vì:
- Không xâm lấn (Non-invasive): JSON-LD được đặt trong thẻ
<script>riêng biệt, không làm phức tạp hay ảnh hưởng đến cấu trúc HTML nội dung chính. - Dễ tạo mẫu (Easy to template): JSON-LD có thể tự động xây dựng dựa trên mô hình dữ liệu hiện có.
- Tài liệu rõ ràng: Schema.org cung cấp hướng dẫn đặc tả chi tiết cho các loại như
Product,Review,AggregateRating.
Với các trang so sánh, JSON-LD cho phép bạn:
- Khai báo đầy đủ hai sản phẩm cùng các thông số kỹ thuật, thương hiệu, đánh giá sao...
- Hiển thị tổng hợp dữ liệu đánh giá từ nhiều nguồn.
- Tự động cập nhật phạm vi giá cả qua thuộc tính
AggregateOffer. - Xuất hiện trên carousel so sánh sản phẩm của Google, tăng lượt hiển thị hấp dẫn.
Cấu trúc JSON-LD cho trang so sánh
Một trang so sánh nên xuất ra một đối tượng ItemList chứa hai thực thể Product. Ví dụ cấu trúc:
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "AirPods Pro vs Sony WF-1000XM5",
"description": "...",
"numberOfItems": 2,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Product",
"name": "AirPods Pro",
"brand": { "@type": "Brand", "name": "Apple" },
"image": "url_anh_san_pham",
"description": "Tai nghe true wireless...",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"bestRating": "5",
"worstRating": "1",
"reviewCount": "1200"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "199.99",
"highPrice": "249.99",
"priceCurrency": "USD"
}
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Product",
"name": "Sony WF-1000XM5",
"brand": { "@type": "Brand", "name": "Sony" },
"image": "url_anh_san_pham",
"description": "Tai nghe true wireless chống ồn cao cấp...",
"aggregateRating": { ... },
"offers": { ... }
}
}
]
}
Triển khai JSON-LD trong Next.js
Dưới đây là ví dụ cách xây dựng JSON-LD cho trang so sánh trong Next.js:
function buildJsonLd(comparison) {
return {
"@context": "https://schema.org",
"@type": "ItemList",
name: `${comparison.entityA.name} vs ${comparison.entityB.name}`,
description: comparison.shortAnswer,
numberOfItems: 2,
itemListElement: [comparison.entityA, comparison.entityB].map((entity, i) => ({
"@type": "ListItem",
position: i + 1,
item: {
"@type": "Product",
name: entity.name,
brand: { "@type": "Brand", name: entity.brand },
image: entity.imageUrl,
description: entity.description,
...(entity.rating && {
aggregateRating: {
"@type": "AggregateRating",
ratingValue: entity.rating.toFixed(1),
bestRating: "5",
worstRating: "1",
reviewCount: String(entity.reviewCount),
},
}),
...(entity.price && {
offers: {
"@type": "AggregateOffer",
lowPrice: entity.price.low.toFixed(2),
highPrice: entity.price.high.toFixed(2),
priceCurrency: "USD",
},
}),
},
})),
};
}
export default function ComparisonPage({ params }) {
const comparison = getComparison(params.slug);
const jsonLd = buildJsonLd(comparison);
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
{/* Nội dung trang so sánh */}
</>
);
}
Thêm schema FAQ cho trang so sánh
Trang so sánh thường có phần hỏi đáp tự nhiên như “Sản phẩm X có tốt hơn Y khi chơi game không?”, “Cái nào rẻ hơn?”. Việc thêm schema FAQPage giúp tăng khả năng xuất hiện trong các hộp People Also Ask (PAA) của Google:
function buildFaqJsonLd(faqs) {
return {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map(faq => ({
"@type": "Question",
name: faq.question,
acceptedAnswer: {
"@type": "Answer",
text: faq.answer,
},
})),
};
}
Thông thường, bạn nên thêm 5–8 câu hỏi phổ biến dựa trên tìm kiếm thực tế để tăng khả năng được Google chọn hiển thị.
Kiểm tra và xác thực dữ liệu có cấu trúc
Trước khi đưa nội dung lên, hãy kiểm tra kỹ với:
- Google Rich Results Test
- Schema.org Validator
- Tự động hoá test bằng Playwright hoặc công cụ khác để đảm bảo dữ liệu JSON-LD không lỗi trên mọi trang
Ví dụ kiểm tra bằng Playwright:
test("comparison page has valid JSON-LD", async ({ page }) => {
await page.goto("/compare/airpods-pro-vs-sony-wf1000xm5");
const jsonLd = await page.evaluate(() => {
const script = document.querySelector('script[type="application/ld+json"]');
return script ? JSON.parse(script.textContent || "{}") : null;
});
expect(jsonLd).not.toBeNull();
expect(jsonLd["@type"]).toBe("ItemList");
expect(jsonLd.itemListElement).toHaveLength(2);
for (const item of jsonLd.itemListElement) {
expect(item.item["@type"]).toBe("Product");
expect(item.item.name).toBeTruthy();
expect(item.item.brand.name).toBeTruthy();
}
});
Các lỗi phổ biến cần tránh
Sau khi xây dựng hàng chục nghìn trang so sánh, một số lỗi thường gặp là:
- Thiếu nguồn
aggregateRatingxác thực: Google cần thấy đánh giá đến từ nguồn thực, ví dụ Amazon hay Reddit, kèm số lượng review thật tế. - Giá cả không cập nhật: Đừng cứng giá trong code. Sử dụng
AggregateOffervới dải giá linh hoạt lấy dữ liệu từ nguồn tin cậy. - FAQ tối ưu quá đà: Không nhồi nhét từ khóa, câu trả lời FAQ cần hữu ích và tự nhiên, tránh bị hạ điểm do cập nhật thuật toán “Helpful content”.
- Không có URL chuẩn (canonical): Nếu trang có thể truy cập dưới nhiều URL (ví dụ “a-vs-b” và “b-vs-a”), hãy chuẩn hoá canonical theo quy tắc, ví dụ sắp xếp theo thứ tự chữ cái.
- Quên schema
BreadcrumbList: Dữ liệu breadcrumb giúp Google hiểu cấu trúc site, nâng cao trải nghiệm người dùng và SEO.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://aversusb.net"
},
{
"@type": "ListItem",
"position": 2,
"name": "Earbuds",
"item": "https://aversusb.net/category/earbuds"
},
{
"@type": "ListItem",
"position": 3,
"name": "AirPods Pro vs Sony WF-1000XM5"
}
]
}
Kết quả thực tế sau khi dùng JSON-LD đầy đủ
- CTR tăng 34% so với trang không có rich snippets
- Thứ hạng trung bình được cải thiện 1.2 bậc – dữ liệu có cấu trúc là một tín hiệu chất lượng
- FAQ schema xuất hiện hơn 40 lần trên People Also Ask trong tháng đầu tiên
- Hiển thị giá trong SERPs tăng gấp đôi lượt click affiliate
Hiệu ứng cộng hưởng tạo nên chu trình tích cực: CTR tốt → tín hiệu tương tác tốt → vị trí cao → nhiều truy cập hơn → tương tác tăng.
Lời khuyên dành cho bạn
Nếu bạn đang xây dựng nội dung so sánh sản phẩm, hãy:
- Dùng JSON-LD với
ItemListvàProductcho hai thực thể chính - Thêm schema
FAQPagecho phần câu hỏi thường gặp - Thêm
BreadcrumbListđể rõ ràng cấu trúc site - Luôn kiểm tra và xác thực dữ liệu trước khi triển khai
- Theo dõi hiệu quả trên Google Search Console mục “Enhancements”
Để tham khảo trực tiếp, bạn có thể xem mã nguồn JSON-LD trên các trang so sánh của aversusb.net.
Bài viết thuộc phần 4 của series "Building SmartReview". Phần trước: The Hidden SEO Goldmine.
Bài viết liên quan

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
