Feedstruktur

Der Feed für Medienaktionen ist ein JSON-Objekt, das eine Sammlung von Entitäten enthält. Eine Entität ist ein schema.org-Objekt, das einen Artikel in Ihrem Katalog darstellt, z. B. eine TV-Folge, eine TV-Serie, einen Film, einen Titel, ein Album usw.

Abbildung 1. Die Feedstrukturen für Wiedergabe- und Anhör-Aktionen

Feedstruktur

Wiedergabe- und Höraktionen haben unterschiedliche Feedstrukturen.

Watch Actions haben die folgende Hierarchie:
Anhör-Aktionen haben die folgende Hierarchie:

Datenfeed-Umschlag

Ein Datenfeed-Umschlag ist das Objekt der obersten Ebene im Media Actions-Feed. Das Objekt enthält ein Array mit Inhalts-Markup-Objekten (Entitäten), die den gesamten Inhalt in Ihrem Katalog darstellen.

Ein Datenfeed-Umschlag unterstützt die folgenden Eigenschaften:

Attribut Typ Beschreibung
@context URL Erforderlich: auf http://schema.org festlegen
@type Text Erforderlich: auf DataFeed festlegen.
dateModified DateTime Erforderlich: Datum und Uhrzeit der letzten Änderung des Feeds im ISO 8601-Format (einschließlich Zeitzone).
dataFeedElement Ding Erforderlich: die Entitäten Ihres Medienkatalogs

Umschlagvorlage für Datenfeed

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

Inhalts-Markup

Ein Inhalts-Markup-Objekt repräsentiert ein einzelnes Element in Ihrem Katalog: einen Film, eine TV-Folge, eine TV-Serie, einen Titel, ein Album, einen Radiosender usw. Das Objekt enthält die ID und die kanonische URL des Inhalts und hilft bei der Beschreibung des Inhalts über Metadaten.

Vorlage für das Markup für Inhalte

Ein Inhalts-Markup-Objekt kann ein Array mit Aktions-Markup-Objekten haben. Die Inhalte können so mit mehreren Aktions-Markup-Objekten verknüpft werden. Der Inhalt kann beispielsweise pro Region ein anderes Aktions-Markup-Objekt haben.

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

Aktions-Markup

Ein Aktions-Markup-Objekt beschreibt den Deeplink, über den Nutzer zu den Inhalten gelangen, sowie die dafür erforderliche Zugriffsebene. Das Objekt ist eine Eigenschaft (potentialAction) eines Inhalts-Markup-Objekts.

Es gibt zwei Möglichkeiten, Zugriffsbeschränkungen festzulegen:

Aktions-Markup-Vorlage

Wenn der Inhalt mehrere Deeplinks hat, enthält ein Aktions-Markup-Objekt mehrere Zielobjekte. Beispielsweise kann sich der Deeplink für iOS vom Android-Deeplink unterscheiden. Wenn außerdem je nach Region und Zeitraum unterschiedliche Zugriffsbeschränkungen gelten, kann ein Aktions-Markup-Objekt mehrere Aktions-Zugriffsspezifikationsobjekte oder Angebotsobjekte haben, wie in den folgenden Vorlagen dargestellt.

Aktions-Markup-Objektvorlage für Watch Actions:

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

Aktions-Markup-Objektvorlage für Listenaktionen:

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

Ziel

Ein Zielobjekt ermöglicht die Zuordnung eines Deeplinks zu verschiedenen Google-Plattformen. Das Objekt ist eine Eigenschaft (target) eines Markup-Objekts für die Aktion.

Beispiel für Ziel

Wenn der Inhalt mehrere Deeplinks basierend auf den Plattformen hat, erstellen Sie mehrere Zielobjekte für unterschiedliche Zuordnungen. Beispielsweise kann sich der Deeplink für Chromecast des Inhalts von dem für die anderen Plattformen unterscheiden. wie im Beispiel unten dargestellt.

Beispiel für ein Zielobjekt (einfach):

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

Beispiel für ein Zielobjekt mit zwei Deeplinks:

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

Aktionszugriffsspezifikation

Ein Aktionszugriffsspezifikationsobjekt beschreibt die Zugriffsanforderung für die basierend auf der Region und dem Zeitraum. Das Objekt ist eine Eigenschaft, actionAccessibilityRequirement von einem Aktions-Markup-Objekt.

Der category des Objekts kann Folgendes sein:

  • nologinrequired
  • free
  • subscription

    Um die Details des Abos zu beschreiben, erstellen Sie einen Medienaboobjekt Wenn der Inhalt einen zusätzlichen Kauf erfordert, verwenden Sie ein offers um den Preis anzugeben.

  • externalsubscription

    Um die Details des Abos zu beschreiben, erstellen Sie einen Medienaboobjekt Wenn der Inhalt einen zusätzlichen Kauf erfordert, verwenden Sie ein offers um den Preis anzugeben.

  • rental

    Verwenden Sie offers um den Preis anzugeben.

  • purchase

    Verwenden Sie offers um den Preis anzugeben.

Medienabo

Ein Medienaboobjekt beschreibt die Details des erforderlichen Abos nach Inhalten suchen. Das Objekt ist eine Eigenschaft (requiresSubscription) eines Aktionsspezifikationsobjekt. Dies ist erforderlich, wenn actionAccessibilityRequirement.category entweder subscription oder externalSubscription und Ihr Aboangebot umfasst mehrere Pakete oder Stufen oder Add-on-Unterstützung bietet. Geben Sie dies nicht an, wenn Ihr ist ein einstufiges Abo, das Zugriff auf alle Inhalte in Ihrem Katalog bietet.

Beispiel für ein Medienabo

Beispiel für ein Medienaboobjekt:

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

Angebot

Ein Angebotsobjekt beschreibt den mit dem Inhalt verbundenen Preis. Das Objekt ist eine Eigenschaft (expectsAcceptanceOf) der folgenden Objekte:

Angebotsbeispiel

Watch Actions geben die Eigenschaft expectsAcceptanceOf in der Aktionsspezifikationsobjekt:

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

Bei Listenaktionen wird das Attribut expectsAcceptanceOf direkt im Aktions-Markup-Objekt angegeben:

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

Bild

Ein image-Objekt beschreibt das mit dem Inhalt verknüpfte Bild.

Für das Bild gelten die folgenden Anforderungen:

  • Für Wiedergabeaktionen sollten Sie ein hochauflösendes Bild (mindestens 140 x 210 Pixel) mit einem Seitenverhältnis von 2:3 verwenden.
    • Das Bild muss das Format .jpg oder .png haben.
  • Stellen Sie für Anhör-Aktionen ein hochauflösendes Bild (mindestens 300 x 300 Pixel) mit einem Seitenverhältnis von 1 x 1 bereit.
    • Wir empfehlen eine Auflösung von 600 x 600 Pixeln oder höher.
    • Das Bild muss das Format .jpg, .png oder .gif haben.
  • Die Bild-URL muss gecrawlt und indexiert werden können.
  • Sie müssen berechtigt sein, das Bild zu verwenden, und zulassen, dass es auf Geräten und in Produkten von Google angezeigt wird.
  • Das Bild darf Folgendes nicht enthalten: <ph type="x-smartling-placeholder">
      </ph>
    • Unscharfe, pixelige, gedrehte oder qualitativ minderwertige Bilder.
    • Nicht lizenzierte Fotos oder Stockfotos.
    • Nacktheit.
    • Illegale Inhalte
  • Aktualisieren Sie beim Aktualisieren von MusicPlaylist das zugehörige Bild, um den neuen Inhalt widerzuspiegeln.

Bildbeispiel

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

Feedbeispiele

Die folgenden Beispiele zeigen den Unterschied in der Feedstruktur zwischen Wiedergabe- und Zuhör-Aktionen

Beispiel für Watch Actions

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

Beispiel für Anhör-Aktionen

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