مخطط ProductGroup
كيفية استخدام مخطط ProductGroup لتجميع تنويعات المنتج حسب المقاس واللون والمادة عبر hasVariant وvariesBy وproductGroupID، والفرق عن item_group_id وغياب دعم Bing.
اللغات
يجمع ProductGroup تنويعات Product تحت مجموعة أب واحدة من دون استبدال ترميز كل تنويعة. استخدم hasVariant للنمط المتداخل أو isVariantOf وinProductGroupWithID للنمط المسطح، واجعل variesBy عناوين كاملة مثل https://schema.org/color واستخدم عمدًا القيمة النصية نفسها في productGroupID وitem_group_id. لا يدعم Bing الترميز، وهو للأهلية والفهم لا للترتيب.
الخلاصة — يخبر مخطط ProductGroup Google بأن التنويعات — مثل القميص الأخضر الصغير والأزرق الكبير — خيارات للمنتج نفسه وليست منتجات منفصلة. يبقى لكل تنويعة ترميز Product كامل، ويضيف ProductGroup غلاف التجميع فقط. لا يحل محل Product ولا يرفع الترتيب؛ بل يساعد Google على فهم الكتالوج وقد يؤهل القوائم لإظهار معلومات التنويعات.
ما مخطط ProductGroup؟
إذا بعت معطفاً بثلاثة ألوان وخمسة مقاسات، فأنت تبيع معطفاً واحداً في 15 تركيبة. ومن دون توضيح العلاقة قد تبدو صفحاتها لمحرك البحث كأنها 15 منتجاً غير مترابط.
مخطط ProductGroup هو البيانات المنظمة التي تعرّف هذه العلاقة. فهو يربط المنتجات الفردية تحت مجموعة واحدة ويبيّن أنها خيارات للعنصر نفسه. أضافت Google دعمه في فبراير 2024.
Evidence for this claim Schema.org ProductGroup represents a group of products that vary only in defined characteristics. Scope: Schema.org vocabulary; Google adds its own merchant-listing requirements. Confidence: high · Verified: Schema.org: ProductGroupتخيّله مجلداً أباً:
- الأب هو
ProductGroup— «معطف شتوي صوفي». - الأبناء تنويعات
Productالفردية — لكل توليفة لون ومقاس سعرها وصورتها وتوفرها ومعرّفها الفريد.
المهم: إنه إضافة لا بديل
لا يستبدل ProductGroup ترميز المنتج. تظل كل تنويعة كائن Product كاملًا يحتفظ بـSKU والسعر والصورة والتوفر. ودور ProductGroup هو ربط تلك المنتجات تحت مجموعة أب؛ أي إنك تضيف ترميزًا ولا تستبدله.
ما فائدته؟
يجعل هذا الترميز المنتجات مؤهلة لإظهار معلومات التنويعات في قوائم التسوق/التجار لدى Google. والأهلية ليست ضماناً ولا تعزيزاً للترتيب؛ الغرض هو مساعدة Google على فهم المنتجات. Evidence for this claim Google supports ProductGroup with associated variant properties to describe product variants for merchant listings. Scope: Google Search product-variant documentation; eligibility is not a ranking promise. Confidence: high · Verified: Google: Product variants
أمران قبل التعمق
- لا يقرأ Bing مخطط ProductGroup وفق أحدث تصريح من Microsoft؛ فهو ميزة موجهة أساساً إلى Google.
- هذا جانب الشيفرة من التنويعات. أما قرار منح التنويعة صفحة مستقلة فهو سؤال استراتيجي منفصل يغطيه دليل SEO لتنويعات المنتجات.
للتفاصيل — الخصائص الثلاث، وقاعدة عنوان schema.org الكامل في variesBy، والفرق بين productGroupID وitem_group_id، ومثال JSON-LD كامل، والأخطاء الشائعة — انتقل إلى عدسة Advanced.
الخلاصة — يضم
ProductGroupكائناتProductالمتنوعة تحت مجموعة أب واحدة. وهو ترميز إضافي؛ فتحتفظ كل تنويعة بترميزها الكامل. اربطها بـhasVariantللموقع ذي الصفحة الواحدة أو بـisVariantOfوinProductGroupWithIDللموقع متعدد الصفحات. يجب أن يستخدمvariesByعناوين schema.org كاملة، بينماproductGroupIDنص عادي وليس عنوان URL، وهو منفصل عنitem_group_idفي Merchant Center. الخاصية المطلوبة فعلياً هيnameفقط. ولا يدعم Bing هذا الترميز. إنه يساعد الفهم والأهلية ولا يعد عامل ترتيب.
موضع هذا الدليل
هذا شرح عميق لتنفيذ المخطط: JSON-LD الكامل، ومرجع الخصائص، والمطابقة مع Merchant Center، واستكشاف الأخطاء. أما قرار منح كل تنويعة عنوان URL قابلاً للفهرسة واختلاف Shopify وWooCommerce وBigCommerce وMagento فهو موضوع دليل SEO لتنويعات المنتجات. وProductGroup مخصص لعائلة تنويعات؛ أما العنصر غير المتنوع فيكفيه Product.
لماذا يوجد ProductGroup؟
تقول Google: “To help Google better understand which products are variations of the same parent product, use the ProductGroup class with associated properties variesBy, hasVariant, and productGroupID to group such variants together.” (ترجمة) «لمساعدة Google على فهم أن المنتجات تنويعات للأب نفسه، استخدم ProductGroup وخصائصه لتجميعها». والفئات هي “apparel, shoes, furniture, electronic devices, and luggage… sold in different variations (for example various sizes, colors, materials, or patterns).” (ترجمة) «الملابس والأحذية والأثاث والأجهزة والحقائب التي تباع بتنويعات في المقاس أو اللون أو المادة أو النمط».
Evidence for this claim Google documents ProductGroup relationships including variesBy, hasVariant, productGroupID, and inverse variant references. Scope: Google Search product-variant requirements; use the pattern matching the site's URL architecture. Confidence: high · Verified: Google: Product variantsالعائد هو الأهلية لا الترتيب. تقول Google: “Adding this markup also makes your products eligible for display with variant information in merchant listing experiences.” (ترجمة) «إضافة الترميز تؤهل المنتجات للعرض بمعلومات التنويعات في تجارب قوائم التجار». وهو يساعد الفهم والأهلية ولا يرفع موضع النتيجة.
إنه إضافي — النموذج الذهني الذي يمنع معظم الأخطاء
يجمع ProductGroup كائنات Product ولا يستبدلها. المجموعة ليست معروضة للبيع ولا تحمل سعرًا واحدًا؛ فكل تنويعة تبقى كائن Product كاملًا له sku/gtin وimage وoffers وavailability. وإذا وضعت offers/price واحدًا على المجموعة فقد خلطت بين المجموعة والعنصر المباع.
الخصائص الأساسية الثلاث
A ProductGroup named Wool winter coat declares productGroupID 44E01 and variesBy values using full schema.org URLs for color and size. It connects to green small, green large, and blue small Product variants. Every variant keeps a unique SKU, Offer, image, and availability. The connection can use hasVariant in a nested model or isVariantOf in a flat model.
© Patrick Stox LLC · CC BY 4.0 ·
hasVariant (وisVariantOf)
تعرّف Google hasVariant بأنها “a nested Product property that is one of the variants of the ProductGroup property… A ProductGroup typically has multiple nested variant Product properties.” (ترجمة) خاصية Product متداخلة تمثل إحدى تنويعات ProductGroup، وعادةً تضم المجموعة عدة منتجات متنوعة. ضع كائنات Product داخل المجموعة.
والعكس موجود أيضاً: “a variant Product property can reference back to its parent ProductGroup using the isVariantOf property on the Product property.” (ترجمة) «يمكن للتنويعة الرجوع إلى المجموعة الأب عبر isVariantOf». يعتمد الاختيار على بنية عناوين URL.
variesBy — عناوين schema.org كاملة لا سلاسل قصيرة
تعلن variesBy الجوانب التي تختلف بها التنويعات. وتقول Google حرفياً: “Reference these variant-identifying properties through their full Schema.org URL.” (ترجمة) أشِر إلى خصائص تعريف التنويعات بعناوين Schema.org الكاملة.
أي:
"variesBy": ["https://schema.org/size", "https://schema.org/color"]وليس "variesBy": ["size", "color"]. هذا أكثر أخطاء التنفيذ شيوعاً. الموثق هو وجوب العنوان الكامل؛ أما نتيجة مخالفته فلا توثقها Google. في اختباراتي وتقارير ممارسين آخرين ينجح تحقق JSON-LD لكن لا يعمل التجميع المحسن. تعامل مع ذلك كملاحظة قوية قابلة للتحقق، لا كتصريح رسمي.
الأبعاد المدعومة هي https://schema.org/color وhttps://schema.org/size وhttps://schema.org/suggestedAge وhttps://schema.org/suggestedGender وhttps://schema.org/material وhttps://schema.org/pattern.
productGroupID — نص عادي وليس item_group_id
تصفه Google بأنه “the identifier of the product group (also known as the parent sku). This identifier must be provided for the ProductGroup property or, alternatively, using inProductGroupWithID property for variants.” (ترجمة) معرّف مجموعة المنتج أو SKU الأب، ويقدم على ProductGroup أو عبر inProductGroupWithID للتنويعات. إنه نص عادي مثل "44E01" وليس URL.
والقيد الصريح: “If you provide the identifier for both the ProductGroup property and its variant Product properties, they must match.” (ترجمة) إذا قدمته في المجموعة والتنويعات فيجب أن تتطابق القيم. لا توثق Google أثر المخالفة؛ وفي اختباراتي قد يُسقط اختلاف القيمة التنويعة من المجموعة بلا خطأ ظاهر، لذا تحقّق بنفسك.
نمطان للتنفيذ: متداخل ومسطح
تحدد بنية عناوين URL النمط المناسب.
موقع الصفحة الواحدة — متداخل (hasVariant). تُختار كل التنويعات في URL واحد. تقول Google: “For single-page websites only: The URL (without variant selectors) where the ProductGroup property is located.” (ترجمة) للمواقع ذات الصفحة الواحدة فقط: عنوان موضع ProductGroup من دون محددات التنويعة. يوجد عنوان أساسي واحد، وتُضمّن كل التنويعات عبر hasVariant.
موقع متعدد الصفحات — مسطح (isVariantOf + inProductGroupWithID). لكل تنويعة URL مستقل. تقول Google: “this doesn’t apply since there is no single canonical URL representing the ProductGroup property.” (ترجمة) لا تنطبق قاعدة العنوان الواحد لأنه لا يوجد URL أساسي يمثل ProductGroup. ويجب أن تحمل كل صفحة “full, self-contained markup for the entities defined on that page” (ترجمة) ترميزاً كاملاً مستقلاً لكياناتها. يشير Product إلى الأب بـisVariantOf، وتقول Google: “Each product group must have a unique ID in its corresponding structured data markup, specified with the inProductGroupWithID property.” (ترجمة) يجب أن تحمل كل مجموعة معرّفاً فريداً عبر inProductGroupWithID.
وفي الحالتين: “Each variant must have a unique ID in its corresponding structured data markup (for example, using the sku or gtin properties).” (ترجمة) يجب أن يكون لكل تنويعة معرّف فريد، مثل sku أو gtin.
ويجب الوصول إلى كل تنويعة عبر URL مميز قابل للتحديد المسبق. تقول Google: “The site must have the ability to preselect each variant directly with a distinct URL (using URL query parameters), for example https://www.example.com/winter_coat/size=small&color=green.” (ترجمة) يجب أن يتيح الموقع تحديد كل تنويعة مباشرةً بعنوان مميز، ويمكن استخدام معاملات الاستعلام. حالة JavaScript بلا URL مستقل لا يمكن التحقق منها أو فهرستها كتنويعة.
المطلوب والموصى به
- المطلوب في
ProductGroup: الخاصيةnameفقط، مثل"Wool winter coat". - الموصى به:
variesByوhasVariantوproductGroupIDوbrandوdescriptionوaggregateRatingوreviewوhasAdultConsiderationوurlللمواقع ذات الصفحة الواحدة.
تقنياً لا يلزم سوى name، لكن variesBy وproductGroupID أساسيان وظيفياً. قد ينجح التحقق من دونهما من دون ظهور التجميع المطلوب.
productGroupID مقابل item_group_id في Merchant Center
هذه نقطة التباس تتجاوزها أدلة كثيرة، لذا يلزم التفريق بدقة.
productGroupIDحقل schema.org في بيانات الصفحة المنظمة ويدعم فهم البحث العضوي.item_group_idسمة في خلاصة Google Merchant Center. تقول Google: “Use the item group ID [item_group_id] attribute to group product variants in your product data.” (ترجمة) استخدم سمة معرّف مجموعة العناصر لتجميع التنويعات في بيانات المنتج. وهي تدعم إعلانات Shopping والقوائم المجانية.
هما نظامان منفصلان ولا تزامن Google قيمتيهما تلقائيًا. استخدم القيمة نفسها عمدًا كي تتفق الخلاصة والترميز على وحدات SKU التابعة للمجموعة. قد لا يعطل اختلاف القيم النظامين، لكنه يزيل اتساق الإشارات وقد ينتج مجموعات مختلفة.
ملاحظة في حالة الأحرف: تكتب مساعدة Merchant Center أحياناً productGroupId بحرف d صغير، بينما تستخدم Search Central productGroupID. اتبع صيغة Search Central في JSON-LD.
كما في العناوين الأساسية وعناوين التنويعات، ينبغي أن تتفق الإشارات كي لا تضطر Google إلى التخمين.
لا يدعم Bing مخطط ProductGroup
لا يدعم Bing حاليًا ترميز schema.org/ProductGroup. قال Fabrice Canel من Microsoft إنه غير مدعوم بعد لكنه “on our radar” وأن الفريق “closely monitoring its adoption.” (ترجمة) «إنه ضمن ما نتابعه، ويراقب الفريق مدى اعتماده عن كثب». هذا تقرير Search Engine Roundtable عن حوار في سبتمبر 2024، لا وثيقة Microsoft أولية.
توثيق Bing Webmaster Tools عرض عام لا يتضمن ProductGroup أو variesBy أو productGroupID. يجري تجميع تنويعات Bing Shopping عبر itemGroupId في خلاصة Microsoft Advertising، لا عبر ترميز الصفحة. نفّذ ProductGroup لـGoogle، وعالج Bing عبر الخلاصة.
ملاحظة عن الترميز الديناميكي
تحذر Google: “Be aware that dynamically-generated markup can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price.” (ترجمة) قد يجعل الترميز المولد ديناميكياً زحف Shopping أقل تواتراً وموثوقية، خصوصاً للسعر والتوفر سريعَي التغير. لذلك وازن حقن offers/availability بجافاسكربت مع العرض من الخادم.
تحقّق قبل النشر
- Rich Results Test — يفحص الأهلية وأخطاء الخصائص المطلوبة.
- Schema Markup Validator — يتحقق من نوعي ProductGroup وProduct مستقلاً عن ميزات Google.
- Search Console — تعرض تقارير قوائم التجار ومقتطفات المنتجات الأخطاء على نطاق واسع، وتوضح URL Inspection كيفية قراءة صفحة بعينها.
الصلاحية لا تعني أن كل شيء يعمل. قد يمر variesBy كسلسلة قصيرة في التحقق ولا يؤدي إلى التجميع وفق اختباراتي. افحص يدوياً عناوين variesBy الكاملة وتطابق productGroupID.
للسياق الأوسع راجع محوري البيانات المنظمة وترميز schema اللذين يندرج تحتهما المقال.
ملخص الذكاء الاصطناعي
خلاصة مكثفة لعدسة Advanced:
- ما هو: يجمع
ProductGroupتنويعاتProductتحت أب واحد، ويؤهل عرض معلوماتها من دون أن يكون عامل ترتيب. - إضافة لا بديل: تبقى كل تنويعة Product كاملاً بسعرها وصورتها وتوفرها.
- الخصائص:
hasVariant/isVariantOfللعلاقة، وvariesByبعناوين schema.org كاملة، وproductGroupIDكنص عادي متطابق. - النمطان: متداخل لعنوان واحد؛ ومسطح لصفحات مستقلة بترميز كامل. لكل تنويعة معرّف وURL مميزان.
- المطلوب:
nameفقط، لكن variesBy وproductGroupID أساسيان عملياً. - الأنظمة: productGroupID للصفحة وitem_group_id لخلاصة Merchant Center، ولا مزامنة تلقائية.
- Bing: لا يدعم ProductGroup؛ يستخدم itemGroupId في خلاصة Microsoft Advertising.
- التحقق: استخدم أدوات الاختبار ثم افحص القيم يدوياً، واحذر الترميز الديناميكي للسعر والتوفر.
- رموز التنفيذ:
skuوgtinوoffersوimageوavailabilityوhttps://schema.org/colorو"color"و"44E01"وinProductGroupWithIDوitem_group_idوitemGroupId.
الوثائق الرسمية
وثائق المصادر الأولية لمخطط ProductGroup وترميز التنويعات.
- Product variant structured data (ProductGroup, Product) — المرجع الرسمي لخصائص
ProductGroupوhasVariantوisVariantOfوvariesByوproductGroupIDوقاعدة عنوان schema.org الكامل ونمطي الصفحة الواحدة والصفحات المتعددة. - إضافة دعم البيانات المنظمة لتنويعات المنتجات (مدونة فبراير 2024) — إعلان الإطلاق.
- Intro to Product structured data — مرجع Product العام؛ أما ProductGroup فله الصفحة السابقة.
- Google Merchant Center — Item group ID [item_group_id] — سمة الخلاصة لتجميع التنويعات.
Bing / Microsoft
- Bing Webmaster Tools — ترميز موقعك بالبيانات المنظمة — عرض عام للصيغ المدعومة بلا محتوى خاص بـProductGroup.
schema.org
- schema.org/ProductGroup — صفحة المفردات الرسمية للخصائص والوراثة.
اقتباسات من المصدر
تصريحات مسجلة من Google وتقارير عن Microsoft. تقفز الروابط العميقة إلى النص المقتبس حيث يتيحه المصدر.
وثائق Google — الغرض والأهلية
- “To help Google better understand which products are variations of the same parent product, use the ProductGroup class with associated properties variesBy, hasVariant, and productGroupID to group such variants together.” (ترجمة) «لمساعدة Google على فهم المنتجات التي تمثل تنويعات للمنتج الأب نفسه، استخدم ProductGroup وخصائصه لتجميعها». انتقل إلى الاقتباس
- “Many types of products such as apparel, shoes, furniture, electronic devices, and luggage are sold in different variations (for example various sizes, colors, materials, or patterns).” (ترجمة) «تباع أنواع كثيرة من المنتجات، مثل الملابس والأحذية والأثاث والأجهزة والحقائب، بتنويعات مختلفة كالمقاسات والألوان والمواد والأنماط». انتقل إلى الاقتباس
- “Adding this markup also makes your products eligible for display with variant information in merchant listing experiences.” (ترجمة) «تجعل إضافة هذا الترميز المنتجات مؤهلة للعرض مع معلومات التنويعات في تجارب قوائم التجار». انتقل إلى الاقتباس
وثائق Google — الخصائص
variesBy: “Aspects by which the variants in the ProductGroup vary… Reference these variant-identifying properties through their full Schema.org URL.” (ترجمة) «الجوانب التي تختلف فيها تنويعات ProductGroup، ويجب الإشارة إلى خصائص تعريفها بعناوين Schema.org الكاملة». انتقل إلى الاقتباسhasVariant: “A nested Product property that is one of the variants of the ProductGroup property, if applicable. A ProductGroup typically has multiple nested variant Product properties.” (ترجمة) «خاصية Product متداخلة تمثل إحدى تنويعات ProductGroup، وعادةً تضم المجموعة عدة تنويعات متداخلة». انتقل إلى الاقتباسisVariantOf: “Alternatively, a variant Product property can reference back to its parent ProductGroup using the isVariantOf property on the Product property.” (ترجمة) «يمكن بدلًا من ذلك أن تشير تنويعة Product إلى مجموعة ProductGroup الأب باستخدام خاصية isVariantOf». انتقل إلى الاقتباسproductGroupID: “The identifier of the product group (also known as the parent sku). This identifier must be provided for the ProductGroup property or, alternatively, using inProductGroupWithID property for variants.” (ترجمة) «معرّف مجموعة المنتج، المعروف أيضًا باسم SKU الأب، ويجب توفيره للمجموعة أو للتنويعات عبر inProductGroupWithID». انتقل إلى الاقتباس- On matching IDs: “If you provide the identifier for both the ProductGroup property and its variant Product properties, they must match.” (ترجمة) «إذا قدمت المعرّف للمجموعة ولتنويعات Product معًا، فيجب أن تتطابق القيم». انتقل إلى الاقتباس (ترجمة) تحدد الاقتباسات معنى variesBy ووجوب عناوين Schema.org الكاملة، ودور hasVariant وisVariantOf، وتعريف productGroupID ووجوب تطابق المعرّفات.
وثائق Google — المعرّفات وعناوين URL
- “Each variant must have a unique ID in its corresponding structured data markup (for example, using the sku or gtin properties).” (ترجمة) «يجب أن يكون لكل تنويعة معرّف فريد في بياناتها المنظمة، مثل sku أو gtin». انتقل إلى الاقتباس
- “The site must have the ability to preselect each variant directly with a distinct URL (using URL query parameters), for example https://www.example.com/winter_coat/size=small&color=green.” (ترجمة) «يجب أن يتيح الموقع تحديد كل تنويعة مسبقًا عبر عنوان URL مميز، ويمكن استخدام معاملات الاستعلام». انتقل إلى الاقتباس
- On dynamic markup: “Be aware that dynamically-generated markup can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price.” (ترجمة) «قد يجعل الترميز المولّد ديناميكيًا زحف Shopping أقل تواترًا وموثوقية، وهو خطر على بيانات السعر والتوفر سريعة التغير». انتقل إلى الاقتباس (ترجمة) يجب أن يكون لكل تنويعة معرّف فريد وURL مميز قابل للتحديد المسبق، وقد يقلل الترميز الديناميكي تواتر زحف Shopping وموثوقيته.
Google Merchant Center — item_group_id
- “Use the item group ID [item_group_id] attribute to group product variants in your product data.” (ترجمة) «استخدم سمة item_group_id لتجميع تنويعات المنتجات في بيانات المنتج». انتقل إلى الاقتباس (ترجمة) استخدم سمة item_group_id لتجميع تنويعات المنتجات في بيانات المنتج.
John Mueller، Google (عبر إعادة Search Engine Roundtable الحرفية لمنشوره في LinkedIn في فبراير 2024)
- “Product variants in ecommerce are complicated - what do you do with t-shirts in different colors? Folks here Google worked hard to come up with structured data markup & support for it… The changes are also live in the Rich Results Testing tool and in the Search Console reports for these types.” (ترجمة) «تنويعات التجارة الإلكترونية معقدة؛ وقد عمل فريق Google على ترميز البيانات المنظمة ودعمه، وأصبحت التغييرات متاحة في اختبار النتائج الغنية وتقارير Search Console». اقرأ التغطية (ترجمة) تنويعات التجارة الإلكترونية معقدة، وقد عمل فريق Google على ترميز البيانات المنظمة ودعمه، وأصبحت التغييرات متاحة في Rich Results Test وتقارير Search Console.
Fabrice Canel، Microsoft Bing (منقول، لا وثيقة أولية)
- رداً على سؤال دعم Bing لـ
schema.org/ProductGroup، قال Canel إنه غير مدعوم بعد، لكنه “on our radar” والفريق “closely monitoring its adoption.” (ترجمة) إنه على رادارنا ونراقب اعتماده عن كثب. التغطية منقول عبر تغطية Search Engine Roundtable لحوار في X في سبتمبر 2024؛ تقرير ثانوي لتصريح أولي، لا صفحة توثيق من Microsoft.
مثال JSON-LD كامل لـProductGroup
مثال Google الرسمي مختصر. فيما يلي شكل أكمل لصفحة واحدة يستخدم hasVariant المتداخل مع تنويعتين وoffers وgtin وimage وbrand. لاحظ عناوين schema.org الكاملة في variesBy والنص العادي في productGroupID.
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"name": "Wool winter coat",
"description": "A warm wool winter coat, available in several sizes and colors.",
"url": "https://www.example.com/winter-coat",
"brand": {
"@type": "Brand",
"name": "ExampleCo"
},
"productGroupID": "44E01",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
],
"hasVariant": [
{
"@type": "Product",
"sku": "44E01-S-GRN",
"gtin": "0123456789012",
"name": "Wool winter coat, small, green",
"image": "https://www.example.com/photos/44E01-S-GRN.jpg",
"size": "small",
"color": "Green",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/winter-coat?size=small&color=green",
"price": "119.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"sku": "44E01-L-BLU",
"gtin": "0123456789029",
"name": "Wool winter coat, large, blue",
"image": "https://www.example.com/photos/44E01-L-BLU.jpg",
"size": "large",
"color": "Blue",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/winter-coat?size=large&color=blue",
"price": "119.99",
"priceCurrency": "USD",
"availability": "https://schema.org/OutOfStock"
}
}
]
}لاحظ ما يلي:
- لا يحمل
ProductGroupoffers/price؛ فالسعر علىOfferلكل تنويعة. - لكل تنويعة
skuفريد وgtinوimageوavailabilityوقيمsize/colorالمطابقة لـvariesBy. - التوفر لكل تنويعة: المعطف الأخضر الصغير
InStockوالأزرق الكبيرOutOfStock.
النسخة متعددة الصفحات (المسطحة)
إذا كان لكل تنويعة URL مستقل فلا تُضمّنها؛ تحمل كل صفحة Product كاملاً يشير إلى الأب بـisVariantOf وإلى معرّف المجموعة بـinProductGroupWithID:
{
"@context": "https://schema.org/",
"@type": "Product",
"sku": "44E01-S-GRN",
"gtin": "0123456789012",
"name": "Wool winter coat, small, green",
"image": "https://www.example.com/photos/44E01-S-GRN.jpg",
"size": "small",
"color": "Green",
"inProductGroupWithID": "44E01",
"isVariantOf": {
"@type": "ProductGroup",
"productGroupID": "44E01",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
]
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/winter-coat/small-green",
"price": "119.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}تكرر كل صفحة هذا النمط بمعرّفاتها وعرضها، وتجمعها قيمة productGroupID نفسها ("44E01"). حافظ عليها متطابقة في كل الصفحات ومتوافقة مع item_group_id في Merchant Center.
هل تستخدم ProductGroup، وأي نمط؟
اتبع الشجرة للوصول إلى قرار الترميز المناسب لإعدادك.
ProductGroup or plain Product — and nested or flat?
أخطاء ProductGroup الشائعة
المزالق والحقيقة المقابلة لها:
| الخطأ | الحقيقة |
|---|---|
اعتبار ProductGroup بديلاً لـProduct | إنه غلاف أب؛ وتبقى كل تنويعة Product كاملاً بخصائص sku/gtin. لا تضع offers/price واحداً على المجموعة. |
كتابة variesBy كسلاسل "color" و"size" قصيرة | يجب استخدام https://schema.org/color. قد تمر السلاسل في التحقق ولا تعمل عملياً؛ وهذا سلوك اختباري لا توثيق Google. |
افتراض مزامنة productGroupID وitem_group_id | نظامان منفصلان؛ استخدم قيماً متطابقة عمداً. |
جعل productGroupID عنوان URL | هو معرّف نصي عادي مثل "44E01". |
| تجاهل خطأ في معرّف تنويعة | قد تسقط من المجموعة بلا خطأ وفق اختباراتي؛ وتوثق Google وجوب التطابق فقط. |
| ترميز تنويعة بلا URL مميز | يجب أن تكون قابلة للتحديد المسبق عبر URL، ويمكن استخدام معاملات الاستعلام. |
| افتراض دعم Bing | لا يستهلكه Bing؛ استخدم itemGroupId في خلاصة Microsoft Advertising. |
| توقع تحسين الترتيب | إنه للفهم والأهلية، لا عامل ترتيب ولا ضمان عرض. |
| الثقة بأن «صالح» تعني «يعمل» | افحص عناوين variesBy وتطابق المعرّفات يدوياً. |
قائمة فحص تنفيذ ProductGroup
نفّذ البنود بالترتيب؛ فكل بند يعالج مزلقاً محدداً أعلاه.
- حدد النمط أولاً: عنوان واحد →
hasVariantمتداخل؛ عنوان لكل تنويعة →isVariantOf+inProductGroupWithIDمسطح. - أبقِ كل تنويعة
Productكاملاً بخصائصsku/gtinوimageوoffersوavailability؛ ولا يحملProductGroupسعراً واحداً منprice. - اكتب
variesByبعناوينhttps://schema.org/colorوhttps://schema.org/sizeكاملة لا"color"أو"size". - اجعل
productGroupIDنصاً عادياً مثل"44E01"لا URL. - طابق
productGroupIDأوinProductGroupWithIDفي كل التنويعات وافحص أخطاء القوالب. - امنح كل تنويعة معرّفاً فريداً عبر
skuأوgtin. - وفّر URL مميزاً قابلاً للتحديد المسبق لكل تنويعة، مثل
?size=small&color=green. - وحّد القيمة مع
item_group_idفي Merchant Center؛ فلا مزامنة تلقائية. - اعرض
priceوavailabilityمن الخادم حيث أمكن. - تحقق آلياً ثم يدوياً من variesBy والمعرّفات.
- عالج Bing عبر
itemGroupIdفي خلاصة Microsoft Advertising لا ProductGroup.
مرجع ProductGroup السريع
productGroupID مقابل item_group_id مقابل inProductGroupWithID
| الحقل | موضعه | التنسيق | ما يدعمه |
|---|---|---|---|
productGroupID | JSON-LD على ProductGroup أو داخل isVariantOf | نص عادي مثل "44E01" | فهم البحث العضوي |
inProductGroupWithID | JSON-LD على Product في النمط المسطح | نص يطابق productGroupID | رابط التنويعة بالمجموعة |
item_group_id | خلاصة Google Merchant Center | نص عادي | إعلانات Shopping والقوائم المجانية |
لا تجري مزامنة تلقائية بين الأنظمة؛ استخدم القيمة نفسها في الحقول الثلاثة كي يتفق البحث العضوي وShopping على وحدات SKU التابعة للمجموعة.
النمط المتداخل مقابل المسطح
متداخل (hasVariant) | مسطح (isVariantOf + inProductGroupWithID) | |
|---|---|---|
| متى يستخدم | كل التنويعات في URL واحد | لكل تنويعة URL مستقل |
| URL أساسي للمجموعة | واحد (url على ProductGroup) | لا يوجد عنوان واحد للمجموعة |
| موضع خصائص المجموعة | على ProductGroup الذي يضم كل Product | تتكرر في كل صفحة عبر isVariantOf |
| رابط التنويعة بالأب | داخل hasVariant | isVariantOf + inProductGroupWithID |
قواعد تنسيق الخصائص
| الخاصية | التنسيق الصحيح | الخطأ |
|---|---|---|
variesBy | URL كامل: https://schema.org/color | "color"؛ قد ينجح التحقق ولا يعمل التجميع في الاختبار |
productGroupID | SKU أب نصي: "44E01" | URL |
sku / gtin | فريد لكل تنويعة | قيمة مشتركة |
اكتشف الخطأ الأشهر: سلاسل variesBy القصيرة
أكثر الأخطاء شيوعاً قيم variesBy التي تحذف بادئة schema.org الكاملة. قد ينجح تحقق JSON-LD بلا خطأ، وفي اختباراتي لا يعمل التجميع. تلتقط المقاطع التالية الخطأ مباشرةً.
تعبير نمطي يرصد مصفوفة variesBy السيئة
شغّل هذا على مصدر JSON-LD المستخرج للعثور على قيم ليست عناوين schema.org كاملة:
"variesBy"\s*:\s*\[\s*((?:"(?!https://schema\.org/)[^"]*"\s*,?\s*)+)\]- يطابق
"variesBy"\s*:\s*\[بداية الخاصية والقوس. - تلتقط
(?:"(?!https://schema\.org/)[^"]*"\s*,?\s*)+السلاسل التي تستبعدها(?!https://schema\.org/)، مثل"color"و"size". - ظهور تطابق يعني ضرورة الإصلاح.
مقتطف وحدة تحكم Chrome DevTools لتدقيق JSON-LD الحي
الصقه في Console بصفحة تتوقع وجود ProductGroup فيها. يجمع كتل JSON-LD وكائنات ProductGroup ويفحص المجموعات، بما فيها المتداخلة تحت isVariantOf، ويبلغ عن قيم variesBy غير الكاملة:
(function () {
const blocks = [...document.querySelectorAll('script[type="application/ld+json"]')];
const findings = [];
blocks.forEach((block, i) => {
let data;
try {
data = JSON.parse(block.textContent);
} catch (e) {
findings.push(`Block ${i}: invalid JSON (${e.message})`);
return;
}
const items = Array.isArray(data) ? data : [data];
items.forEach((item) => {
const groups = [];
if (item['@type'] === 'ProductGroup') groups.push(item);
if (item.isVariantOf && item.isVariantOf['@type'] === 'ProductGroup') groups.push(item.isVariantOf);
groups.forEach((g) => {
const bad = (g.variesBy || []).filter((v) => !String(v).startsWith('https://schema.org/'));
if (bad.length) findings.push(`Block ${i}: bad variesBy values -> ${JSON.stringify(bad)}`);
if (g.productGroupID && /^https?:\/\//.test(g.productGroupID)) {
findings.push(`Block ${i}: productGroupID looks like a URL, should be plain text -> ${g.productGroupID}`);
}
});
});
});
console.log(findings.length ? findings.join('\n') : 'No ProductGroup issues found in this page\'s JSON-LD.');
})();XPath في Screaming Frog لاستخراج productGroupID
استخدم استخراجاً مخصصاً لسحب قيمة productGroupID من script ثم قارن القيم بين عناوين التنويعات:
//script[@type="application/ld+json"]استخرج النص الكامل لكل عقدة مطابقة، ثم تأكد من تطابق productGroupID وinProductGroupWithID في كل URL تابع للمجموعة. قد تعني قيمة مختلفة أن الصفحة خرجت من المجموعة بلا خطأ، وفق الاختبار؛ توثق Google وجوب التطابق لا سلوك المخالفة.
اختبر نفسك: مخطط ProductGroup
خمسة أسئلة سريعة عن ProductGroup وخصائصه ومزالقه. اختر إجابة لكل سؤال ثم تحقق.
موارد تستحق وقتك
كتاباتي ذات الصلة
لم أنشر سابقاً مقالاً خاصاً بمخطط ProductGroup؛ وهذا هو الدليل المخصص. وأقرب كتاباتي التي تدعمه:
- تستخدم Google نحو 40 إشارة للتوحيد الأساسي — ما معنى ذلك؟ — مبدأ اتساق الإشارات الذي يدعم تطابق
productGroupIDوitem_group_id. - The Myth of the Duplicate Content Penalty — لماذا يعد جمع التنويعات كخيارات لعنصر واحد نموذجاً أفضل من الخوف من عقوبة محتوى مكرر غير موجودة.
أما قرار منح التنويعة URL مستقلاً واختلاف Shopify وWooCommerce وBigCommerce وMagento فيغطيه دليل SEO لتنويعات المنتجات. وللأساسيات راجع محوري schema markup وstructured data ودليل Product schema.
من أنحاء المجال
- Product variant structured data — مرجع Google الرسمي.
- إضافة دعم البيانات المنظمة لتنويعات المنتجات — إعلان فبراير 2024.
- Item group ID [item_group_id] — سمة الخلاصة.
- دعم جديد في بحث Google للبيانات المنظمة لتنويعات المنتجات — تغطية الإطلاق ومنشور John Mueller.
- Bing لا يدعم ترميز ProductGroup — تصريح Fabrice Canel.
- Google تضيف دعم تنويعات المنتجات — تغطية الإعلان.
- Google تعرض مزيدًا من تنويعات المنتجات بترميز جديد — تغطية Search Engine Journal.
- Schema piece: ProductGroup — أمثلة Yoast.
- How to implement ProductGroup schema — شرح تنفيذي.
- schema.org/ProductGroup — المفردات الرسمية.
سجل التغييرات
تم التحديث في 13 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 10 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 20 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 18 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.