Community研究与数据分析github.com

着陆页审计师

使用GA4、Search Console、Google Ads以及桌面端和移动端渲染,对着陆页、首页或销售页面进行转化审计,评分七大支柱,并排序修复建议与改写方案。适用于页面转化不佳、需要着陆页审查、移动端检查或新页面结构评估的场景。

着陆页审计师 是什么?

该技能提供一种系统化的着陆页审计方法,重点关注转化率优化(CRO)。它集成了Google Analytics 4、Google Search Console、Google Ads和DataForSEO等数据源,用于收集定性和定量数据。审计过程遵循结构化工作流程:验证分析追踪,衡量转化指标,分析流量来源和用户行为,然后通过自定义JavaScript抓取提取页面元素(如标题、行动号召按钮、信任信号和表单),再通过Pagespeed Insights评估技术性能。基于这些数据,该技能按照七个关键支柱(对于转化而言重要的元素)对页面进行评分,并列出具体、可操作的修复建议,包括优化文字,以消除障碍并提高转化率。该技能支持所有主要AI编码代理平台,其逻辑在InsightfulPipe MCP连接中详细说明。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Insightful-Pipe/analytics-cro-skills/tree/HEAD/skills/landing-page-auditor

Installed? Explore more 研究与数据分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

着陆页审计师 是做什么的?

一项同时检查页面本身和访问页面用户行为的审计。每项发现都源自此技能调用的操作,且每项发现都会显示其背后的数据或页面元素。

开始之前

你需要先连接InsightfulPipe MCP。Google Analytics 4和DataForSEO是主要数据来源;其他来源作为补充。

  1. 为每个平台调用带有 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。如果存在多个属性,询问用户具体是哪个网站。
  2. 为 get_report 和 list_key_events(google-analytics)、search_analytics、onpage_instant_pages、capture、core-web-vitals、accessibility-seo 和 gaql 操作调用带有 request="actions_details" 参数的 query_contexts,并遵循其返回的请求体结构。
  3. 询问用户三项信息,如果用户不清楚,则使用默认值:
    • 目标页面。 默认值: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

...[截断]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能