Omówienie struktury pliku danych

Plik danych Media Actions to obiekt JSON zawierający kolekcję elementów. Encja to obiekt schema.org, który reprezentuje element z katalogu: odcinek serialu telewizyjnego, serial telewizyjny, film, utwór, album i inne treści.

Rysunek 1. Struktury karty działań związanych z oglądaniem i słuchaniem.

Struktura pliku danych

Karty odtwarzania i działania słuchaczy mają różne struktury.

Działania dotyczące oglądania mają taką hierarchię:
Akcje nasłuchiwania mają taką hierarchię:

Koperta pliku danych

Koperta pliku danych to obiekt najwyższego poziomu w pliku danych działań związanych z multimediami. Obiekt zawiera tablicę obiektów znaczników treści (elementów), które reprezentują całą zawartość katalogu.

Koperta pliku danych obsługuje następujące właściwości:

Właściwość Typ Opis
@context Adres URL Wymagany – ustaw wartość http://schema.org
@type Tekst Wymagane – ustaw na DataFeed.
dateModified DateTime Wymagane – data i godzina ostatniej modyfikacji pliku danych podana w formacie ISO 8601 (wraz ze strefą czasową).
dataFeedElement Rzeczy Wymaganeelementy w katalogu multimediów.

Szablon koperty pliku danych

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

Znaczniki treści

Obiekt znaczników treści reprezentuje jeden element w katalogu: film, odcinek serialu telewizyjnego, serial telewizyjny, utwór, album, stację radiową itd. Obiekt zawiera identyfikator i kanoniczny URL treści i pomaga opisać ją za pomocą metadanych.

Szablon znaczników treści

Obiekt znaczników treści może mieć tablicę obiektów znaczników Action, co umożliwia powiązanie treści z wieloma obiektami znaczników Action. Na przykład treść może mieć inny obiekt znacznika działania w zależności od regionu.

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

Znaczniki działań

Obiekt znaczników Action opisuje precyzyjny link, który przekierowuje użytkowników do treści, oraz określa wymagany poziom dostępu. Obiekt jest właściwością (potentialAction) obiektu znaczników treści.

Ograniczenia dostępu można określić na 2 sposoby:

Szablon znaczników działań

Jeśli treść zawiera wiele precyzyjnych linków, obiekt znacznika Action zawiera wiele obiektów docelowych. Na przykład precyzyjny link treści na iOS może się różnić od precyzyjnego linku na Androida. Poza tym, jeśli obowiązują różne ograniczenia dostępu w zależności od regionu i przedziałów czasu, obiekt znaczników Action może mieć wiele obiektów specyfikacji dostępu do działań lub obiektów oferty, jak pokazano w szablonach poniżej.

Szablon znaczników działań dla działań obserwacji:

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

Szablon obiektu znaczników działań dla działań nasłuchiwania:

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

Cel

Obiekt docelowy zapewnia mapowanie precyzyjnego linku na różne platformy Google. Obiekt jest właściwością (target) obiektu znaczników działania.

Przykład elementu docelowego

Jeśli treść zawiera wiele precyzyjnych linków powiązanych z platformami, utwórz wiele obiektów docelowych, aby zapewnić różne mapowania. Na przykład precyzyjny link do treści na Chromecaście może różnić się od precyzyjnego linku do treści na innych platformach precyzyjne linki, jak widać w przykładzie poniżej.

Przykład obiektu docelowego (podstawowego):

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

Przykład obiektu docelowego z 2 precyzyjnymi linkami:

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

Specyfikacja dostępu do działania

Obiekt specyfikacji dostępu do działań opisuje wymaganie dostępu dla treści w zależności od regionu i okresu. Obiekt jest właściwością, actionAccessibilityRequirement, z Obiekt znaczników działania.

category obiektu może być dowolną z tych wartości:

  • nologinrequired
  • free
  • subscription

    Aby opisać szczegóły subskrypcji, utwórz Obiekt subskrypcji multimediów. Jeśli treści wymagają od subskrybentów dodatkowego zakupu, skorzystaj z offers, aby określić cenę.

  • externalsubscription

    Aby opisać szczegóły subskrypcji, utwórz Obiekt subskrypcji multimediów. Jeśli treści wymagają od subskrybentów dodatkowego zakupu, skorzystaj z offers, aby określić cenę.

  • rental

    Użyj offers, aby określić cenę.

  • purchase

    Użyj offers, aby określić cenę.

Subskrypcja multimediów

Obiekt subskrypcji multimediów opisuje szczegóły wymaganej subskrypcji treści. Obiekt jest właściwością (requiresSubscription) elementu Obiekt specyfikacji dostępu do działania. To jest wymagane, jeśli actionAccessibilityRequirement.category to subscription lub externalSubscription i Twoja oferta subskrypcji obejmuje wiele pakiety lub poziomy albo oferuje dodatkową obsługę. Nie uwzględniaj tego, jeśli jest jednopoziomowa i daje dostęp do wszystkich treści z katalogu.

Przykład subskrypcji multimediów

Przykład obiektu subskrypcji multimediów:

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

Oferta

Obiekt oferty opisuje cenę powiązaną z treścią. Obiekt jest właściwością (expectsAcceptanceOf) tych obiektów:

Przykładowa oferta

Watch Actions określa właściwość expectsAcceptanceOf w parametrze Obiekt specyfikacji dostępu do działania:

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

Listen Actions określa właściwość expectsAcceptanceOf bezpośrednio w obiekcie znaczników 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"
    }
  }
}

Obraz

Obiekt graficzny opisuje obraz powiązany z treścią.

Wymagania dotyczące zdjęcia:

  • W przypadku działań związanych z zegarkiem prześlij obraz o wysokiej rozdzielczości (co najmniej 140 x 210 pikseli) i współczynniku proporcji 2:3.
    • Obraz musi być w formacie .jpg lub .png.
  • W przypadku działań związanych z słuchaniem prześlij obraz o wysokiej rozdzielczości (co najmniej 300 x 300 pikseli) i współczynniku proporcji 1 x 1.
    • Zalecamy rozmiar 600 x 600 pikseli lub większy.
    • Obraz musi być w formacie .jpg, .png lub .gif.
  • Adres URL obrazu musi być dostępny do pobrania i zindeksowania.
  • Musisz mieć prawa do korzystania z obrazu oraz zezwolenia na jego wyświetlanie na urządzeniach i w usługach Google.
  • Obraz nie może zawierać:
    • Rozmyty, pikselowy, obrócony obraz lub obraz niskiej jakości.
    • Zdjęcie licencjonowane lub zdjęcie licencjonowane.
    • Nagość.
    • Treści niezgodne z prawem.
  • Gdy zaktualizujesz aplikację MusicPlaylist, zaktualizuj jej obraz, aby odzwierciedlał nowe treści.

Przykładowy obraz

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

Przykłady pliku danych

W poniższych przykładach widać różnicę w strukturze pliku danych Oglądaj działania i słuchaj.

Przykład: 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"
        }
      ]
    }
  ]
}

Przykład działania 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"
            }
          }
        }
      }
    }
  ]
}