Dữ liệu có cấu trúc loại Biến thể sản phẩm (ProductGroup, Product)

Nhiều loại sản phẩm như quần áo, giày dép, đồ nội thất, thiết bị điện tử và túi đựng hành lý được bán theo nhiều phiên bản khác nhau (ví dụ: nhiều phiên bản kích cỡ, màu sắc, chất liệu, hoặc hoạ tiết). Để giúp Google hiểu rõ hơn về những sản phẩm là biến thể của cùng một sản phẩm gốc, thì ngoài dữ liệu có cấu trúc Product, hãy sử dụng ProductGroup có các thuộc tính được liên kếtvariesBy, hasVariant, và productGroupID để nhóm các biến thể đó lại với nhau.

ProductGroup cũng cho phép bạn chỉ định các thuộc tính chung của sản phẩm đối với tất cả biến thể, chẳng hạn như thông tin và bài đánh giá về thương hiệu, cũng như các thuộc tính giúp xác định biến thể. Nhờ đó, bạn có thể giảm tình trạng trùng lặp thông tin.

Cách thêm dữ liệu có cấu trúc

Dữ liệu có cấu trúc là một định dạng chuẩn để cung cấp thông tin về một trang và phân loại nội dung trên trang. Nếu mới làm quen với dữ liệu có cấu trúc, bạn có thể tìm hiểu thêm về cách thức hoạt động của dữ liệu có cấu trúc.

Sau đây là thông tin tổng quan về cách xây dựng, kiểm tra và phát hành dữ liệu có cấu trúc. Để xem hướng dẫn từng bước về cách thêm dữ liệu có cấu trúc vào một trang web, hãy tham khảo lớp học lập trình về dữ liệu có cấu trúc.

  1. Thêm các thuộc tính bắt buộc. Tùy theo định dạng bạn đang sử dụng, hãy tìm hiểu nơi chèn dữ liệu có cấu trúc trên trang.
  2. Tuân theo các nguyên tắc.
  3. Xác thực mã của bạn bằng công cụ Kiểm tra kết quả nhiều định dạng rồi sửa mọi lỗi nghiêm trọng. Bạn cũng nên cân nhắc việc khắc phục mọi vấn đề không nghiêm trọng có thể bị gắn cờ trong công cụ này, vì những vấn đề này có thể giúp cải thiện chất lượng của dữ liệu có cấu trúc của bạn (tuy nhiên, bạn không nhất thiết thực hiện việc này để nội dung đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng).
  4. Triển khai một vài trang có chứa dữ liệu có cấu trúc và sử dụng Công cụ kiểm tra URL để kiểm tra xem Google nhìn thấy trang đó như thế nào. Hãy đảm bảo rằng Google có thể truy cập trang của bạn và bạn không chặn trang bằng tệp robots.txt, thẻ noindex hoặc yêu cầu đăng nhập. Nếu có vẻ như trang không gặp vấn đề nào, bạn có thể yêu cầu Google thu thập lại dữ liệu các URL của mình.
  5. Để thông báo cho Google về các thay đổi sau này, bạn nên gửi một sơ đồ trang web. Bạn có thể tự động hoá quy trình này bằng Search Console Sitemap API.

Ví dụ

Nhìn chung, các trang web thương mại điện tử sử dụng hai phương pháp thiết kế chính đối với biến thể sản phẩm. Phần này mô tả cách thiết lập mã đánh dấu biến thể sản phẩm, tuỳ theo phương pháp thiết kế của trang web:

  • Trang web một trang, là trang mà người dùng có thể chọn tất cả biến thể trên một trang mà không cần tải lại trang (thường là thông qua tham số truy vấn)
  • Trang web nhiều trang, là trang mà người dùng có thể truy cập các biến thể của cùng một sản phẩm trên nhiều trang khác nhau

Trang web một trang

Trong ví dụ về trang web một trang, chúng ta sẽ sử dụng một trang web với các giả định sau:

  • Khi không có biến thể nào được chọn, thì sẽ trả về trang sản phẩm chính bằng URL sau: https://www.example.com/coat
  • Cũng chính trang đó được trả về cùng với một biến thể cụ thể được chọn sẵn thông qua các URL sau:
    • https://www.example.com/coat?size=small&color=green
    • https://www.example.com/coat?size=small&color=lightblue
    • https://www.example.com/coat?size=large&color=lightblue
  • Khi người dùng chọn một biến thể khác trên trang (sử dụng trình đơn thả xuống để chọn màu sắc và kích thước), thì hình ảnh, thông tin về giá và tình trạng còn hàng sẽ thay đổi linh hoạt trên trang mà không cần tải lại trang. Mã đánh dấu trên trang không thay đổi linh hoạt khi người dùng chọn các biến thể khác nhau.

Ví dụ về trang web một trang: các biến thể lồng trong ProductGroup

Trong ví dụ này, các biến thể được lồng trong thực thể ProductGroup cấp cao nhất bằng thuộc tính hasVariant:

  • ProductGroup và 3 thực thể Offer (trong thuộc tính Product) đều có các URL riêng biệt. Ngoài ra, các URL đó cũng có thể được cung cấp theo Product.
  • Tiêu đề và nội dung mô tả chung được chỉ định ở cấp ProductGroup. Tiêu đề và nội dung mô tả cụ thể theo biến thể được chỉ định ở cấp Product.
  • Các thuộc tính phổ biến khác của biến thể (chẳng hạn như thương hiệu, hoạ tiết, chất liệu, và thông tin đối tượng) cũng được chỉ định ở cấp ProductGroup.
  • ProductGroup chỉ định các thuộc tính nhận dạng biến thể bằng thuộc tính variesBy.
  • ProductGroup chỉ định SKU gốc bằng productGroupID (không cần lặp lại bằng inProductGroupWithID trong các thuộc tính Product).

Bạn nên sử dụng phương pháp này vì đây là cách trình bày ngắn gọn và tự nhiên nhất đối với nhóm sản phẩm và các biến thể của nhóm đó.


<html>
  <head>
    <title>Wool winter coat</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "url": "https://www.example.com/coat",
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "audience": {
          "@type": "PeopleAudience",
          "suggestedGender": "unisex",
          "suggestedAge": {
            "@type": "QuantitativeValue",
            "minValue": 13,
            "unitCode": "ANN"
          }
        },
        "productGroupID": "44E01",
        "pattern": "striped",
        "material": "wool",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ],
        "hasVariant": [
          {
            "@type": "Product",
            "sku": "44E01-M11000",
            "gtin14": "98766051104214",
            "image": "https://www.example.com/coat_small_green.jpg",
            "name": "Small green coat",
            "description": "Small wool green coat for the winter season",
            "color": "Green",
            "size": "small",
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat?size=small&color=green",
              "priceCurrency": "USD",
              "price": 39.99,
              "itemCondition": "https://schema.org/NewCondition",
              "availability": "https://schema.org/InStock",
              "shippingDetails": { "@id": "#shipping_policy" },
              "hasMerchantReturnPolicy": { "@id": "#return_policy" }
            }
          },
          {
            "@type": "Product",
            "sku": "44E01-K11000",
            "gtin14": "98766051104207",
            "image": "https://www.example.com/coat_small_lightblue.jpg",
            "name": "Small light blue coat",
            "description": "Small wool light blue coat for the winter season",
            "color": "light blue",
            "size": "small",
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat?size=small&color=lightblue",
              "priceCurrency": "USD",
              "price": 39.99,
              "itemCondition": "https://schema.org/NewCondition",
              "availability": "https://schema.org/InStock",
              "shippingDetails": { "@id": "#shipping_policy" },
              "hasMerchantReturnPolicy": { "@id": "#return_policy" }
            }
          },
          {
            "@type": "Product",
            "sku": "44E01-X1100000",
            "gtin14": "98766051104399",
            "image": "https://www.example.com/coat_large_lightblue.jpg",
            "name": "Large light blue coat",
            "description": "Large wool light blue coat for the winter season",
            "color": "light blue",
            "size": "large",
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat?size=large&color=lightblue",
              "priceCurrency": "USD",
              "price": 49.99,
              "itemCondition": "https://schema.org/NewCondition",
              "availability": "https://schema.org/BackOrder",
              "shippingDetails": { "@id": "#shipping_policy" },
              "hasMerchantReturnPolicy": { "@id": "#return_policy" }
            }
          }
        ]
      },
      {
        "@context": "https://schema.org/",
        "@type": "OfferShippingDetails",
        "@id": "#shipping_policy",
        "shippingRate": {
          "@type": "MonetaryAmount",
          "value": 2.99,
          "currency": "USD"
        },
        "shippingDestination": {
          "@type": "DefinedRegion",
          "addressCountry": "US"
        },
        "deliveryTime": {
          "@type": "ShippingDeliveryTime",
          "handlingTime": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 1,
            "unitCode": "DAY"
          },
          "transitTime": {
            "@type": "QuantitativeValue",
            "minValue": 1,
            "maxValue": 5,
            "unitCode": "DAY"
          }
        }
      },
      {
        "@context": "http://schema.org/",
        "@type": "MerchantReturnPolicy",
        "@id": "#return_policy",
        "applicableCountry": "US",
        "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
        "merchantReturnDays": 60,
        "returnMethod": "https://schema.org/ReturnByMail",
        "returnFees": "https://schema.org/FreeReturn"
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Ví dụ về trang web một trang: các biến thể tách biệt với ProductGroup

Cấu trúc này tương tự như ví dụ trước, ngoại trừ việc các biến thể được xác định riêng biệt (không lồng nhau) với ProductGroup. Có thể một số hệ thống quản lý nội dung (CMS) sẽ dễ tạo nội dung bằng phương pháp này hơn.

<html>
  <head>
    <title>Wool winter coat</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "ProductGroup",
        "@id": "#coat_parent",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "url": "https://www.example.com/coat",
        ... // Other ProductGroup-level properties
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "productGroupID": "44E01",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "name": "Small green coat",
        "description": "Small wool green coat for the winter season",
        ... // Other Product-level properties
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?size=small&color=green",
          "price": 39.99
          ... // Other offer-level properties
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "name": "Small dark blue coat",
        "description": "Small wool light blue coat for the winter season",
        ... // Other Product-level properties
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?size=small&color=lightblue",
          "price": 39.99
          ... // Other offer-level properties
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "name": "Large dark blue coat",
        "description": "Large wool light blue coat for the winter season",
        ... // Other Product-level properties
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat?size=large&color=lightblue",
          "price": 49.99
          ... // Other offer-level properties
        }
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Trang web nhiều trang

Trong ví dụ về mã đánh dấu trang web nhiều trang, chúng ta sẽ sử dụng một trang web với các giả định sau:

  • Các biến thể màu xanh dương nhạt có tại các URL sau với kích cỡ nhỏ và kích cỡ lớn:
    • https://www.example.com/coat/lightblue?size=small
    • https://www.example.com/coat/lightblue?size=large
  • Biến thể màu xanh lá chỉ có kích cỡ nhỏ với giá https://www.example.com/coat/green?size=small.
  • Cả hai trang đều cho phép "chuyển" sang trang khác (nghĩa là sẽ tải lại trang) thông qua bộ chọn màu trong giao diện người dùng.
  • Trang web này sử dụng mã đánh dấu tương đương như trong ví dụ về trang web một trang đối với cả hai trang.

Xin lưu ý rằng không có định nghĩa ProductGroup nào trên một trang duy nhất được tham chiếu từ một trang khác. Điều này là do ProductGroup cần tham chiếu đến các thuộc tính chung của biến thể, chẳng hạn như thương hiệu, chất liệu và nhóm tuổi. Điều này cũng có nghĩa là bạn cần lặp lại toàn bộ định nghĩa ProductGroup trên từng trang biến thể.

Ví dụ về trang web nhiều trang: các biến thể lồng trong ProductGroup

Ví dụ này tương đương với ví dụ đầu tiên về trang web một trang, trong đó các thuộc tính Product của biến thể được lồng trong ProductGroup cấp cao nhất bằng thuộc tính hasVariant. Định nghĩa ProductGroup bị trùng lặp trên cả hai trang. Hãy lưu ý những điều sau:

  • ProductGroup không có URL chính tắc vì không có URL duy nhất đại diện cho ProductGroup.
  • ProductGroup trên từng trang có định nghĩa đầy đủ về các biến thể trên trang, cũng như một biến thể chỉ có thuộc tính url để liên kết đến các biến thể trên trang khác (thuộc tính này giúp Google tìm được các biến thể của bạn).

Trang 1: Biến thể màu xanh dương nhạt

Ví dụ sau đây cho thấy dữ liệu có cấu trúc trên trang đầu tiên đối với các biến thể màu xanh dương nhạt:

<html>
  <head>
    <title>Wool winter coat, light blue color</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        ... // Other ProductGroup-level properties
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "productGroupID": "44E01",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ],
        "hasVariant": [
          {
            "@type": "Product",
            "name": "Small light blue coat",
            "description": "Small wool light blue coat for the winter season",
            ... // Other Product-level properties
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat/lightblue?size=small",
              "price": 39.99
              ... // Other offer-level properties
            }
          },
          {
            "@type": "Product",
            "name": "Large light blue coat",
            "description": "Large wool light blue coat for the winter season",
            ... // Other Product-level properties
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat/lightblue?size=large",
              "price": 49.99
              ... // Other offer-level properties
            }
          },
          { "url": "https://www.example.com/coat/green?size=small" }
        ]
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Trang 2: Biến thể màu xanh lá

Ví dụ sau đây cho thấy dữ liệu có cấu trúc trên trang thứ hai đối với biến thể màu xanh lá:

<html>
  <head>
    <title>Wool winter coat, green color</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        ... // Other ProductGroup-level properties
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "productGroupID": "44E01",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ],
        "hasVariant": [
          {
            "@type": "Product",
            "name": "Small green coat",
            "description": "Small wool green coat for the winter season",
            ... // Other Product-level properties
            "offers": {
              "@type": "Offer",
              "url": "https://www.example.com/coat/green?size=small",
              "price": 39.99
              ... // Other offer-level properties
            }
          },
          { "url": "https://www.example.com/coat/lightblue?size=small" },
          { "url": "https://www.example.com/coat/lightblue?size=large" }
        ]
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Ví dụ về trang web nhiều trang: các biến thể tách biệt với ProductGroup

Cấu trúc này tương tự như ví dụ trước đó về trang web nhiều trang, ngoại trừ việc các biến thể được xác định riêng biệt (không lồng nhau) với ProductGroup. Có thể một số hệ thống quản lý nội dung (CMS) sẽ dễ tạo nội dung bằng phương pháp này hơn.

Trang 1: Biến thể màu xanh dương nhạt

Ví dụ sau đây cho thấy dữ liệu có cấu trúc trên trang đầu tiên đối với các biến thể màu xanh dương nhạt:


<html>
  <head>
    <title>Wool winter coat, lightblue color</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "@id": "#coat_parent",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "audience": {
          "@type": "PeopleAudience",
          "suggestedGender": "unisex",
          "suggestedAge": {
            "@type": "QuantitativeValue",
            "minValue": 13,
            "unitCode": "ANN"
          }
        },
        "productGroupID": "44E01",
        "pattern": "striped",
        "material": "wool",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "sku": "44E01-K11000",
        "gtin14": "98766051104207",
        "image": "https://www.example.com/coat_lightblue.jpg",
        "name": "Small light blue coat",
        "description": "Small wool light blue coat for the winter season",
        "color": "light blue",
        "size": "small",
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat/lightblue?size=small",
          "priceCurrency": "USD",
          "price": 39.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/InStock",
          "shippingDetails": { "@id": "#shipping_policy" },
          "hasMerchantReturnPolicy": { "@id": "#return_policy" }
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "sku": "44E01-X1100000",
        "gtin14": "98766051104399",
        "image": "https://www.example.com/coat_lightblue.jpg",
        "name": "Large light blue coat",
        "description": "Large wool light blue coat for the winter season",
        "color": "light blue",
        "size": "large",
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat/lightblue?size=large",
          "priceCurrency": "USD",
          "price": 49.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/BackOrder",
          "shippingDetails": { "@id": "#shipping_policy" },
          "hasMerchantReturnPolicy": { "@id": "#return_policy" }
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "url": "https://www.example.com/coat/green?size=small"
      },
      {
        "@context": "https://schema.org/",
        "@type": "OfferShippingDetails",
        "@id": "#shipping_policy",
        "shippingRate": {
          "@type": "MonetaryAmount",
          "value": 2.99,
          "currency": "USD"
        },
        "shippingDestination": {
          "@type": "DefinedRegion",
          "addressCountry": "US"
        },
        "deliveryTime": {
          "@type": "ShippingDeliveryTime",
          "handlingTime": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 1,
            "unitCode": "DAY"
          },
          "transitTime": {
            "@type": "QuantitativeValue",
            "minValue": 1,
            "maxValue": 5,
            "unitCode": "DAY"
          }
        }
      },
      {
        "@context": "https://schema.org/",
        "@type": "MerchantReturnPolicy",
        "@id": "#return_policy",
        "applicableCountry": "US",
        "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
        "merchantReturnDays": 60,
        "returnMethod": "https://schema.org/ReturnByMail",
        "returnFees": "https://schema.org/FreeReturn"
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Trang 2: Biến thể màu xanh lá

Ví dụ sau đây cho thấy dữ liệu có cấu trúc trên trang thứ hai đối với biến thể màu xanh lá:


<html>
  <head>
    <title>Wool winter coat, green color</title>
    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org/",
        "@type": "ProductGroup",
        "@id": "#coat_parent",
        "name": "Wool winter coat",
        "description": "Wool coat, new for the coming winter season",
        "brand": {
          "@type": "Brand",
          "name": "Good brand"
        },
        "audience": {
          "@type": "PeopleAudience",
          "suggestedGender": "unisex",
          "suggestedAge": {
            "@type": "QuantitativeValue",
            "minValue": 13,
            "unitCode": "ANN"
          }
        },
        "productGroupID": "44E01",
        "pattern": "striped",
        "material": "wool",
        "variesBy": [
          "https://schema.org/size",
          "https://schema.org/color"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "@id": "#small_green",
        "isVariantOf": { "@id": "#coat_parent" },
        "sku": "44E01-M11000",
        "gtin14": "98766051104214",
        "image": "https://www.example.com/coat_green.jpg",
        "name": "Small green coat",
        "description": "Small wool green coat for the winter season",
        "color": "green",
        "size": "small",
        "offers": {
          "@type": "Offer",
          "url": "https://www.example.com/coat/green?size=small",
          "priceCurrency": "USD",
          "price": 39.99,
          "itemCondition": "https://schema.org/NewCondition",
          "availability": "https://schema.org/InStock",
          "shippingDetails": { "@id": "#shipping_policy" },
          "hasMerchantReturnPolicy": { "@id": "#return_policy" }
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "url": "https://www.example.com/coat/lightblue?size=small"
      },
      {
        "@context": "https://schema.org",
        "@type": "Product",
        "isVariantOf": { "@id": "#coat_parent" },
        "url": "https://www.example.com/coat/lightblue?size=large"
      },
      {
        "@context": "https://schema.org/",
        "@type": "OfferShippingDetails",
        "@id": "#shipping_policy",
        "shippingRate": {
          "@type": "MonetaryAmount",
          "value": "2.99",
          "currency": "USD"
        },
        "shippingDestination": {
          "@type": "DefinedRegion",
          "addressCountry": "US"
        },
        "deliveryTime": {
          "@type": "ShippingDeliveryTime",
          "handlingTime": {
            "@type": "QuantitativeValue",
            "minValue": 0,
            "maxValue": 1,
            "unitCode": "DAY"
          },
          "transitTime": {
            "@type": "QuantitativeValue",
            "minValue": 1,
            "maxValue": 5,
            "unitCode": "DAY"
          }
        }
      },
      {
        "@context": "https://schema.org/",
        "@type": "MerchantReturnPolicy",
        "@id": "#return_policy",
        "applicableCountry": "US",
        "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
        "merchantReturnDays": 60,
        "returnMethod": "https://schema.org/ReturnByMail",
        "returnFees": "https://schema.org/FreeReturn"
      }
    ]
    </script>
  </head>
  <body>
  </body>
</html>

Nguyên tắc

Để mã đánh dấu biến thể sản phẩm của bạn đủ điều kiện sử dụng trên Google Tìm kiếm, bạn phải tuân theo các nguyên tắc sau:

Nguyên tắc kỹ thuật

  • Mỗi biến thể phải có một mã nhận dạng duy nhất trong mã đánh dấu dữ liệu có cấu trúc tương ứng (ví dụ: được chỉ định bằng thuộc tính sku hoặc gtin).
  • Mỗi nhóm sản phẩm phải có một mã nhận dạng duy nhất trong mã đánh dấu dữ liệu có cấu trúc tương ứng, được chỉ định bằng thuộc tính inProductGroupWithID trong các thuộc tính biến thể Product, hoặc thuộc tính productGroupID trong thuộc tính ProductGroup.
  • Ngoài các thuộc tính biến thể sản phẩm, hãy nhớ thêm dữ liệu có cấu trúc Product, theo danh sách thuộc tính bắt buộc đối với trang thông tin của người bán (hoặc đoạn trích về sản phẩm).
  • Đối với các trang web một trang, mỗi biến thể đều chỉ được có một URL chính tắc riêng biệt đối với ProductGroup tổng thể dùng chung cho tất cả biến thể. Thường thì đây là URL cơ sở dẫn đến một trang chưa chọn sẵn biến thể, ví dụ: https://www.example.com/winter_coat.
  • Đối với các trang web nhiều trang, mỗi trang phải có mã đánh dấu đầy đủ và độc lập đối với các thực thể được xác định trên trang đó (nghĩa là các thực thể nằm ngoài trang không nhất thiết phải hiểu mã đánh dấu trên trang).
  • Trang web phải có khả năng trực tiếp chọn sẵn từng biến thể bằng một URL riêng biệt (bằng tham số truy vấn URL), ví dụ: https://www.example.com/winter_coat/size=small&color=green. Điều này cho phép Google thu thập dữ liệu và xác định danh tính của từng biến thể. Việc chọn sẵn từng biến thể bao gồm cho thấy hình ảnh, giá và tình trạng còn hàng tương ứng phù hợp, đồng thời cho phép người dùng thêm biến thể vào giỏ hàng.
  • Nếu là nhà bán hàng đang muốn tối ưu hoá cho mọi loại kết quả về mua sắm, bạn nên đưa dữ liệu có cấu trúc Product vào HTML ban đầu để có kết quả tốt nhất.
  • Đối với mã đánh dấu Product được tạo bằng JavaScript: Xin lưu ý rằng mã đánh dấu được tạo động có thể khiến hoạt động thu thập dữ liệu của Mua sắm diễn ra ít thường xuyên và kém tin cậy hơn. Điều này có thể là vấn đề đối với những nội dung thường xuyên thay đổi như tình trạng còn hàng và giá của sản phẩm. Nếu bạn đang sử dụng JavaScript để tạo mã đánh dấu Product, hãy đảm bảo rằng máy chủ của bạn có đủ tài nguyên điện toán để xử lý lưu lượng truy cập gia tăng từ Google.

Định nghĩa các kiểu dữ liệu có cấu trúc

Bạn phải thêm các thuộc tính bắt buộc vào để dữ liệu có cấu trúc của bạn đủ điều kiện sử dụng trong Google Tìm kiếm. Bạn cũng có thể thêm các thuộc tính mà chúng tôi khuyên dùng để bổ sung thông tin về biến thể của bạn và cải thiện trải nghiệm người dùng.

ProductGroup

Google nhận ra các thuộc tính sau của ProductGroup. Bạn có thể xem định nghĩa đầy đủ về ProductGroup tại schema.org/ProductGroup. Khi bạn đánh dấu nội dung của mình bằng thông tin biến thể sản phẩm, hãy dùng những thuộc tính sau của thuộc tính ProductGroup.

Thuộc tính bắt buộc
name

Text

Tên của ProductGroup (ví dụ: "Áo khoác len mùa đông"). Đảm bảo tên của các biến thể trong từng mặt hàng Product mang tính cụ thể hơn (ví dụ: "Áo khoác len mùa đông – màu xanh lá, kích cỡ nhỏ", dựa trên các đặc điểm xác định nên biến thể. Hãy xem Tài liệu về sản phẩm để biết thông tin cụ thể.

Thuộc tính nên có
aggregateRating

AggregateRating

Một aggregateRating lồng ghép của ProductGroup (đại diện cho tất cả các biến thể), nếu có. Hãy tuân theo nguyên tắc về đoạn trích thông tin đánh giá và danh sách các thuộc tính AggregateRating bắt buộc và nên có.

brand

Brand

Thông tin thương hiệu về ProductGroup (giống nhau trên tất cả biến thể), nếu có. Xem Tài liệu về sản phẩm để biết thông tin cụ thể về brand.

brand.name

Brand

Tên thương hiệu của ProductGroup (tất cả các biến thể đều giống nhau). Nếu đã thêm thương hiệu ở cấp ProductGroup, bạn không cần thêm lại thương hiệu đó ở cấp Product. Xem Tài liệu về sản phẩm để biết thông tin cụ thể về brand.

description

Text hoặc TextObject

Nội dung mô tả về ProductGroup. Ví dụ: "Áo khoác len mùa đông dành cho thời tiết lạnh". Đảm bảo rằng nội dung mô tả về biến thể mang tính cụ thể hơn, và lý tưởng nhất là sử dụng các từ giúp xác định biến thể (chẳng hạn như màu sắc, kích thước, chất liệu).

hasVariant

Product

Thuộc tính Product lồng ghép là một trong các biến thể của thuộc tính ProductGroup (nếu có). ProductGroup thường có nhiều thuộc tính Product của biến thể lồng nhau.

Ngoài ra, một thuộc tính Product của biến thể có thể tham chiếu trở lại đến ProductGroup gốc của nó bằng cách dùng thuộc tính isVariantOf trên thuộc tính Product.

productGroupID

Text

Mã nhận dạng của nhóm sản phẩm (còn được gọi là SKU gốc). Bạn phải cung cấp giá trị nhận dạng này cho thuộc tính ProductGroup hoặc sử dụng thuộc tính inProductGroupWithID cho các biến thể của thuộc tính ProductGroup. Nếu bạn cung cấp giá trị nhận dạng cho cả thuộc tính ProductGroup và các thuộc tính biến thể Product của thuộc tính đó thì các giá trị nhận dạng này phải khớp nhau.

review

Review

Một review lồng ghép của ProductGroup (nếu có). Hãy tuân theo các nguyên tắc về đoạn trích thông tin đánh giá và danh sách thuộc tính đánh giá bắt buộc và nên có.

url

URL

Chỉ dành cho trang web một trang: URL (không có bộ chọn biến thể) nơi đặt thuộc tính ProductGroup (nếu có). Đừng sử dụng thuộc tính này cho trang web nhiều trang.

variesBy

DefinedTerm

Các khía cạnh mà các biến thể trong ProductGroup sẽ thay đổi (ví dụ: kích cỡ hoặc màu sắc), nếu có. Hãy tham chiếu đến các thuộc tính nhận dạng biến thể này thông qua URL Schema.org đầy đủ (ví dụ: https://schema.org/color). Các thuộc tính sau được hỗ trợ:

  • https://schema.org/color
  • https://schema.org/size
  • https://schema.org/suggestedAge
  • https://schema.org/suggestedGender
  • https://schema.org/material
  • https://schema.org/pattern

Khắc phục sự cố

Nếu gặp sự cố khi triển khai hoặc gỡ lỗi dữ liệu có cấu trúc, thì bạn có thể tham khảo một số tài nguyên trợ giúp sau đây.