피드 구조 개요

미디어 작업 피드는 항목 모음을 포함하는 JSON 객체입니다. 항목은 카탈로그의 항목(TV 에피소드, TV 시리즈, 영화, 노래, 앨범 등)을 나타내는 schema.org 객체입니다.

그림 1. 시청 작업 및 듣기 작업의 피드 구조

피드 구조

보기 작업과 듣기 작업의 피드 구조는 다릅니다.

데이터 피드 봉투

데이터 피드 엔벨프는 미디어 작업 피드의 최상위 객체입니다. 이 객체에는 카탈로그의 모든 콘텐츠를 나타내는 콘텐츠 마크업 객체 (항목) 배열이 포함됩니다.

데이터 피드 엔벨프는 다음 속성을 지원합니다.

속성 유형 설명
@context URL 필수 - http://schema.org로 설정
@type 텍스트 필수 - DataFeed로 설정합니다.
dateModified DateTime 필수 - 피드가 마지막으로 수정된 날짜 및 시간입니다 (ISO 8601 형식, 시간대 포함).
dataFeedElement 사물 필수 - 미디어 카탈로그의 항목입니다.

데이터 피드 봉투 템플릿

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

콘텐츠 마크업

콘텐츠 마크업 객체는 카탈로그의 단일 항목(예: 영화, TV 에피소드, TV 시리즈, 노래, 앨범, 라디오 채널)을 나타냅니다. 이 객체는 콘텐츠의 식별자 및 표준 URL을 포함하며 metadata를 통해 콘텐츠를 설명하는 데 도움이 됩니다.

콘텐츠 마크업 템플릿

콘텐츠 마크업 객체에는 작업 마크업 객체 배열이 포함될 수 있으므로 콘텐츠를 여러 작업 마크업 객체와 연결할 수 있습니다. 예를 들어 콘텐츠에는 지역별로 다른 작업 마크업 객체가 있을 수 있습니다.

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

작업 마크업

작업 마크업 객체는 사용자를 콘텐츠로 안내하는 딥 링크와 콘텐츠에 필요한 액세스 수준을 설명합니다. 이 객체는 콘텐츠 마크업 객체의 속성 (potentialAction)입니다.

액세스 제한을 지정하는 방법에는 두 가지가 있습니다.

작업 마크업 템플릿

콘텐츠에 딥 링크가 여러 개인 경우 작업 마크업 객체에는 여러 개의 타겟 객체가 포함됩니다. 예를 들어 iOS용 콘텐츠의 딥 링크는 Android 딥 링크와 다를 수 있습니다. 또한 지역 및 기간에 따라 액세스 제한이 다른 경우 아래 템플릿과 같이 액션 마크업 객체에 여러 액션 액세스 사양 객체 또는 제품 객체가 있을 수 있습니다.

시청 작업의 작업 마크업 객체 템플릿:

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

듣기 작업의 작업 마크업 객체 템플릿:

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

타겟

타겟 객체는 딥 링크를 다양한 Google 플랫폼에 매핑합니다. 이 객체는 작업 마크업 객체의 속성 (target)입니다.

타겟 예

콘텐츠에 플랫폼을 기반으로 하는 딥 링크가 여러 개인 경우 여러 대상 객체를 만들어 서로 다른 매핑을 제공합니다. 예를 들어 Chromecast용 콘텐츠의 딥 링크는 아래 예와 같이 다른 플랫폼의 딥 링크와 다를 수 있습니다.

타겟 객체의 예 (기본):

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

딥 링크가 2개인 타겟 객체 예:

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

작업 액세스 사양

작업 액세스 사양 객체는 지역 및 기간을 기반으로 콘텐츠의 액세스 요구사항을 설명합니다. 이 객체는 작업 마크업 객체의 속성인 actionAccessibilityRequirement입니다.

객체의 category는 다음 중 하나일 수 있습니다.

  • nologinrequired
  • free
  • subscription

    정기 결제 세부정보를 설명하려면 미디어 정기 결제 객체를 만듭니다. 구독자가 콘텐츠를 추가로 구매해야 하는 경우 상품 객체를 사용하여 가격을 지정합니다.

  • externalsubscription

    정기 결제의 세부정보를 설명하려면 미디어 정기 결제 객체를 만듭니다. 구독자가 콘텐츠를 추가로 구매해야 하는 경우 상품 객체를 사용하여 가격을 지정합니다.

  • rental

    offer 객체를 사용하여 가격을 지정합니다.

  • purchase

    offer 객체를 사용하여 가격을 지정합니다.

미디어 구독

미디어 구독 객체는 콘텐츠에 필요한 구독의 세부정보를 설명합니다. 이 객체는 작업 액세스 사양 객체의 속성 requiresSubscription입니다. actionAccessibilityRequirement.categorysubscription 또는 externalSubscription이고 구독 상품에 여러 패키지 또는 등급이 포함되어 있거나 부가기능이 지원되는 경우 이 속성이 필요합니다. 구독이 한 단계로 이루어져 있고 카탈로그의 모든 콘텐츠에 액세스할 수 있는 경우에는 이 항목을 포함하지 마세요.

미디어 구독 예시

미디어 구독 객체의 예는 다음과 같습니다.

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

혜택

혜택 객체는 콘텐츠와 연결된 가격을 설명합니다. 이 객체는 다음 객체의 속성 (expectsAcceptanceOf)입니다.

혜택 예시

워치 액션이 액션 액세스 사양 객체에서 expectsAcceptanceOf 속성을 지정합니다.

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

리슨 작업은 작업 마크업 객체에서 expectsAcceptanceOf 속성을 직접 지정합니다.

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

이미지

이미지 객체는 콘텐츠와 연결된 이미지를 설명합니다.

이미지 요구사항은 다음과 같습니다.

  • 보기 작업의 경우 가로세로 비율이 2:3인 고해상도 이미지 (최소 140x210픽셀)를 제공하세요.
    • 이미지는 .jpg 또는 .png 형식이어야 합니다.
  • 리슨 작업의 경우 가로세로 비율이 1x1인 고해상도 이미지 (최소 300x300픽셀)를 제공하세요.
    • 600x600픽셀 이상을 권장합니다.
    • 이미지는 .jpg, .png 또는 .gif 형식이어야 합니다.
  • 이미지 URL은 크롤링 및 색인 생성이 가능해야 합니다.
  • 이미지를 사용하고 Google 기기 및 속성에 이미지를 표시할 권리가 있어야 합니다.
  • 이미지에 다음이 포함되어서는 안 됩니다.
    • 흐리거나 픽셀이 보임, 회전되었거나 품질이 좋지 않은 이미지
    • 라이선스가 없거나 스톡 사진
    • 과도한 노출
    • 불법 콘텐츠
  • MusicPlaylist를 업데이트할 때 새 콘텐츠를 반영하도록 이미지를 업데이트합니다.

이미지 예시

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

피드 예시

다음 예는 보기 액션과 리슨 액션 간의 피드 구조 차이를 보여줍니다.

시청 작업 예시

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

리슨 작업 예시

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