Schema.org 如何使用跨站点结构化数据连接主页和博客?
How to connect homepage and blog using cross-site structured data with Schema.org?
我有一个网站、一个博客和几个社交媒体资料。我想用 Schema.org 解释这些在线存在与搜索引擎之间的关系。
根据 Google 上的文档和示例,我知道以下代码将网站和社交媒体资料与我的名字联系起来:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Person",
"name": "your name",
"url": "http://www.your-site.com", // <= homepage
"sameAs": [
"http://www.facebook.com/your-profile",
"http://instagram.com/yourProfile",
"http://www.linkedin.com/in/yourprofile",
"http://plus.google.com/your_profile"
]
}
</script>
但是声明博客的正确方法是什么?
Schema.org 上有与博客相关的类型和属性,但这些类型和属性用于标记与博客本身相关的博客内容。我想要的是在我个人网站的主页上标记博客与其他在线网站的关系。我该怎么做?
我好像不能用url
,因为那是"URL of the item",也就是我的个人主页;我不能使用 sameAs
,因为那是 "URL of a reference Web page that unambiguously indicates the item's identity. E.g. the URL of the item's Wikipedia page, Freebase page, or official website." 根据 Google,社交媒体链接必须放在这里。
另一方面,sameAs
的定义在 schema.org 上继续包括“[例如] 项目维基百科页面、Freebase 页面的 URL,或官方网站”。后者向我表明我可以(或应该)将整个架构放在我的博客上,博客地址为 url
,我的主页地址为 sameAs
,如下所示:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Person",
"name": "your name",
"url": "http://my.blog.com", // <= blog
"sameAs": [
"http://www.facebook.com/your-profile",
"http://instagram.com/yourProfile",
"http://www.linkedin.com/in/yourprofile",
"http://plus.google.com/your_profile",
"http://www.my-website.com", // <= homepage
]
}
</script>
但是我找不到这方面的任何例子,也找不到其他方法。
我认为没有理由以不同于处理主网站的方式来处理博客(如果博客没有集成到您的主站点中,它也是一种网站),假设两者都是个人网站(即,以某种方式代表你),你是否使用 。
还有另一种方法,这种方法允许您提供有关 URL 的数据(例如,使关系明确):
WebSite
(as well as Blog
) 允许您引用具有以下属性的 Person
项目:
如果您不想为 WebSite
/Blog
提供顶级对象,您可以使用 JSON-LD 的 @reverse
关键字:
{
"@context": "http://schema.org",
"@type": "Person",
"name": "John Doe",
"@reverse": {
"author":
[
{
"@type": "WebSite",
"url": "https://example.com/"
},
{
"@type": ["Blog", "WebSite"],
"url": "https://blog.example.com/"
}
]
}
}
但是使用多个顶级对象(例如,), each with its @id
,更加灵活。
我有一个网站、一个博客和几个社交媒体资料。我想用 Schema.org 解释这些在线存在与搜索引擎之间的关系。
根据 Google 上的文档和示例,我知道以下代码将网站和社交媒体资料与我的名字联系起来:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Person",
"name": "your name",
"url": "http://www.your-site.com", // <= homepage
"sameAs": [
"http://www.facebook.com/your-profile",
"http://instagram.com/yourProfile",
"http://www.linkedin.com/in/yourprofile",
"http://plus.google.com/your_profile"
]
}
</script>
但是声明博客的正确方法是什么?
Schema.org 上有与博客相关的类型和属性,但这些类型和属性用于标记与博客本身相关的博客内容。我想要的是在我个人网站的主页上标记博客与其他在线网站的关系。我该怎么做?
我好像不能用url
,因为那是"URL of the item",也就是我的个人主页;我不能使用 sameAs
,因为那是 "URL of a reference Web page that unambiguously indicates the item's identity. E.g. the URL of the item's Wikipedia page, Freebase page, or official website." 根据 Google,社交媒体链接必须放在这里。
另一方面,sameAs
的定义在 schema.org 上继续包括“[例如] 项目维基百科页面、Freebase 页面的 URL,或官方网站”。后者向我表明我可以(或应该)将整个架构放在我的博客上,博客地址为 url
,我的主页地址为 sameAs
,如下所示:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Person",
"name": "your name",
"url": "http://my.blog.com", // <= blog
"sameAs": [
"http://www.facebook.com/your-profile",
"http://instagram.com/yourProfile",
"http://www.linkedin.com/in/yourprofile",
"http://plus.google.com/your_profile",
"http://www.my-website.com", // <= homepage
]
}
</script>
但是我找不到这方面的任何例子,也找不到其他方法。
我认为没有理由以不同于处理主网站的方式来处理博客(如果博客没有集成到您的主站点中,它也是一种网站),假设两者都是个人网站(即,以某种方式代表你),你是否使用
还有另一种方法,这种方法允许您提供有关 URL 的数据(例如,使关系明确):
WebSite
(as well as Blog
) 允许您引用具有以下属性的 Person
项目:
如果您不想为 WebSite
/Blog
提供顶级对象,您可以使用 JSON-LD 的 @reverse
关键字:
{
"@context": "http://schema.org",
"@type": "Person",
"name": "John Doe",
"@reverse": {
"author":
[
{
"@type": "WebSite",
"url": "https://example.com/"
},
{
"@type": ["Blog", "WebSite"],
"url": "https://blog.example.com/"
}
]
}
}
但是使用多个顶级对象(例如,@id
,更加灵活。