本頁說明媒體搜尋和推薦應用程式的使用者事件,包括使用者事件類型、規定,以及使用者事件類型範例。媒體應用程式必須提供使用者事件。
如要瞭解媒體搜尋和推薦功能的一般資訊,請參閱「媒體搜尋和推薦功能簡介」。
如需記錄使用者事件的說明,請參閱記錄即時使用者事件。如要大量匯入過去的使用者事件,請參閱「匯入歷來的使用者事件」。
使用者事件類型
使用者瀏覽或搜尋網站時,您可以記錄下列類型的使用者事件:
使用者事件名稱 | 使用者操作 |
---|---|
view-item |
查看文件詳細資料。 |
view-home-page |
查看首頁。 |
search |
搜尋資料儲存庫。 |
media-play |
點按媒體項目的「播放」。 |
media-complete |
停止播放媒體項目,表示觀看結束。 |
如要瞭解使用者事件物件的詳細資料,請參閱 UserEvent
API 參考說明文件。
媒體搜尋和推薦的事件規定
您需要的事件類型取決於應用程式是搜尋應用程式還是推薦應用程式、目標 (點閱率、轉換率或觀看時間),以及 (僅限推薦應用程式) 所選模型類型。如要進一步瞭解建議模型類型和最佳化目標,請參閱「關於媒體應用程式建議類型」。
如要判斷需要收集哪些使用者事件,請參閱下表。
事件 | search |
view-home-page |
view-item |
media-play |
media-complete |
||
---|---|---|---|---|---|---|---|
搜尋用途 | |||||||
必填 | 不需要 |
必填 | 必填 | 必填 | |||
「為您推薦」模型類型 (依目標) | |||||||
點閱率 | 不需要 |
首頁內容必須提供 一般內容則不需提供 |
您必須使用 view-item 或 media-play 其中之一。 |
強烈 建議 如果開啟了記錄降級功能,則為必填 |
|||
CVR | 不需要 |
首頁內容必須提供 一般內容則不需提供 |
您必須使用 view-item 或 media-play 其中之一。 |
必填 | |||
觀看時間長度 | 不需要 |
首頁內容必須提供 一般內容則不需提供 |
您必須使用 view-item 或 media-play 其中之一。 |
必填 | |||
「你可能會喜歡的其他項目」模型類型 (依目標) | |||||||
點閱率 | 不需要 |
不需要 |
您必須使用 view-item 或 media-play 其中之一。 |
強烈 建議 如果開啟了記錄降級功能,則為必要條件 |
|||
CVR | 不需要 |
不需要 |
您必須使用 view-item 或 media-play 其中之一。 |
必填 | |||
觀看時間長度 | 不需要 |
不需要 |
您必須使用 view-item 或 media-play 其中之一。 |
必填 | |||
依目標分類的「類似這個」模型類型 | |||||||
點閱率 | 不需要 |
不需要 |
您必須使用 view-item 或 media-play 其中之一。 |
如果已開啟記錄降級功能,則為必填欄位 | |||
CVR | 不需要 |
不需要 |
您必須使用 view-item 或 media-play 其中之一。 |
必填 | |||
觀看時間長度 | 不需要 |
不需要 |
您必須使用 view-item 或 media-play 其中之一。 |
必填 | |||
按目標顯示最熱門的模型類型 | |||||||
點閱率 | 不需要 |
不需要 |
請提供 view-item 或 media-play 其中之一 |
不需要 |
|||
CVR | 不需要 |
不需要 |
不需要 |
不需要 |
必填 |
媒體使用者事件的必要條件
請確認使用者事件符合下列規定,媒體應用程式才能產生優質結果。
事件類型 | 需求 | 影響 |
---|---|---|
所有活動 |
請勿加入合成資料或重複事件。 |
合成或重複事件會對結果品質造成負面影響,且可能導致您無法部署應用程式。重複事件可能會導致指標值不正確。 |
針對每種擷取的事件類型,至少要包含 100 個不重複的使用者虛擬 ID。 |
請務必加入這些 ID,讓媒體建議應用程式有足夠的資料,可產生高品質的結果。 |
|
在事件匯入或事件記錄,以及媒體推薦要求中,使用者虛擬 ID 的格式必須完全相同。 |
使用一致的使用者虛擬 ID 格式,有助於媒體推薦應用程式正確識別訪客模式,並根據使用者行為提供更優質的結果。 |
|
所有文件都必須填寫 |
如果事件包含沒有 |
|
事件中包含的文件應存在於資料儲存庫中。 |
未加入活動的比例應盡可能降低。比例過高可能會對結果品質造成負面影響。 |
|
部分使用者事件應具有相同的使用者虛擬 ID。 |
如要建構有效的行為序列記錄,媒體推薦應用程式必須能夠查看具有相同使用者虛擬 ID 的多個事件。
舉例來說, |
|
view-item |
每個活動只能包含一份文件。 |
如果沒有文件,就無法使用這個事件。如果包含多個文件,事件格式會錯誤,無法使用。 |
search |
加入 |
|
media-play |
每個活動只能包含一份文件。 |
如果包含多份文件,事件格式會錯誤,無法使用。 |
A/B 測試的使用者事件代碼
如果您進行 A/B 測試,請務必為收集的所有使用者事件新增代碼 ID,每個測試群組各新增一個代碼。
舉例來說,您可以將 "tagIds": ["original"]
標記新增至目前模型的使用者事件,並將 "tagIds": ["google"]
標記新增至 Vertex AI Search for media 的使用者事件。
使用者事件類型範例和結構定義
本節提供媒體建議支援的各事件類型資料格式。我們提供 JavaScript Pixel 的範例,如果是 BigQuery,系統會提供每種類型的完整資料表結構定義。
對於所有使用者事件類型,userId
為選用項目。
如要進一步瞭解使用者事件物件,請參閱 UserEvent
API 參考說明文件。
view-item
以下顯示 view-item
使用者事件資料格式。
所需檢視項目物件下限
下列範例只會顯示 view-item
使用者事件格式的必要欄位。
在大多數情況下,documents
包含相關聯文件的詳細資料。
JavaScript 像素
var user_event = {
"eventType": "view-item",
"userPseudoId": "user-pseudo-id",
"eventTime": "2020-01-01T03:33:33.000001Z",
"documents": [{
"id": "document-id"
}]
"panels": [
{
"panelId": "HOME_RFY_1",
"documents": [
{
"id": "123"
},
{
"id": "456"
}
],
"panelPosition": 1,
"totalPanels": 2
}
]
};
BigQuery
這是這個使用者事件類型的完整 JSON 結構定義。在 BigQuery 中為這類使用者事件建立資料表時,請指定這個結構定義。
必要欄位的模式會設為 REQUIRED
或 REPEATED
。選用欄位的模式會設為 NULLABLE
。
請注意,使用 BigQuery 匯入事件時,必須有 eventTime
。eventTime
是時間戳記格式的字串。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
view-home-page
以下顯示 view-home-page
使用者事件格式。
所需的最少查看首頁物件
下列範例只會顯示 view-home-page
使用者事件格式的必要欄位。
JavaScript 像素
var user_event = {
"eventType": "view-home-page",
"userPseudoId": "user-pseudo-id",
"eventTime": "2020-01-01T03:33:33.000001Z",
"panels": [
{
"panelId": "HOME_RFY_1",
"documents": [
{
"id": "123"
},
{
"id": "456"
}
],
"panelPosition": 1,
"totalPanels": 2
}
]
};
BigQuery
這是這個使用者事件類型的完整 JSON 結構定義。在 BigQuery 中為這類使用者事件建立資料表時,請指定這個結構定義。
必要欄位的模式會設為 REQUIRED
或 REPEATED
。選用欄位的模式會設為 NULLABLE
。
請注意,使用 BigQuery 匯入事件時,必須有 eventTime
。eventTime
是時間戳記格式的字串。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" }, { "name": "quantity", "type": "INT64", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
如要瞭解 panels
物件,請參閱「關於面板」。
搜尋
以下顯示 search
使用者事件格式。
必要搜尋物件下限
下列範例只會顯示 search
使用者事件格式的必要欄位。
searchQuery
。
attributionToken
會連同搜尋查詢結果一併傳回。
documents
應包含搜尋結果網頁中向使用者顯示的文件 ID 清單。
JavaScript 像素
var user_event = {
eventType: "search",
userPseudoId: "user-pseudo-id",
eventTime: "2020-01-01T03:33:33.000001Z",
searchInfo: {
searchQuery: "search-query",
},
attributionToken: "attribution-token",
documents: [
{
id: "document-id1",
},
{
id: "document-id2",
},
]
};
BigQuery
這是這個使用者事件類型的完整 JSON 結構定義。在 BigQuery 中為這類使用者事件建立資料表時,請指定這個結構定義。
必要欄位的模式會設為 REQUIRED
或 REPEATED
。選用欄位的模式會設為 NULLABLE
。
請注意,使用 BigQuery 匯入事件時,必須有 eventTime
。eventTime
是時間戳記格式的字串。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "searchInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "searchQuery", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageCategory", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] } ]
media-play
以下顯示 media-play
使用者事件格式。
媒體播放物件的最低需求
下列範例只會顯示 media-play
使用者事件格式的必要欄位。
JavaScript 像素
var user_event = {
"eventType": "media-play",
"userPseudoId": "user-pseudo-id",
"eventTime": "2020-01-01T03:33:33.000001Z",
"documents": [
{
"id": "document-id1"
}
]
};
BigQuery
這是這個使用者事件類型的完整 JSON 結構定義。在 BigQuery 中為這類使用者事件建立資料表時,請指定這個結構定義。
必要欄位的模式會設為 REQUIRED
或 REPEATED
。選用欄位的模式會設為 NULLABLE
。
請注意,使用 BigQuery 匯入事件時,必須有 eventTime
。eventTime
是時間戳記格式的字串。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] } ]
media-complete
以下顯示 media-complete
使用者事件格式。
媒體完整物件的最低要求
下列範例只會顯示 media-complete
使用者事件格式的必要欄位。
JavaScript 像素
var user_event = {
"eventType": "media-complete",
"userPseudoId": "user-pseudo-id",
"eventTime": "2020-01-01T03:33:33.000001Z",
"documents": [
{
"id": "document-id1"
}
],
"mediaInfo": {
"mediaProgressDuration": "65s",
"mediaProgressPercentage": 0.2
}
};
BigQuery
這是這個使用者事件類型的完整 JSON 結構定義。在 BigQuery 中為這類使用者事件建立資料表時,請指定這個結構定義。
必要欄位的模式會設為 REQUIRED
或 REPEATED
。選用欄位的模式會設為 NULLABLE
。
請注意,使用 BigQuery 匯入事件時,必須有 eventTime
。eventTime
是時間戳記格式的字串。
[ { "name": "eventType", "type": "STRING", "mode": "REQUIRED" }, { "name": "userPseudoId", "type": "STRING", "mode": "REQUIRED" }, { "name": "eventTime", "type": "STRING", "mode": "REQUIRED" }, { "name": "userInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "userId", "type": "STRING", "mode": "NULLABLE" }, { "name": "userAgent", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "pageInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "pageviewId", "type": "STRING", "mode": "NULLABLE" }, { "name": "uri", "type": "STRING", "mode": "NULLABLE" }, { "name": "referrerUri", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "attributionToken", "type": "STRING", "mode": "NULLABLE" }, { "name": "documents", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "id", "type": "STRING", "mode": "NULLABLE" } ] }, { "name": "tagIds", "type": "STRING", "mode": "REPEATED" }, { "name": "attributes", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "example_text_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "text", "type": "STRING", "mode": "REPEATED" } ] }, { "name": "example_number_attribute", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "numbers", "type": "NUMERIC", "mode": "REPEATED" } ] } ] }, { "name": "mediaInfo", "type": "RECORD", "mode": "NULLABLE", "fields": [ { "name": "mediaProgressDuration", "type": "STRING", "mode": "NULLABLE" }, { "name": "mediaProgressPercentage", "type": "NUMERIC", "mode": "NULLABLE" } ] } ]
自訂屬性
您可以為使用者事件加入其他自訂屬性和功能。這有助於為使用者提供更精確的搜尋結果。如要新增自訂屬性,請在記錄使用者事件時使用 attributes
。
如果為擷取的使用者事件提供自訂屬性,請務必一併納入與推薦和搜尋要求相關聯的使用者事件。匯入的事件和要求提供的事件,自訂屬性的格式必須一致。媒體應用程式可使用這些自訂屬性提升品質。
您可以使用 text
欄位提供自訂文字值,或使用 numbers
欄位提供自訂數值。
舉例來說,以下顯示要求中記錄使用者事件的 attributes
區段:
attributes: { user_age: {text: ["teen", "young adult"]}, user_location: {text: ["CA"]}, user_zip: {numbers: [90210]} }
關於使用者資訊
userPseudoId
代表不重複的使用者 ID,記錄使用者事件時必須提供這項 ID。
記錄使用者事件時,所含的使用者資訊 (UserInfo
) 包含 userPseudoId
值,以及 (如有的話) userId
值。userId
為選用參數,使用者登入網站時,可做為跨裝置的永久專屬 ID。記錄使用者
userId
後,
媒體搜尋和推薦應用程式
就能在多部裝置上為同一位使用者產生更個人化的結果,
例如行動裝置和網路瀏覽器。
時間戳記簡介
記錄使用者事件時,請務必加入事件發生時間的準確時間戳記。準確的時間戳記可確保事件以正確順序儲存。系統會自動記錄使用 JavaScript 像素收集的事件時間戳記。匯入事件時,您必須在 eventTime
欄位中,以 RFC 3339 指定的格式提供時間戳記。
關於面板
首頁通常會有一或多個面板,例如「熱門趨勢」面板和「為你推薦」面板。詳細資料頁面也可能顯示「你可能也會喜歡」等面板。
使用者事件的面板資訊
如要取得 view-home-page
和 view-item
類型的建議使用者事件,必須提供面板資訊。如果首頁和詳細資料頁面顯示 Google 推薦的內容,就必須提供面板資訊。
如果您要對面板進行 A/B 測試,則無論來源為何,都必須記錄測試中所有內容的使用者事件和面板資訊。如果首頁和詳細資料頁面沒有 Google 生成的面板內容,建議 (但非必要) 在 view-home-page
和 view-item
事件中提供面板資訊。下表匯總了這些需求:
使用者事件來源 (view-home-page 和 view-item )
|
PanelInfo (必要) |
---|---|
包括 Google 推薦的內容 | 是 |
包括 Google 不建議使用的內容,以及用於 A/B 測試的內容 | 是 |
包括 Google 不建議使用的內容,以及未用於 A/B 測試的內容 | 否 |
面板資訊 (PanelInfo
) 是一組欄位,用於說明面板的各種元素:
面板的 ID 號碼
顯示名稱
網頁上面板的位置 (例如網頁上的第一個面板 (
1
) 或第三個面板 (3
))頁面上的面板總數
每個面板中顯示的文件清單 (
DocumentInfo
)
如要進一步瞭解 PanelInfo
物件,請參閱「PanelInfo」。
預先載入面板與延遲載入面板
在網頁或行動網頁上顯示建議內容的常見方法有兩種。您使用的方法會決定記錄的 view-home-page
使用者事件數量和內容。
預先載入:預先載入所有建議項目,使用者抵達頁面時即可看到。在本例中,當使用者載入首頁時,您會記錄一個
view-home-page
(或view-item
) 使用者事件,其中包含所有面板和文件。延遲載入:使用者抵達網頁時,系統不會產生面板內容,而是會在使用者向下捲動至面板或向右捲動以查看更多建議時,動態載入內容。在本例中,當使用者載入首頁時,您會記錄初始
view-home-page
(或view-item
) 使用者事件,然後在使用者捲動以產生更多建議內容時,繼續記錄更多事件。在後續事件中,您只需要在panels
陣列中加入顯示的文件增量。
範例情境
媒體公司的首頁顯示兩個建議面板:
如果指派給 B 群組的使用者瀏覽這個首頁,JavaScript 像素格式的使用者事件會如下所示:
var user_event = { "eventType": "view-home-page", "userPseudoId": "4003345673.123451357", "eventTime": "2025-07-01T03:33:33.000001Z", "userInfo": { "userId": "jane.doe@example.com", }, "tagIds": ["group-B"], "panels": [ { "panelId": "panel-1", "displayId": "Trending Now", "documents": [ { "id": "254722" }, { "id": "2951" }, ... { "id": "1201" } ], "panelPosition": 1, "totalPanels": 2 }, { "panelId": "panel-2", "displayId": "Recommended for You", "documents": [ { "id": "79132" }, { "id": "109487" }, ... { "id": "164179" } ], "panelPosition": 2, "totalPanels": 2 } ] };
後續步驟
- 瞭解如何記錄使用者事件。