Ringkasan struktur feed

Feed Tindakan Media adalah objek JSON yang berisi kumpulan entitas. Entity adalah objek schema.org yang mewakili item dalam katalog Anda: episode TV, serial TV, film, lagu, album, dan lainnya.

Gambar 1. Struktur feed Tindakan Tonton dan Tindakan Dengarkan.

Struktur feed

Tindakan Tonton dan Tindakan Dengarkan memiliki struktur feed yang berbeda.

Tindakan Tonton memiliki hierarki berikut:
Tindakan Memproses memiliki hierarki berikut:

Amplop feed data

Amplop feed data adalah objek level teratas di feed Tindakan Media. Objek ini berisi array objek markup konten (entitas) yang mewakili semua konten dalam katalog Anda.

Amplop feed data mendukung properti berikut:

Properti Jenis Deskripsi
@context URL Wajib - Tetapkan ke http://schema.org
@type Teks Wajib - Tetapkan ke DataFeed.
dateModified DateTime Wajib - Tanggal dan waktu feed yang terakhir diubah, dalam format ISO 8601 (termasuk zona waktu).
dataFeedElement Thing Wajib - Entitas katalog media Anda.

Template amplop feed data

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

Markup konten

Objek markup konten mewakili satu entitas dalam katalog Anda: film, episode TV, serial TV, lagu, album, stasiun radio, dll. Objek ini berisi ID dan URL kanonis konten dan membantu mendeskripsikan konten melalui metadata.

Template markup konten

Objek markup konten dapat memiliki array Objek markup Action, yang memungkinkan konten dikaitkan dengan beberapa objek markup Action. Misalnya, konten dapat memiliki objek markup Action yang berbeda per wilayah.

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

Markup tindakan

Objek markup Action menjelaskan deep link yang mengarahkan pengguna ke konten dan tingkat akses yang diperlukan untuk konten tersebut. Objek adalah properti (potentialAction) dari objek markup konten.

Ada dua cara untuk menentukan pembatasan akses:

Template markup tindakan

Jika konten memiliki beberapa deep link, objek markup Action akan menyertakan beberapa objek target. Misalnya, deep link konten untuk iOS mungkin berbeda dengan deep link Android. Selain itu, jika ada pembatasan akses yang berbeda berdasarkan wilayah dan periode waktu, objek markup Action dapat memiliki beberapa objek spesifikasi akses Action, atau objek penawaran, seperti yang ditampilkan dalam template di bawah ini.

Template objek markup tindakan untuk Tindakan Tonton:

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

Template objek markup tindakan untuk Tindakan Dengarkan:

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

Target

Objek target menyediakan pemetaan deep link ke berbagai platform Google. Objek adalah properti (target) dari objek markup Action.

Contoh target

Jika konten memiliki beberapa deep link berdasarkan platform, buat beberapa objek target untuk memberikan pemetaan yang berbeda. Misalnya, deep link konten untuk Chromecast mungkin berbeda dengan yang ada di platform lain deep link, seperti yang ditunjukkan dalam contoh di bawah.

Contoh objek target (dasar):

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

Contoh objek target dengan dua deep link:

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

Spesifikasi akses tindakan

Objek spesifikasi akses Action menjelaskan persyaratan akses untuk konten berdasarkan wilayah dan periode waktu. Objek adalah properti, actionAccessibilityRequirement, dari Objek markup tindakan.

category objek dapat berupa salah satu dari hal berikut:

  • nologinrequired
  • free
  • subscription

    Untuk menjelaskan detail langganan, buat Objek langganan media. Jika konten memerlukan pembelian tambahan untuk pelanggan, gunakan offer object untuk menentukan harga.

  • externalsubscription

    Untuk menjelaskan detail langganan, buat Objek langganan media. Jika konten memerlukan pembelian tambahan untuk pelanggan, gunakan offer object untuk menentukan harga.

  • rental

    Gunakan offer object untuk menentukan harga.

  • purchase

    Gunakan offer object untuk menentukan harga.

Langganan media

Objek langganan media menjelaskan detail langganan yang diperlukan untuk konten. Objek adalah properti, requiresSubscription, dari Objek spesifikasi akses tindakan. Ini adalah diperlukan jika actionAccessibilityRequirement.category adalah subscription atau externalSubscription dan penawaran langganan Anda mencakup beberapa paket atau tingkatan, atau memiliki dukungan add-on. Jangan sertakan ini jika langganan bersifat satu tingkat dan memberikan akses ke semua konten dalam katalog Anda.

Contoh langganan media

Contoh objek langganan media:

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

Penawaran

Objek penawaran menjelaskan harga yang terkait dengan konten. Objek adalah properti (expectsAcceptanceOf) dari objek berikut:

Contoh penawaran

Tindakan Menonton menentukan properti expectsAcceptanceOf di Objek spesifikasi akses tindakan:

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

Tindakan Proses menentukan properti expectsAcceptanceOf langsung di Objek markup tindakan:

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

Gambar

Objek gambar menjelaskan gambar yang terkait dengan konten.

Persyaratan untuk gambar adalah sebagai berikut:

  • Untuk Watch Actions, berikan gambar beresolusi tinggi (minimal 140x210 piksel) dengan rasio aspek 2:3.
    • Gambar harus dalam format .jpg atau .png.
  • Untuk Listen Actions, berikan gambar beresolusi tinggi (minimal 300x300 piksel) dengan rasio aspek 1x1.
    • Sebaiknya gunakan ukuran 600x600 piksel atau lebih tinggi.
    • Gambar harus dalam format .jpg, .png, atau .gif.
  • URL gambar harus dapat di-crawl dan diindeks.
  • Anda harus memiliki hak untuk menggunakan gambar dan mengizinkan gambar ditampilkan di perangkat dan properti Google.
  • Gambar tidak boleh berisi hal-hal berikut:
    • Gambar buram, pecah, diputar, atau berkualitas buruk.
    • Foto stok atau tanpa lisensi.
    • Ketelanjangan.
    • Konten ilegal.
  • Saat Anda mengupdate MusicPlaylist, perbarui gambarnya untuk mencerminkan konten baru.

Contoh gambar

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

Contoh feed

Contoh berikut menampilkan perbedaan dalam struktur feed antara Tindakan Menonton dan Tindakan Mendengarkan.

Contoh Tindakan Menonton

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

Contoh Tindakan Mendengarkan

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