Generates cross-channel advertising reports and performance summaries. Use for campaign analysis, budget reviews, and executive reporting.
69%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/multi-channel-reporting/SKILL.mdGenerates cross-channel advertising performance reports using Google Ads API Report Fetcher (GAARF) patterns. Token-efficient summaries instead of raw data dumps.
| Report | Description | Use When |
|---|---|---|
| Executive Summary | Totals + KPIs across channels | Weekly/monthly reviews |
| Channel Summary | Per-platform breakdown | Budget allocation decisions |
| Campaign Performance | Top/bottom campaigns | Optimization meetings |
| Trend Report | Day-over-day/week-over-week | Identifying anomalies |
Run scripts/generate-report.py with date range:
python3 scripts/generate-report.py \
--start-date 2025-01-01 \
--end-date 2025-01-15 \
--breakdown campaignOptions:
--breakdown: campaign | ad_group | keyword | day--top-n: Number of top/bottom performers to show (default: 10)--output: Save to JSON fileRun scripts/daily-pull.py for scheduled extraction:
python3 scripts/daily-pull.py \
--days 7 \
--output-dir data/This stores data in data/YYYY-MM-DD.json for trend analysis.
SELECT
campaign.name,
campaign.status,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status = 'ENABLED'
ORDER BY metrics.cost_micros DESCSELECT
segments.date,
metrics.cost_micros,
metrics.conversions,
metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY segments.dateSELECT
campaign.name,
ad_group.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM ad_group
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status = 'ENABLED'
AND ad_group.status = 'ENABLED'
ORDER BY metrics.cost_micros DESCSELECT
campaign.name,
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESCReports are token-efficient summaries, not raw row dumps:
EXECUTIVE SUMMARY
=================
Period: 2025-01-01 to 2025-01-15
Total Spend: $12,345.67
Conversions: 234
CPA: $52.76
ROAS: 3.2x
CHANNEL SUMMARY
===============
Google Ads: $10,000 | 200 conv | $50 CPA
LinkedIn: $2,000 | 30 conv | $67 CPA
Reddit: $345 | 4 conv | $86 CPA
TOP 5 PERFORMERS (by CPA)
=========================
1. Brand - Search ($15 CPA, 50 conv)
2. JTBD - Budget ($35 CPA, 30 conv)
...
BOTTOM 5 PERFORMERS (by CPA)
============================
1. Cold - Display ($250 CPA, 2 conv)
...
ACTION ITEMS
============
• Scale: Brand - Search (lowest CPA, room to grow)
• Fix: Cold - Display (CPA 5x average)
• Pause: Test Campaign (no conversions in 14 days)Requires environment variables:
DATABASE_URLGOOGLE_ADS_DEVELOPER_TOKENThe scripts are designed for extension. To add a new platform:
generate-report.py{name, spend, impressions, clicks, conversions, cpa}| Platform | API Type | Notes |
|---|---|---|
| Google Ads | GAQL | GAARF patterns |
| Meta Ads | Graph API | Campaign insights |
| LinkedIn Ads | Rest.li 2.0 | B2B metrics |
| X Ads | v12 API | Engagement metrics |
| Reddit Ads | v3 API | Requires User-Agent |
| TikTok Ads | Business API | Video-first metrics |
| Amazon Ads | Sponsored Ads API | ACOS → ROAS conversion |
| The Trade Desk | REST + GraphQL | Delta sync for efficiency |
| Amazon DSP | Async Reporting | Request → poll → download |
changeTrackingVersion for incremental syncPart 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.