登陸頁面審計器
一項同時審視頁面與造訪者的審計。每個發現都來自此技能執行的呼叫,且每個發現都會顯示背後的數字或頁面元素。
開始之前
你需要先連接 InsightfulPipe MCP。Google Analytics 4 和 DataForSEO 負責主要路徑;其他資料來源則提供補充資訊。
- 針對每個平台呼叫
query_contexts,並帶入request="accounts":google-analytics、google-search-console、dataforseo、screenshot、pagespeed-insights,以及若頁面有付費流量則加上google-ads。請記下workspace_id、brand_id、GA4 的property_id以及 Search Console 的site_url。如果有多個資源,請詢問是哪個網站。 - 呼叫
query_contexts,並帶入request="actions_details"來取得get_report和list_key_events(google-analytics)、search_analytics、onpage_instant_pages、capture、core-web-vitals、accessibility-seo和gaql等動作,並遵循其回傳的 body 結構。 - 詢問三個事項;若使用者不清楚,則使用預設值:
- 頁面。 預設:GA4 中工作階段數最多的登陸頁面(步驟 1)。
- 此頁面存在的單一主要行動(註冊、購買、預約示範、來電、下載)。預設:首個 CTA(行動號召)的目標位置。
- 頁面類型: 付費登陸頁面、首頁、銷售頁面、定價、功能、產品、潛在客戶開發、活動。預設:從 URL 和流量組合推斷,並說明推斷理由。
日期。 GA4 需要一至兩天來處理一天的數據,尚未處理完畢的日期會顯示零參與率的工作階段。使用截至昨天往前推 28 天的日期範圍。Search Console 的延遲更久:將其視窗截止日設為 3 天前。在報告頂端說明這兩個日期區間。
如何執行查詢
以下每個 body 都透過 query_data 傳送,並附上其命名的平台、workspace_id 和 brand_id。日期來自測試執行:請使用你自己的日期區間。路徑 / 和 https://example.com/ 代表你要審計的頁面。API 強制執行的規則或數據需求:
- GA4
landingPage是不包含主機的路徑(/pricing)。值為空白或(not set)的資料列是沒有頁面瀏覽的工作階段;請將它們排除在頁面排名之外,並說明有多少筆此類資料。 - GA4 篩選器 使用
dimensionFilter,搭配filter/stringFilter(matchTypeEXACT)、inListFilter,或是一個包含多個表達式的andGroup。 - Search Console 根據完整 URL(包含主機以及該網站使用的尾端斜線)進行篩選。
- Google Ads GAQL:
ORDER BY中的任何欄位都必須同時出現在SELECT中。金額以_micros表示;請除以 1,000,000。 - DataForSEO
custom_js在沒有排版引擎的頁面模型中執行:不支援getBoundingClientRect、innerHeight和計算後的樣式,且NodeList.forEach會失敗。請使用傳統for迴圈和 DOM 順序,將腳本控制在約 2,000 字元以下,並在回應為空時讀取custom_js_client_exception。每次呼叫onpage_instant_pages都會收費:每頁一次。
如果某個呼叫失敗,請繼續執行。將它所提供的資料標記為 未知,說明是哪個呼叫失敗以及原因,並在最後對失敗的頁面工具重試一次。切勿憑空猜測來填補空缺。
步驟 1:選擇頁面並檢查追蹤設置
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["date"], "metrics": ["sessions", "engagedSessions", "keyEvents"],
"start_date": "2026-09-06", "end_date": "2026-10-05"}
執行此每日檢查,涵蓋過去 30 天至昨天。
- 追蹤異動: 如果某一天的工作階段數至少是前 7 天中位數的 5 倍,並且之後的日子維持在這個水平,則表示追蹤代碼在那一天發生了變化(反之亦然,如果是下降)。將視窗起始日設為新水平的第一天。
- 未處理的日期: 一個最近的日期有工作階段數但參與率為 0,表示該日尚未處理完畢。將它排除在視窗外。
- 日期區間過短: 如果剩下少於 7 天,審計仍然會執行,但請在報告頂端說明這些比率僅供參考。
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["landingPage"],
"metrics": ["sessions", "engagedSessions", "engagementRate", "keyEvents", "averageSessionDuration"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}], "limit": 25}
使用 deviceCategory 作為唯一維度,執行相同的報告以取得網站的整體參與率。如果使用者未指定頁面,則審計工作階段數最多的登陸頁面,並列出接下來四個頁面作為後續分析的候選。
步驟 2:衡量:頁面的轉換是否被計算?
{"platform": "google-analytics", "action": "list_key_events", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["pagePath", "eventName"], "metrics": ["eventCount", "totalUsers"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "EXACT", "value": "/"}}}}
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["pagePath", "linkUrl", "outbound"], "metrics": ["eventCount"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"andGroup": {"expressions": [
{"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "EXACT", "value": "/"}}},
{"filter": {"fieldName": "eventName", "stringFilter": {"matchType": "EXACT", "value": "click"}}}]}}}
| 結果 | 說明 |
|---|---|
| 已衡量 | 登陸頁報告顯示該頁面的關鍵事件,或有關鍵事件在該頁面上觸發 |
| 部分衡量 | 僅記錄了 CTA 點擊(一個 click 事件,其 linkUrl 為 CTA 的目標位置) |
| 未衡量 | 兩者皆無 |
- 名稱包含 "test" 或 "qa" 的關鍵事件不計入。報告在該時間範圍內配置了多少個關鍵事件以及觸發了多少次。
- GA4 內建的
click事件僅記錄站外連結。站內連結以及為跨網域衡量設定的網域不會被記錄。因此,對於 CTA 目標位置沒有點擊記錄,表示「未衡量」,絕不代表「沒人點擊」。 - 當頁面未被衡量時,就沒有轉換率。請使用代理指標並將其標記為代理指標:參與率、到達轉換路徑的頁面工作階段比例(步驟 3),以及 90% 滾動(內建的
scroll事件;將deviceCategory加入事件報告以按裝置拆分,計算有滾動的使用者對比有瀏覽的使用者)。
步驟 3:誰來了,他們又去了哪裡
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["landingPage", "sessionDefaultChannelGroup", "sessionSourceMedium"],
"metrics": ["sessions", "engagedSessions", "engagementRate"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"filter": {"fieldName": "landingPage", "stringFilter": {"matchType": "EXACT", "value": "/"}}}}
使用 deviceCategory 取代頻道維度再次執行報告,並使用 pagePath 和指標 sessions(按工作階段數排序前 10 名)再執行一次,以查看頁面將使用者導向何處。第一行通常是頁面本身,因此 10 行會顯示 9 個下一頁。然後:
- 來源: 每個頻道的工作階段比例及其參與率。一個來源有 10 個或更多工作階段但參與率為 0,這是流量問題(機器人、預覽擷取器或錯誤的標籤),而非頁面問題。請標記它,並提供包含和不包含該來源的頁面參與率。
- 裝置: 行動裝置比例決定了行動裝置發現結果的權重。
- 轉換路徑: 到達定價、示範、註冊或結帳頁面的工作階段比例。
- 確認付費流量。
google / cpc的工作階段僅在該工作階段具有sessionGoogleAdsCustomerId,或廣告帳戶顯示對該 URL 有來自 Google Ads 的點擊時,才計為 Google Ads 流量。否則將其稱為「未確認的付費流量」並說明。
{"platform": "google-analytics", "action": "get_report", "property_id": "properties/<PROPERTY_ID>",
"dimensions": ["landingPage", "sessionCampaignName", "sessionGoogleAdsCustomerId"], "metrics": ["sessions", "engagedSessions"],
"start_date": "2026-10-01", "end_date": "2026-10-04",
"dimensionFilter": {"andGroup": {"expressions": [
{"filter": {"fieldName": "landingPage", "stringFilter": {"matchType": "EXACT", "value": "/"}}},
{"filter": {"fieldName": "sessionSourceMedium", "stringFilter": {"matchType": "EXACT", "value": "google / cpc"}}}]}}}
自然流量意圖 (Search Console):
{"platform": "google-search-console", "action": "search_analytics", "site_url": "https://example.com/",
"dimensions": ["query"], "start_date": "2026-09-06", "end_date": "2026-10-03", "row_limit": 25,
"dimension_filter_groups": [{"filters": [{"dimension": "page", "operator": "equals", "expression": "https://example.com/"}]}]}
將品牌搜尋查詢(商業名稱及其拼寫錯誤)與其他查詢分開,並提供品牌查詢的點擊佔比。品牌訪客已經知道名稱:頁面必須確認他們的身份並引導他們。非品牌查詢則承載了頁面標題應反映的關鍵詞。
付費訊息匹配 (Google Ads):
SELECT landing_page_view.unexpanded_final_url, metrics.clicks, metrics.cost_micros, metrics.conversions
FROM landing_page_view WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.clicks DESC LIMIT 20
SELECT ad_group_ad.ad.final_urls, ad_group_ad.ad.responsive_search_ad.headlines, metrics.clicks, metrics.impressions
FROM ad_group_ad WHERE segments.date DURING LAST_30_DAYS AND ad_group_ad.status = 'ENABLED'
ORDER BY metrics.clicks DESC LIMIT 20
SELECT ad_group.name, ad_group_criterion.keyword.text, ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.final_urls, metrics.clicks
FROM keyword_view WHERE segments.date DURING LAST_30_DAYS AND metrics.clicks > 0 ORDER BY metrics.clicks DESC LIMIT 50
透過 action="gaql" 並帶入 account_id 執行這些查詢。如果 landing_page_view 沒有該頁面的任何資料列,則跳過其他兩個:表示沒有針對該頁面的付費流量可以匹配。post_click_quality_score 是 Google 對該關鍵字的登陸頁面體驗評級(高於平均值、平均值、低於平均值)。關鍵字的最終 URL 通常為空,因為會使用廣告的 URL,因此透過廣告群組將關鍵字與頁面關聯。保留那些 final_urls 指向該頁面的廣告,並將其標題與頁面的 H1 和提案進行比較。對於 Meta、LinkedIn 或其他平台的廣告,或連結到該頁面的電子郵件,請要求使用者貼上廣告或電子郵件的內容(標題、內文、提案和 CTA),並以同樣的方式與頁面進行比較:H1 呼應標題,所有提案和聲明都在頁面上,並且頁面的 CTA 延續了廣告的 CTA。如果已安裝 ad-landing-page-match-scorer 技能,它會進行更深入的分析。
步驟 4:分解頁面
{"platform": "dataforseo", "action": "onpage_instant_pages", "url": "https://example.com/", "enable_javascript": true,
"custom_js": "var o={seq:[],nav:0,links:document.links.length,forms:document.forms.length,inputs:document.querySelectorAll('input,select,textarea').length,imgs:0,noalt:0,vid:document.querySelectorAll('video,iframe').length,proof:{}};function E(l,f){for(var i=0;i<l.length;i++)f(l[i])}function t(e){return(e.textContent||'').replace(/\\s+/g,' ').trim()}function C(e){for(var p=e;p;p=p.parentNode){var n=(p.tagName||'').toLowerCase();if(n=='nav'||n=='header'||n=='footer')return 1}return 0}var f=0;E(document.querySelectorAll('h1,p'),function(e){if(e.tagName=='H1')f=1;else if(f==1&&t(e)){o.sub=t(e).slice(0,200);f=2}});E(document.querySelectorAll('h1,h2,h3,a[href],button'),function(e){var n=e.tagName.toLowerCase();if(n.charAt(0)=='h'){o.seq.push([n,t(e).slice(0,90)]);return}if(C(e))return;var c=(e.getAttribute('class')||'')+' '+(e.getAttribute('role')||'');if(n=='a'&&!/btn|button|cta|bg-/.test(c))return;var x=t(e).slice(0,50);if(x)o.seq.push(['cta',x,(e.getAttribute('href')||'').slice(0,80)])});E(document.querySelectorAll('header a[href],nav a[href]'),function(){o.nav++});E(document.querySelectorAll('img'),function(e){o.imgs++;if(!e.hasAttribute('alt'))o.noalt++});var x=t(document.body);o.words=x.split(' ').length;var p={testimonial:/testimonial|what .{0,12}say/i,rating:/★|\\d(\\.\\d)? ?\\/ ?5|g2|capterra|trustpilot/i,logos:/trusted by|used by|customers include/i,count:/\\d[\\d,]*\\+? (customers|users|teams|companies|marketers)/i,works_with:/works with|integrates with/i,security:/soc ?2|gdpr|encrypt/i,guarantee:/guarantee|refund|cancel anytime/i,faq:/faq|frequently asked/i};for(var k in p){var m=x.match(p[k]);o.proof[k]=m?m[0].slice(0,40):null}o;"}
custom_js_response 會以閱讀順序(seq:標題以及位於頁首、導航列和頁尾之外的 CTA)、H1 之後的第一個段落(sub)、計數,以及每種信任元素類型的第一個匹配項來返回頁面。請如此解讀:
- 英雄區: 第一個
h2之前的所有內容。注意其中的 H1、副標題和 CTA。 - CTA: 只有帶有目標位置 (
href) 的元素才是 CTA。沒有目標位置的按鈕是分頁標籤、折疊式選單或 Cookie 橫幅。計算不同的目標位置數量,並注意主要 CTA 在長頁面的中間之後是否再次出現。 - 信任元素: 一個匹配是線索,而非最終判斷。在將其計入之前,請檢查前後文:產品示範中的一個數字或 FAQ 回答中的「secure」不是信任元素。「Works with」標誌顯示的是相容性,而非客戶。
- 離開點: 頁首和導航連結數量 (
nav)。在付費登陸頁面上,每個連結都是一條離開路徑。 - 表單:
forms和inputs。 - 來自標準回應:
meta.title、meta.htags、meta.content.plain_text_word_count、可讀性指數,以及checks(no_h1_tag、has_render_blocking_resources、no_image_alt、title_too_long)。no_image_alt可能為 true,與此同時該腳本可能找到了 alt 屬性;請優先採用腳本的結果,但檢查報告中這兩個值的狀態。