Spécification Schema.org du podcast

Cette section décrit en détail les propriétés de balisage de contenu des podcasts.

Spécification PodcastSeries

PodcastSeries est la représentation d'une série de podcasts, également appelée "émission".

Propriété Priorité Type Description
@context Obligatoire Texte Contexte schema.org Toujours définir sur [http://schema.googleapis.com,{@language}:xx}], où xx doit figurer dans le code de langue. Cela permet de définir la langue par défaut utilisée pour les valeurs textuelles dans l'entité.
@type Obligatoire Texte Toujours défini sur PodcastSeries.
@id Obligatoire Texte ID unique de la série de podcasts au format URI. L'ID doit être stable et ne pas changer au fil du temps. Elle est traitée comme une chaîne opaque et ne doit pas nécessairement être 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 vous permet de rapprocher précisément le contenu de votre flux avec celui des bases de données de Google. Pour les lectures, utilisez target.urlTemplate dans la section ListenAction de la documentation.
name Obligatoire Texte

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

Utilisez un tableau pour baliser la description dans plusieurs langues. Consultez l'exemple de plusieurs régions et langues.

description Obligatoire Texte

Résumé de la série de podcasts.

Utilisez un tableau pour baliser la description dans plusieurs langues. Consultez l'exemple de plusieurs régions et langues.

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

Personne ou organisation

repeated

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

Personne ou organisation

repeated

Groupe ou réseau d'origine responsable de la publication de l'émission. Il s'agit souvent d'une organisation responsable de la publication ou de la production de plusieurs podcasts. Pour obtenir des exemples et plus de détails, consultez Organisation, personne (auteur/éditeur). Ce champ est fortement recommandé pour lever l'ambiguïté. Il doit être renseigné le cas échéant.
actor Optional

Personne ou organisation

repeated

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

ImageObject

repeated

Image du logo de la série. Indiquez-le sous la forme d'un fichier ImageObject complet. Fournissez la plus haute résolution disponible. de préférence au format JPEG ou PNG. Pour obtenir plus d'informations et des exemples, consultez la section ImageObject (logo).
image Obligatoire

ImageObject

repeated

Une image de la série Fournissez une ImageObject complète. Fournissez la plus haute résolution disponible. de préférence au format JPEG ou PNG. Consultez la section ImageObject (logo) pour obtenir des détails et des exemples.
isFamilyFriendly Obligatoire Booléen Indique si le contenu est adapté aux familles (c'est-à-dire s'il est adapté à 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 podcast. 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 écoutent le contenu. Pour en savoir plus, consultez ListenAction.
popularityScore Optional PopularityScoreSpecification Score de popularité permettant de déterminer la priorité de diffusion lorsqu'il existe plusieurs candidats. Pour en savoir plus et obtenir des exemples, consultez la section PopularityScoreSpecification (popularityScore).
keywords Optional

Texte

repeated

Liste de mots clés à associer à la série de podcasts. Ces mots clés peuvent être utilisés pour développer les requêtes utilisateur pouvant déclencher cette série de podcasts. Par exemple, les noms des invités, les sujets abordés, etc.
sameAs Optional URL URL d'une page Web de référence tierce (n'appartenant pas à votre domaine) qui indique sans ambiguïté l'identité de l'article. Cette page Web est utilisée afin d'éviter toute 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 fortement recommandé pour lever l'ambiguïté de la série.
releasedEvent Optional PublicationEvent ou des sous-types plus spécifiques : FeaturedEvent ou ExclusiveEvent Événement qui marque la publication ou la sortie d'une série de podcasts. Un événement de publication peut indiquer la sortie initiale d'un podcast par un éditeur. Des types plus spécialisés peuvent être utilisés pour indiquer l'exclusivité ou la fonctionnalité de la publication. Pour obtenir plus d'informations et des exemples, consultez la section PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent). Notez que le fait de marquer une série comme exclusive ou sélectionnée implique que tous les épisodes de la série soient exclusifs ou mis en avant.
countryOfOrigin Optional Pays Pays des bureaux principaux de l'entreprise de production ou de la personne responsable du podcast.

Spécifications de l'épisode de podcast

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

Propriété Priorité Type Description
@context Obligatoire Texte Contexte schema.org Toujours défini sur [http://schema.googleapis.com,{@language:xx}], où xx correspond au code de langue. Cela permet de définir la langue de caractères par défaut utilisée pour les valeurs textuelles dans le flux.
@type Obligatoire Texte Toujours défini sur PodcastEpisode.
@id Obligatoire Texte ID unique global de l'épisode de podcast au format URI. L'ID doit être stable et ne pas changer au fil du temps. Elle est traitée comme une chaîne opaque et ne doit pas nécessairement être 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 présentez l'épisode de podcast. Cette valeur doit être unique. Ce lien permet de rapprocher avec précision le contenu de votre flux avec celui des bases de données de Google. Pour les lectures, la valeur target.urlTemplate détaillée dans la section ListenAction de la documentation est utilisée.
name Obligatoire Texte

Nom de l'épisode de podcast.

Il ne doit y avoir qu'un seul nom par langue. Utilisez un tableau pour baliser la description dans plusieurs langues. Consultez l'exemple pour plusieurs régions et langues.

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

Personne ou organisation

repeated

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

Personne ou organisation

repeated

Groupe ou réseau d'origine responsable de la publication de l'émission. Fait souvent référence à une organisation chargée de la publication ou de la production de plusieurs podcasts. Veuillez consulter Organisation, personne (auteur/éditeur) pour obtenir des exemples et des détails. Ce champ est fortement recommandé pour éviter toute ambiguïté. Nous vous recommandons de le définir, le cas échéant.
actor Obligatoire

Personne ou organisation

repeated

Acteur du podcast. Pour obtenir des exemples et des détails, consultez la section Acteur (hôte/invité).
datePublished Obligatoire Date/Heure Date et heure de la sortie de l'épisode de podcast. Cette valeur sert à trier la séquence d'épisodes et à lever l'ambiguïté.
episodeNumber Obligatoire Integer 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 Podcast Season Pour les séries multisaisons, 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 la page PodcastSeason(partOfSeason).
timeRequired Obligatoire Durée Durée de l'épisode au format ISO 8601.
image Optional

ImageObject

repeated

Une image de la série Il doit s'agir d'un fichier ImageObject entièrement décrit. Fournissez la plus haute résolution disponible. de préférence au format JPEG ou PNG. Consultez la section ImageObject (logo) pour obtenir des détails et des exemples.
isFamilyFriendly Obligatoire Booléen Indique si le contenu est adapté aux familles (c'est-à-dire s'il est adapté à 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 podcast. Par exemple, vous pouvez suivre les catégories de podcasts standards.
associatedMedia Optional Objet audio Fichier audio de l'épisode de podcast. Pour obtenir plus d'informations et des exemples, consultez la section AudioObject(associatedMedia).
potentialAction Obligatoire ListenAction Action à déclencher pour que les utilisateurs écoutent le contenu. Pour en savoir plus, consultez la section ListenAction.
popularityScore Optional PopularitéScoreScoreation Score de popularité permettant de déterminer la priorité de diffusion lorsqu'il existe plusieurs candidats. Pour obtenir des détails et des exemples, consultez la section PopularityScoreSpecification.
keywords Optional

Texte

repeated

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

PropertyValue

repeated

Pour PodcastEpisode, utilisez cette propriété afin de fournir un GUID. Le GUID doit être un ID capable 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 (n'appartenant pas à votre domaine) qui indique sans ambiguïté l'identité de l'article. Google utilise cette page Web pour éviter toute ambiguïté 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 ce champ pour éviter toute ambiguïté de l'épisode.
releasedEvent Optional PublicationEvent ou sous-types plus spécifiques : FeaturedEvent ou ExclusiveEvent Événement qui marque la publication ou la sortie de l'épisode de podcast. Un événement de publication peut indiquer la sortie 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 obtenir des détails et des exemples, consultez la section PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent). Notez que pour marquer une série comme exclusive ou présentée ci-dessus, tous les épisodes de la série sont exclusifs ou mis en avant. Nous vous recommandons de marquer ces propriétés avec une très grande précision.
countryOfOrigin Optional Pays Pays des bureaux principaux de l'entreprise de production ou de la personne responsable du podcast.

PodcastSeries (partieOfSeries)

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

Propriété Priorité Type Description
@type Obligatoire Texte Toujours défini sur PodcastSeries.
@id Obligatoire URL Identifiant unique 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 (partieOfSeason)

PodcastSeason représente les informations sur la saison d'un PodcastEpisode, et surtout le numéro de saison. Vous n'avez besoin de cette propriété que si 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 unique de la saison, au format URI. Cet identifiant doit être stable et immuable dans le temps. Elle est traitée comme une chaîne opaque et ne doit pas nécessairement être un lien fonctionnel.
seasonNumber Obligatoire Integer Numéro de 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 Elle doit toujours être définie sur Organization ou Person.
@id Obligatoire URL Identifiant unique 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 être 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 (n'appartenant pas à votre domaine) qui indique sans ambiguïté l'identité de l'article. Google utilise cette page Web pour éviter toute ambiguïté lorsqu'il existe plusieurs séries similaires. Il peut s'agir d'une page Wikipédia d'une organisation ou du site Web officiel de l'organisation.

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 (organisateur ou invité)

Propriété Priorité Type Description
@type Obligatoire Texte Elle doit toujours être définie sur Organization ou Person.
@id Obligatoire URL Identifiant unique 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 être un lien fonctionnel.
name Obligatoire Texte Nom de l'organisation ou de la personne.
roleName Obligatoire Texte `Host` ou `Guest`.
sameAs Optional URL URL d'une page Web de référence tierce (n'appartenant pas à votre domaine) qui indique sans ambiguïté l'identité de l'article. Google utilise cette page Web pour éviter toute ambiguïté lorsqu'il existe plusieurs séries similaires. Il peut s'agir d'une page Wikipédia d'une organisation ou du site Web officiel de l'organisation.

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 Integer Hauteur de l'image en pixels.
width Optional Integer Largeur de l'image en pixels.
contentUrl Obligatoire URL URL où se trouve l'image.
regionsAllowed Optional

Pays

repeated

Pays où les contenus multimédias sont autorisés:

  • Si ce paramètre n'est pas spécifié, on suppose que l'image est autorisée dans tous les paramètres régionaux.
  • Pour envoyer différentes images 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 fournir ces ID à l'aide du champ identifier afin d'améliorer la précision du rapprochement effectué par Google. Veuillez noter que le GUID est requis pour PodcastEpisode. Ce champ doit être différent du champ @id de l'épisode (et non de votre domaine). Il doit représenter l'épisode source de façon globale et unique au fil du temps, quelle que soit la source.

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é dans les cas où les critères de la requête utilisateur correspondent à plusieurs entités de votre flux. Le contenu avec le score de popularité le plus élevé disponible pour la région de l'utilisateur est diffusé auprès de l'utilisateur lorsque cette valeur est disponible. Pour tous les contenus qui ne contiennent pas ce champ, le score de popularité 0 est défini par défaut. La comparaison des scores s'effectuant dans le cadre de votre catalogue complet, assurez-vous 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 Numeric Valeur numérique positive à comparer à d'autres entités de votre catalogue pour 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 des régions auxquelles ce score de popularité s'applique.

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

Si des régions spécifiques doivent être listées, veuillez utiliser le type "Pays".

Si vous omettez ce champ, 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)

Événement de publication
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). De plus, le champ publishedBy indique l'entité de publication ou de distribution de la série ou de l'épisode de podcast.
Événement exclusif
Utilisez cet objet pour indiquer que le fournisseur dispose des 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.
Événement présenté
Utilisez cet objet pour indiquer que le fournisseur présente le podcast aux consommateurs (par exemple, en tant qu'original).
Les contenus originaux sont différents des contenus exclusifs
Le terme "œuvres originales" (featured) désigne souvent des droits exclusifs sur une entité donnée, qui surcharge le terme. Ainsi, le sens prévu 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 avec les deux types d'événements sur la même entité.

Bien que l'exclusivité ou la mise en avant d'une série ou d'un épisode puissent avoir des significations similaires dans le catalogue d'un fournisseur, PublicationEvent s'applique plus généralement.

Propriété Priorité Type Description
@type Obligatoire Texte Définissez toujours l'une des valeurs suivantes : PublicationEvent, ExclusiveEvent ou FeaturedEvent.
location Obligatoire Pays Région où se produit l'événement de publication. Vous pouvez également l'utiliser pour représenter les restrictions d'exclusivité et de distribution de l'entité. Utilisez les codes ISO 3166 pour le pays. Si vous devez appliquer une sémantique globale, définissez la valeur sur EARTH. Définissez explicitement location sur EARTH, au cas où des restrictions locales spécifiques ne s'appliquent pas.
startDate Recommandé (obligatoire pour ExclusiveEvent) Date ou date/heure Date de début de publication de l'entité. Dans le cas de PublicationEvent, cette valeur indique la date de sortie initiale de l'entité. Dans le cas de ExclusiveEvent ou FeaturedEvent, il s'agit de la date de début de l'exclusivité ou de la caractéristique de l'entité.
endDate Recommandé (obligatoire pour ExclusiveEvent) Date ou date/heure Date de fin de publication de l'entité. 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 Integer Taille du fichier multimédia en octets.
encodingFormat Obligatoire Texte Types de média du fichier IANA. Par exemple, audio/mpeg.
duration Obligatoire Durée Longueur du support 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"
},

ÉcouterAction (potentialAction)

L'entité ListenAction définit vos liens profonds pour la lecture et les critères auxquels les utilisateurs (par exemple, géo, chronique, connexion ou état d'abonnement) peuvent 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 de plate-forme compatibles. Vous pouvez utiliser plusieurs champs EntryPoint afin de 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ésents, un utilisateur qui correspond à un critère de spécification peut accéder au contenu.

EntryPoint (potentialAction.target)

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

Texte

repeated

Plate-forme sur 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'accès requis. Il doit s'agir de l'une des valeurs suivantes:

  • nologinrequired: l'utilisateur peut accéder à l'action sans effectuer d'achat ni de connexion.
  • free: l'action est disponible sans aucun achat ni abonnement payant de l'utilisateur. Cette action nécessite que l'utilisateur se connecte.
  • subscription : cette action est incluse dans l'abonnement payant à votre service.
availabilityStarts Optional Date/Heure Heure de début de la période de disponibilité. Cela vous permet de 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é. Cela vous permet de contrôler l'heure exacte à laquelle le contenu cesse d'être présenté aux utilisateurs.
eligibleRegion Obligatoire

Pays

repeated

Pays éligible pour cette Offre. Vous pouvez l'utiliser pour contrôler le pays ou la région où ce contenu doit être disponible.
requiresSubscription Obligatoire, le cas échéant Abonnement multimédia Package d'abonnements requis pour accéder à ce contenu. Si votre service propose plusieurs formules d'abonnement, ce champ est obligatoire. Si votre service est offert ou qu'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 ID unique du package d'abonnement, au format URI. Cet identifiant doit être stable et immuable dans le temps. Elle est traitée comme une chaîne opaque et ne doit pas nécessairement être un lien fonctionnel.
name Obligatoire Texte Nom de la formule d'abonnement. Par exemple, Premium, Basic.
expectsAcceptanceOf Approche conseillée 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 Number Prix de l'abonnement.
priceCurrency Obligatoire Texte Devise (au format ISO 4217 à trois lettres) correspondant au prix.
seller Approche conseillée 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"
            }
        }
    ]
}