Visão geral da estrutura do feed

O feed de ações em mídia é um objeto JSON que contém uma coleção de entidades. Uma entidade é um objeto schema.org que representa um item no seu catálogo: um episódio de TV, uma série de TV, um filme, uma música, um álbum e muito mais.

Figura 1. As estruturas de feed das ações de assistir e ouvir conteúdo.

Estrutura do feed

As ações de assistir e ouvir têm estruturas de feed diferentes.

As Ações de assistir a vídeos têm a seguinte hierarquia:
As Ações de escuta têm a seguinte hierarquia:

Envelope do feed de dados

Um envelope de feed de dados é o objeto de nível superior no feed de ações de mídia. O objeto contém uma matriz de objetos de marcação de conteúdo (entidades) que representam todo o conteúdo do seu catálogo.

Um envelope de feed de dados oferece suporte às seguintes propriedades:

Propriedade Tipo Descrição
@context URL Obrigatório: definido como http://schema.org.
@type Texto Obrigatório: defina como DataFeed.
dateModified DateTime Obrigatório: é a data e a hora da última modificação do feed no formato ISO 8601 (incluindo o fuso horário).
dataFeedElement Coisa Obrigatório: as entidades do seu catálogo de mídia.

Modelo de envelope de feed de dados

{
  "@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> },
    ...
  ]
}

Marcação de conteúdo

Um objeto de marcação de conteúdo representa uma única entidade no seu catálogo: um filme, um episódio de TV, uma série de TV, uma música, um álbum, uma estação de rádio etc. O objeto contém o identificador e o URL canônico do conteúdo e ajuda a descrever o conteúdo usando metadata.

Modelo de marcação de conteúdo

Um objeto de marcação de conteúdo pode ter uma matriz de objetos de marcação de ação, o que permite que o conteúdo seja associado a vários objetos de marcação de ação. Por exemplo, o conteúdo pode ter um objeto de marcação de ação diferente por região.

{
   "@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> }
   ],
   ...
}

Marcação de ação

Um objeto de marcação de ação descreve o link direto que leva os usuários ao conteúdo e o nível de acesso necessário para o conteúdo. O objeto é uma propriedade (potentialAction) de um objeto de marcação de conteúdo.

Há duas maneiras de especificar as restrições de acesso:

Modelo de marcação de ação

Se o conteúdo tiver vários links diretos, um objeto de marcação de ação vai incluir vários objetos de destino. Por exemplo, o link direto do conteúdo para iOS pode ser diferente do link direto para Android. Além disso, se houver diferentes restrições de acesso com base nas regiões e períodos, um objeto de marcação do Action poderá ter vários objetos de especificação de acesso ou de oferta, conforme mostrado nos modelos abaixo.

Modelo de objeto de marcação de ação para ações do YouTube:

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

Modelo de objeto de marcação de ação para ações de ouvir conteúdo:

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

Destino

Um objeto de destino fornece o mapeamento de um link direto para várias plataformas do Google. O objeto é uma propriedade (target) de um objeto de marcação de ação.

Exemplo de destino

Se o conteúdo tiver vários links diretos com base nas plataformas, crie vários objetos de destino para fornecer mapeamentos diferentes. Por exemplo, o link direto do conteúdo para Chromecast pode ser diferente dos links diretos das outras plataformas, conforme mostrado no exemplo abaixo.

Exemplo de um objeto de destino (básico):

"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"
  ]
}

Exemplo de objeto de destino com dois links diretos:

"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"
    ]
  }
]

Especificação de acesso à ação

Um objeto de especificação de acesso à ação descreve o requisito de acesso ao conteúdo com base na região e no período. O objeto é uma propriedade, actionAccessibilityRequirement, de um objeto de marcação de ação.

O category do objeto pode ser uma das seguintes opções:

Assinatura de mídia

Um objeto de assinatura de mídia descreve os detalhes da assinatura necessária para o conteúdo. O objeto é uma propriedade, requiresSubscription, de um objeto de especificação de acesso à ação. Isso é necessário se actionAccessibilityRequirement.category for subscription ou externalSubscription e sua oferta de assinatura incluir vários pacotes ou níveis ou tiver suporte a complementos. Não inclua essa informação se a assinatura tiver um nível e permitir o acesso a todo o conteúdo do seu catálogo.

Exemplo de assinatura de mídia

Exemplo de um objeto de assinatura de mídia:

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

Oferta

Um objeto de oferta descreve o preço associado ao conteúdo. O objeto é uma propriedade (expectsAcceptanceOf) dos seguintes objetos:

Exemplo de oferta

As ações de relógio especificam a propriedade expectsAcceptanceOf no objeto de especificação de acesso à ação:

"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"
      }
    }
  }
}

As ações de escuta especificam a propriedade expectsAcceptanceOf diretamente no objeto de marcação de ação:

"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"
    }
  }
}

Imagem

Um objeto de imagem descreve a imagem associada ao conteúdo.

Os requisitos para a imagem são os seguintes:

  • Para as Ações de relógio, forneça uma imagem de alta resolução (mínimo de 140 x 210 pixels) com proporção de 2:3.
    • A imagem precisa estar no formato .jpg ou .png.
  • Para ações de ouvir, forneça uma imagem de alta resolução (mínimo de 300 x 300 pixels) com uma proporção de 1 x 1.
    • Recomendamos 600 x 600 pixels ou mais.
    • A imagem precisa estar no formato .jpg, .png ou .gif.
  • O URL da imagem precisa ser rastreável e indexável.
  • Você precisa ter direitos de uso da imagem e permitir que ela seja exibida em dispositivos e propriedades do Google.
  • A imagem não pode conter o seguinte:
    • Imagem desfocada, pixelada, girada ou de baixa qualidade.
    • Fotografias não licenciadas ou de banco de imagens.
    • Nudez.
    • Conteúdo ilegal.
  • Ao atualizar MusicPlaylist, atualize a imagem para refletir o novo conteúdo.

Exemplo de imagem

"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"]
}

Exemplos de feed

Os exemplos a seguir mostram a diferença na estrutura do feed entre as Ações de assistir e as Ações de ouvir.

Exemplo de ação de assistir

{
  "@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"
        }
      ]
    }
  ]
}

Exemplo de ações de ouvir conteúdo

{
  "@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"
            }
          }
        }
      }
    }
  ]
}