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, но это, вероятно, слишком сложно для многих потребителей, поэтому явное указание может помочь.)

Другие вопросы по тегам