Обзор структуры фида

Канал Media Actions — это объект JSON, содержащий коллекцию сущностей. Сущность — это объект Schema.org , который представляет элемент в вашем каталоге: эпизод сериала, сериал, фильм, песню, альбом и т. д.

Рисунок 1. Структуры каналов действий Watch Actions и Listen Actions.

Структура корма

Действия просмотра и действия прослушивания имеют разные структуры каналов.

Действия наблюдения имеют следующую иерархию:
Действия прослушивания имеют следующую иерархию:

Конверт канала данных

Конверт канала данных — это объект верхнего уровня в канале Media Actions. Объект содержит массив объектов разметки контента (сущностей), которые представляют весь контент вашего каталога.

Конверт канала данных поддерживает следующие свойства:

Свойство Тип Описание
@context URL-адрес Обязательно — установите http://schema.org
@type Текст Обязательно — установите DataFeed .
dateModified ДатаВремя Обязательно — дата и время последнего изменения фида в формате ISO 8601 (включая часовой пояс).
dataFeedElement Вещь Обязательнообъекты вашего медиа-каталога.

Шаблон конверта канала данных

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    { <CONTENT MARKUP OBJECT 01> },
    { <CONTENT MARKUP OBJECT 02> },
    { <CONTENT MARKUP OBJECT 03> },
    ...
  ]
}

Разметка контента

Объект разметки контента представляет собой единый объект в вашем каталоге: фильм, телесериал, сериал, песню, альбом, радиостанцию ​​и т. д. Объект содержит идентификатор контента и канонический URL-адрес и помогает описать контент с помощью метаданные .

Шаблон разметки контента

Объект разметки контента может иметь массив объектов разметки Action , что позволяет связать контент с несколькими объектами разметки Action. Например, контент может иметь разные объекты разметки действий для каждого региона.

{
   "@context": ["http://schema.org", {"@language": "en"}],
   "@type": "Movie",
   "@id": "http://www.example.com/my_favorite_movie",
   "url": "http://www.example.com/my_favorite_movie",
   "name": "My Favorite Movie",
   "potentialAction": [
     { <ACTION MARKUP OBJECT 01> },
     { <ACTION MARKUP OBJECT 02> }
   ],
   ...
}

Разметка действий

Объект разметки Action описывает глубокую ссылку , которая приводит пользователей к содержимому, и уровень доступа, необходимый для этого содержимого. Объект является свойством ( potentialAction ) объекта разметки контента .

Есть два способа указать ограничения доступа:

Шаблон разметки действий

Если контент имеет несколько глубоких ссылок, объект разметки Action включает в себя несколько целевых объектов . Например, глубокая ссылка на контент для iOS может отличаться от глубокой ссылки для Android. Кроме того, если существуют разные ограничения доступа в зависимости от регионов и периодов времени, объект разметки действия может иметь несколько объектов спецификации доступа к действию или объектов предложений, как показано в шаблонах ниже.

Шаблон объекта разметки действий для Watch Actions:

"potentialAction": {
  "@type": "WatchAction",
  "target": [
    { <TARGET OBJECT 01> },
    { <TARGET OBJECT 02> }
  ],
  "actionAccessibilityRequirement": [
    { <ACTION ACCESSIBILITY OBJECT 01> },
    { <ACTION ACCESSIBILITY OBJECT 02> }
  ]
}

Шаблон объекта разметки действий для действий прослушивания:

"potentialAction": {
  "@type": "ListenAction",
  "target": [
    { <TARGET OBJECT 01> },
    { <TARGET OBJECT 02> }
  ],
  "expectsAcceptanceOf": [
    { <OFFER OBJECT 01> },
    { <OFFER OBJECT 02> }
  ]
}

Цель

Целевой объект обеспечивает сопоставление глубокой ссылки с различными платформами Google . Объект является свойством ( target ) объекта разметки Action .

Целевой пример

Если контент имеет несколько глубоких ссылок на основе платформ, создайте несколько целевых объектов, чтобы обеспечить разные сопоставления. Например, глубокая ссылка на контент для Chromecast может отличаться от глубоких ссылок на других платформах, как показано в примере ниже.

Пример целевого объекта (базовый):

"target": {
  "@type": "EntryPoint",
  "urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
  "actionPlatform": [
    "http://schema.org/DesktopWebPlatform",
    "http://schema.org/MobileWebPlatform",
    "http://schema.org/AndroidPlatform",
    "http://schema.org/AndroidTVPlatform",
    "http://schema.org/IOSPlatform",
    "http://schema.googleapis.com/GoogleVideoCast"
  ]
}

Пример целевого объекта с двумя глубокими ссылками:

"target": [
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
    "actionPlatform": [
      "http://schema.org/DesktopWebPlatform",
      "http://schema.org/MobileWebPlatform",
      "http://schema.org/AndroidPlatform",
      "http://schema.org/AndroidTVPlatform",
      "http://schema.org/IOSPlatform"
    ]
  },
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/cast/my_favorite_movie?autoplay=true",
    "actionPlatform": [
      "http://schema.googleapis.com/GoogleVideoCast"
    ]
  }
]

Спецификация доступа к действию

Объект спецификации доступа к действию описывает требования к доступу к контенту в зависимости от региона и периода времени. Объект является свойством actionAccessibilityRequirement объекта разметки Action .

category объекта может быть любой из следующих:

Подписка на СМИ

Объект подписки на мультимедиа описывает детали подписки, необходимой для контента. Объект является свойством requiresSubscription объекта спецификации доступа Action . Это необходимо, если actionAccessibilityRequirement.category — это subscription или externalSubscription , а ваше предложение подписки включает несколько пакетов или уровней или имеет поддержку надстроек. Не включайте это, если ваша подписка одноуровневая и дает доступ ко всему контенту вашего каталога.

Пример подписки на медиа

Пример объекта подписки на медиа:

"requiresSubscription": {
  "@type": "MediaSubscription",
  "@id": "http://www.example.com/premium_subscription",
  "name": "Example Premium",
  "sameAs": "http://www.example.com/premium_subscription"
}

Предложение

Объект предложения описывает цену, связанную с контентом. Объект является свойством ( expectsAcceptanceOf ) следующих объектов:

Пример предложения

Действия Watch указывают свойство expectsAcceptanceOf в объекте спецификации доступа к действию :

"potentialAction":{
  "@type":"WatchAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"http://www.example.com/my_favorite_movie?autoplay=true",
    "actionPlatform":[ "http://schema.org/DesktopWebPlatform" ]
  },
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "purchase",
    "availabilityStarts": "2019-01-01T00:00Z",
    "availabilityEnds": "2019-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    },
    "expectsAcceptanceOf": {
      "@type": "Offer",
      "price": 7.99,
      "priceCurrency": "USD",
      "seller": {
        "@type": "Organization",
        "name": "My example seller"
      }
    }
  }
}

Действия прослушивания указывают свойство expectsAcceptanceOf непосредственно в объекте разметки действия :

"potentialAction":{
  "@type":"ListenAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"http://www.example.com/playlist/top_pop_songs?autoplay=true",
    "actionPlatform":[ "http://schema.org/DesktopWebPlatform" ]
  },
  "expectsAcceptanceOf":{
    "@type": "Offer",
    "eligibleRegion": {
      "@type":"Country",
      "name":"US"
    },
    "category": "subscription",
    "name": "Example Music",
    "price": 9.99,
    "priceCurrency": "USD",
    "seller": {
      "@type": "Organization",
      "name": "My example seller",
      "sameAs": "http://www.example.com"
    }
  }
}

Изображение

Объект изображения описывает изображение, связанное с содержимым.

Требования к изображению следующие:

  • Для действий по просмотру предоставьте изображение высокого разрешения (минимум 140 x 210 пикселей) с соотношением сторон 2:3.
    • Изображение должно быть в формате .jpg или .png .
  • Для действий прослушивания предоставьте изображение высокого разрешения (минимум 300 x 300 пикселей) с соотношением сторон 1 x 1.
    • Мы рекомендуем 600x600 пикселей или выше.
    • Изображение должно быть в формате .jpg , .png или .gif .
  • URL-адрес изображения должен быть доступным для сканирования и индексирования .
  • У вас должны быть права на использование изображения и разрешение на его показ на устройствах и ресурсах Google.
  • Изображение не должно содержать следующее:
    • Размытое, пиксельное, повернутое изображение или изображение низкого качества.
    • Нелицензионная или стоковая фотография.
    • Нагота.
    • Незаконный контент.
  • При обновлении MusicPlaylist обновите его изображение, чтобы оно отражало новое содержимое.

Пример изображения

"image": {
  "@type": "ImageObject",
  "contentUrl" : "http://www.example.com/artist/my_favorite_artist/1x1/photo1.jpg",
  "dateModified" : "2019-01-05T22:11:33+00:00",
  "regionsAllowed" : ["US","UK","MX"]
}

Примеры фидов

Следующие примеры демонстрируют разницу в структуре канала между действиями просмотра и действиями прослушивания.

Посмотреть пример действий

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/my_favorite_movie",
      "url": "http://www.example.com/my_favorite_movie",
      "name": "My Favorite Movie",
      "potentialAction": {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/AndroidTVPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
         "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-07-21T10:35:29Z",
           "availabilityEnds": "2019-10-21T10:35:29Z",
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ],
        }
      },
      "sameAs": "https://en.wikipedia.org/wiki/my_favorite_movie",
      "releasedEvent": {
        "@type": "PublicationEvent",
        "startDate": "2008-01-20",
        "location": {
          "@type": "Country",
          "name": "US"
        }
      },
      "description": "This is my favorite movie.",
      "actor": [
        {
          "@type": "Person",
          "name": "John Doe",
          "sameAs": "https://en.wikipedia.org/wiki/John_Doe"
        },
        {
          "@type": "Person",
          "name": "Jane Doe",
          "sameAs": "https://en.wikipedia.org/wiki/Jane_Doe"
        }
      ],
      "identifier": [
        {
          "@type": "PropertyValue",
          "propertyID": "IMDB_ID",
          "value":  "tt0123456"
        }
      ]
    }
  ]
}

Пример действий прослушивания

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    {
      "@context":"http://schema.googleapis.com/",
      "@type":"MusicGroup",
      "@id":"http://www.example.com/artist/my_favorite_artist/",
      "url":"http://www.example.com/artist/my_favorite_artist/",
      "name":"My Favorite Artist",
      "sameAs":"https://en.wikipedia.org/wiki/my_favorite_artist",
      "description":"This is my favorite pop music artist.",
      "potentialAction": {
        "@type":"ListenAction",
        "target": {
          "@type":"EntryPoint",
          "urlTemplate":"http://www.example.com/artist/my_favorite_artist?autoplay=true",
          "actionPlatform":[
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/AndroidTVPlatform",
            "http://schema.googleapis.com/GoogleAudioCast",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
        "expectsAcceptanceOf":{
          "@type":"Offer",
          "category":"subscription",
          "eligibleRegion": {
            "@type":"Country",
            "name":"US"
          },
          "price": 8.99,
          "priceCurrency": "USD"
        }
      },
      "subjectOf": {
        "@type":"MusicPlaylist",
        "@id":"http://www.example.com/artist_mix/my_favorite_artist/",
        "url":"http://www.example.com/artist_mix/my_favorite_artist/",
        "name":"My Favorite Artist Mix",
        "description":"A mix of music similar to My Favorite Artist",
        "potentialAction":{
          "@type":"ListenAction",
          "target": {
            "@type":"EntryPoint",
            "urlTemplate":"http://www.example.com/artist_mix/my_favorite_artist?autoplay=true",
            "actionPlatform":[
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.org/AndroidPlatform",
              "http://schema.org/AndroidTVPlatform",
              "http://schema.googleapis.com/GoogleAudioCast",
              "http://schema.googleapis.com/GoogleVideoCast"
            ]
          },
          "expectsAcceptanceOf":{
            "@type":"Offer",
            "category":"free",
            "eligibleRegion": {
              "@type":"Country",
              "name":"US"
            }
          }
        }
      }
    }
  ]
}