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

07 tháng 4, 2026·6 phút đọc

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

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:

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à:

  1. Thiếu nguồn aggregateRating xá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ế.
  2. Giá cả không cập nhật: Đừng cứng giá trong code. Sử dụng AggregateOffer với dải giá linh hoạt lấy dữ liệu từ nguồn tin cậy.
  3. 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”.
  4. 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.
  5. 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:

  1. Dùng JSON-LD với ItemListProduct cho hai thực thể chính
  2. Thêm schema FAQPage cho phần câu hỏi thường gặp
  3. Thêm BreadcrumbList để rõ ràng cấu trúc site
  4. Luôn kiểm tra và xác thực dữ liệu trước khi triển khai
  5. 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 được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗