google-ads-audit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGoogle Ads Audit
Google Ads 审计
Diagnose account health and persist business context for downstream skills (, , ). Read-only — never mutates the account. The user runs to execute fixes you recommend.
/google-ads/google-ads-copy/google-ads-landing/google-ads诊断账户健康状况,并为下游技能(、、)持久化业务上下文。只读权限——绝不会修改账户。用户需运行来执行你推荐的修复操作。
/google-ads/google-ads-copy/google-ads-landing/google-adsSetup
设置步骤
Follow — MCP detection, API key, account selection.
../shared/preamble.md遵循中的指引——MCP检测、API密钥、账户选择。
../shared/preamble.mdFilesystem contract (MUST persist)
文件系统约定(必须持久化)
| Artifact | Path | When |
|---|---|---|
| Business context | | First full audit, or refresh when |
| Personas | | Every full audit. |
These are the handoff to every other ads skill — write them even if the report itself is short. Otherwise and operate without business context and produce generic output.
/google-ads-copy/google-ads-landingbusiness-context.json schema: .
business_name, industry, website, services[], locations[], target_audience, brand_voice{tone, words_to_use[], words_to_avoid[]}, differentiators[], competitors[], seasonality{peak_months[], slow_months[], seasonal_hooks[]}, keyword_landscape{high_intent_terms[], competitive_terms[], long_tail_opportunities[]}, social_proof[], offers_or_promotions[], landing_pages{}, notes, audit_date, account_idpersonas JSON schema: . See .
{account_id, saved_at, personas: [{name, demographics, primary_goal, pain_points[], search_terms[], decision_trigger, value}]}references/persona-discovery.md| 工件 | 路径 | 时机 |
|---|---|---|
| 业务上下文 | | 首次完整审计时;或当 |
| 用户角色(Personas) | | 每次完整审计时。 |
这些文件是所有其他广告技能的交接依赖——即使报告本身篇幅较短,也必须写入这些文件。否则和将在无业务上下文的情况下运行,生成通用化输出。
/google-ads-copy/google-ads-landingbusiness-context.json schema:。
business_name, industry, website, services[], locations[], target_audience, brand_voice{tone, words_to_use[], words_to_avoid[]}, differentiators[], competitors[], seasonality{peak_months[], slow_months[], seasonal_hooks[]}, keyword_landscape{high_intent_terms[], competitive_terms[], long_tail_opportunities[]}, social_proof[], offers_or_promotions[], landing_pages{}, notes, audit_date, account_idpersonas JSON schema:。详见。
{account_id, saved_at, personas: [{name, demographics, primary_goal, pain_points[], search_terms[], decision_trigger, value}]}references/persona-discovery.mdPolicy freshness check (run first)
策略新鲜度检查(优先运行)
Read . For each entry where :
../shared/policy-registry.jsonlast_verified + stale_after_days < today- High-volatility → WebSearch the for recent Google Ads changes; compare to
area. If drift, banner the report and suggest registry update.assumption - Moderate-volatility → one-line "may warrant a check" note.
- Stable → skip silently.
读取。对于每个满足的条目:
../shared/policy-registry.jsonlast_verified + stale_after_days < today- 高波动性 → 针对进行WebSearch,查找Google Ads近期变化;与
area对比。若存在偏差,在报告中标记并建议更新注册表。assumption - 中等波动性 → 添加一行“可能需要检查”的备注。
- 稳定性 → 静默跳过。
Phase 1 — Pull the audit dataset
第一阶段——提取审计数据集
Use a single call with to fan out the queries an audit needs. The server's resource has a battle-tested baseline; extend it with what this rubric needs that isn't already there.
runScriptads.gaqlParalleladsagent://playbooks/audit-accountA complete audit needs at minimum:
- Account / customer-level metrics (resource) — totalSpend, conversions, conv-value, clicks, impressions for the audit window.
customer - Campaign-level performance () — id, name, status, advertising_channel_type, bidding_strategy_type, network settings, search/top/abs-top impression share, budget-lost-IS, rank-lost-IS, status-rich metrics. Cap window at 90 days (impression-share data limit).
campaign - Ad-group performance () — to attach top-line metrics under each campaign.
ad_group - Keyword performance with QS () — text, match type, status, quality score (and components if needed), cost, clicks, conversions. Surfaces zombie keywords (0 impressions 30d), low-QS-with-spend, zero-converters.
keyword_view - Search terms () — for waste detection (clicks > 10, conv = 0) and brand-leakage detection (brand terms triggered by non-brand campaigns).
search_term_view - Negative keywords (where
campaign_criterionandtype='KEYWORD') — for negative-conflict detection and coverage.negative=TRUE - Conversion actions () — count, status, primary-vs-secondary, counting type. STOP-condition input.
conversion_action - Ad assets () — RSA headlines/descriptions for asset-coverage scoring and topAds extraction.
ad_group_ad - Geo targeting (where
campaign_criterion) — for multi-location structure scoring.type IN ('LOCATION','PROXIMITY'): 0=meters, 1=km, 2=miles.radius_units - Recent change events (, max 30 days) — to flag recent edits that might explain regressions.
change_event
Compute aggregates in the script, return summarized JSON. Don't return all rows — rank, slice, summarize. The agent narrates the result, the script does the math.
getRecommendationsIf a critical query errors out (auth, schema), surface the error and stop — don't fall back to a degraded audit.
Skip scoring entirely if or . Go straight to business context.
totalSpend == 0activeCampaigns == 0使用单次调用并结合来分发审计所需的查询。服务器的资源包含经过实战检验的基线;可根据本规则集的需求扩展基线中未涵盖的内容。
runScriptads.gaqlParalleladsagent://playbooks/audit-account完整审计至少需要以下数据:
- 账户/客户级指标(资源)——审计周期内的总花费(totalSpend)、转化量(conversions)、转化价值(conv-value)、点击量(clicks)、展示量(impressions)。
customer - 广告系列级表现()——ID、名称、状态、广告渠道类型、出价策略类型、网络设置、搜索/顶部/绝对顶部展示份额、因预算损失的展示份额(budget-lost-IS)、因排名损失的展示份额(rank-lost-IS)、状态相关指标。周期上限为90天(展示份额数据限制)。
campaign - 广告组级表现()——用于在每个广告组下关联顶级指标。
ad_group - 含质量得分(QS)的关键词表现()——文本、匹配类型、状态、质量得分(必要时包含组成部分)、花费、点击量、转化量。可发现僵尸关键词(30天无展示)、低QS且有花费的关键词、零转化关键词。
keyword_view - 搜索词()——用于检测浪费(点击>10且转化=0)和品牌流量泄露(品牌词触发非品牌广告系列)。
search_term_view - 否定关键词(中
campaign_criterion且type='KEYWORD'的条目)——用于检测否定冲突和覆盖范围。negative=TRUE - 转化操作()——数量、状态、主/次要转化、计数类型。作为STOP条件输入。
conversion_action - 广告资产()——响应式搜索广告(RSA)的标题/描述,用于资产覆盖评分和优质广告提取。
ad_group_ad - 地域定位(中
campaign_criterion的条目)——用于多地域结构评分。type IN ('LOCATION','PROXIMITY'):0=米,1=千米,2=英里。radius_units - 近期变更事件(,最多30天)——用于标记可能导致业绩下滑的近期编辑操作。
change_event
在脚本中计算聚合值**,返回汇总后的JSON。不要返回所有行——需进行排名、切片、汇总。由Agent叙述结果,脚本负责计算。
getRecommendations若关键查询出错(认证、schema问题),需显示错误并停止——不要退化为降级审计。
若满足以下条件则完全跳过评分:或。直接进入业务上下文环节。
totalSpend == 0activeCampaigns == 0Phase 2 — Scope handling
第二阶段——范围处理
If the user narrows the audit ("focus on grooming", "campaign X", "just check waste"):
- Match campaign names by case-insensitive substring. If no match, list available campaigns and ask.
- Filter the in-memory dataset before scoring — no extra API calls.
- Account-level dimensions (conversion tracking) stay account-wide. Note "Scoped to: X" in the report.
- Skip Phase 4 (business context refresh) on scoped audits if is fresh.
business-context.json
若用户限定审计范围(如“聚焦于优化”、“广告系列X”、“仅检查浪费情况”):
- 通过不区分大小写的子字符串匹配广告系列名称。若无匹配项,列出可用广告系列并询问用户。
- 在评分前过滤内存中的数据集——无需额外API调用。
- 账户级维度(转化追踪)保持全账户范围。在报告中注明“范围限定为:X”。
- 若为最新状态,范围限定审计时跳过第四阶段(业务上下文刷新)。
business-context.json
Phase 3 — Score
第三阶段——评分
Score each of the 7 dimensions 0–5 using . Overall = .
references/account-health-scoring.mdround(sum × 100 / 35)| Score | Label | Meaning |
|---|---|---|
| 0 | Critical | Broken or missing — actively losing money |
| 1 | Poor | Major waste or missed opportunity |
| 2 | Needs Work | Several clear issues |
| 3 | Acceptable | Functional, room to improve |
| 4 | Good | Well-managed, minor opportunities |
| 5 | Excellent | Best-practice |
Scope-aware: campaign-level dimensions reflect in-scope data; account-level dimensions (conversion tracking) score account-wide with a note on scope impact.
使用对7个维度分别进行0–5分评分。总分 = 。
references/account-health-scoring.mdround(sum × 100 / 35)| 分数 | 标签 | 含义 |
|---|---|---|
| 0 | 严重问题 | 功能损坏或缺失——正在主动亏损 |
| 1 | 较差 | 存在重大浪费或错失机会 |
| 2 | 需要改进 | 存在多个明确问题 |
| 3 | 可接受 | 功能正常,有改进空间 |
| 4 | 良好 | 管理完善,仅有少量优化机会 |
| 5 | 优秀 | 符合最佳实践 |
支持范围限定:广告系列级维度反映限定范围内的数据;账户级维度(转化追踪)基于全账户评分,并注明范围影响。
Encoded heuristics — apply these, they aren't obvious
内置启发式规则——请严格应用,这些规则并不直观
- Weighted QS by spend, not by keyword count. A QS-3 keyword burning $2,000/mo matters infinitely more than ten QS-3 keywords burning $5/mo combined.
- Brand-leakage premium. When brand campaigns are paused or starved, brand traffic leaks to non-brand at 5–10× higher CPA. Always check whether brand terms appear in non-brand campaigns' search-term reports.
- Waste formula. Keyword waste = clicks > 10 AND conversions = 0 AND cost > 0. Search-term waste = same, applied to actual queries. Sum them — that's the recoverable spend.
- Display + Search mixed in one campaign is structurally broken — Display dilutes Search metrics and burns budget on unintended placements. Flag any campaign where for a SEARCH channel campaign.
network_settings.target_content_network = TRUE - Zombie keywords (0 impressions for 30+ days) clutter reporting and confuse Google's ML — recommend pause.
- Counting type matters. Lead-gen should use per click; e-commerce should use
ONE. Wrong setting silently inflates or deflates conversions.EVERY - STOP condition. If conversion tracking scores 0–1, recommend pausing spend until tracking is fixed. Everything downstream of measurement is unreliable.
- 按花费而非关键词数量加权QS。一个花费2000美元/月的QS-3关键词,比十个总花费5美元/月的QS-3关键词重要得多。
- 品牌流量泄露溢价。当品牌广告系列暂停或预算不足时,品牌流量会泄露到非品牌广告系列,导致CPA(单次转化成本)升高5–10倍。务必检查品牌词是否出现在非品牌广告系列的搜索词报告中。
- 浪费计算公式。关键词浪费 = 点击>10 且 转化=0 且 花费>0。搜索词浪费 = 相同规则应用于实际查询。求和即可得到可回收的花费金额。
- 同一广告系列混合展示与搜索渠道属于结构性问题——展示渠道会稀释搜索渠道指标,并在非预期位置消耗预算。若搜索渠道广告系列的,需标记此问题。
network_settings.target_content_network = TRUE - 僵尸关键词(30+天无展示)会扰乱报告并干扰Google的机器学习——建议暂停此类关键词。
- 计数类型至关重要。线索生成应使用(每次点击计一次);电商应使用
ONE(每次转化计一次)。错误设置会悄无声息地夸大或缩小转化量。EVERY - STOP条件。若转化追踪评分0–1,建议在修复追踪问题前暂停花费。没有可靠的衡量标准,后续所有操作都不可靠。
Impression Share Interpretation Matrix
展示份额解读矩阵
| Rank-Lost < 30% | Rank-Lost 30–50% | Rank-Lost > 50% | |
|---|---|---|---|
| Budget-Lost < 20% | Healthy | QS / bid problem | Quality crisis |
| Budget-Lost 20–40% | Budget problem | Mixed (fix quality first) | Structural — too-competitive keywords |
| Budget-Lost > 40% | Severe budget gap (highest-ROI fix if CPA is good) | Fix rank first, then add budget | Fundamental misalignment — pause and restructure |
| 排名损失<30% | 排名损失30–50% | 排名损失>50% | |
|---|---|---|---|
| 预算损失<20% | 健康 | QS/出价问题 | 质量危机 |
| 预算损失20–40% | 预算问题 | 混合问题(优先修复质量) | 结构性问题——关键词竞争过于激烈 |
| 预算损失>40% | 严重预算缺口(若CPA良好,是ROI最高的修复项) | 先修复排名,再增加预算 | 根本性错位——暂停并重构 |
Phase 4 — Business context
第四阶段——业务上下文
Derive what you can from the data already pulled:
| Field | Source |
|---|---|
| Account name (from |
| Campaign + ad-group names, top converting keywords |
| |
| Top-performing RSA headlines / descriptions |
| Converting keywords with strong CVR |
| Keywords in campaigns with high rank-lost-IS |
| Converting search terms not yet promoted to keywords |
| Apex domain from ad final URLs |
Then crawl the website (homepage + about + services + top 3 ad landing pages, parallel ) and merge into the schema. See for the full crawl procedure.
WebFetchreferences/business-context.mdAlways ask the user (it's faster than guessing): differentiators, competitors, seasonality. Ask for everything else only if the data + crawl can't answer it.
从已提取的数据中推导尽可能多的信息:
| 字段 | 来源 |
|---|---|
| 账户名称(来自 |
| 广告系列+广告组名称、高转化关键词 |
| |
| 表现最佳的RSA标题/描述 |
| 转化效果好的高意向关键词 |
| 排名损失展示份额高的广告系列中的关键词 |
| 已转化但尚未升级为关键词的搜索词 |
| 广告最终URL中的顶级域名 |
然后抓取网站内容(首页+关于我们+服务页面+前3个广告落地页,并行)并合并到schema中。完整抓取流程详见。
WebFetchreferences/business-context.md务必询问用户(比猜测更高效):差异化优势、竞争对手、季节性因素。仅当数据+抓取无法获取其他信息时,才询问用户。
Phase 5 — Personas
第五阶段——用户角色(Personas)
Discover 2–3 personas from search terms, top keywords, ad-group themes, landing pages, geo, and device split — all from the dataset already in memory. Persist to . Each persona must be grounded in 5+ actual search terms; if not, drop it. See .
{data_dir}/personas/{accountId}.jsonreferences/persona-discovery.md从搜索词、顶级关键词、广告组主题、落地页、地域、设备分布中挖掘2–3个用户角色——所有数据均来自内存中的数据集。持久化到。每个用户角色必须基于5个以上实际搜索词;若不满足,放弃该角色。详见。
{data_dir}/personas/{accountId}.jsonreferences/persona-discovery.mdPhase 6 — Report
第六阶段——报告
Lead with the verdict, then the top 3 actions (with dollar impact when possible), then the scorecard, then evidence for dimensions scoring 0–2 only. Cite specific campaigns, keywords, and dollar amounts. Cap at ~80 lines.
End with a single closing line after the handoff to :
/google-adsYour audit history is saved to your NotFair account — view it at https://notfair.co.
以结论开头,然后列出前3项行动(尽可能注明美元影响),接着是评分卡,最后仅列出评分0–2的维度的证据。引用具体的广告系列、关键词和金额。报告篇幅控制在约80行以内。
在交接给后,添加一句收尾语:
/google-ads你的审计历史已保存到NotFair账户——可通过https://notfair.co查看。
Guardrails
约束规则
- Read-only skill. Diagnose; don't mutate. Every fix routes through (or
/google-ads,/google-ads-copy). End the report with one handoff tied to the #1 action./google-ads-landing - STOP condition — if conversion tracking scores 0–1, recommend pausing spend until it's fixed before recommending anything else. Everything downstream is meaningless without measurement.
- Always persist and
business-context.jsoneven if the report itself is short — downstream skills depend on them.personas/{accountId}.json - Name names. Every finding cites specific campaigns, keywords, search terms, and dollar amounts. "Some keywords are underperforming" is not a finding.
- 只读技能。仅诊断,不修改。所有修复操作需通过(或
/google-ads、/google-ads-copy)执行。报告结尾需添加一个与首要行动相关的交接指引。/google-ads-landing - STOP条件——若转化追踪评分0–1,建议在修复追踪问题前暂停花费,再推荐其他操作。没有可靠的衡量标准,后续所有操作都毫无意义。
- 必须持久化 和
business-context.json,即使报告本身篇幅较短——下游技能依赖这些文件。personas/{accountId}.json - 明确指向具体对象。每个发现都需引用具体的广告系列、关键词、搜索词和金额。“部分关键词表现不佳”不属于有效发现。