重复 schema/structured 数据标记?

Duplicate schema/structured data markup?

这个结构会不会有问题?

<script type="application/ld+json">
{  
   "@context":"http://schema.org",
   "@type":"WebPage",
   "name":"Postcards",
   "url":"https://local.mysite.com/postcards.html",
   "breadcrumb":{  
      "@type":"BreadcrumbList",
      "itemListElement":[  
         {  
            "@type":"ListItem",
            "position":1,
            "item":{  
               "@id":"https://local.mysite.com",
               "name":"My Site"
            }
         },
         {  
            "@type":"ListItem",
            "position":2,
            "item":{  
               "@id":"https://local.mysite.com/postcards.html",
               "name":"Postcards"
            }
         }
      ]
   },
   "mainEntity":{  
      "@type":"WebPageElement",
      "offers":{  
         "@type":"Offer",
         "itemOffered":[  
            {  
               "@type":"Product",
               "name":"Christmas Postcards",
               "url":"https://local.mysite.com/christmas-postcards.html"
            },
            {  
               "@type":"Product",
               "name":"Getaway Postcards",
               "url":"https://local.mysite.com/getaway-postcards.html"
            }
         ]
      }
   }
}</script>

<script type="application/ld+json">
{  
   "@context":"http://schema.org",
   "@type":"WebPage",
   "name":"Postcards",
   "url":"https://local.mysite.com/postcards.html",
   "breadcrumb":{  
      "@type":"BreadcrumbList",
      "itemListElement":[  
         {  
            "@type":"ListItem",
            "position":1,
            "item":{  
               "@id":"https://local.mysite.com",
               "name":"My Site"
            }
         },
         {  
            "@type":"ListItem",
            "position":2,
            "item":{  
               "@id":"https://local.mysite.com/postcards.html",
               "name":"Postcards"
            }
         }
      ]
   },
   "mainEntity":{  
      "@type":"WebPageElement",
      "offers":{  
         "@type":"Offer",
         "itemOffered":[  
            {  
               "@type":"Product",
               "name":"Mini Postcards",
               "url":"https://local.mysite.com/mini-postcards.html"
            },
            {  
               "@type":"Product",
               "name":"Summer Postcards",
               "url":"https://local.mysite.com/summer-postcards.html"
            }
         ]
      }
   }
}</script>

单个类别页面可能有 "duplicate" 标记的原因是该页面可能使用多个产品模板。

在当前的实现中,标记是在产品模板中动态构建的。例如,如果单个类别页面有两个产品模板,标记将被重建两次,但包含不同的 WebPageElement

这会产生不好的结果吗?我检查了 Google 的测试工具,它没有给我任何错误或警告。

多个节点,同一个实体

如果您有多个节点代表页面上的同一实体,最佳做法是为这些节点提供相同的 URI as identifier

使用 JSON-LD,您可以提供带有 @id 的标识符。

所以

  • 您的 WebPage 项都可以获得 "@id": ""(对于当前的 URL;最好在此处指定您的规范 URL),
  • 您的 BreadcrumbList 项都可以获得 "@id": "#breadcrumbs",
  • 您的 ListItem-1 项都可以获得 "@id": "#breadcrumbs-1",并且
  • 您的 ListItem-2 件物品都可以获得 "@id": "#breadcrumbs-2"

这样,Google 的 SDTT 将只显示这些项目中的每一个,因为它现在知道它们是关于同一个实体的。

引用节点而不是复制它们

@id 还允许您引用节点而不是嵌入它们(从而复制它们的数据)。 See an example.

在您的情况下,这样做的好处是您不必一开始就复制 WebPage/BreadcrumbList/ListItem 节点。您将指定这些节点一次,然后每个产品模板将仅输出 Offer/Product 节点。这些节点可以包括(反向)对 WebPage/etc 的引用。 (您可能更容易实施),或 WebPage/等。可以引用这些节点。