Feed yapısına genel bakış

Medya İşlemleri feed'i, bir varlık koleksiyonu içeren bir JSON nesnesi. Öğe, katalogunuzdaki bir öğeyi (ör. TV bölümü, TV dizisi, film, şarkı, albüm) temsil eden bir schema.org nesnesidir.

Şekil 1. İzleme İşlemleri ve Dinleme İşlemleri feed yapıları.

Feed yapısı

İzleme işlemleri ve dinleme işlemleri farklı feed yapılarına sahiptir.

İzleme işlemleri aşağıdaki hiyerarşiye sahiptir:
Dinleme işlemleri aşağıdaki hiyerarşiye sahiptir:

Veri feed'i zarf

Veri feed'i zarf, Media Actions feed'indeki en üst düzey nesnedir. Nesne, kataloğunuzdaki tüm içeriği temsil eden bir dizi içerik işaretleme nesnesi (varlık) içerir.

Veri feed'i zarfında aşağıdaki özellikler desteklenir:

Mülk Tür Açıklama
@context URL Zorunlu: http://schema.org olarak ayarlanır.
@type Metin Zorunlu: DataFeed olarak ayarlanır.
dateModified DateTime Zorunlu: Feed'in en son değiştirildiği tarih ve saat (ISO 8601 biçiminde, saat dilimi dahil).
dataFeedElement Thing alt türü Zorunlu: Medya kataloğunuzun varlıkları.

Veri feed'i zarf şablonu

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

İçerik işaretleme

İçerik işaretleme nesnesi, kataloğunuzdaki tek bir öğeyi (ör. film, TV bölümü, TV dizisi, şarkı, albüm, radyo istasyonu) temsil eder. Nesne, içeriğin tanımlayıcısını ve standart URL'sini içerir ve içeriğin metadata aracılığıyla açıklanmasına yardımcı olur.

İçerik işaretleme şablonu

İçerik işaretleme nesnesi, içeriğin birden fazla işlem işaretleme nesnesi ile ilişkilendirilmesine olanak tanıyan bir işlem işaretleme nesnesi dizisi içerebilir. Örneğin, içerikte bölge başına farklı bir işlem işaretleme nesnesi olabilir.

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

İşlem işaretlemesi

İşlem işaretleme nesnesi, kullanıcıları içeriğe yönlendiren derin bağlantıyı ve içerik için gereken erişim düzeyini tanımlar. Nesne, bir içerik işaretleme nesnesinin özelliğidir (potentialAction).

Erişim kısıtlamalarını belirtmenin iki yolu vardır:

İşlem işaretleme şablonu

İçerikte birden fazla derin bağlantı varsa işlem işaretleme nesnesi birden fazla hedef nesne içerir. Örneğin, içeriğin iOS için derin bağlantısı Android derin bağlantısından farklı olabilir. Ayrıca, bölgelere ve zaman dönemlerine göre farklı erişim kısıtlamaları varsa bir işlem işaretleme nesnesi, aşağıdaki şablonlarda gösterildiği gibi birden fazla işlem erişim spesifikasyonu nesnesine veya fırsat nesnesine sahip olabilir.

İzleme işlemleri için işlem işaretleme nesnesi şablonu:

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

Dinleme işlemleri için işlem işaretleme nesnesi şablonu:

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

Hedef

Hedef nesne, derin bağlantının çeşitli Google platformlarıyla eşlenmesini sağlar. Nesne, bir İşlem işaretleme nesnesinin özelliğidir (target).

Hedef örneği

İçerikte platformlara göre birden fazla derin bağlantı varsa farklı eşlemeler sağlamak için birden fazla hedef nesne oluşturun. Örneğin, içeriğin Chromecast için derin bağlantısı, aşağıdaki örnekte gösterildiği gibi diğer platformların derin bağlantılarından farklı olabilir.

Hedef nesne örneği (temel):

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

İki derin bağlantı içeren hedef nesne örneği:

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

İşlem erişim özellikleri

İşlem erişim spesifikasyonu nesnesi, bölgeye ve döneme göre içeriğin erişim şartını açıklar. Nesne, işlem işaretleme nesnesinin bir özelliğidir (actionAccessibilityRequirement).

Nesnenin category değeri aşağıdakilerden biri olabilir:

  • nologinrequired
  • free
  • subscription

    Aboneliğin ayrıntılarını açıklamak için bir medya aboneliği nesnesi oluşturun. İçerik için abonelerin ek satın alma işlemi yapması gerekiyorsa fiyatı belirtmek üzere bir teklif nesnesi kullanın.

  • externalsubscription

    Aboneliğin ayrıntılarını açıklamak için bir medya aboneliği nesnesi oluşturun. İçerik için abonelerin ek satın alma işlemi yapması gerekiyorsa fiyatı belirtmek üzere bir teklif nesnesi kullanın.

  • rental

    Fiyatı belirtmek için bir offer nesnesi kullanın.

  • purchase

    Fiyatı belirtmek için bir offer nesnesi kullanın.

Medya aboneliği

Medya aboneliği nesnesi, içerik için gereken aboneliğin ayrıntılarını açıklar. Nesne, işlem erişim özelliği nesnesi'nin bir özelliğidir (requiresSubscription). actionAccessibilityRequirement.category subscription veya externalSubscription ise ve abonelik teklifiniz birden fazla paket veya katman içeriyorsa ya da eklenti desteği varsa bu gereklidir. Aboneliğiniz tek katmanlıysa ve kataloğunuzdaki tüm içeriklere erişim sağlıyorsa bunu eklemeyin.

Medya aboneliği örneği

Medya aboneliği nesnesi örneği:

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

Teklif

Teklif nesnesi, içerikle ilişkili fiyatı tanımlar. Nesne, aşağıdaki nesnelerin bir özelliğidir (expectsAcceptanceOf):

Teklif örneği

İzleme işlemleri, İşlem erişim spesifikasyonu nesnesinde expectsAcceptanceOf mülkünü belirtir:

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

Dinleme işlemleri, expectsAcceptanceOf mülkünü doğrudan İşlem işaretleme nesnesinde belirtir:

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

Resim

Resim nesnesi, içerikle ilişkili resmi tanımlar.

Resimle ilgili şartlar şunlardır:

  • İzleme işlemleri için 2:3 en boy oranına sahip yüksek çözünürlüklü bir resim (en az 140x210 piksel) sağlayın.
    • Resim .jpg veya .png biçiminde olmalıdır.
  • Dinleme işlemleri için 1x1 en boy oranına sahip yüksek çözünürlüklü bir resim (en az 300x300 piksel) sağlayın.
    • 600x600 piksel veya daha yüksek çözünürlük önerilir.
    • Resim .jpg, .png veya .gif biçiminde olmalıdır.
  • Resmin URL'si taranabilir ve dizine eklenebilir olmalıdır.
  • Resmi kullanma ve Google cihazlarında ve mülklerinde gösterilmesine izin verme haklarına sahip olmanız gerekir.
  • Resim aşağıdakileri içermemelidir:
    • Bulanık, pikselli, döndürülmüş veya düşük kaliteli resim.
    • Lisanssız veya stok fotoğraflar
    • Çıplaklık
    • Yasa dışı içerik.
  • MusicPlaylist öğesini güncellerken resmini yeni içeriği yansıtacak şekilde güncelleyin.

Resim örneği

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

Feed örnekleri

Aşağıdaki örneklerde, İzleme İşlemleri ile Dinleme İşlemleri arasındaki feed yapısındaki fark gösterilmektedir.

İzleme işlemleri örneği

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

Dinleme işlemleri örneği

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