如何正确使用 mainEntityOfPage 作为博客详细信息页面?

How to properly use mainEntityOfPage for a blog details page?

我已经阅读了几个关于 mainEntityOfPage 是什么以及如何使用它的答案,每一个都比上一个更令人困惑。

所以我的问题很具体;我有一个包含博客部分的网站。在博客详细信息页面上,我想使用 JSON-LD 格式的结构化数据。

我的问题:我的 mainEntityOfPageWebPage 还是 BlogPosting

我应该使用这个吗:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebPage",
    "mainEntityOfPage": {
        "@type": "BlogPosting",
    }
}
</script>

或者这个:

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "BlogPosting",
    "mainEntityOfPage": {
        "@type": "WebPage",
    }
}
</script>

我认为 mainEntityOfPageBlogPosting,所以第一个例子,是吗?还是我还是错了?

mainEntityOfPage的定义是:

Indicates a page (or other CreativeWork) for which this thing is the main entity being described.

博客 post 页面上的主要实体是博客 post,而不是页面。所以,第二个片段是正确的:

{
  "@context": "http://schema.org",
  "@type": "BlogPosting",
  "mainEntityOfPage": {
    "@type": "WebPage"
  }
}

如果你想使用第一个片段(这样 WebPage 就是顶级项目),你必须使用 mainEntity 而不是 mainEntityOfPage:

{
  "@context": "http://schema.org",
  "@type": "WebPage",
  "mainEntity": {
    "@type": "BlogPosting"
  }
}

注1:mainEntitymainEntityOfPage是逆属性,所以这两个片段的意思是一样的。

注2:读作"is the mainEntityOfPage"和"has mainEntity".

可能会有所帮助

注意 3:您可以在博客 post 页上使用 ItemPage(而不是 WebPage)。