Trong thế giới thương mại điện tử ngày càng phát triển, việc tối ưu hóa sản phẩm trên các công cụ tìm kiếm là một yếu tố quan trọng để thu hút khách hàng tiềm năng. Đối với các sản phẩm có nhiều phiên bản khác nhau như quần áo, giày dép, hoặc thiết bị điện tử, việc triển khai dữ liệu có cấu trúc loại biến thể sản phẩm là một phương pháp hiệu quả để đảm bảo Google hiểu rõ hơn về các biến thể của cùng một sản phẩm. Điều này không chỉ giúp giảm thiểu tình trạng trùng lặp thông tin mà còn cải thiện trải nghiệm người dùng và tối ưu hóa khả năng hiển thị trên kết quả tìm kiếm.
Nhiều loại sản phẩm trong thương mại điện tử 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ý thường có nhiều biến thể khác nhau về kích thước, màu sắc, chất liệu hoặc họa tiết. Để Google có thể hiểu rõ hơn về các biến thể này như là những phiên bản khác nhau của cùng một sản phẩm gốc, ngoài việc sử dụng dữ liệu có cấu trúc loại Product, bạn nên sử dụng ProductGroup. Các thuộc tính liên kết như variesBy, hasVariant, và productGroupID sẽ giúp bạn nhóm các biến thể này lại với nhau một cách hiệu quả.
Việc sử dụng ProductGroup không chỉ cho phép bạn chỉ định các thuộc tính chung cho toàn bộ biến thể của sản phẩm, chẳng hạn như thông tin thương hiệu, đánh giá sản phẩm, mà còn giúp xác định các biến thể một cách rõ ràng và cụ thể. Điều này giúp tối ưu hóa nội dung, giảm thiểu tình trạng trùng lặp thông tin, và tăng cường khả năng hiển thị trên công cụ tìm kiếm.
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 hóa, giúp cung cấp thông tin chi tiết về trang web và phân loại nội dung một cách chính xác hơn. Nếu bạn mới làm quen với dữ liệu có cấu trúc, cần tìm hiểu cách thức hoạt động của nó để tối ưu hóa hiệu quả SEO.
Dưới đây là quy trình tổng quát để xây dựng, kiểm tra, và triển khai dữ liệu có cấu trúc trên trang web của bạn. Để có hướng dẫn chi tiết hơn, bạn có thể tham khảo các khóa học lập trình về dữ liệu có cấu trúc.
- Thêm các thuộc tính bắt buộc: Tùy theo định dạng dữ liệu có cấu trúc mà bạn đang sử dụng, hãy xác định chính xác nơi chèn mã trên trang. Nếu bạn sử dụng hệ thống quản lý nội dung (CMS), có thể sẽ thuận tiện hơn nếu bạn sử dụng các plugin được tích hợp sẵn trong CMS. Đối với người dùng JavaScript, hãy tìm hiểu cách tạo dữ liệu có cấu trúc bằng ngôn ngữ này.
- Tuân thủ các nguyên tắc: Đảm bảo rằng mã dữ liệu có cấu trúc của bạn tuân theo các nguyên tắc của Google.
- Xác thực mã: Việc xác thực mã bằng công cụ Kiểm tra kết quả nhiều định dạng là cần thiết để phát hiện và sửa chữa các lỗi nghiêm trọng. Ngoài ra, việc khắc phục các vấn đề không nghiêm trọng cũng giúp nâng cao chất lượng dữ liệu và cải thiện khả năng hiển thị trong kết quả tìm kiếm phong phú.
- Triển khai: Hãy triển khai một số trang thử nghiệm và sử dụng Công cụ kiểm tra URL của Google để xem cách công cụ tìm kiếm này hiểu trang của bạn. Hãy đảm bảo rằng không có rào cản nào như tệp robots.txt, thẻ noindex, hoặc yêu cầu đăng nhập ngăn cản Google truy cập trang của bạn. Nếu mọi thứ ổn thỏa, bạn có thể yêu cầu Google thu thập lại dữ liệu các URL đã triển khai.
Sau khi xuất bản, cần một khoảng thời gian để Google thu thập và lập chỉ mục lại trang. Hãy kiên nhẫn, vì có thể mất vài ngày để Google hoàn thành quá trình này. - Để thông báo cho Google về các thay đổi trong tương lai, bạn nên gửi sơ đồ trang web (sitemap) và có thể tự động hóa quá trình này thông qua Search Console Sitemap API.
Ví dụ
Các trang web thương mại điện tử thường áp dụng hai phương pháp thiết kế chính để quản lý biến thể sản phẩm. Dưới đây là hướng dẫn cách thiết lập mã đánh dấu cho các biến thể sản phẩm, tùy thuộc vào phương pháp thiết kế của trang web:
- Trang web một trang: Đây là loại trang mà người dùng có thể chọn tất cả các biến thể trên cùng một trang mà không cần tải lại trang (thường được thực hiện thông qua tham số truy vấn).
- Trang web nhiều trang: Đây là loại 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, URL sẽ trả về trang sản phẩm chính:
https://www.example.com/coat. - Trang sản phẩm chính sẽ hiển thị với các 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=greenhttps://www.example.com/coat?size=small&color=lightbluehttps://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 (thông qua trình đơn thả xuống để chọn màu sắc và kích thước), các thông tin như hình ảnh, giá cả và tình trạng còn hàng sẽ được cập nhật ngay trên trang mà không cần phải tải lại. Mã đánh dấu trên trang không thay đổi khi người dùng chọn các biến thể khác nhau, đảm bảo tính ổn định và nhất quán cho trải nghiệm người dùng.
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ể sản phẩm được lồng trong thực thể ProductGroup ở cấp cao nhất thông qua thuộc tính hasVariant:
- Thực thể ProductGroup cùng với 3 thực thể Offer trong thuộc tính Product đều có các URL riêng biệt. Các URL này cũng có thể được cung cấp trực tiếp thông qua thuộc tính Product.
- Tiêu đề và mô tả chung cho sản phẩm được định nghĩa tại cấp ProductGroup, trong khi tiêu đề và mô tả cụ thể cho từng biến thể sản phẩm được xác định ở cấp Product.
- Các thuộc tính chung khác của biến thể, chẳng hạn như thương hiệu, họa tiết, chất liệu và thông tin đối tượng, cũng được chỉ định tại cấp ProductGroup.
- ProductGroup sử dụng thuộc tính variesBy để xác định các đặc điểm nhận dạng của từng biến thể sản phẩm.
- SKU gốc được ProductGroup xác định bằng thuộc tính productGroupID, không cần phải lặp lại thông qua inProductGroupWithID trong các thực thể Product.
Phương pháp này được khuyến khích sử dụng vì đây là cách trình bày ngắn gọn và trực quan nhất cho nhóm sản phẩm và các biến thể liên quan, giúp tối ưu hóa trải nghiệm người dùng cũng như cải thiện khả năng tìm kiếm của trang web trên các công cụ tìm kiế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, tuy nhiên, các biến thể sản phẩm được xác định riêng biệt mà không lồng vào trong thực thể ProductGroup. Một số hệ thống quản lý nội dung (CMS) có thể dễ dàng tạo nội dung bằng phương pháp này hơn, nhờ vào tính đơn giản và linh hoạt trong việc quản lý các biến thể sản phẩm.
<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",
"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",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=small&color=green",
"price": 39.99,
"priceCurrency": "USD",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock"
}
},
{
"@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",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=small&color=lightblue",
"price": 39.99,
"priceCurrency": "USD",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock"
}
},
{
"@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",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=large&color=lightblue",
"price": 49.99,
"priceCurrency": "USD",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/Backorder"
}
}
]
</script>
</head>
<body>
</body>
</html>Trang web nhiều trang
Trong ví dụ về mã đánh dấu cho trang web nhiều trang, chúng ta sẽ xem xét một trang web với các giả định sau:
- Các biến thể màu xanh dương nhạt có sẵn tại các URL sau cho kích cỡ nhỏ và kích cỡ lớn:
https://www.example.com/coat/lightblue?size=smallhttps://www.example.com/coat/lightblue?size=large
- Biến thể màu xanh lá chỉ có sẵn cho kích cỡ nhỏ với URL:
https://www.example.com/coat/green?size=small. - Cả hai trang đều cho phép “chuyển” sang trang khác (nghĩa là trang sẽ tải lại) 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 tự như trong ví dụ về trang web một trang cho cả hai trang.
Lưu ý rằng không có định nghĩa nào về ProductGroup 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 phải 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. Do đó, bạn cần lặp lại toàn bộ định nghĩa ProductGroup trên từng trang biến thể để đảm bảo tính nhất quán và tối ưu hóa khả năng tìm kiếm.
Ví dụ về trang web nhiều trang: Các biến thể lồng trong ProductGroup
Ví dụ này tương tự như 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 thực thể ProductGroup cấp cao nhất thông qua thuộc tính hasVariant. Định nghĩa ProductGroup bị lặp lại trên cả hai trang. Cần lưu ý các điểm sau:
- ProductGroup không có URL chính tắc vì không có URL duy nhất đại diện cho toàn bộ ProductGroup.
- Mỗi ProductGroup trên từng trang chứa định nghĩa đầy đủ về các biến thể có trên trang đó, cùng với các liên kết URL chỉ dẫn đến các biến thể trên các trang khác. Điều này giúp Google dễ dàng tìm thấy tất cả các biến thể sản phẩm của bạn.
- Trang 1: Biến thể màu xanh dương nhạt
- Trang 2: Biến thể màu xanh lá
Trang 1: 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",
"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",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/lightblue?size=small",
"price": 39.99
}
},
{
"@type": "Product",
"name": "Large light blue coat",
"description": "Large wool light blue coat for the winter season",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/lightblue?size=large",
"price": 49.99
}
},
{ "url": "https://www.example.com/coat/green?size=small" }
]
}
]
</script>
</head>
<body>
</body>
</html>
Trang 2: Biến thể màu xanh lá
Dưới đây là ví dụ về dữ liệu có cấu trúc trên trang thứ hai dành cho 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",
"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",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/green?size=small",
"price": 39.99
}
},
{ "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, tuy nhiên, các biến thể sản phẩm được xác định riêng biệt và không lồng vào trong thực thể ProductGroup. Phương pháp này có thể dễ dàng hơn cho một số hệ thống quản lý nội dung (CMS) trong việc tạo và quản lý nội dung.
Trang 1: 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á
Dưới đây là ví dụ về dữ liệu có cấu trúc trên trang thứ hai dành cho 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 hiển thị trên Google Tìm kiếm, bạn cần tuân thủ các nguyên tắc sau:
- Nguyên tắc chung về dữ liệu có cấu trúc
- Nguyên tắc cơ bản của tìm kiếm
- Nguyên tắc kỹ thuật
- Nguyên tắc về trang thông tin miễn phí (dành cho trải nghiệm trên trang thông tin của người bán)
Nguyên tắc kỹ thuật
- Mỗi biến thể sản phẩm phải có 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ụ như được xác định bằng thuộc tính sku hoặc gtin.
- Mỗi nhóm sản phẩm phải có mã nhận dạng duy nhất trong mã đánh dấu dữ liệu có cấu trúc, đượ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 ProductGroup.
- Ngoài các thuộc tính của biến thể sản phẩm, cần thêm dữ liệu có cấu trúc Product, tuân 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 sản phẩm.
- Đối với các trang web một trang, mỗi biến thể chỉ được có một URL chính tắc duy nhất đại diện cho ProductGroup tổng thể dùng chung cho tất cả biến thể. Thông thường, đây là URL cơ sở dẫn đến trang chưa có biến thể được chọn sẵn, ví dụ:
https://www.example.com/winter_coat. - Đối với các trang web nhiều trang, không thể áp dụng một URL chính tắc duy nhất cho ProductGroup do không có URL duy nhất đại diện cho tất cả biến thể (vì các biến thể được phân phối trên nhiều trang có mức độ quan trọng như nhau).
- Đối với các trang web nhiều trang, mỗi trang phải chứa mã đánh dấu đầy đủ và độc lập cho các thực thể được xác định trên trang đó, đảm bảo rằng các thực thể ngoài trang không cần 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 (thông qua 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à nhận diện danh tính của từng biến thể. Việc chọn sẵn từng biến thể cần bao gồm hiển thị hình ảnh, giá và tình trạng còn hàng tương ứng, đồng thời cho phép người dùng thêm biến thể vào giỏ hàng.
Định nghĩa các kiểu dữ liệu có cấu trúc
Để dữ liệu có cấu trúc của bạn đủ điều kiện hiển thị trong Google Tìm kiếm, bạn cần thêm các thuộc tính bắt buộc. Ngoài ra, bạn có thể bổ sung các thuộc tính khuyến nghị để cung cấp thêm thông tin về biến thể và cải thiện trải nghiệm người dùng.
ProductGroup
Google nhận diện các thuộc tính sau của ProductGroup. Bạn có thể tham khảo định nghĩa đầy đủ về ProductGroup tại schema.org/ProductGroup. Khi đánh dấu nội dung với thông tin về biến thể sản phẩm, hãy sử dụng các thuộc tính sau của 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 rằng tên của các biến thể trong từng sản phẩm 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 của biến thể. Hãy tham khảo tài liệu về sản phẩm để biết thêm chi tiết.
Thuộc tính khuyến nghị
- aggregateRating
AggregateRating
AggregateRating của ProductGroup (đại diện cho tất cả các biến thể), nếu có. Tuân theo nguyên tắc về đoạn trích đánh giá và danh sách các thuộc tính AggregateRating bắt buộc và khuyến nghị. - brand
Brand
Thông tin về thương hiệu của ProductGroup (giống nhau trên tất cả các biến thể), nếu có. Xem tài liệu về sản phẩm để biết thêm chi tiết về brand. - brand.name
Text
Tên thương hiệu của ProductGroup (tất cả các biến thể đều giống nhau). Nếu thương hiệu đã được thêm ở 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êm chi tiết về brand. - description
Text hoặc TextObject
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 mô tả về các biến thể cụ thể hơn, sử dụng các từ khóa xác định biến thể như màu sắc, kích cỡ, chất liệu.Ngoài mô tả về ProductGroup, bạn cũng nên thêm mô tả cho từng biến thể ở cấp Product. Xem tài liệu về sản phẩm để biết thêm chi tiết. - hasVariant
Product
Thuộc tính Product đại diện cho một trong các biến thể của ProductGroup, nếu có. ProductGroup thường chứa nhiều biến thể Product.Ngoài ra, một biến thể Product có thể tham chiếu ngược lại ProductGroup gốc của nó bằng cách sử dụng thuộc tính isVariantOf trong Product. - productGroupID
Text
Mã nhận dạng của nhóm sản phẩm (còn gọi là SKU gốc). Bạn phải cung cấp mã nhận dạng này cho ProductGroup hoặc sử dụng thuộc tính inProductGroupWithID cho các biến thể của ProductGroup. Nếu bạn cung cấp giá trị nhận dạng cho cả ProductGroup và các biến thể Product của nó, các giá trị này phải khớp nhau. - review
Review
Một review của ProductGroup (nếu có). Tuân theo các nguyên tắc về đoạn trích đánh giá và danh sách các thuộc tính review bắt buộc và khuyến nghị. - url
URL
Chỉ áp dụng cho trang web một trang: URL (không có bộ chọn biến thể) nơi đặt 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à biến thể trong ProductGroup thay đổi (ví dụ: kích cỡ hoặc màu sắc), nếu có. Tham chiếu các thuộc tính nhận dạng biến thể này qua URL Schema.org đầy đủ (ví dụ: https://schema.org/color). Các thuộc tính sau được hỗ trợ:
Khắc phục sự cố
Nếu gặp phải vấn đề khi triển khai hoặc gỡ lỗi dữ liệu có cấu trúc, bạn có thể tham khảo một số tài nguyên hỗ trợ sau:
- Nếu bạn đang sử dụng hệ thống quản lý nội dung (CMS) hoặc có người khác quản lý trang web của bạn, hãy đề nghị họ hỗ trợ. Đừng quên chuyển tiếp mọi thông báo trong Search Console để họ nắm rõ vấn đề.
- Google không đảm bảo rằng các tính năng sử dụng dữ liệu có cấu trúc sẽ xuất hiện trong kết quả tìm kiếm. Để xem danh sách các lý do phổ biến khiến Google không thể hiển thị nội dung của bạn trong kết quả nhiều định dạng, hãy tham khảo nguyên tắc chung về dữ liệu có cấu trúc.
- Có thể dữ liệu có cấu trúc của bạn đang gặp lỗi. Hãy xem danh sách các lỗi liên quan đến dữ liệu có cấu trúc để kiểm tra và khắc phục.
- Nếu trang của bạn bị áp dụng biện pháp thủ công, dữ liệu có cấu trúc trên trang sẽ bị bỏ qua (mặc dù trang vẫn có thể xuất hiện trong kết quả tìm kiếm của Google). Để giải quyết vấn đề này, hãy sử dụng báo cáo biện pháp thủ công để xem và khắc phục các lỗi liên quan đến dữ liệu có cấu trúc.
- Hãy xem lại các nguyên tắc để đảm bảo rằng nội dung của bạn tuân thủ đầy đủ các quy định. Nguyên nhân gây lỗi có thể do bạn sử dụng nội dung không hợp lệ hoặc thẻ đánh dấu không đúng. Tuy nhiên, một số vấn đề có thể không phải là lỗi cú pháp và do đó, công cụ kiểm tra kết quả nhiều định dạng sẽ không thể phát hiện những lỗi này.
- Khắc phục sự cố thiếu kết quả nhiều định dạng hoặc giảm số lượng kết quả nhiều định dạng
- Hãy kiên nhẫn để Google thu thập dữ liệu và lập chỉ mục lại trang của bạn. Lưu ý rằng có thể mất vài ngày sau khi bạn xuất bản một trang để Google có thể tìm và thu thập dữ liệu trên trang đó. Đối với các câu hỏi chung liên quan đến quá trình thu thập dữ liệu và lập chỉ mục, hãy tham khảo nội dung câu hỏi thường gặp về việc thu thập dữ liệu và lập chỉ mục trên Google Tìm kiếm.
- Đăng câu hỏi trong diễn đàn của trung tâm Google Tìm kiếm nếu bạn cần hỗ trợ thêm.
Dữ liệu có cấu trúc loại biến thể sản phẩm là một công cụ mạnh mẽ giúp tối ưu hóa sản phẩm trên Google Tìm kiếm. Bằng cách triển khai đúng cách, bạn có thể giúp Google hiểu rõ hơn về các biến thể sản phẩm của mình, từ đó tăng cơ hội tiếp cận khách hàng tiềm năng và cải thiện trải nghiệm người dùng. Hãy đảm bảo rằng bạn tuân thủ đầy đủ các nguyên tắc và hướng dẫn để đạt được kết quả tốt nhất trong chiến lược SEO của mình.
