Ringkasan struktur feed

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

Gambar 1. Struktur feed Tindakan Menonton dan Tindakan Mendengarkan.

Struktur feed

Tindakan Tonton dan Tindakan Dengarkan memiliki struktur feed yang berbeda.

Action Tonton memiliki hierarki berikut:
Tindakan Dengarkan memiliki hierarki berikut:

Envelop feed data

Envelop feed data adalah objek tingkat teratas di feed Media Actions. Objek ini berisi array objek markup konten (entitas) yang mewakili semua konten dalam katalog Anda.

Envelop 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 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 serta membantu mendeskripsikan konten melalui metadata.

Template markup konten

Objek markup konten dapat memiliki array Objek markup tindakan, yang memungkinkan konten dikaitkan dengan beberapa objek markup Tindakan. 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 ini adalah properti (potentialAction) dari objek markup konten.

Ada dua cara untuk menentukan batasan 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 batasan akses yang berbeda berdasarkan wilayah dan jangka waktu, objek markup Action dapat memiliki beberapa objek spesifikasi akses Action, atau objek penawaran, seperti yang ditunjukkan dalam template di bawah.

Template objek markup tindakan untuk Watch Action:

"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 Mendengarkan:

"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 ini adalah properti (target) dari Objek markup tindakan.

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 deep link platform lainnya, seperti yang ditunjukkan pada 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 jangka waktu. Objek ini adalah properti, actionAccessibilityRequirement, dari Objek markup tindakan.

category objek dapat berupa salah satu dari hal berikut:

  • nologinrequired
  • free
  • subscription

    Untuk mendeskripsikan detail langganan, buat Objek langganan media. Jika konten memerlukan pembelian tambahan untuk pelanggan, gunakan objek penawaran untuk menentukan harganya.

  • externalsubscription

    Untuk mendeskripsikan detail langganan, buat Objek langganan media. Jika konten memerlukan pembelian tambahan untuk pelanggan, gunakan objek penawaran untuk menentukan harganya.

  • rental

    Gunakan objek penawaran untuk menentukan harga.

  • purchase

    Gunakan objek penawaran untuk menentukan harga.

Langganan media

Objek langganan media menjelaskan detail langganan yang diperlukan untuk konten. Objek ini adalah properti, requiresSubscription, dari Objek spesifikasi akses tindakan. Hal ini diperlukan jika actionAccessibilityRequirement.category adalah subscription atau externalSubscription dan penawaran langganan Anda menyertakan beberapa paket atau tingkat, atau memiliki dukungan add-on. Jangan sertakan ini jika langganan Anda memiliki 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 ini adalah properti (expectsAcceptanceOf) dari objek berikut:

Contoh penawaran

Watch Actions menentukan properti expectsAcceptanceOf dalam objek spesifikasi akses Action:

"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 Dengarkan menentukan properti expectsAcceptanceOf secara langsung di objek markup Action:

"potentialAction":{
  "@type":"ListenAction",
  "target":{
    "@type":"EntryPoint",
    "urlTemplate":"http://www.example.com/playlist/top_pop_songs?autoplay=true",
    "actionPlatform":[ "http://schema.org/DesktopWebPlatform" ]
  },
  "expectsAcceptanceOf":{
    "@type": "Offer",
    "eligibleRegion": {
      "@type":"Country",
      "name":"US"
    },
    "category": "subscription",
    "name": "Example Music",
    "price": 9.99,
    "priceCurrency": "USD",
    "seller": {
      "@type": "Organization",
      "name": "My example seller",
      "sameAs": "http://www.example.com"
    }
  }
}

Gambar

Objek gambar menjelaskan gambar yang terkait dengan konten.

Persyaratan untuk gambar adalah sebagai berikut:

  • Untuk Action Smartwatch, 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 resolusi 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 berikut:
    • Gambar yang buram, pecah, diputar, atau berkualitas buruk.
    • Fotografi stok atau tanpa lisensi.
    • Ketelanjangan.
    • Konten ilegal.
  • Saat Anda memperbarui 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 struktur feed antara Tindakan Tonton dan Tindakan Dengarkan.

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

Contoh Listen Actions

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