Cross-platform budget optimizer that reallocates spend based on ROAS across Google, Meta, LinkedIn, X, Reddit, TikTok, Amazon, The Trade Desk, and Amazon DSP. Use for budget reallocation, ROAS optimization, or cross-platform spend efficiency.
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Medium
Suggest reviewing before use
Analyzes ROAS performance across all connected ad platforms and generates budget reallocation recommendations to maximize overall return. Supports Google Ads, Meta Ads, LinkedIn Ads, X Ads, Reddit Ads, TikTok Ads, Amazon Ads, The Trade Desk, and Amazon DSP.
Read-only by default. This skill:
--apply flag--confirm for applying changes over thresholdFetch ROAS data from all connected platforms:
python3 scripts/pull_platform_metrics.py \
--platforms all \
--date-range 30d \
--output metrics.jsonpython3 scripts/analyze_budgets.py \
--input metrics.json \
--target-roas 3.0 \
--min-budget 10 \
--reallocation-threshold 0.15 \
--output recommendations.jsonpython3 scripts/preview_reallocation.py \
--recommendations recommendations.jsonpython3 scripts/apply_budget_changes.py \
--recommendations recommendations.json \
--confirm \
--dry-runRemove --dry-run to execute changes:
python3 scripts/apply_budget_changes.py \
--recommendations recommendations.json \
--confirmpython3 scripts/pull_platform_metrics.py \
--platforms all \
--date-range 7d \
--summary-onlypython3 scripts/analyze_budgets.py \
--input metrics.json \
--target-roas 4.0 \
--aggressive \
--output recommendations.jsonpython3 scripts/analyze_budgets.py \
--input metrics.json \
--platforms google,meta,linkedin \
--target-roas 3.0 \
--output recommendations.jsonpython3 scripts/generate_optimization_report.py \
--date-range 7d \
--format markdown \
--output weekly_report.mdThe optimizer uses a ROAS-weighted reallocation algorithm:
score = ROAS × conversion_volume_weightplatform_score = (
roas_normalized × 0.6 +
conversion_volume_normalized × 0.25 +
trend_score × 0.15
)Where:
roas_normalized = platform_roas / max(all_roas)conversion_volume_normalized = platform_conversions / max(all_conversions)trend_score = 7d_roas_change / 30d_avg_roas| Parameter | Required | Default | Description |
|---|---|---|---|
--platforms | No | all | Comma-separated platform list |
--date-range | No | 30d | Analysis period (7d, 14d, 30d, 60d, 90d) |
--target-roas | No | 2.0 | Target ROAS for optimization |
--min-budget | No | 10 | Minimum daily budget per platform ($) |
--reallocation-threshold | No | 0.10 | Max % to reallocate per cycle |
--aggressive | No | false | Allow larger reallocations (up to 25%) |
--conservative | No | false | Limit reallocations to 5% |
--dry-run | No | false | Preview without applying changes |
--confirm | No | false | Required to apply changes |
--output | No | stdout | Output file path |
| Script | Purpose |
|---|---|
pull_platform_metrics.py | Pull ROAS/spend/conversion data from all platforms |
analyze_budgets.py | Generate reallocation recommendations |
preview_reallocation.py | Display recommendations in human-readable format |
apply_budget_changes.py | Execute approved budget changes |
generate_optimization_report.py | Create comprehensive optimization report |
platform_metrics_adapters.py | Platform-specific API adapters for metrics |
{
"generated_at": "2026-01-18T10:00:00Z",
"analysis_period": "30d",
"target_roas": 3.0,
"total_budget": 1500.00,
"platforms": {
"google": {
"current_budget": 500.00,
"recommended_budget": 650.00,
"change": 150.00,
"change_pct": 30.0,
"roas": 4.2,
"conversions": 125,
"revenue": 2100.00,
"spend": 500.00,
"trend_7d": 0.15
},
"meta": {
"current_budget": 400.00,
"recommended_budget": 350.00,
"change": -50.00,
"change_pct": -12.5,
"roas": 2.1,
"conversions": 84,
"revenue": 840.00,
"spend": 400.00,
"trend_7d": -0.08
}
},
"reallocations": [
{
"from_platform": "meta",
"to_platform": "google",
"amount": 50.00,
"reason": "Google ROAS 4.2x vs Meta 2.1x"
},
{
"from_platform": "reddit",
"to_platform": "google",
"amount": 100.00,
"reason": "Reddit ROAS 1.5x vs Google 4.2x"
}
],
"estimated_impact": {
"current_blended_roas": 2.8,
"projected_blended_roas": 3.4,
"projected_revenue_increase": 450.00,
"confidence": "medium"
}
}| Platform | Minimum Daily | Recommended Minimum |
|---|---|---|
| Google Ads | $1 | $10 |
| Meta Ads | $1 | $10 |
| LinkedIn Ads | $10 | $50 |
| X Ads | $1 | $10 |
| Reddit Ads | $5 | $20 |
| TikTok Ads | $20 | $50 |
| Amazon Ads | $1 | $10 |
| The Trade Desk | $0.01 | $50 |
| Amazon DSP | $100 (lifetime) | $500 (lifetime) |
Required environment variables:
# Platform Connection IDs
# Platform Account IDs
GOOGLE_ADS_CUSTOMER_ID
META_AD_ACCOUNT_ID
LINKEDIN_AD_ACCOUNT_ID
TWITTER_AD_ACCOUNT_ID
REDDIT_AD_ACCOUNT_ID
TIKTOK_ADVERTISER_ID
AMAZON_ADS_PROFILE_ID
TTD_ADVERTISER_ID
AMAZON_DSP_PROFILE_ID
AMAZON_DSP_ADVERTISER_ID
# Google Ads specific
GOOGLE_ADS_DEVELOPER_TOKEN
GOOGLE_ADS_LOGIN_CUSTOMER_ID| Error | Cause | Solution |
|---|---|---|
MISSING_CREDENTIALS | Platform OAuth not connected | Connect platform in Settings |
INSUFFICIENT_DATA | Not enough conversions for analysis | Extend date range or exclude platform |
BUDGET_BELOW_MINIMUM | Recommended budget below platform min | Increase total budget or exclude platform |
RATE_LIMITED | Too many API requests | Retry with backoff |
PARTIAL_DATA | Some platforms failed to report | Check individual platform errors |
APPLY_FAILED | Budget update failed on platform | Check platform-specific error, retry |
--conservative flag initiallyPart of the Synter free skills collection — open-source agent skills for advertising, PPC, and marketing automation.
Want this skill (and 40+ more) running on autopilot against your live ad accounts? Try Synter — AI Agent Media Buyers that connect to Google, Meta, LinkedIn, TikTok, Reddit, Amazon, and 7+ more platforms.
Synter-Media-AI/free-skills
3df48f1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.