Schema.org для небольшой компании: "Организация" и "Веб-сайт" в JSON-LD на каждой странице, Микроданные для всего остального
Мне интересно, как построить мой Schema.org. Я использую смешанный подход с элементами JSON-LD и Microdata. Я не использую их, чтобы описать одну вещь двумя разными способами. Мне нужны некоторые рекомендации о том, что включить.
На данный момент у меня есть описание нашей компании на каждой странице:
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Organization",
"url" : "https://our.url",
"logo" : "https://our.url/logo2.svg",
"contactPoint" : [{
"@type" : "ContactPoint",
"telephone" : "",
"contactType" : "Customer Service"
}],
"sameAs" :[],
"name" : "Our Small Company"
}
</script>
Затем у меня есть небольшое описание нашей веб-страницы в JSON-LD:
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "WebSite",
"url" : "http://our.url",
"potentialAction" : {
"@type" : "SearchAction",
"target" : "http://our.url/search",
"query-input" : "required name=search_term_string"
}
}
</script>
И отсюда после того, как у меня есть микроданные для всех элементов. Например, результаты поиска: ItemList с продуктами и т. Д.
Кажется ли это хорошо? Должен ли я включать описание компании JSON-LD на каждой странице или только на главной странице или нет вообще? Нужно ли копать и предоставлять более конкретное описание для каждой страницы (например, страница поиска может быть SearchResultsPage
вместо WebSite
)?
1 ответ
Предоставление некоторых данных в JSON-LD и некоторых данных в микроданных должно быть в порядке (но если оба они относятся к одним и тем же объектам, вы должны обозначить это явно). Это может стать проблематичным, если вы хотите соединить сущности.
соединительный WebSite
а также Organization
Говоря о подключении сущностей, я бы рекомендовал сделать это для вашего WebSite
а также Organization
Предметы. Например, вы могли бы заявить, что ваш Organization
это publisher
из WebSite
и / или что WebSite
является about
Organization
,
Есть два способа добиться этого в JSON-LD:
- использовать один
script
элемент и вставлятьOrganization
узел как значение - Оставь оба
script
элементы ( или одинscript
элемент с@graph
), дать каждому узлу URI (с@id
) и ссылаться на эти URI как на значения
Первый, вероятно, имеет лучшую поддержку потребителей, последний делает его более подходящим для предоставления нескольких свойств (например, author
а также publisher
) без необходимости дублировать все данные (но вы также можете использовать смешанный способ).
Пример по первому способу:
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "WebSite",
"publisher" : {
"@type" : "Organization"
}
}
</script>
Пример для последнего способа:
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Organization",
"@id" : "/#org"
}
</script>
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "WebSite",
"publisher" : {"@id": "/#org"},
"about" : {"@id": "/#org"},
"mainEntity" : {"@id": "/#org"},
"author" : {"@id": "/#org"}
}
</script>
(где /#org
это URI, представляющий саму организацию, а не просто страницу / сайт о или организации)
обеспечение WebPage
Вы можете предоставить WebPage
пункт для каждой страницы. Это может быть полезно во многих ситуациях. Но, как и в случае с любым другим типом, здесь нет никаких требований.
Если вы хотите предоставить такой элемент, используя более конкретные типы (например, SearchResultsPage
) где это применимо, конечно, предпочтительнее. Но если это невозможно, используя WebPage
везде лучше, чем не все.
В вашем случае вам придется решить, в каком синтаксисе его предоставлять. JSON-LD позволит вам предоставить его как hasPart
из WebSite
согласно первому способу, как объяснено выше. Но это затруднит подключение WebPage
с основной сущностью вашей страницы (которую вы указываете в микроданных) через mainEntity
имущество. Поскольку я думаю, что это важное соотношение, я бы уточнил WebPage
в микроданных и подключите WebSite
и WebPage
через URI.
Вы можете сделать это из JSON-LD WebSite
узел с:
"hasPart" : {"@id": "/current-page.html"}
(Вы также можете сделать это из WebPage
Микроданные с обратным свойством isPartOf
, но тогда вам придется предоставить @id
для WebSite
.)
Имея WebPage
в микроданных, например, на body
элемент, он позволяет вам обеспечить mainEntity
имущество:
<body itemscope itemtype="http://schema.org/WebPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/Article">
<!-- for an article that is the main content of the page -->
</article>
</body>
<body itemscope itemtype="http://schema.org/SearchResultsPage">
<ul itemprop="mainEntity" itemscope itemtype="http://schema.org/ItemList">
<!-- for a search result list that is the main content of the page -->
</ul>
</body>
соединительный WebPage
а также Organization
Если вы предпочитаете, вы можете прямо указать, что Organization
это publisher
/ author
/так далее. из WebPage
, тоже:
<link itemprop="author publisher" href="/#org" />
(Это может быть выведено, потому что вы заявляете это для WebSite
и каждый WebPage
подключен через hasPart
, но это, вероятно, слишком сложно для многих потребителей, поэтому явное указание может помочь.)