mcpField
Q
quality-score-optimization

quality-score-optimization

github.com/itallstartedwithaidea营销与增长44101 次安装28 周前更新
代码仓库

关于 quality-score-optimization

此技能用于诊断并改善 Google Ads 关键词级质量得分。它分析得分组成和历史变化,并按支出及预估 CPC 影响排列优化建议。

主要功能

  1. 01分析质量得分的三个组成部分
  2. 02追踪关键词得分历史变化
  3. 03关联得分变化与账户修改
  4. 04按支出影响排列优化计划
  5. 05估算 CPC 节省

适用场景

  1. 01排查高 CPC 或广告排名偏低
  2. 02查找关键词得分下降原因
  3. 03优先处理高支出关键词
  4. 04追踪得分随时间的变化

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/itallstartedwithaidea/agent-skills --skill quality-score-optimization

安装后在 Claude Code 中输入/quality-score-optimization确认已加载。

详细介绍

质量得分优化

Agent Skills™ 的一部分,由 googleadsagent.ai™ 提供

描述

质量得分优化技能提供了一个系统化框架,用于诊断、跟踪和提升 Google Ads 账户中每个关键词的质量得分。质量得分是 Google 对关键词、广告和着陆页整体相关性与质量给出的 1–10 分评分。它会直接影响广告排名、每次点击费用,以及广告能否展示。质量得分提升 1 分,CPC 可降低 10–15%。

该技能将质量得分分解为三个子项——预期点击率(eCTR)、广告相关性和着陆页体验,并为每项提供有针对性的改进策略。它不仅关注当前快照,还会跟踪关键词层级的历史质量得分趋势,识别得分下降模式,并将变化与账户修改相关联。这种纵向分析有助于找出得分波动背后的根本原因。

优化引擎按支出金额为关键词加权,从而确定改进工作的优先级。对日支出 1,000 美元的关键词提升质量得分,其影响远大于对日支出 5 美元的关键词进行同等幅度的提升。该技能会生成按影响排序的改进计划、估算 CPC 节省金额,并根据各行业垂直领域的专属基准跟踪改进进度。

适用场景

  • 用户询问“质量得分”或“QS 优化”
  • 用户提到可能与质量问题有关的“高 CPC”
  • 用户希望在不提高出价的情况下“提升广告排名”
  • 用户询问“预期 CTR”“广告相关性”或“着陆页体验”
  • 用户提到质量组成部分“低于平均水平”
  • 用户希望通过提升质量“降低每次点击费用”
  • 用户询问“为什么我的广告没有展示”(可能与 QS 有关)
  • 用户希望“跟踪质量得分随时间的变化”

架构

flowchart TD
    A[Google Ads API:\nKeyword Quality Data] --> B[QS Data Extraction]

    B --> C[Current QS Snapshot]
    B --> D[Historical QS Tracking]
    B --> E[Sub-Component Breakdown]

    E --> F[Expected CTR Analysis]
    E --> G[Ad Relevance Analysis]
    E --> H[Landing Page Experience Analysis]

    F --> I[CTR Improvement Engine]
    I --> I1[Ad Copy Testing]
    I --> I2[Ad Extension Optimization]
    I --> I3[Audience Refinement]

    G --> J[Relevance Improvement Engine]
    J --> J1[Keyword-Ad Alignment]
    J --> J2[Ad Group Restructuring]
    J --> J3[DKI Opportunities]

    H --> K[Landing Page Improvement Engine]
    K --> K1[Page Speed Optimization]
    K --> K2[Content Relevance Matching]
    K --> K3[Mobile Experience Audit]

    I1 --> L[Spend-Weighted Priority Ranker]
    I2 --> L
    I3 --> L
    J1 --> L
    J2 --> L
    J3 --> L
    K1 --> L
    K2 --> L
    K3 --> L

    L --> M[QS Improvement Plan]
    M --> N[Estimated CPC Savings]
    M --> O[Implementation Roadmap]
    M --> P[Progress Tracking Dashboard]

实现

质量得分提取与分析引擎:

async function analyzeQualityScores(customerId) {
  const keywordData = await getKeywordQualityData(customerId);

  const analysis = keywordData.map(kw => ({
    keyword: kw.text,
    matchType: kw.matchType,
    qualityScore: kw.qualityScore,
    expectedCtr: kw.expectedCtr,
    adRelevance: kw.adRelevance,
    landingPageExperience: kw.landingPageExperience,
    monthlySpend: kw.costMicros / 1_000_000,
    impressions: kw.impressions,
    weightedImpact: calculateWeightedImpact(kw)
  }));

  return {
    distribution: buildQSDistribution(analysis),
    bottomKeywords: analysis.filter(kw => kw.qualityScore <= 5)
      .sort((a, b) => b.weightedImpact - a.weightedImpact),
    componentBreakdown: analyzeComponents(analysis),
    estimatedSavings: estimateCPCSavings(analysis),
    improvementPlan: generateImprovementPlan(analysis)
  };
}

function calculateWeightedImpact(keyword) {
  const spendWeight = keyword.costMicros / 1_000_000;
  const qsDeficit = 10 - keyword.qualityScore;
  const cpcSavingsPerPoint = keyword.avgCpc * 0.12;
  return spendWeight * qsDeficit * cpcSavingsPerPoint;
}

function analyzeComponents(keywords) {
  const components = { expectedCtr: [], adRelevance: [], landingPageExperience: [] };

  for (const kw of keywords) {
    if (kw.expectedCtr === 'BELOW_AVERAGE') components.expectedCtr.push(kw);
    if (kw.adRelevance === 'BELOW_AVERAGE') components.adRelevance.push(kw);
    if (kw.landingPageExperience === 'BELOW_AVERAGE') components.landingPageExperience.push(kw);
  }

  return {
    expectedCtr: {
      belowAverage: components.expectedCtr,
      totalSpendAffected: sumSpend(components.expectedCtr),
      strategies: [
        'Test new ad copy with stronger CTAs and benefit statements',
        'Add sitelink and callout extensions to increase ad real estate',
        'Refine audience targeting to reach higher-intent users',
        'Use ad customizers for time-sensitive or location-specific messaging'
      ]
    },
    adRelevance: {
      belowAverage: components.adRelevance,
      totalSpendAffected: sumSpend(components.adRelevance),
      strategies: [
        'Restructure ad groups to tighter keyword themes (max 15-20 keywords)',
        'Include exact keyword text in at least 2 headlines per RSA',
        'Use dynamic keyword insertion where natural',
        'Create SKAGs for highest-spend keywords with persistent relevance issues'
      ]
    },
    landingPageExperience: {
      belowAverage: components.landingPageExperience,
      totalSpendAffected: sumSpend(components.landingPageExperience),
      strategies: [
        'Improve page load speed (target under 3 seconds on mobile)',
        'Ensure keyword-relevant content appears above the fold',
        'Add trust signals: reviews, certifications, security badges',
        'Optimize mobile layout with clear CTA and minimal form fields'
      ]
    }
  };
}

历史质量得分跟踪:

async function trackQualityScoreHistory(customerId, keyword, days = 180) {
  const snapshots = await getHistoricalQSSnapshots(customerId, keyword, days);

  return {
    trend: calculateTrend(snapshots),
    changePoints: detectChangePoints(snapshots),
    correlations: correlateWithAccountChanges(snapshots, customerId),
    forecast: forecastQS(snapshots, 30)
  };
}

function estimateCPCSavings(keywords) {
  let totalMonthlySavings = 0;

  for (const kw of keywords) {
    if (kw.qualityScore < 7) {
      const targetQS = Math.min(kw.qualityScore + 2, 10);
      const qsImprovement = targetQS - kw.qualityScore;
      const cpcReduction = qsImprovement * 0.12;
      const monthlySavings = kw.monthlySpend * cpcReduction;
      totalMonthlySavings += monthlySavings;
    }
  }

  return { estimatedMonthlySavings: totalMonthlySavings, annualized: totalMonthlySavings * 12 };
}

与 Buddy™ Agent 的集成

质量得分优化是 Buddy™ Agent 中的持久监控层。该平台会为所有启用的关键词每日采集质量得分快照,构建趋势分析和变点检测所需的纵向数据集。当 Buddy™ 检测到高支出关键词的质量得分下降时,会立即触发调查工作流。

Buddy™ 会将质量得分分析结果转交给相应的下游技能:eCTR 问题会触发广告文案生成技能,广告相关性问题会触发关键词重组建议,着陆页问题则会触发着陆页审计技能。由此形成自动化的质量改进闭环。

Buddy™ 仪表板会显示账户的实时质量得分健康指标,并按支出加权,同时呈现账户层级的 QS 走势,以及通过改进随时间实现的预估 CPC 节省金额。

最佳实践

  1. 优先改进支出排名前 80% 的关键词的 QS
  2. 首先针对“低于平均水平”的子项——它们的提升空间最大
  3. 将超过 30 个关键词的广告组重组为主题更集中的关键词簇
  4. 确保每个广告组至少有 3 个 RSA,且标题与核心关键词相匹配
  5. 每周跟踪 QS,而非每日跟踪,以过滤 Google 的短期波动
  6. 使用历史 QS 数据,将得分变化与具体账户修改相关联
  7. 不要追求低流量关键词的 QS——月展示量低于 100 时,数据趋势并不可靠
  8. 系统性地改善着陆页体验(网站速度、移动端用户体验),以带来账户整体收益
  9. 计算预估 CPC 节省金额,以此向利益相关方证明着陆页投入的合理性
  10. 接受 QS 7–8 对大多数关键词而言是现实目标——追求 QS 10 的边际收益会逐渐降低

平台兼容性

平台支持
Claude Code✅
Cursor✅
Codex✅
Gemini✅

相关技能

  • 广告文案生成 - 提升预期点击率(eCTR)和广告相关性,需要优化广告文案
  • 落地页审核 - 落地页体验是质量得分三个子项之一
  • 关键词研究 - 关键词与广告组的匹配度会直接影响广告相关性得分
  • 记忆持久化 - 跨会话跟踪历史质量得分,有助于分析趋势和检测回归

关键词

质量得分、QS 优化、预期点击率、广告相关性、落地页体验、Google Ads 质量得分、CPC 降低、广告评级提升、质量得分跟踪、关键词质量、质量得分组成部分、质量得分历史、质量得分提升


© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License

评论

支持 Markdown