Le flux "Actions multimédias" est un objet JSON qui contient une collection d'entités. Une entité est un objet schema.org qui représente un élément de votre catalogue: un épisode de série TV, une série TV, un film, une chanson, un album, etc.

Structure du flux
Les flux d'actions de visionnage et d'écoute ont des structures différentes.
Les actions liées au visionnage sont hiérarchisées comme suit: |
Les actions d'écoute sont hiérarchisées comme suit: |
Enveloppe du flux de données
Une enveloppe de flux de données est l'objet de niveau supérieur du flux d'actions multimédias. L'objet contient un tableau d'objets de balisage de contenu (entités) qui représentent l'ensemble du contenu de votre catalogue.
Une enveloppe de flux de données est compatible avec les propriétés suivantes:
Propriété | Type | Description |
---|---|---|
@context |
URL | Obligatoire : défini sur http://schema.org |
@type |
Texte | Obligatoire : définissez sur DataFeed . |
dateModified |
Date et heure | Obligatoire : date et heure de la dernière modification du flux, au format ISO 8601 (y compris le fuseau horaire). |
dataFeedElement |
Thing | Obligatoire : les entités de votre catalogue multimédia. |
Modèle d'enveloppe de flux de données
{
"@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> },
...
]
}
Balisage du contenu
Un objet de balisage de contenu représente une seule entité de votre catalogue: un film, un épisode de série TV, une série TV, une chanson, un album, une station de radio, etc. L'objet contient l'identifiant et l'URL canonique du contenu, et permet de le décrire à l'aide de metadata.
Modèle de balisage de contenu
Un objet de balisage de contenu peut contenir un tableau d'objets de balisage d'action, ce qui permet d'associer le contenu à plusieurs objets de balisage d'action. Par exemple, le contenu peut avoir un objet de balisage d'action différent par région.
{
"@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> }
],
...
}
Balisage d'action
Un objet de balisage d'action décrit le lien profond qui redirige les utilisateurs vers le contenu et le niveau d'accès requis pour ce contenu. L'objet est une propriété (potentialAction
) d'un objet de balisage de contenu.
Vous pouvez spécifier les restrictions d'accès de deux façons:
- Pour les actions de montre, utilisez un objet de spécification d'accès aux actions.
- Pour les actions d'écoute, utilisez un objet d'offre.
Modèle de balisage d'action
Si le contenu comporte plusieurs liens profonds, un objet de balisage d'action inclut plusieurs objets cibles. Par exemple, le lien profond du contenu pour iOS peut être différent du lien profond pour Android. De plus, si des restrictions d'accès différentes s'appliquent en fonction des régions et des périodes, un objet de balisage d'action peut comporter plusieurs objets de spécification d'accès d'action ou objets d'offre, comme illustré dans les modèles ci-dessous.
Modèle d'objet de balisage d'action pour les actions de visionnage:
"potentialAction": {
"@type": "WatchAction",
"target": [
{ <TARGET OBJECT 01> },
{ <TARGET OBJECT 02> }
],
"actionAccessibilityRequirement": [
{ <ACTION ACCESSIBILITY OBJECT 01> },
{ <ACTION ACCESSIBILITY OBJECT 02> }
]
}
Modèle d'objet de balisage d'action pour les actions liées à l'écoute:
"potentialAction": {
"@type": "ListenAction",
"target": [
{ <TARGET OBJECT 01> },
{ <TARGET OBJECT 02> }
],
"expectsAcceptanceOf": [
{ <OFFER OBJECT 01> },
{ <OFFER OBJECT 02> }
]
}
Cible
Un objet cible permet de mapper un lien profond sur différentes plates-formes Google. L'objet est une propriété (target
) d'un objet de balisage d'action.
Exemple de cible
Si le contenu comporte plusieurs liens profonds en fonction des plates-formes, créez plusieurs objets cibles pour fournir différents mappages. Par exemple, le lien profond du contenu pour Chromecast peut être différent de celui des autres plates-formes, comme illustré dans l'exemple ci-dessous.
Exemple d'objet cible (basique):
"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"
]
}
Exemple d'objet cible avec deux liens profonds:
"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"
]
}
]
Spécification d'accès aux actions
Un objet de spécification d'accès à une action décrit les exigences d'accès au contenu en fonction de la région et de la période. L'objet est une propriété, actionAccessibilityRequirement
, d'un objet de balisage d'action.
L'category
de l'objet peut être l'une des valeurs suivantes:
nologinrequired
free
subscription
Pour décrire les détails de l'abonnement, créez un objet d'abonnement multimédia. Si le contenu nécessite un achat supplémentaire pour les abonnés, utilisez un objet offer pour spécifier le prix.
externalsubscription
Pour décrire les détails de l'abonnement, créez un objet d'abonnement multimédia. Si le contenu nécessite un achat supplémentaire pour les abonnés, utilisez un objet offer pour spécifier le prix.
rental
Utilisez un objet offer pour spécifier le prix.
purchase
Utilisez un objet offer pour spécifier le prix.
Abonnement multimédia
Un objet d'abonnement multimédia décrit les détails de l'abonnement requis pour le contenu. L'objet est une propriété, requiresSubscription
, d'un objet de spécification d'accès à l'action. Cette valeur est obligatoire si actionAccessibilityRequirement.category
est subscription
ou externalSubscription
, et si votre offre d'abonnement inclut plusieurs packages ou niveaux, ou est compatible avec les modules complémentaires. N'incluez pas cette information si votre abonnement est à un seul niveau et donne accès à l'ensemble du contenu de votre catalogue.
Exemple d'abonnement multimédia
Exemple d'objet d'abonnement multimédia:
"requiresSubscription": {
"@type": "MediaSubscription",
"@id": "http://www.example.com/premium_subscription",
"name": "Example Premium",
"sameAs": "http://www.example.com/premium_subscription"
}
Offre
Un objet "offre" décrit le prix associé à un contenu. L'objet est une propriété (expectsAcceptanceOf
) des objets suivants:
- Pour les actions de visionnage, un objet de spécification d'accès aux actions.
- Pour les actions liées à l'écoute, un objet de balisage d'action.
Exemple d'offre
Les actions de visionnage spécifient la propriété expectsAcceptanceOf
dans l'objet de spécification d'accès aux actions:
"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"
}
}
}
}
Les actions d'écoute spécifient la propriété expectsAcceptanceOf
directement dans l'objet de balisage d'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"
}
}
}
Image
Un objet image décrit l'image associée au contenu.
Voici les exigences concernant l'image:
- Pour les actions de visionnage, fournissez une image haute résolution (140 x 210 pixels minimum) au format 2:3.
- L'image doit être au format
.jpg
ou.png
.
- L'image doit être au format
- Pour les actions d'écoute, fournissez une image haute résolution (300 x 300 pixels minimum) au format 1x1.
- Nous vous recommandons d'utiliser une résolution d'au moins 600 x 600 pixels.
- L'image doit être au format
.jpg
,.png
ou.gif
.
- L'URL de l'image doit être explorable et indexable.
- Vous devez disposer des droits nécessaires pour utiliser l'image et autoriser son affichage sur les appareils et les propriétés Google.
- L'image ne doit pas contenir les éléments suivants :
- Image floue, pixélisée, pivotée ou de mauvaise qualité
- Photos non autorisées ou provenant de banques d'images
- Nudité
- Contenu illégal.
- Lorsque vous mettez à jour
MusicPlaylist
, mettez à jour son image pour refléter le nouveau contenu.
Exemple d'image
"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"]
}
Exemples de flux
Les exemples suivants montrent la différence de structure du flux entre les actions de visionnage et les actions d'écoute.
Exemple d'actions liées au visionnage
{
"@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"
}
]
}
]
}
Exemple d'actions liées à l'écoute
{
"@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"
}
}
}
}
}
]
}