Omówienie struktury pliku danych

Kanał Media Actions to obiekt JSON zawierający zbiór elementów. Element to obiekt schema.org, który reprezentuje element w katalogu: odcinek serialu, serial, film, piosenkę, album itp.

Rysunek 1. Struktury pliku danych dotyczące działań związanych z oglądaniem i słuchaniem.

Struktura pliku danych

Działania dotyczące oglądania i słuchania mają różne struktury danych.

Działania dotyczące oglądania mają taką hierarchię:
Działania dotyczące słuchania mają taką hierarchię:

Envelopa pliku danych

Opakowanie pliku danych to obiekt najwyższego poziomu w pliku danych Media Actions. Obiekt zawiera tablicę obiektów znaczników treści (elementów), które reprezentują wszystkie treści w katalogu.

Opakowanie pliku danych obsługuje te właściwości:

Właściwość Typ Opis
@context Adres URL Wymagany – ustaw na http://schema.org
@type Text Wymagany – ustaw na DataFeed.
dateModified DateTime Wymagany: data i godzina ostatniej modyfikacji pliku danych w formacie ISO 8601 (w tym strefa czasowa).
dataFeedElement Thing Wymagany – elementy 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 pojedynczą jednostkę w katalogu: film, odcinek serialu, serial telewizyjny, utwór, album, stację radiową itp. Obiekt zawiera identyfikator i kanoniczny adres URL treści oraz pomaga opisać treści za pomocą metadata.

Szablon znaczników treści

Obiekt znaczników treści może zawierać tablicę obiektów znaczników działań, co pozwala powiązać treści z wieloma obiektami znaczników działań. Na przykład treści mogą mieć inny obiekt znacznika działania w każdym regionie.

{
   "@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 ActionMarkup opisuje precyzyjny link, który prowadzi użytkowników do treści, oraz poziom dostępu wymagany do wyświetlenia tych treści. 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ści zawierają wiele linków do treści szczegółowych, obiekt znacznika działania zawiera wiele obiektów docelowych. Na przykład precyzyjny link do treści na iOS może być inny niż precyzyjny link na Androida. Jeśli występują różne ograniczenia dostępu na podstawie regionów i okresów, obiekt Action markup może mieć wiele obiektów specyfikacji dostępu do działania lub obiektów oferty, jak pokazano w poniższych szablonach.

Szablon obiektu znaczników akcji dla działań dotyczących oglądania:

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

Szablon obiektu znaczników działania dla działań związanych z słuchaniem:

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

Cel

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

Przykład celu

Jeśli treści mają wiele precyzyjnych linków na podstawie platform, utwórz wiele obiektów docelowych, aby zapewnić różne mapowania. Na przykład link do treści na Chromecasta może być inny niż linki do treści na innych platformach, jak pokazano w przykładzie poniżej.

Przykład obiektu docelowego (podstawowy):

"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łania określa wymagania dotyczące dostępu do treści na podstawie regionu i okresu. Obiekt jest właściwością actionAccessibilityRequirementobiektu Action markup.

Wartość category obiektu może być dowolnym z tych elementów:

Subskrypcja mediów

Obiekt subskrypcji multimediów zawiera szczegóły subskrypcji wymaganej dla treści. Obiekt jest właściwością requiresSubscription obiektu specyfikacji dostępu do działania. Jest to wymagane, jeśli actionAccessibilityRequirement.category to subscription lub externalSubscription, a Twoja oferta abonamentu obejmuje kilka pakietów lub poziomów lub obsługuje dodatki. Nie podawaj tej informacji, jeśli subskrypcja jest jednopoziomowa i daje dostęp do wszystkich treści w katalogu.

Przykład subskrypcji multimediów

Przykład obiektu subskrypcji medió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ściami. Obiekt jest właściwością (expectsAcceptanceOf) tych obiektów:

Przykład oferty

Działania dotyczące oglądania określają właściwość expectsAcceptanceOf w obiekcie 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"
      }
    }
  }
}

Czynności dotyczące słuchania określają właściwość expectsAcceptanceOf bezpośrednio w obiekcie znaczników działania:

"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 image opisuje obraz powiązany z treścią.

Wymagania dotyczące obrazu:

  • W przypadku działań do obejrzenia prześlij obraz o wysokiej rozdzielczości (co najmniej 140 × 210 pikseli) o współczynniku proporcji 2:3.
    • Obraz musi być w formacie .jpg lub .png.
  • W przypadku działań związanych z słuchaniem podaj obraz o wysokiej rozdzielczości (co najmniej 300 x 300 pikseli) o stosunku proporcji 1 x 1.
    • Zalecamy użycie rozdzielczości co najmniej 600 × 600 pikseli.
    • 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 i zezwalanie na jego wyświetlanie na urządzeniach i usługach Google.
  • Obraz nie może zawierać:
    • Rozmazany, rozpikselowany, obrócony lub niskiej jakości obraz.
    • zdjęcia bez licencji lub zdjęcia stockowe.
    • nagość,
    • Treści niezgodne z prawem.
  • Gdy aktualizujesz MusicPlaylist, zaktualizuj obraz, aby odzwierciedlał nową treść.

Przykład obrazu

"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 plików danych

W następujących przykładach widać różnicę w strukturze pliku danych między działaniami dotyczącymi oglądania a słuchania.

Przykład działania dotyczącego oglądania

{
  "@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 ListenAction

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