Spécification Schema.org des podcasts

Cette section fournit des informations sur les propriétés de balisage de contenu pour les podcasts.

Spécification PodcastSeries

PodcastSeries représente une série de podcasts, également appelée "émission".

Propriété Priorité Type Description
@context Obligatoire Texte Contexte schema.org Toujours défini sur [http://schema.googleapis.com,{@language}:xx}], où xx doit figurer dans le code de langue. Cette valeur définit la langue utilisée par défaut pour les valeurs de texte de l'entité.
@type Obligatoire Texte Toujours défini sur PodcastSeries.
@id Obligatoire Texte Identifiant unique global de la série de podcasts, au format URI. Cet identifiant doit être stable et immuable dans le temps. Il est traité comme une chaîne opaque et ne doit pas nécessairement s'agir d'un lien fonctionnel. Le domaine utilisé pour la valeur @id doit appartenir à votre organisation.
url Obligatoire Texte URL canonique de votre site Web sur laquelle la série de podcasts est présentée ou décrite. Il doit être unique. Ce lien permet de faire le rapprochement entre le contenu de votre flux et celui des bases de données de Google. Pour la lecture, utilisez target.urlTemplate, comme indiqué dans la section ListenAction de la documentation.
name Obligatoire Texte

Nom de la série de podcasts. N'indiquez qu'un seul nom par langue.

Utilisez un tableau pour marquer la description dans plusieurs langues. Consultez l'exemple "Plusieurs pays et langues".

description Obligatoire Texte

Synopsis de la série de podcasts.

Utilisez un tableau pour marquer la description dans plusieurs langues. Consultez l' exemple "Plusieurs pays et langues".

alternativeHeadline Optional Texte Sous-titres de la série de podcasts.
author Obligatoire

Person ou Organization

repeated

Personne ou groupe qui développe ou diffuse l'émission. Fait souvent référence à l'hôte. Pour obtenir des exemples et plus d'informations, consultez Organisation, Personne (auteur/éditeur).
publisher Optional

Person ou Organization

repeated

Groupe ou chaîne d'origine responsable de la publication de l'émission. Fait souvent référence à une organisation chargée de publier/produire plusieurs podcasts. Pour obtenir des exemples et des informations, consultez Organisation, personne (auteur/éditeur). Ce champ est fortement recommandé pour la déambiguïsation et doit être fourni dans la mesure du possible.
actor Optional

Person ou Organization

repeated

Acteur du podcast. Pour en savoir plus et obtenir des exemples, consultez la section Acteur (hôte/invité) .
logo Optional

ImageObject

repeated

Image du logo de la série. Fournissez-le sous la forme d'un ImageObject entièrement décrit. Fournissez la résolution la plus élevée disponible. Les formats JPEG ou PNG sont à privilégier. Pour en savoir plus et obtenir des exemples, consultez la section ImageObject (logo).
image Obligatoire

ImageObject

repeated

Image de l'illustration de la série. Fournissez-le sous la forme d'un ImageObject entièrement décrit. Fournissez la résolution la plus élevée disponible. Nous vous recommandons d'utiliser les formats JPEG ou PNG. Pour en savoir plus et obtenir des exemples, consultez la section ImageObject (logo).
isFamilyFriendly Obligatoire Booléen Indique si ce contenu est adapté aux familles (c'est-à-dire s'il convient à tous les membres d'une famille, y compris aux enfants). Les produits Google peuvent utiliser isFamilyFriendly pour déterminer le contenu à lire. La valeur doit être true ou false.
inLanguage Obligatoire Texte Langue du contenu du podcast au format ISO 639-1. Cette valeur peut être utilisée pour répondre aux requêtes des utilisateurs qui demandent des contenus dans une langue spécifique.
genre Obligatoire

Texte

repeated

Catégorie ou genre de la série de podcasts. Par exemple, vous pouvez suivre les catégories de podcasts standards.
endDate Optional Date Date de sortie de l'épisode final de la série de podcasts. N'incluez ce champ que lorsque la série est déjà terminée.
rssFeed Obligatoire URL URL du flux RSS de la série de podcasts.
potentialAction Obligatoire ListenAction Action à déclencher pour que les utilisateurs puissent écouter le contenu. Pour en savoir plus, consultez ListenAction.
popularityScore Optional PopularityScoreSpecification Un score de popularité pour déterminer la priorité de diffusion en cas de plusieurs candidats. Pour en savoir plus et obtenir des exemples, consultez la section PopularityScoreSpecification (popularityScore).
keywords Optional

Texte

repeated

Liste des mots clés qui seront associés à la série de podcasts. Ces mots clés peuvent être utilisés pour élargir les requêtes des utilisateurs pouvant déclencher cette série de podcasts. (noms des invités, sujets abordés, etc.)
sameAs Optional URL URL d'une page Web de référence tierce (hors de votre domaine) qui indique sans ambiguïté l'identité de l'article. Cette page Web permet de lever l'ambiguïté lorsqu'il existe plusieurs séries similaires. (par exemple, une page Wikipédia ou la page d'accueil de la série de podcasts). Ce champ est vivement recommandé pour clarifier la série.
releasedEvent Optional PublicationEvent, ou des sous-types plus spécifiques : FeaturedEvent ou ExclusiveEvent Événement marquant la publication ou la sortie de la série de podcasts. Un événement de publication peut indiquer la publication initiale d'un podcast par un éditeur. Les types plus spécialisés peuvent être utilisés pour indiquer l'exclusivité ou la mise en avant de la publication. Pour en savoir plus et obtenir des exemples, consultez la section PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent). Notez que si vous marquez une série comme exclusive ou mise en avant, cela implique que tous les épisodes de la série sont exclusifs ou mis en avant.
countryOfOrigin Optional Pays Pays des bureaux principaux de la société de production ou de la personne responsable du podcast.

Spécification PodcastEpisode

PodcastEpisode est la représentation schema.org d'un épisode dans un PodcastSeries.

Propriété Priorité Type Description
@context Obligatoire Texte Contexte schema.org Toujours défini sur [http://schema.googleapis.com,{@language:xx}], où xx est le code de langue. Cette valeur définit la langue de caractères par défaut utilisée pour les valeurs de texte du flux.
@type Obligatoire Texte Toujours défini sur PodcastEpisode.
@id Obligatoire Texte Identifiant unique global de l'épisode de podcast, au format URI. Cet identifiant doit être stable et immuable dans le temps. Il est traité comme une chaîne opaque et ne doit pas nécessairement s'agir d'un lien fonctionnel. Votre organisation doit être propriétaire du domaine utilisé pour la valeur @id.
url Obligatoire Texte URL canonique de votre site Web sur laquelle vous présentez ou décrivez l'épisode de podcast. Cette valeur doit être unique. Ce lien permet de faire le rapprochement entre le contenu de votre flux et celui des bases de données de Google. Pour la lecture, l'target.urlTemplate décrit dans la section ListenAction de la documentation est utilisé.
name Obligatoire Texte

Nom de l'épisode de podcast.

Il ne doit y avoir qu'un seul nom par langue. Utilisez un tableau pour mettre en forme la description dans plusieurs langues. Consultez l'exemple "Plusieurs pays et langues".

description Obligatoire Texte Description de l'épisode de podcast.
alternativeHeadline Obligatoire Texte Sous-titre de l'épisode de podcast.
author Obligatoire

Person ou Organization

repeated

Personne ou groupe qui développe ou diffuse l'épisode. Cette valeur fait souvent référence à l'hôte. Si l'auteur est le même que l'émission, vous pouvez réutiliser les informations de l'entité PodcastSeries. Pour obtenir des exemples et plus d'informations, consultez Organisation, Personne (auteur/éditeur).
publisher Obligatoire

Person ou Organization

repeated

Groupe ou chaîne d'origine responsable de la publication de l'émission. Fait souvent référence à une organisation responsable de la publication ou de la production de plusieurs podcasts. Pour en savoir plus et obtenir des exemples, consultez Organisation, Personne (auteur/éditeur). Ce champ est fortement recommandé pour la déambiguïsation. Nous vous recommandons de le définir dans la mesure du possible.
actor Obligatoire

Person ou Organization

repeated

Acteur du podcast. Pour en savoir plus et obtenir des exemples, consultez la section Acteur (hôte/invité).
datePublished Obligatoire Date/Heure Date et heure de sortie de l'épisode de podcast. Cette valeur permet de trier la séquence des épisodes et de la dissocier.
episodeNumber Obligatoire Entier Numéro de l'épisode.
partOfSeries Obligatoire PodcastSeries PodcastSeries dans lequel se trouve cet épisode de podcast. Pour en savoir plus et obtenir des exemples, consultez PodcastSeries(partOfSeries).
partOfSeason Optional PodcastSeason Pour les séries multi-saisons, cette propriété fournit les informations sur la saison, ainsi que le numéro et le nom de la saison. Pour en savoir plus et obtenir des exemples, consultez PodcastSeason(partOfSeason).
timeRequired Obligatoire Durée Durée de l'épisode au format ISO 8601.
image Optional

ImageObject

repeated

Image de la série. Il doit s'agir d'un ImageObject entièrement décrit. Fournissez la résolution la plus élevée disponible. Les formats JPEG ou PNG sont à privilégier. Pour en savoir plus et obtenir des exemples, consultez la section ImageObject (logo).
isFamilyFriendly Obligatoire Booléen Indique si ce contenu est adapté aux familles (c'est-à-dire s'il convient à tous les membres d'une famille, y compris aux enfants). Les produits Google peuvent utiliser isFamilyFriendly pour déterminer le contenu à lire. La valeur doit être true ou false.
inLanguage Obligatoire Texte Langue du contenu de l'épisode de podcast au format ISO 639-1. Utilisez cette valeur pour répondre aux requêtes des utilisateurs qui demandent des contenus dans une langue spécifique. Si le contenu est disponible dans plusieurs langues, n'indiquez qu'une seule langue principale.
genre Obligatoire

Texte

repeated

Catégorie ou genre de la série de podcasts. Par exemple, vous pouvez suivre les catégories de podcasts standards.
associatedMedia Optional AudioObject Fichier audio de l'épisode de podcast. Pour en savoir plus et obtenir des exemples, consultez AudioObject(associatedMedia).
potentialAction Obligatoire ListenAction Action à déclencher pour que les utilisateurs puissent écouter le contenu. Pour en savoir plus, consultez la section ListenAction.
popularityScore Optional PopularityScoreSpecification Un score de popularité pour déterminer la priorité de diffusion en cas de plusieurs candidats. Pour en savoir plus et obtenir des exemples, consultez la section PopularityScoreSpecification.
keywords Optional

Texte

repeated

Liste des mots clés associés à la série de podcasts. Ces mots clés peuvent être utilisés pour élargir les requêtes des utilisateurs pouvant déclencher cet épisode de podcast. Par exemple, news, sports ou history.
identifier Obligatoire

PropertyValue

repeated

Pour PodcastEpisode, utilisez cette propriété pour fournir un GUID. Le GUID doit être un identifiant permettant d'identifier de manière unique et globale les épisodes d'un podcast. Il est différent du champ @id de l'épisode.

Consultez la section PropertyValue (identifier) pour obtenir un exemple.

sameAs Optional URL URL d'une page Web de référence tierce (hors de votre domaine) qui indique sans ambiguïté l'identité de l'article. Google utilise cette page Web pour la déambiguïsation lorsqu'il existe plusieurs séries similaires. (par exemple, une page Wikipédia ou la page d'accueil des épisodes de podcast). Notez que la page de référence au niveau de la série ne doit pas être fournie ici. Nous recommandons vivement d'utiliser ce champ pour distinguer l'épisode.
releasedEvent Optional PublicationEvent ou des sous-types plus spécifiques : FeaturedEvent ou ExclusiveEvent Événement marquant la publication ou la sortie de l'épisode de podcast. Un événement de publication peut indiquer la publication initiale d'un épisode de podcast par un éditeur. Les sous-types plus spécifiques peuvent indiquer l'exclusivité ou la mise en avant de la publication. Pour en savoir plus et obtenir des exemples, consultez la section PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent). Notez que si vous marquez une série comme exclusive ou mise en avant ci-dessus, cela implique que tous les épisodes de la série sont exclusifs ou mis en avant. Nous vous recommandons de marquer ces propriétés au niveau le plus précis possible.
countryOfOrigin Optional Pays Pays des bureaux principaux de la société de production ou de la personne responsable du podcast.

PodcastSeries (partOfSeries)

Utilisez partOfSeries pour établir la relation entre un PodcastEpisode et son PodcastSeries parent. Étant donné que tous les détails de PodcastSeries sont décrits dans l'entité PodcastSeries distincte, vous n'avez pas besoin de fournir tous les détails dans partOfSeries. Vous n'avez besoin de fournir que les propriétés suivantes:

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur PodcastSeries.
@id Obligatoire URL Identifiant unique global de la série au format URI. L'ID doit correspondre à celui de l'entité PodcastSeries complète dans votre flux.
name Obligatoire Texte Nom de la série de podcasts.

Exemple 1

"partOfSeries": {
  "@type": "PodcastSeries",
  "@id": "http://www.tjpodcast.org/series?id=1",
  "name": "Radiolab"
},

PodcastSeason (partOfSeason)

PodcastSeason représente les informations sur la saison d'un PodcastEpisode, en particulier le numéro de saison. Vous n'avez besoin de cette propriété que lorsque la série de podcasts comporte plusieurs saisons.

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur PodcastSeason
@id Obligatoire URL Identifiant global unique de la saison au format URI. Cet identifiant doit être stable et immuable dans le temps. Il est traité comme une chaîne opaque et ne doit pas nécessairement s'agir d'un lien fonctionnel.
seasonNumber Obligatoire Entier Numéro de la saison de la série de podcasts.
name Optional Texte Nom de la saison du podcast.

Exemple 1

"partOfSeason": {
  "@type": "PodcastSeason",
  "@id": "http://www.tjpodcast.org/seriesx/season?id=1",
  "seasonNumber": 1,
  "name": "Radiolab Season 1"
},

Organisation, personne (auteur ou éditeur)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur Organization ou Person.
@id Obligatoire URL Identifiant unique global de l'organisation ou de la personne, au format URI. Cet identifiant doit être stable et immuable dans le temps. Il est traité comme une chaîne opaque et ne doit pas nécessairement s'agir d'un lien fonctionnel.
name Obligatoire Texte Nom de l'organisation ou de la personne.
sameAs Optional URL URL d'une page Web de référence tierce (hors de votre domaine) qui indique sans ambiguïté l'identité de l'article. Google utilise cette page Web pour la déambiguïsation lorsqu'il existe plusieurs séries similaires. Il peut s'agir, par exemple, d'une page Wikipédia d'une organisation ou de son site Web officiel.

Exemple 1

"author": {
  "@type": "Organization",
  "@id": "https://www.tjpodcast.org/organization/wnyc",
  "sameAs": "https://en.wikipedia.org/wiki/WNYC",
  "name": "WNYC"
},

Exemple 2

"author": {
  "@type": "Person",
  "@id": "https://www.tjpodcast.org/person/jad_abumrad",
  "sameAs": "https://en.wikipedia.org/wiki/Jad_Abumrad",
  "name": "Jad Abumrad"
},

Acteur (hôte ou invité)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur Organization ou Person.
@id Obligatoire URL Identifiant unique global de l'organisation ou de la personne, au format URI. Cet identifiant doit être stable et immuable dans le temps. Il est traité comme une chaîne opaque et ne doit pas nécessairement s'agir d'un lien fonctionnel.
name Obligatoire Texte Nom de l'organisation ou de la personne.
roleName Obligatoire Texte "Host" ou "Guest" (Hôte ou Invité).
sameAs Optional URL URL d'une page Web de référence tierce (hors de votre domaine) qui indique sans ambiguïté l'identité de l'article. Google utilise cette page Web pour la déambiguïsation lorsqu'il existe plusieurs séries similaires. Il peut s'agir, par exemple, d'une page Wikipédia d'une organisation ou de son site Web officiel.

Exemple 1

"actor":[{
  "@type": "PerformanceRole",
  "actor": {
    "@type": "Person",
    "@id": "https://www.tjpodcast.org/person/Roman",
    "name": {
      "@language":"en",
      "@value": "Roman Mars"
    },
    "roleName": "Host"
    "sameAs": "https://en.wikipedia.org/wiki/Roman",
  },
  "actor": {
    "@type": "Person",
    "@id": "https://www.tjpodcast.org/person/guest",
    "name":{
      "@language":"en",
      "@value": "Kurt Kohlstedt"
    },
    "roleName": "Guest"
   },
}]

ImageObject (logo ou image)

ImageObject permet de fournir le logo ou l'illustration du contenu.

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur ImageObject.
height Optional Entier Hauteur de l'image en pixels.
width Optional Entier Largeur de l'image en pixels.
contentUrl Obligatoire URL URL de l'image.
regionsAllowed Optional

Pays

repeated

Pays dans lesquels le contenu multimédia est autorisé:

  • Si cette information n'est pas spécifiée, on suppose que l'image est autorisée dans toutes les langues.
  • Pour envoyer des images différentes par région, ajoutez plusieurs propriétés ImageObject, chacune avec son propre ensemble de pays et une URL d'image correspondante.

Pays (image.regionsAllowed)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur Country.
name Obligatoire Texte Code pays ISO 3166-1 alpha-2. Par exemple, GB, US.

Exemple 1

"logo": {
  "@type": "ImageObject",
  "height": "100",
  "width": "800",
  "contentUrl": "http://www.foo.com/img/67890.jpg",
},

Exemple 2

"logo": [
  {
    "@type": "ImageObject",
    "height": "100",
    "width": "800",
    "contentUrl": "http://www.foo.com/img/67890.jpg",
    "regionsAllowed": [
      {
        "@type": "Country",
        "name": "US"
      },
      {
        "@type": "Country",
        "name": "GB"
      }
    ]
  },
  {
    "@type": "ImageObject",
    "height": "100",
    "width": "800",
    "contentUrl": "http://www.foo.com/img/12345.jpg",
    "regionsAllowed": [
      {
        "@type": "Country",
        "name": "IN"
      },
      {
        "@type": "Country",
        "name": "PK"
      }
    ]
  },
],

PropertyValue (identifier)

Si vous disposez de GUID pour votre contenu, vous pouvez les fournir avec le champ identifier pour améliorer la précision de la mise en correspondance de votre contenu par Google. Notez que le GUID est obligatoire pour PodcastEpisode. Il doit être différent du champ @id de l'épisode (et ne pas se trouver dans votre domaine) et représenter l'épisode source de manière globale et unique au fil du temps, pour toutes les sources.

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur "PropertyValue".
propertyID Obligatoire Texte Toujours défini sur GUID.
value Obligatoire Texte GUID de la série ou de l'épisode.

Exemple 1

"identifier": {
  "@type": "PropertyValue",
  "propertyID": "GUID",
  "value": "50204fe4-bc68-4b34-aae6-e73c700cc5ca"
},

PopularityScoreSpecification (popularityScore)

popularityScore peut aider les utilisateurs à accéder au contenu le plus approprié, lorsque les critères de la requête de l'utilisateur correspondent à plusieurs entités de votre flux. Le contenu ayant le score de popularité le plus élevé disponible pour la région de l'utilisateur est diffusé lorsque cette valeur est disponible. Pour tous les contenus qui ne comportent pas ce champ, le score de popularité est défini par défaut sur 0. La comparaison des scores s'effectue dans le cadre de votre catalogue complet. Assurez-vous donc que l'échelle est cohérente dans tous vos flux.

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur PopularityScoreSpecification.
value Obligatoire Numérique Valeur numérique positive à comparer aux autres entités de votre catalogue pour déterminer la priorité de diffusion. Plus le nombre est élevé, plus la popularité est élevée.
eligibleRegion Optional

Pays ou texte

repeated

Une région ou une liste de régions auxquelles ce score de popularité s'applique.

Si le score de popularité s'applique globalement, utilisez earth comme valeur textuelle.

Si vous devez lister des régions spécifiques, veuillez utiliser le type "Pays".

Si vous laissez ce champ vide, eligibleRegion est défini par défaut sur earth.

Pays (popularityScore.eligibleRegion)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur Country.
name Obligatoire Texte Code pays ISO 3166-1 alpha-2. Par exemple, GB, US.

Exemple 1

"popularityScore": {
  "@type": "PopularityScoreSpecification",
  "value": 4.3,
  "eligibleRegion": "Earth"
},

Exemple 2

"popularityScore": {
  "@type": "PopularityScoreSpecification",
  "value": 2,
  "eligibleRegion": {
    "@type": "Country",
    "name": "US"
  }
},

Exemple 3

"popularityScore": {
  "@type": "PopularityScoreSpecification",
  "value": 101,
  "eligibleRegion": [
    {
      "@type": "Country",
      "name": "US"
    },
    {
      "@type": "Country",
      "name": "GB"
    }
  ]
},

PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent)

PublicationEvent
Utilisez cet objet pour représenter la date et le lieu de publication d'une émission ou d'un épisode (également appelé "date de sortie" d'une série ou d'un épisode). En outre, le champ publishedBy indique l'entité de publication ou de distribution de la série ou de l'épisode de podcast.
ExclusiveEvent
Utilisez cet objet pour indiquer que le fournisseur dispose de droits de distribution exclusifs pour le podcast. L'exclusivité peut être spécifique à une région et limitée dans le temps. Elle doit inclure le champ "organisation" qui pointe vers le fournisseur exclusif du contenu.
FeaturedEvent
Utilisez cet objet pour indiquer que le fournisseur propose le podcast aux consommateurs (par exemple, en tant que "original").
"Originals" est différent de "Exclusif"
Le terme "originaux (sélection)" désigne souvent des droits exclusifs sur une entité donnée, ce qui surcharge le terme. Par conséquent, le sens souhaité doit être divisé en deux catégories ci-dessus. Il est possible qu'une entité d'origine soit également exclusive. Dans ce cas, releasedEvent peut prendre un tableau contenant les deux types d'événements sur la même entité.

Notez que, bien que l'exclusivité ou la mise en avant puissent avoir des significations similaires dans le catalogue d'un fournisseur, PublicationEvent s'applique plus généralement pour permettre la démarcation des entités et fournir des métadonnées supplémentaires à leur sujet, telles que la date de sortie d'une série ou d'un épisode.

Propriété Priorité Type Description
@type Obligatoire Texte Doit toujours être défini sur PublicationEvent, ExclusiveEvent ou FeaturedEvent.
location Obligatoire Pays Région dans laquelle l'événement de publication se produit. Vous pouvez également l'utiliser pour représenter les restrictions d'exclusivité et de distribution de l'entité. Utilisez les codes pays ISO 3166. Si vous devez appliquer une sémantique globale, définissez la valeur sur EARTH. Définissez explicitement location sur EARTH, au cas où les restrictions spécifiques aux paramètres régionaux ne s'appliqueraient pas.
startDate Recommandé (Obligatoire pour ExclusiveEvent) Date ou DateTime Date de début de la publication des entités. Dans le cas de PublicationEvent, il s'agit de la date de sortie initiale de cette entité. Dans le cas de ExclusiveEvent ou FeaturedEvent, il s'agit de la date de début de l'exclusivité ou de la mise en avant de l'entité.
endDate Recommandé (Obligatoire pour ExclusiveEvent) Date ou DateTime Date de fin de la publication des entités. Dans le cas de PublicationEvent, il s'agit de la date de publication finale de cette entité. Dans le cas de ExclusiveEvent ou FeaturedEvent, il s'agit de la date de fin de l'exclusivité ou de la mise en avant de l'entité.
publishedBy Obligatoire Organisation ou personne Entité Organization ou Person qui publie cette entité et s'applique à cet événement de publication. Veuillez utiliser le même schéma que celui décrit dans la section Organisation (auteur/Éditeur).

Exemple 1

"releasedEvent": [ {
  "@type": "PublicationEvent",
  "location": "EARTH",
  "startDate": "2016-04-21T20:00",
  "publishedBy": {
    "@type": "Organization",
    "@id": "https://www.tjpodcast.org/organization/wnyc",
    "sameAs": "https://en.wikipedia.org/wiki/WNYC",
    "name": "WNYC"
  },
 }, {
  "@type": "FeaturedEvent",
  "location": "US",
  "startDate": "2020-04-18T20:00",
  "endDate": "2020-04-21T20:00",
  "publishedBy": {
    "@type": "Organization",
    "@id": "https://www.tjpodcast.org/organization/tjpodcast",
    "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
    "name": "TJPodcast",
  },
 },
]

Exemple 2

"releasedEvent": [ {
  "@type": "FeaturedEvent",
  "location": "US",
  "startDate": "2020-04-18T20:00",
  "endDate": "2020-05-21T20:00",
  "publishedBy": {
    "@type": "Organization",
    "@id": "https://www.tjpodcast.org/organization/tjpodcast",
    "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
    "name": "TJPodcast",
  },
 }, {
  "@type": "ExclusiveEvent",
  "location": "US",
  "startDate": "2020-04-18T20:00",
  "endDate": "2020-04-24T20:00",
  "publishedBy": {
    "@type": "Organization",
    "@id": "https://www.tjpodcast.org/organization/tjpodcast",
    "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
    "name": "TJPodcast",
  },
 }, {
  "@type": "ExclusiveEvent",
  "location": "CA",
  "startDate": "2020-04-21T20:00",
  "endDate": "2020-04-24T20:00",
  "publishedBy": {
    "@type": "Organization",
    "@id": "https://www.tjpodcast.org/organization/tjpodcast",
    "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
    "name": "TJPodcast",
  },
 }
]

AudioObject (associatedMedia)

AudioObject permet de fournir le fichier multimédia brut de l'épisode de podcast.

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur AudioObject.
contentUrl Obligatoire URL URL du fichier multimédia.
contentSize Obligatoire Entier Taille du fichier multimédia en octets.
encodingFormat Obligatoire Texte Types de contenu multimédia IANA du fichier multimédia. Par exemple, audio/mpeg.
duration Obligatoire Durée Durée du contenu multimédia au format ISO 8601.
transcript Optional Texte Transcription de l'épisode.
bitrate Optional Texte Débit du fichier multimédia.
name Optional Texte Nom du fichier multimédia.

Exemple 1

"associatedMedia": {
    "@type": "AudioObject",
    "contentUrl": "https://www.tjpodcast.org/media_files/mp3/radiolab_podcast19.mp3",
    "duration": "PT5M32S",
    "contentSize": "53616000",
    "encodingFormat": "audio/mpeg",
    "name": "radiolab_podcast19.mp3",
    "transcript": "Transcript of the episode",
    "bitrate": "64Kbps"
},

ListenAction (potentialAction)

L'entité ListenAction définit vos liens profonds pour la lecture et les critères permettant aux utilisateurs (par exemple, géo, chronal, connexion ou état de l'abonnement) d'accéder au contenu.

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur ListenAction.
target Obligatoire

EntryPoint

repeated

Spécifications de votre lien profond avec les informations sur la plate-forme compatible. Vous pouvez utiliser plusieurs champs EntryPoint pour définir différents liens profonds pour différents ensembles de plates-formes.
actionAccessibilityRequirement Obligatoire

ActionAccessSpecification

repeated

Définition des conditions requises pour accéder à cette entité. Si plusieurs ActionAccessSpecification sont présentes, un utilisateur qui remplit l'un des critères de spécification peut accéder au contenu.

EntryPoint (potentialAction.target)

table class="fixed"> Propriété Priorité Type Description @type Obligatoire Texte Toujours défini sur EntryPoint. urlTemplate Obligatoire URL Lien utilisé pour lancer la lecture de votre contenu. actionPlatform Obligatoire

Texte

repeated

Plate-forme pour laquelle ce lien profond est valide. Les valeurs suivantes sont possibles:

  • "http://schema.org/DesktopWebPlatform"
  • "http://schema.org/MobileWebPlatform"
  • "http://schema.org/AndroidPlatform"
  • "http://schema.org/AndroidTVPlatform"
  • "http://schema.org/IOSPlatform"
  • "http://schema.googleapis.com/GoogleAudioCast"
  • "http://schema.googleapis.com/GoogleVideoCast"

ActionAccessSpecification (potentialAction.actionAccessibilityRequirement)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur ActionAccessSpecification.
category Obligatoire Texte

Type d'exigence d'accès. Il doit s'agir de l'une des valeurs suivantes:

  • nologinrequired: l'action est disponible sans nécessiter aucun achat ni aucun identifiant de connexion de la part de l'utilisateur pour pouvoir accéder au contenu.
  • free: l'action est disponible sans nécessiter aucun achat ni aucun abonnement payant de la part de l'utilisateur. L'action nécessite toutefois que l'utilisateur se connecte.
  • subscription: l'action est proposée dans le cadre d'un abonnement payant à votre service.
availabilityStarts Optional Date/Heure Heure de début de la période de disponibilité. Vous pouvez l'utiliser pour contrôler l'heure exacte à laquelle ce contenu peut être présenté aux utilisateurs.
availabilityEnds Optional Date/Heure Heure de fin de la période de disponibilité. Vous pouvez l'utiliser pour contrôler l'heure exacte à laquelle ce contenu ne sera plus présenté aux utilisateurs.
eligibleRegion Obligatoire

Pays

repeated

Pays éligible à cette offre. Vous pouvez l'utiliser pour contrôler le pays ou la région où ce contenu doit être disponible.
requiresSubscription Obligatoire, si applicable MediaSubscription Le forfait d'abonnement requis pour accéder à ce contenu Si votre service propose plusieurs forfaits d'abonnement, ce champ est obligatoire. Si votre service est sans frais ou s'il n'existe qu'un seul niveau d'abonnement, vous pouvez ignorer ce champ.

Pays (potentialAction.actionAccessibilityRequirement.eligibleRegion)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur Country.
name Obligatoire Texte Code pays ISO 3166-1 alpha-2.

MediaSubscription (potentialAction.actionAccessibilityRequirement.requiresSubscription)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur MediaSubscription.
@id Obligatoire URL Identifiant unique global du package d'abonnement au format URI. Cet identifiant doit être stable et immuable dans le temps. Il est traité comme une chaîne opaque et ne doit pas nécessairement s'agir d'un lien fonctionnel.
name Obligatoire Texte Nom du package d'abonnement. Par exemple, Premium, Basic.
expectsAcceptanceOf Recommandé Offre Offre associée à l'achat de l'abonnement multimédia. Vous pouvez l'utiliser pour indiquer le prix de l'abonnement.

Offre (potentialAction.actionAccessibilityRequirement.requiresSubscription.expectsAcceptanceOf)

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur Offer.
price Obligatoire Nombre Prix de l'abonnement.
priceCurrency Obligatoire Texte Devise (au format ISO 4217 à trois lettres) du prix.
seller Recommandé Organisation Organisation qui propose l'abonnement ou l'achat de l'action. Utilisez le même schéma que celui décrit dans la section Organisation (auteur/Éditeur).

Exemple 1

"potentialAction": {
    "@type": "ListenAction",
    "target": {
        "@type": "EntryPoint",
        "urlTemplate": "https://www.tjpodcast.org/?streamStationId=170",
        "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/GoogleAudioCast",
            "http://schema.googleapis.com/GoogleVideoCast"
        ]
    },
    "actionAccessibilityRequirement": {
        "@type": "ActionAccessSpecification",
        "category": "nologinrequired",
        "availabilityStarts": "2018-04-01T11:01:00-04:00",
        "availabilityEnds": "2018-06-30T23:59:00-04:00",
        "eligibleRegion": {
            "@type": "Country",
            "name": "US"
        }
    }
},

Exemple 2

"potentialAction": {
    "@type": "ListenAction",
    "target": [
        {
            "@type": "EntryPoint",
            "urlTemplate": "https://www.tjpodcast.org/?streamStationId=170",
            "actionPlatform": [
                "http://schema.org/DesktopWebPlatform",
                "http://schema.org/MobileWebPlatform",
                "http://schema.org/AndroidPlatform",
                "http://schema.org/AndroidTVPlatform",
                "http://schema.org/IOSPlatform"
            ]
        },
        {
            "@type": "EntryPoint",
            "urlTemplate": "https://www.tjpodcast.org/castlink?streamStationId=170",
            "actionPlatform": [
                "http://schema.googleapis.com/GoogleAudioCast",
                "http://schema.googleapis.com/GoogleVideoCast"
            ]
        }
    ],
    "actionAccessibilityRequirement": [
        {
            "@type": "ActionAccessSpecification",
            "category": "nologinrequired",
            "availabilityStarts": "2018-04-01T11:01:00-04:00",
            "availabilityEnds": "2018-06-30T23:59:00-04:00",
            "eligibleRegion": [
                {
                    "@type": "Country",
                    "name": "IN"
                },
                {
                    "@type": "Country",
                    "name": "GB"
                }
            ]
        },
        {
            "@type": "ActionAccessSpecification",
            "category": "Subscription",
            "requiresSubscription": {
                "@type": "MediaSubscription",
                "@id": "http://www.example.com/packages/basic-pack",
                "name": "Basic Pack",
                "expectsAcceptanceOf": {
                    "@type": "Offer",
                    "price": 8.99,
                    "priceCurrency": "USD"
                }
            },
            "availabilityStarts": "2018-04-01T11:01:00-04:00",
            "availabilityEnds": "2018-06-30T23:59:00-04:00",
            "eligibleRegion": {
                "@type": "Country",
                "name": "US"
            }
        }
    ]
},

Annexe

Exemple complet

{
    "@context": "http://schema.org",
    "@type": "DataFeed",
    "dateModified": "2018-09-10T13:58:26.892Z",
    "dataFeedElement": [
        {
            "@context": [
                "http://schema.googleapis.com",
                {
                    "@language": "en"
                }
            ],
            "@type": "PodcastSeries",
            "@id": "http://www.tjpodcast.org/series?id=2",
            "url": "http://www.tjpodcast.org/series?id=2",
            "name": "Radiolab",
            "description": "A two-time Peabody Award-winner...",
            "alternativeHeadline": "Radiolab - Powered by WNYC",
            "sameAs": "https://en.wikipedia.org/wiki/Radiolab",
            "image": {
                "@type": "ImageObject",
                "height": "100",
                "width": "800",
                "contentUrl": "http://www.tjpodcast.org/img/2.jpg"
            },
            "logo": {
                "@type": "ImageObject",
                "height": "100",
                "width": "800",
                "contentUrl": "http://www.tjpodcast.org/logo/2/1.jpg"
            },
            "keywords": [
                "Science",
                "Technology",
                "Philosophy",
                "Education"
            ],
            "author": [
                {
                    "@type": "Person",
                    "@id": "https://www.tjpodcast.org/author/jad_abumrad",
                    "name": "Jad Abumrad",
                    "sameAs": "https://en.wikipedia.org/wiki/Jad_Abumrad"
                },
                {
                    "@type": "Person",
                    "@id": "https://www.tjpodcast.org/author/robert_krulwich",
                    "name": "Robert Krulwich",
                    "sameAs": "https://en.wikipedia.org/wiki/Robert_Krulwich"
                }
            ],
            "publisher": {
                "@type": "Organization",
                "name": "WNYC",
                "@id": "https://www.tjpodcast.org/network/wnyc_studios",
                "sameAs": "https://en.wikipedia.org/wiki/WNYC_Studios"
            },
            "isFamilyFriendly": "True",
            "inLanguage": "en",
            "genre": [
                "Science & Medicine",
                "Natural Sciences"
            ],
            "endDate": "2017-12-22T08:59:00",
            "rssFeed": "http://feeds.wnyc.org/radiolab",
            "potentialAction": {
                "@type": "ListenAction",
                "target": {
                    "@type": "EntryPoint",
                    "urlTemplate": "https://www.tjpodcast.org/?streamSeriesId=2",
                    "actionPlatform": [
                        "http://schema.org/DesktopWebPlatform",
                        "http://schema.org/MobileWebPlatform",
                        "http://schema.googleapis.com/GoogleAudioCast",
                        "http://schema.googleapis.com/GoogleVideoCast"
                    ]
                },
                "actionAccessibilityRequirement": {
                    "@type": "ActionAccessSpecification",
                    "category": "nologinrequired",
                    "availabilityStarts": "2018-04-01T11:01:00-04:00",
                    "availabilityEnds": "2019-12-30T23:59:00-04:00",
                    "eligibleRegion": {
                        "@type": "Country",
                        "name": "FR"
                    }
                }
            },
            "popularityScore": {
                "@type": "PopularityScoreSpecification",
                "value": 4.2
            }
        },
        {
            "@context": [
                "http://schema.googleapis.com",
                {
                    "@language": "en"
                }
            ],
            "@type": "PodcastEpisode",
            "@id": "http://www.tjpodcast.org/episode?id=1",
            "url": "http://www.tjpodcast.org/episode?id=1",
            "name": "A Clockwork Miracle",
            "description": "As legend goes, in 1562, King Philip II...",
            "sameAs": "https://www.wnycstudios.org/story/radiolab-clockwork-miracle",
            "image": {
                "@type": "ImageObject",
                "height": "100",
                "width": "800",
                "contentUrl": "http://www.tjpodcast.org/img/2/1.jpg"
            },
            "keywords": [
                "Education",
                "Philosophy",
                "Science",
            ],
            "partOfSeries": {
                "@type": "PodcastSeries",
                "@id": "http://www.tjpodcast.org/series?id=2",
                "name": "Radiolab",
                "sameAs": "https://en.wikipedia.org/wiki/Radiolab",
            },
            "episodeNumber": 101,
            "inLanguage": "en",
            "author": [
                {
                    "@type": "Person",
                    "@id": "https://www.tjpodcast.org/author/jad_abumrad",
                    "name": "Jad Abumrad",
                    "sameAs": "https://en.wikipedia.org/wiki/Jad_Abumrad"
                },
                {
                    "@type": "Person",
                    "@id": "https://www.tjpodcast.org/author/robert_krulwich",
                    "name": "Robert Krulwich",
                    "sameAs": "https://en.wikipedia.org/wiki/Robert_Krulwich"
                }
            ],
            "publisher": {
                "@type": "Organization",
                "name": "WNYC",
                "@id": "https://www.tjpodcast.org/network/wnyc_studios",
                "sameAs": "https://en.wikipedia.org/wiki/WNYC_Studios"
            },
            "isFamilyFriendly": "True",
            "genre": [
                "Science",
                "Philosophy",
                "Fiction"
            ],
            "datePublished": "2018-12-27T23:23:00Z",
            "timeRequired": "PT22M",
            "associatedMedia": {
                "@type": "AudioObject",
                "contentUrl": "https://www.tjpodcast.org/media_files/mp3/radiolab_podcast19.mp3",
                "duration": "PT21M45S",
                "contentSize": "53616000",
                "encodingFormat": "audio/mpeg",
                "transcript": "Transcript of the episode",
                "bitrate": "64Kbps"
            },
            "potentialAction": {
                "@type": "ListenAction",
                "target": {
                    "@type": "EntryPoint",
                    "urlTemplate": "https://www.tjpodcast.org/?streamEpisodeId=1",
                    "actionPlatform": [
                        "http://schema.org/DesktopWebPlatform",
                        "http://schema.org/MobileWebPlatform",
                        "http://schema.googleapis.com/GoogleAudioCast",
                        "http://schema.googleapis.com/GoogleVideoCast"
                    ]
                },
                "actionAccessibilityRequirement": {
                    "@type": "ActionAccessSpecification",
                    "category": "nologinrequired",
                    "availabilityStarts": "2018-04-01T11:01:00-04:00",
                    "availabilityEnds": "2019-12-30T23:59:00-04:00",
                    "eligibleRegion": {
                        "@type": "Country",
                        "name": "FR"
                    }
                }
            },
            "popularityScore": {
                "@type": "PopularityScoreSpecification",
                "value": 3.8
            },
            "identifier": [
                {
                    "@type": "PropertyValue",
                    "propertyID": "GUID",
                    "value": "53ff386e-e768-40b5-8854-1b7415826ded"
                }
            ]
        }
    ],
    "actor": [
        {
            "@type": "PerformanceRole",
            "actor": {
                "@type": "Person",
                "@id": "https://www.tjpodcast.org/person/Roman",
                "name": {
                    "@language": "en",
                    "@value": "Roman Mars"
                },
                "roleName": "Host",
                "sameAs": "https://en.wikipedia.org/wiki/Roman"
            },
            "actor": {
                "@type": "Person",
                "@id": "https://www.tjpodcast.org/person/guest",
                "name": {
                    "@language": "en",
                    "@value": "Kurt Kohlstedt"
                },
                "roleName": "Guest"
            }
        }
    ],
    "releasedEvent": [
        {
            "@type": "FeaturedEvent",
            "location": "US",
            "startDate": "2020-04-18T20:00",
            "endDate": "2020-05-21T20:00",
            "publishedBy": {
                "@type": "Organization",
                "@id": "https://www.tjpodcast.org/organization/tjpodcast",
                "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
                "name": "TJPodcast"
            }
        },
        {
            "@type": "ExclusiveEvent",
            "location": "US",
            "startDate": "2020-04-18T20:00",
            "endDate": "2020-04-24T20:00",
            "publishedBy": {
                "@type": "Organization",
                "@id": "https://www.tjpodcast.org/organization/tjpodcast",
                "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
                "name": "TJPodcast"
            }
        },
        {
            "@type": "ExclusiveEvent",
            "location": "CA",
            "startDate": "2020-04-21T20:00",
            "endDate": "2020-04-24T20:00",
            "publishedBy": {
                "@type": "Organization",
                "@id": "https://www.tjpodcast.org/organization/tjpodcast",
                "sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
                "name": "TJPodcast"
            }
        }
    ]
}