着陆页审计师 是做什么的?
一项同时检查页面本身和访问页面用户行为的审计。每项发现都源自此技能调用的操作,且每项发现都会显示其背后的数据或页面元素。
开始之前
你需要先连接InsightfulPipe MCP。Google Analytics 4和DataForSEO是主要数据来源;其他来源作为补充。
- 为每个平台调用带有
request="accounts"参数的query_contexts:google-analytics、google-search-console、dataforseo、screenshot、pagespeed-insights,以及如果页面有付费流量则包含google-ads。记录workspace_id、brand_id、GA4的property_id和Search Console的site_url。如果存在多个属性,询问用户具体是哪个网站。 - 为
get_report和list_key_events(google-analytics)、search_analytics、onpage_instant_pages、capture、core-web-vitals、accessibility-seo和gaql操作调用带有request="actions_details"参数的query_contexts,并遵循其返回的请求体结构。 - 询问用户三项信息,如果用户不清楚,则使用默认值:
- 目标页面。 默认值:GA4(步骤1)中会话数最多的着陆页。
- 该页面存在的主要目标动作(注册、购买、预约演示、通话、下载)。默认值:首屏CTA的第一个目标地址。
- 页面类型: 付费着陆页、首页、销售页面、定价页、功能页、产品页、潜在客户生成页、活动页。默认值:从URL和流量组合推断,并告知用户推断结果。
日期。 GA4需要一两天来处理数据,尚未处理完毕的日期会显示无互动会话。使用截至今天前2天的最近28天数据。Search Console的延迟更严重:将其窗口结束日期设为今天前3天。在报告顶部明确注明这两个时间窗口。
如何运行查询
以下每个请求体都通过 query_data 发送,需指定其命名的平台以及 workspace_id 和 brand_id。日期来自一次测试运行:请使用你自己的时间窗口。路径 / 和 https://example.com/ 代表你要审计的页面。API强制执行或数据需求所规定的规则:
- GA4 的
landingPage是一个不含主机的路径(例如/pricing)。值为空或(not set)的行为表示没有页面浏览的会话;在页面排名中排除它们,并说明有多少这样的会话。 - GA4 过滤器 使用
dimensionFilter,其中包含filter/stringFilter(matchType为EXACT)、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调用都会计费:每个页面一次。
如果某个调用失败,继续执行。将其提供的数据标记为 未知,说明是哪个调用失败及其原因,并在最后重试一次失败的页面工具。切勿通过猜测来填补空白。
第一步:选择页面并检查跟踪
{"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 作为维度,以获取网站的整体互动率。如果用户未指定页面,则审计会话数最多的着陆页,并列出接下来的四个页面作为后续审计的候选。
第二步:衡量——页面的转化是否被统计?
{"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点击(点击事件的 linkUrl 是CTA的目标地址) |
| 未测量 | 两者都没有 |
- 名称中包含“test”或“qa”的关键事件不计入。报告在时间窗口内配置了多少个关键事件以及哪些触发了。
- GA4的内置
click事件仅记录外链。站内链接以及配置了跨域衡量的域名链接不会被记录。因此,没有与CTA目标地址对应的点击行意味着“未测量”,绝不能理解为“无人点击”。 - 当页面未被测量时,不存在转化率。使用替代指标并明确标注为替代指标:互动率、到达转化路径的会话比例(第三步),以及90%滚动深度(内置的
scroll事件;在事件报告中添加deviceCategory以按设备拆分,计算滚动用户与浏览用户的比例)。
第三步:谁来了,他们又去了哪里?
{"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的来源是流量问题(可能是机器人、预览抓取器或错误的跟踪代码),而非页面问题。标记该问题,并提供包含和不包含该来源时页面的互动率。
- 设备: 移动端份额决定了移动端发现项的权重。
- 转化路径: 到达定价、演示、注册或结账页面的会话比例。
- 确认付费流量。 仅当会话具有
sessionGoogleAdsCustomerId,或广告帐户显示对该URL有点击时,google / cpc会话才计为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 技能可以更深入地执行此操作。
第四步:拆解页面
{"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回答中的“安全”不算信任信号。“可与...配合使用”的logo仅显示兼容性,而非客户。
- 退出点: 头部和导航链接数量(
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)。当脚本发现alt属性时,no_image_alt可能为true
...[截断]