使用者偏好觀看或聆聽原本可存取的內容,例如 使用者的訂閱內容如果 Google 知道使用者可以 存取您的應用程式或平台上,Google 就能提供更符合需求的搜尋結果 或回應來將使用者導向該內容
辨別內容存取權需求
您必須指出應用程式所含內容套件的存取需求 目錄過程中,請思考以下問題:
- 使用者是否需要登入您的應用程式或平台才能存取內容?
使用者是否需要訂閱?
僅限觀看動作:
- 使用者是否需要外部服務供應商的訂閱服務?
- 你是否提供分級訂閱方案、多重套裝組合或加購的訂閱方案?
僅限觀看動作:使用者是否需要租借或購買內容?
存取權要求是否隨時間改變?
存取權要求是否取決於裝置的所在位置?
存取權限制類型
存取權限制分為以下兩種:
付費牆類型
你可以依付費牆類型限制內容存取權。下表 各種付費牆類型的詳細資訊
付費牆類型 | 範例 | 類別 |
---|---|---|
無須購買或登入。 | Crackle | nologinrequired |
使用者必須登入,但不需付費訂閱。 | Vudu (AVOD) | free |
使用者必須擁有有效的訂閱項目。存取權獨立於 訂閱層級的資料 | Netflix |
|
使用者必須擁有有效的訂閱項目。存取權取決於 訂閱級別 | Hulu (外掛程式) |
|
內容會在 購買。 | Vudu | rental |
內容在 購買。 | Vudu | purchase |
可訂閱有線電視。 | HBO GO | externalSubscription |
觀看動作付費牆類型
如要指定「觀看動作」的內容付費牆類型,請使用
category
敬上
將資源用於
動作存取規格:
"potentialAction": {
"@type":"WatchAction",
"target": { … },
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
...
}
聆聽動作付費牆類型
如要指定「監聽動作」的內容付費牆類型,請使用
category
敬上
將資源用於
優惠物件:
"potentialAction": {
"@type":"ListenAction",
"target": { … },
"expectsAcceptanceOf":{
"@type":"Offer",
"category":"subscription",
"availabilityStarts": "2018-06-01T10:35:29Z",
"availabilityEnds": "2019-05-31T10:35:29Z",
"eligibleRegion": {
"@type":"Country",
"name":"US"
}
},
...
}
地理區域
您必須指定可發布內容的地理區域。請使用其中一項或 符合下列兩項屬性:
只要裝置位置在
不在 eligibleRegion
中指定的任何地區,
ineligibleRegion
。
eligibleRegion
和 ineligibleRegion
屬性允許下列內容:
值:
- 一系列
Country
、City
和State
。 - A 罩杯
GeoShape
敬上 物件。詳情請參閱GeoShape
資源 一節,進一步瞭解相關規定。 GeoShape
物件清單。
如果內容在全球提供,請使用以下特殊值:
eligibleRegion
:
"eligibleRegion": "EARTH",
適用區域的用途
以下是 eligibleRegion
屬性的應用實例:
- 範例 1:包含國家/地區清單的
eligibleRegion
。 - 範例 2:
eligibleRegion
包含的GeoShape
物件: 包含郵遞區號清單。 - 範例 3:
eligibleRegion
包含的GeoShape
物件: 包含向前分類區 (FSA) 代碼清單。 - 範例 4:
eligibleRegion
包含的GeoShape
物件: 包含 DMA ID。 - 範例 5:包含
GeoShape
物件清單的eligibleRegion
。 每個物件都包含指定行銷區域 (DMA) ID。 - 範例 6:包含已封鎖的郵遞區號
ineligibleRegion
。
範例 1
eligibleRegion
,包含國家/地區清單:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/north_america_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": [ { "@type": "Country", "name": "US" }, { "@type": "Country", "name": "CA" } ] }
範例 2
將 eligibleRegion
替換為 GeoShape
物件,該物件會
包含郵遞區號清單:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
範例 3
將 eligibleRegion
替換為 GeoShape
物件,該物件會
包含向前分類區 (FSA) 代碼清單:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area2", "addressCountry": "CA", "postalCode": [ "1A1", "K1A" ] } }
示例 4
將 eligibleRegion
替換為 GeoShape
物件,該物件會
包含 DMA ID:
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/abcd/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion":{ "@type": "GeoShape", "@id": "http://example.com/area3", "addressCountry": "US", "identifier": [ { "@type": "PropertyValue", "propertyID": "DMA_ID", "value": "501" } ] } }
範例 5
eligibleRegion
包含 GeoShape
物件清單。
每個都含有一個指定行銷區域 ID:
"actionAccessibilityRequirement" : { "@type" : "ActionAccessSpecification", "eligibleRegion" : [ { "@id" : "http://example.com/dma/601", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "601" } }, { "@id" : "http://example.com/dma/602", "@type" : "GeoShape", "addressCountry" : "US", "identifier" : { "@type" : "PropertyValue", "propertyID" : "DMA_ID", "value" : "602" } } ] }
範例 6
ineligibleRegion
(含有已封鎖的郵遞區號):
"actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/local_tv_network/subscription", "name": "Example Subscription", "commonTier": true }, "eligibleRegion": { "@type": "Country", "name": "US" }, "ineligibleRegion": { "@type": "GeoShape", "@id": "http://example.com/area1", "addressCountry": "US", "postalCode": [ "94118", "94119" ] } }
授權 ID
授權 ID entitlementId
是代表
存取媒體目錄中的特定內容。判斷使用者是否
可存取您內容,Google 會採取下列步驟:
- 向 授權端點,以便接收使用者的 授權 ID
- 我們會從你的媒體查詢內容所需的授權 ID 動作動態饋給。
- 我們會將使用者的
entitlementId
與identifier
的 媒體訂閱物件。如果至少 一個entitlementId
相符項目,而我們會決定使用者可以存取 內容。
Google 建議您針對 entitlementId
使用下列語法:
<domain name> + colon (:) + <access level to content>
語法範例:
example.com:basic
example.com:premium
example.com:sports
授權 ID 範例
MediaExampleCompany 的動態饋給指定 Movie XYZ
需要
example.com:basic
entitlementId
,如圖所示:
{ "@context": ["http://schema.org", {"@language": "en"}], "@type": "Movie", "@id": "www.example.com/movie_xyz", "url": "www.example.com/movie_xyz", "name": "Movie XYZ", "potentialAction": { "@type": "WatchAction", "target": [ … ], "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Basic subscription", "commonTier": true ... }, ... } }, ... }
常見存取用途
常見的存取權用途如下:
- 免費 (不需登入): 無需登入、訂閱或購買即可使用。
- 免費 (必須登入): 內容要求使用者已登入,但不需訂閱。
- 單層訂閱方案: 必須訂閱才能觀看。所有訂閱者都能存取相同的 內容、電影或劇集 (無論其訂閱方案為何) 套件。
- 多層訂閱: 必須訂閱才能使用的內容訂閱者能存取的內容各不相同 根據訂閱項目的層級而定,顯示電影或劇集例如: Silver 與 Gold。
- 加購內容:內容 必須訂閱才能使用訂閱者可以在自己的影片 一般訂閱
- 一次性消費:內容可以 購買後,使用者便可無限期存取。
- 電視直播:訂閱後可存取 地方、全國和付費頻道。
- 第三方訂閱方案: 使用者必須登入有線電視服務供應商,才能瀏覽這項內容。
免費 (不需登入)
不需登入
不需登入或訂閱即可使用。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "nologinrequired", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 將
category
設為nologinrequired
。 - 請勿加入「
expectAcceptanceOf
」。
免費 (必須登入)
需要登入
內容只有在使用者登入後才能使用 訂閱項目中的所有進階功能!
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "free", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 將
category
設為free
。 - 請勿加入「
expectAcceptanceOf
」。
單層訂閱方案
在單層訂閱模式中,服務供應商有 訂閱級別所有訂閱者都能存取相同的內容 電影或劇集。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription": { "@type": "MediaSubscription", "name": "Example Package", "commonTier": true, "@id": "http://www.example.com/example_package" }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
多層訂閱方案
在分級式訂閱模式中,服務供應商有多個 訂閱層級,例如「Gold」、「Silver」和 銅級。訂閱較高層級的使用者可以存取所有 較低層級的內容不過,使用者層級較低的使用者 訂閱無法存取較高層級的內容。
請參考下列情境:
- Jane 會訂閱「Gold」等級。您的授權
端點會傳回下列
entitlementId
ID:example.com:bronze
example.com:silver
example.com:gold
- John 訂閱了銅級級別。您的授權
端點會傳回下列
entitlementId
:example.com:bronze
- 媒體動作動態饋給必須符合下列規定:
- 電影 A 需要
example.com:bronze
。 - 電影 B 需要
example.com:silver
。
- 電影 A 需要
在這個情境中,Google 會為 Jane 決定下列存取層級 和 John:
- Jane 和 John 都可存取電影 A。
- 小珍可以存取「電影 B」,但大明沒有。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "requiresSubscription": { "@type": "MediaSubscription", "@id": "http://www.example.com/basic_subscription", "name": "Bronze", "commonTier": true ... }, ... } }
加購訂閱項目
在外掛程式訂閱模式中,服務供應商可讓使用者 擴充授權,並將頻道加入基本訂閱項目。位使用者 則可加入任意數量的頻道
請參考下列情境:
- 除了 PRO 和 Sportz 以外,
基本訂閱。您的授權端點會傳回
以下
entitlementId
ID:example.com:basic
example.com:pro
example.com:sportz
- John 只有「基本」訂閱方案。您的授權
端點會傳回下列
entitlementId
:example.com:basic
- 媒體動作動態饋給必須符合下列規定:
- 電影 A 需要
example.com:basic
。 - 電影 B 需要
example.com:pro
。
- 電影 A 需要
在這個情境中,Google 會為 Jane 決定下列存取層級 和 John:
- Jane 和 John 都可存取電影 A。
- 小珍可以存取「電影 B」,但大明沒有。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "subscription", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" "requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false } } } }
一次性消費
購買
內容在 購買。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "purchase", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- 將
category
設為purchase
。 - 將
expectAcceptanceOf
加入actionAccessibilityRequirement
代表 購買。
租借內容
內容會在 購買。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "rental", "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "eligibleRegion": { "@type": "Country", "name": "US" }, "expectsAcceptanceOf": { "@type": "Offer", "price": 7.99, "priceCurrency": "USD", "seller": { "@type": "Organization", "name": "Example", "sameAs": "http://www.example.com/" } } } }
- 將
category
設為rental
。 - 將
expectAcceptanceOf
加入actionAccessibilityRequirement
代表 租借。
電視直播
第三方訂閱
第三方訂閱服務
訂閱者可透過其他服務存取該內容。
{ "actionAccessibilityRequirement": { "@type": "ActionAccessSpecification", "category": "externalsubscription" "availabilityStarts": "2015-01-01T00:00Z", "availabilityEnds": "2015-12-31T00:00Z", "requiresSubscription":{ "@type": "MediaSubscription", "@id": "https://www.example.com/faq", "name": "Example", "sameAs": "https://www.example.com/faq", "authenticator": { "@type": "Organization", "name": "TVE" } }, "eligibleRegion": { "@type": "Country", "name": "US" } } }
- 新增
authenticator
來表示不同的服務 驗證訂閱者舉例來說,HBO GO 需要 訂閱有線電視服務供應商
常見方案套件
所有訂閱者都能觀看共同等級內容,不受
訂閱套件通用層級會套用至所有具有 category
的內容
(共 subscription
個)。如要進一步瞭解 category
屬性,請參閱
「付費牆類型」部分。
為什麼需要通用的級套件?
多項 Google 產品提供電視和推薦給使用者的電影;本 包括 Google 搜尋、Android TV 及 Google 助理。如何設定使用者 Google 必須瞭解可供所有人使用的內容 可以減少訂閱者人數Google 也須瞭解 內容僅供擁有特定訂閱方案的訂閱者觀看。
Google 會推薦一般層級的影視內容,除非你支援 授權 API: 這個 API 可讓 Google 瞭解 各不常見的非同層名稱 擁有存取權
何時應該建立通用級套件?
如果您的服務提供的內容具有 向所有訂閱者顯示這包括只提供單一套件的服務 以及提供多種套件或外掛程式的服務
如果沒有任何訂閱者可觀看內容,則供應商不必建立 常見的階層套件例如提供互斥鎖的服務供應商 以便向其他團隊購買產品
常見層級範例
以下是常見層級的範例。
分層訂閱
在分級式訂閱模式中,服務供應商提供多個訂閱 級別,例如「Gold」、「Silver」和「Bronze」等級。裝有 較高層級的訂閱項目可存取較低層級的所有內容。位使用者 但較低層級的訂閱項目無法存取左上方的內容 級別。以下是套件結構的範例圖片。
在以下程式碼範例中,銅級套件是通用層級,因為 使用者可以存取該級別的所有內容。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/bronze", "name": "Bronze", "sameAs": "https://www.example.com/package/bronze", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/silver", "name": "Silver", "sameAs": "https://www.example.com/package/silver", "identifier": "example.com:silver", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/gold", "name": "Gold", "sameAs": "https://www.example.com/package/gold", "identifier": "example.com:gold", "commonTier": false } ],
外掛程式
在外掛程式訂閱模式中,服務供應商可讓使用者 授權並將頻道加入基本訂閱方案。使用者可以新增為 管道數量不限下圖為套件範例 成本中心的架構
假設您的頻道是供所有使用者使用, 就可以將套件與通用級套件合併。
在以下程式碼範例中,基本套件是通用層級,因為 使用者可以存取這個套件中的所有內容。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/basic", "name": "Basic", "sameAs": "https://www.example.com/package/basic", "commonTier": true }, { "@type": "MediaSubscription", "@id": "https://www.example.com/packages/basic/pro", "name": "PRO", "sameAs": "https://www.example.com/package/pro", "identifier": "example.com:pro", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/sportz", "name": "Sportz", "sameAs": "https://www.example.com/package/sports", "identifier": "example.com:sportz", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/moviemax", "name": "Moviemax", "sameAs": "https://www.example.com/package/moviemax", "identifier": "example.com:moviemax", "commonTier": false } ],
內容彼此重疊的檔案包
在內容模型中,套件的內容彼此相交 供應商販售內含其他套件內容的套裝內容。 下圖為套件結構範例。
在以下程式碼範例中,供應商提供三個套件,其中包含 內容在所有套件中相交。在本例中,第四個套裝方案 代表必須指定共同層級的必須包含所有內容 適用於所有三種套件
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/common", "name": "Common Tier Package", "sameAs": "https://www.example.com/package/common", "commonTier": true } ],
沒有內容重疊的套裝內容
在所有內容套件都不重疊的內容模型中,服務 供應商銷售的套裝方案中不含其他套件的內容。 下圖為套件結構範例。
在以下範例中,供應商提供三個沒有內容的套件 所有套件之間不會有交互作用不需要通用級套件。
"requiresSubscription": [ { "@type": "MediaSubscription", "@id": "https://www.example.com/package/1", "name": "Package 1", "sameAs": "https://www.example.com/package/1", "identifier": "example.com:package1", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/2", "name": "Package 2", "sameAs": "https://www.example.com/package/2", "identifier": "example.com:package2", "commonTier": false }, { "@type": "MediaSubscription", "@id": "https://www.example.com/package/3", "name": "Package 3", "sameAs": "https://www.example.com/package/3", "identifier": "example.com:package3", "commonTier": false } ],
授權端點
請使用本章節的資訊,代管會傳回 使用者的授權。
修課條件
開始之前,請確認您的服務支援 OAuth 2.0 流程。
要求
為了接收使用者授權,Google 會傳送內含 使用者的 OAuth 權杖您的端點需要根據該 OAuth 識別使用者 產生下一個符記請參閱以下範例:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer <OAuthToken>
回應
您的端點需要傳回包含下列屬性的回應:
屬性 | |
---|---|
subscription |
必要 這是根回應中的欄位。 |
subscription.type |
必要 此屬性可具有下列值:
|
subscription.expiration_date |
選用 此授權的到期日,格式為 ISO 8601 格式, 包括時區詳情請參閱 到期日。 |
entitlements |
選用 此根屬性包含 |
entitlements.entitlement |
如果串流目錄的存取權設定不同,則為必填 根據訂閱類型細分 這個屬性包含 |
entitlements.expiration_date |
選用 這個訂閱項目的到期日,格式為 ISO 8601 格式, 包括時區詳情請參閱 到期日。 |
到期日
端點回應包含兩個用來處理到期時間的屬性
日期:subscription.expiration_date
和 entitlements.expiration_date
。個人中心
可以加入其中一個或兩者都不要,但不能同時加入兩者。實際做法取決於
訂閱模式
訂閱模式 | |
---|---|
所有訂閱者都能存取相同的串流目錄。 | 您不需要指定 entitlements
屬性,指定 subscription.expiration_date 。 |
存取串流目錄的方式,取決於 訂閱項目。 |
如果您的訂閱模式有多個訂閱級別或加購內容, 會在一段時間後失效,請執行下列其中一項動作:
|
回應範例
以下是不同訂閱狀態的回應範例:
- 有效訂閱內容
- 設有到期日的有效訂閱項目
- 沒有訂閱項目
- 多個訂閱等級或加購內容的有效訂閱
有效訂閱內容
有效訂閱方案
使用者已訂閱 example.com。在本 所有訂閱者都能存取你的所有串流目錄 以及各種訂閱類型
{ "subscription" : { "type": "ActiveSubscription", } }
設有到期日的有效訂閱項目
有效訂閱方案,有到期日
使用者已訂閱 example.com, 訂閱項目設有到期日。在這個範例中,所有訂閱者 存取所有串流目錄 (不限訂閱方案) 類型。
{ "subscription" : { "type": "ActiveSubscription", "expiration_date": "2019-11-10T10:00:00Z" } }
沒有訂閱項目
無訂閱
使用者未訂閱 example.com。
{ "subscription" : { "type": "InactiveSubscription" } }
多個訂閱等級或加購內容的有效訂閱
多個訂閱等級或加購內容的有效訂閱項目
使用者在特定日期前訂閱了 example.com:premium
。
{ "subscription" : { "type": "ActiveSubscription", } "entitlements": [ { "entitlement": "example.com:premium", "expiration": "2019-11-10T10:00:00Z" } ] }
頻率限制
Google 最多每六小時會更新使用者的授權資訊,目的地: 簡化每秒查詢次數 (QPS) 上限,Google 會將 隨時均勻地指向端點因此,您可以估算出 端點的 QPS,公式如下:
預期平均 QPS = <使用者總人數> / 21,600 秒 (6 小時 x 60 分 x 60 秒)
如果您支援的使用者數量眾多,Google 可以調整 6 小時的間隔時間。 如有需要,請與 Google 聯絡討論設定事宜。
與 Google 聯絡
端點準備就緒後,請與 Google 聯絡,將端點網址告知端點。
動作存取權規格屬性
詳情請參閱 參考「動作存取規格屬性」一節 可能不準確或不適當