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

피드 구조
보기 작업과 듣기 작업의 피드 구조는 다릅니다.
시청 작업에는 다음과 같은 계층 구조가 있습니다. |
수신 대기 작업에는 다음과 같은 계층 구조가 있습니다. |
데이터 피드 봉투
데이터 피드 엔벨프는 미디어 작업 피드의 최상위 객체입니다. 이 객체에는 카탈로그의 모든 콘텐츠를 나타내는 콘텐츠 마크업 객체 (항목) 배열이 포함됩니다.
데이터 피드 엔벨프는 다음 속성을 지원합니다.
속성 | 유형 | 설명 |
---|---|---|
@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.category
이 subscription
또는 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"
}
}
}
}
}
]
}