Visão geral da estrutura do feed

O feed de ações de mídia é um objeto JSON que contém uma coleção de entidades. Uma entidade é um objeto do 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 de ouvir.

Estrutura do feed

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

As Ações de exibição 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 no catálogo.

Um envelope de feed de dados é compatível com as seguintes propriedades:

Propriedade Tipo Descrição
@context URL Obrigatório: defina 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 Coisas Obrigatório: as entidades do seu catálogo de mídia.

Modelo de envelope do 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 por meio de metadados.

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 ele. 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 incluirá vários objetos de destino. Por exemplo, o link direto do conteúdo para iOS pode ser diferente do link direto do Android. Além disso, se houver restrições de acesso diferentes com base nas regiões e nos períodos, um objeto de marcação de ação poderá ter vários objetos de especificação de acesso de ação ou objetos de oferta, conforme mostrado nos modelos abaixo.

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

"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 escuta:

"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 o Chromecast pode ser diferente do link de outras plataformas links diretos, 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 ações

Um objeto de especificação de acesso da ação descreve o requisito de acesso para o 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 qualquer um destes:

Assinatura de mídia

Um objeto de assinatura de mídia descreve os detalhes da assinatura necessária para conteúdo. O objeto é uma propriedade, requiresSubscription, de um Objeto de especificação de acesso de ação. Isso é obrigatório se actionAccessibilityRequirement.category for subscription ou externalSubscription, e sua oferta de assinatura inclui várias pacotes ou níveis ou tem suporte para complementos. Não inclua essa informação se tem um nível e dá 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 na 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 detecção 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 da imagem são os seguintes:

  • Para 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 escuta", forneça uma imagem de alta resolução (mínimo de 300 x 300 pixels) com 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 para usar a 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 com baixa qualidade.
    • Fotos ou bancos de fotos sem licença.
    • 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 Ações de assistir e ouvir.

Exemplo de Ações 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 escuta

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