mcpField
B
budget-optimization

budget-optimization

github.com/itallstartedwithaideaマーケティング・グロース4497 回インストール28 週間前に更新
リポジトリ

budget-optimization について

budget-optimizationは、Google Adsの予算計画を支援するマーケティング向けスキルです。キャンペーンをポートフォリオとして捉え、限界リターンや季節性、事業上の制約を基に、影響予測と信頼区間を含む再配分案を作成します。

主な機能

  1. 01限界リターンに基づく予算モデル
  2. 02予算不足・収益逓減キャンペーンの特定
  3. 03共有予算とポートフォリオ入札の評価
  4. 04季節性を考慮した予算調整計画
  5. 05影響予測付きの再配分案

活用シーン

  1. 01増額・削減するキャンペーンの判断
  2. 02予算切れや消化不足への対応
  3. 03季節需要のピーク前の支出計画
  4. 04共有予算とポートフォリオ入札の評価

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/budget-optimizationを入力して読み込まれたか確認します。

詳細

予算の最適化

Agent Skills™ の一部です。googleadsagent.ai™

説明

予算の最適化スキルは、AI を活用した予測とポートフォリオ理論を適用し、広告予算をキャンペーン間に配分して、最大のリターンを実現します。各キャンペーンを独立した予算枠として扱うのではなく、アカウント全体を投資ポートフォリオとしてモデル化します。最低限のブランド露出や地理的なカバー範囲といったビジネス上の制約を守りながら、広告費用対効果(ROAS)の限界リターンが最も高いキャンペーンへ、支出を動的に振り分けます。

最適化エンジンは、過去のパフォーマンスデータ、季節性のパターン、競争環境の変化、コンバージョンラグ曲線を取り込み、予算変更に対する各キャンペーンの反応を予測するモデルを構築します。インプレッションシェアに制約されているキャンペーン(需要に対して予算不足のキャンペーン)、収益が逓減しているキャンペーン(効率的フロンティアを超えて予算を投入しているキャンペーン)、予算を移行することで測定可能なコンバージョン増加が見込めるキャンペーンを特定します。

ポートフォリオ入札戦略は、重要な調整手段です。このスキルは、キャンペーンごとに個別予算を設定するか共有予算を使用するか、データの少ないキャンペーン間でコンバージョンシグナルを集約するためにポートフォリオ入札戦略を利用できるか、季節ごとの予算調整を需要曲線に対してどのタイミングで行うべきかを評価します。期待される効果の予測と信頼区間を含む、実行可能な予算再配分計画を作成します。

使用する場面

  • ユーザーが「予算を最適化したい」または「予算配分を改善したい」と尋ねた場合
  • ユーザーが「予算のペーシング」や「キャンペーンの予算が尽きている」と述べた場合
  • ユーザーが「どこで支出を増やすべきか」または「どこで予算を削るべきか」を知りたい場合
  • ユーザーが「共有予算」や「ポートフォリオ入札」について尋ねた場合
  • ユーザーが「ROAS の最適化」や「予算内でコンバージョンを最大化すること」に言及した場合
  • ユーザーが「季節ごとの予算調整」や「予算計画」について尋ねた場合
  • ユーザーが「無駄な支出を減らしたい」または「予算効率を改善したい」と考えている場合
  • ユーザーが「予算が原因で失われたインプレッションシェア」に言及した場合

アーキテクチャ

flowchart TD
    A[Historical Performance Data] --> B[Data Preparation]
    C[Seasonality Signals] --> B
    D[Competitive Landscape] --> B

    B --> E[Campaign Response Modeling]
    E --> F[Marginal CPA Curves]
    E --> G[Impression Share Opportunity]
    E --> H[Conversion Lag Analysis]

    F --> I[Portfolio Optimizer]
    G --> I
    H --> I

    J[Business Constraints] --> I
    K[Total Budget Envelope] --> I

    I --> L{Optimization Strategy}
    L --> M[Shift to High ROAS]
    L --> N[Fund Impression Share Gaps]
    L --> O[Seasonal Pre-Allocation]
    L --> P[Portfolio Bid Strategy Setup]

    M --> Q[Budget Reallocation Plan]
    N --> Q
    O --> Q
    P --> Q

    Q --> R[Expected Impact Projection]
    Q --> S[Implementation Schedule]
    Q --> T[Monitoring Thresholds]

実装

限界リターンのモデリングを行う予算最適化エンジン:

async function optimizeBudgets(customerId, config) {
  const { totalBudget, lookbackDays = 90, constraints = {} } = config;

  const campaignData = await getCampaignPerformance(customerId, lookbackDays);
  const seasonalFactors = calculateSeasonalFactors(campaignData);
  const marginalCurves = buildMarginalReturnCurves(campaignData);

  const currentAllocation = campaignData.map(c => ({
    campaignId: c.id,
    name: c.name,
    currentBudget: c.dailyBudget,
    spend: c.avgDailySpend,
    conversions: c.avgDailyConversions,
    roas: c.conversionValue / c.cost,
    impressionShareLostBudget: c.isLostBudget,
    marginalCPA: marginalCurves[c.id].marginalCPA
  }));

  return portfolioOptimize(currentAllocation, totalBudget, constraints);
}

function buildMarginalReturnCurves(campaignData) {
  const curves = {};

  for (const campaign of campaignData) {
    const dailyData = campaign.dailyMetrics.sort((a, b) => a.cost - b.cost);
    const costBuckets = createCostBuckets(dailyData, 10);

    curves[campaign.id] = {
      marginalCPA: calculateMarginalCPA(costBuckets),
      saturationPoint: findSaturationPoint(costBuckets),
      elasticity: calculateBudgetElasticity(costBuckets)
    };
  }

  return curves;
}

function portfolioOptimize(campaigns, totalBudget, constraints) {
  const { minBrandSpend = 0, geoMinimums = {}, maxShift = 0.3 } = constraints;

  let remainingBudget = totalBudget;
  const allocations = [];

  const constrainedCampaigns = applyMinimumConstraints(campaigns, constraints);
  remainingBudget -= constrainedCampaigns.reduce((sum, c) => sum + c.allocatedBudget, 0);

  const flexibleCampaigns = campaigns.filter(c =>
    !constrainedCampaigns.find(cc => cc.campaignId === c.campaignId)
  );

  const sorted = flexibleCampaigns.sort((a, b) => a.marginalCPA - b.marginalCPA);

  for (const campaign of sorted) {
    const maxBudget = campaign.currentBudget * (1 + maxShift);
    const optimalBudget = Math.min(
      calculateOptimalBudget(campaign),
      maxBudget,
      remainingBudget
    );
    allocations.push({ ...campaign, newBudget: optimalBudget });
    remainingBudget -= optimalBudget;
  }

  return { allocations: [...constrainedCampaigns, ...allocations], unallocated: remainingBudget };
}

季節ごとの予算調整プランナー:

function planSeasonalAdjustments(campaignData, forecastWindow = 90) {
  const seasonalPatterns = detectSeasonality(campaignData, { minHistoryDays: 365 });

  return seasonalPatterns.map(pattern => ({
    campaignId: pattern.campaignId,
    upcomingPeaks: pattern.peaks.filter(p => p.daysAway <= forecastWindow),
    recommendedPreBudgetIncrease: pattern.peaks.map(peak => ({
      startDate: subtractDays(peak.date, 7),
      endDate: addDays(peak.date, 3),
      budgetMultiplier: peak.historicalLift,
      confidence: peak.confidence
    })),
    lowSeasons: pattern.troughs.filter(t => t.daysAway <= forecastWindow).map(trough => ({
      startDate: trough.startDate,
      endDate: trough.endDate,
      budgetMultiplier: trough.historicalDrop,
      reallocationTarget: findBestAlternative(campaignData, trough)
    }))
  }));
}

Buddy™ Agent との統合

予算の最適化は、Buddy™ Agent における戦略的なリソース配分レイヤーです。このプラットフォームはキャンペーンのペーシングを継続的に監視し、予算上限に継続して達しているキャンペーンがある一方で、予算を使い切れていないキャンペーンがあることを検知すると、予算の再配分を推奨します。Buddy™ は、変更前後の予測を明示して、これらの推奨事項を提示します。

Buddy™ は予算の最適化を季節性認識エンジンと統合し、既知の需要ピーク(Black Friday、業界イベント、季節的なトレンド)の前に予算の増額を自動で提案するとともに、過去にパフォーマンスが低かった時期には減額を提案します。ユーザーには、ワンクリックで承認できる予算調整の通知が事前に届きます。

このスキルはコンバージョントラッキングスキルと連携し、正確なアトリビューションデータに基づいて予算を決定します。また、品質スコア最適化スキルとも連携し、構造的な品質上の問題があり、支出を増やしても無駄になるキャンペーンに予算が配分されないようにします。

ベストプラクティス

  1. コンバージョン トラッキングの精度を検証する前に、予算を最適化しないでください
  2. 信頼できる限界リターン曲線を作成するのに十分なデータを取得するため、最低でも90日間のルックバック期間を使用してください
  3. アルゴリズムの混乱を避けるため、調整期間ごとの予算変更は20~30%以内にしてください
  4. ROASのランキングにかかわらず、ブランドキャンペーンには最低消化額を設定してください
  5. スマート自動入札が調整できるよう、季節的なピークの5~7日前に予算を事前に設定してください
  6. 予算不足のキャンペーンを示す主要なシグナルとして、予算不足によるインプレッション シェア損失を監視してください
  7. 予算を最適化する前に、月間コンバージョン数が15件未満のキャンペーンを統合してください
  8. 同じファネル段階をターゲットとし、CPAが近いキャンペーンには共有予算を使用してください
  9. 最近の予算変更を評価する際は、コンバージョンまでのタイムラグを考慮してください
  10. ポートフォリオ入札戦略のパフォーマンスを毎月確認し、それに応じて目標指標を調整してください

プラットフォームの互換性

プラットフォーム対応
Claude Code✅
Cursor✅
Codex✅
Gemini✅

関連スキル

キーワード

予算の最適化、予算配分、Google 広告の予算、キャンペーン予算、共有予算、ポートフォリオ入札、ROASの最適化、予算ペーシング、季節予算、インプレッション シェアの予算、予算予測、メディアプランニング、広告費の最適化、費用対効果、予算管理


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

コメント