Descripción general de la estructura del feed

El feed de acciones multimedia es un objeto JSON que contiene una colección de entidades. Una entidad es un objeto de schema.org que representa un elemento de tu catálogo: un episodio de TV, una serie de TV, una película, una canción, un álbum y mucho más.

Figura 1: Las estructuras de los feeds de las acciones de visualización y de escucha.

Estructura del feed

Las Acciones en Relojes y las Acciones de Escucha tienen estructuras de feeds diferentes.

Las Acciones de visualización tienen la siguiente jerarquía:
Las Acciones de escucha tienen la siguiente jerarquía:

Sobre del feed de datos

Un sobre de feed de datos es el objeto de nivel superior en el feed de acciones de medios. El objeto contiene un array de objetos de marcado de contenido (entidades) que representan todo el contenido de tu catálogo.

Un sobre de feed de datos admite las siguientes propiedades:

Propiedad Tipo Descripción
@context URL Obligatorio: Se establece en http://schema.org.
@type Texto Obligatorio: Se establece en DataFeed.
dateModified DateTime Obligatorio: Es la fecha y hora de la última modificación del feed, en formato ISO 8601 (incluida la zona horaria).
dataFeedElement Thing Obligatorio: Son las entidades de tu catálogo multimedia.

Plantilla de sobre del feed de datos

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

Marcas de contenido

Un objeto de marcado de contenido representa una sola entidad en tu catálogo: una película, un episodio de TV, una serie de TV, una canción, un álbum, una estación de radio, etcétera. El objeto contiene el identificador y la URL canónica del contenido y ayuda a describirlo a través de metadata.

Plantilla de marcado de contenido

Un objeto de lenguaje de marcado de contenido puede tener un array de objetos de lenguaje de marcado de Action, lo que permite que el contenido se asocie con varios objetos de lenguaje de marcado de Action. Por ejemplo, el contenido puede tener un objeto de marcado de Action diferente por región.

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

Lenguaje de marcado de acciones

Un objeto de marcado de acción describe el vínculo directo que lleva a los usuarios al contenido y el nivel de acceso requerido para el contenido. El objeto es una propiedad (potentialAction) de un objeto de lenguaje de marcado de contenido.

Existen dos maneras de especificar las restricciones de acceso:

Plantilla de lenguaje de marcado de acciones

Si el contenido tiene varios vínculos directos, un objeto de marcado de Action incluye varios objetos de destino. Por ejemplo, el vínculo directo del contenido para iOS puede ser diferente del vínculo directo de Android. Además, si hay diferentes restricciones de acceso según las regiones y los períodos, un objeto de marcado de Action puede tener varios objetos de especificación de acceso de Action o objetos de oferta, como se muestra en las siguientes plantillas.

Plantilla de objeto de lenguaje de marcado de acciones para Acciones en Relojes:

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

Plantilla de objeto de lenguaje de marcado de acciones para acciones de escucha:

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

Objetivo

Un objeto de destino proporciona la asignación de un vínculo directo a varias plataformas de Google. El objeto es una propiedad (target) de un objeto de marcado de acción.

Ejemplo de segmentación

Si el contenido tiene varios vínculos directos según las plataformas, crea varios objetos de destino para proporcionar diferentes asignaciones. Por ejemplo, el vínculo directo del contenido para Chromecast puede ser diferente de los vínculos directos de otras plataformas, como se muestra en el siguiente ejemplo.

Ejemplo de un 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"
  ]
}

Ejemplo de objeto de segmentación con dos vínculos directos:

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

Especificación de acceso a la acción

Un objeto de especificación de acceso de Action describe el requisito de acceso para el contenido según la región y el período. El objeto es una propiedad, actionAccessibilityRequirement, de un objeto de marcado de acción.

El category del objeto puede ser cualquiera de los siguientes:

Suscripción a contenido multimedia

Un objeto de suscripción multimedia describe los detalles de la suscripción necesaria para el contenido. El objeto es una propiedad, requiresSubscription, de un objeto de especificación de acceso a la acción. Esto es obligatorio si actionAccessibilityRequirement.category es subscription o externalSubscription y tu oferta de suscripción incluye varios paquetes o niveles, o tiene compatibilidad con complementos. No lo incluyas si tu suscripción es de un nivel y brinda acceso a todo el contenido de tu catálogo.

Ejemplo de suscripción a contenido multimedia

Ejemplo de un objeto de suscripción a contenido multimedia:

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

Oferta

Un objeto de oferta describe el precio asociado con el contenido. El objeto es una propiedad (expectsAcceptanceOf) de los siguientes objetos:

Ejemplo de oferta

Las Acciones en Relojes especifican la propiedad expectsAcceptanceOf en el objeto de especificación de acceso a la acción:

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

Las Acciones de escucha especifican la propiedad expectsAcceptanceOf directamente en el objeto de lenguaje de marcado de Action:

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

Imagen

Un objeto de imagen describe la imagen asociada con el contenido.

Los requisitos para la imagen son los siguientes:

  • Para las Acciones en Relojes, proporciona una imagen de alta resolución (mínimo de 140 × 210 píxeles) con una relación de aspecto de 2:3.
    • La imagen debe estar en formato .jpg o .png.
  • Para las Acciones de escucha, proporciona una imagen de alta resolución (mínimo de 300 × 300 píxeles) con una relación de aspecto de 1 × 1.
    • Recomendamos 600 × 600 píxeles o un tamaño superior.
    • La imagen debe estar en formato .jpg, .png o .gif.
  • La URL de la imagen se debe poder rastrear e indexar.
  • Debes tener derechos para usar la imagen y permitir que se muestre en los dispositivos y las propiedades de Google.
  • La imagen no debe contener lo siguiente:
    • Imagen borrosa, pixelada, rotada o de mala calidad
    • Fotografías de archivo o sin licencia
    • Imágenes de desnudos
    • Contenido ilegal
  • Cuando actualices MusicPlaylist, actualiza su imagen para que refleje el contenido nuevo.

Ejemplo de imagen

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

Ejemplos de feeds

En los siguientes ejemplos, se muestra la diferencia en la estructura del feed entre las acciones de reproducción y las acciones de escucha.

Ejemplo de acciones de visualización

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

Ejemplo de acciones de escucha

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