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, una serie de TV, una película, una canción, un álbum y mucho más.

Figura 1: Estructuras del feed de las acciones de reproducción y de escucha

Estructura del feed

Las acciones de reproducción y de escucha tienen estructuras de feed diferentes.

Las acciones de reproducción tienen la siguiente jerarquía:
Las acciones de escucha tienen la siguiente jerarquía:

Sobre del feed de datos

El sobre del feed de datos es el objeto de nivel superior del feed de Acciones multimedia. Este contiene un array de objetos de lenguaje de marcado de contenido (entidades) que representan todo el contenido de tu catálogo.

El sobre de un feed de datos admite las siguientes propiedades:

Propiedad Tipo Descripción
@context URL Obligatorio: Configúralo en http://schema.org
@type Texto Obligatorio: Configúralo como DataFeed.
dateModified DateTime Obligatorio: Indica la fecha y hora de la última modificación del feed en formato ISO 8601 (incluida la zona horaria).
dataFeedElement Thing Obligatorio: Las entidades de tu catálogo de contenido 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> },
    ...
  ]
}

Lenguaje de marcado del contenido

Un objeto de lenguaje de marcado de contenido representa una entidad única de 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. El objeto incluye el identificador y la URL canónica del contenido y ayuda a describirlo mediante metadatos.

Plantilla de lenguaje de marcado de contenido

Un objeto de lenguaje de marcado de contenido puede tener un array de objetos de lenguaje de marcado de acciones, lo que permite que el contenido se asocie con varios objetos de lenguaje de marcado de Acciones. Por ejemplo, el contenido puede tener un objeto de lenguaje 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 lenguaje de marcado de acción describe el vínculo directo que lleva a los usuarios al contenido y el nivel de acceso requerido para este. 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 lenguaje de marcado de Acción incluye varios objetos de destino. Por ejemplo, el vínculo directo del contenido para iOS podría ser diferente del vínculo directo de Android. Además, si hay diferentes restricciones de acceso según las regiones y los períodos de tiempo, un objeto de lenguaje de marcado de Action puede tener varios objetos de especificación de acceso a Action, o bien objetos de oferta, como se muestra en las siguientes plantillas.

Plantilla de objetos de lenguaje de marcado de acciones para las Acciones de reproducción:

"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 las 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 lenguaje de marcado de acciones.

Ejemplo de destino

Si el contenido tiene varios vínculos directos basados en las plataformas, crea varios objetos de destino para proporcionar diferentes asignaciones. Por ejemplo, es posible que el vínculo directo del contenido para Chromecast sea diferente del de otras plataformas. vínculos directos, 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 destino 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 acciones

Un objeto de especificación de acceso a acciones 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 lenguaje de marcado de acciones

El category del objeto puede ser cualquiera de las siguientes opciones:

  • nologinrequired
  • free
  • subscription

    Para describir los detalles de la suscripción, crea un Objeto de suscripción multimedia. Si el contenido requiere una compra adicional para los suscriptores, usa un offer object para especificar el precio

  • externalsubscription

    Para describir los detalles de la suscripción, crea un Objeto de suscripción multimedia. Si el contenido requiere una compra adicional para los suscriptores, usa un offer object para especificar el precio

  • rental

    Usa un offer object para especificar el precio

  • purchase

    Usa un offer object para especificar el precio

Suscripción a medios

Un objeto de suscripción multimedia describe los detalles de la suscripción requerida para el contenido. El objeto es una propiedad, requiresSubscription, de un Objeto de especificación de acceso a acciones. Este es obligatorio si actionAccessibilityRequirement.category es subscription o externalSubscription y tu oferta de suscripción incluye varias paquetes o niveles, o tiene asistencia complementaria. No incluyas esto si tu La suscripción tiene 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 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 de reproducción especifican la propiedad expectsAcceptanceOf en el Objeto de especificación de acceso a acciones:

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

"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 de la imagen son los siguientes:

  • Para las acciones de reproducción, 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 x 300 píxeles) con una relación de aspecto de 1 x 1.
    • Recomendamos 600 × 600 píxeles o más.
    • 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 esta se muestre en los dispositivos y las propiedades de Google.
  • La imagen no debe contener lo siguiente:
    • Imagen borrosa, pixelada, girada o de baja calidad
    • Fotografía 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 Acciones de visualización y 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"
            }
          }
        }
      }
    }
  ]
}