agentleFS
Synter-Media-AISynter-Media-AI/free-skills/skills/multi-channel-reporting/SKILL.md

multi-channel-reporting

Skill4 starsChanged 6 months agoMITView on GitHub

Generates cross-channel advertising reports and performance summaries. Use for campaign analysis, budget reviews, and executive reporting.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run scripts/generate-report.py with date range:

    line 30
  2. Very specific:

    Run scripts/daily-pull.py for scheduled extraction:

    line 46
  3. Very specific:

    Add platform query function in generate-report.py

    line 169
  4. Distinctive:

    Add to channel summary aggregation

    line 171
  5. Distinctive:

    Async reporting: - must poll for report completion

    line 195

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Multi-Channel Reporting Skill

Generates cross-channel advertising performance reports using Google Ads API Report Fetcher (GAARF) patterns. Token-efficient summaries instead of raw data dumps.

Capabilities

  1. Executive summaries - High-level spend, conversions, ROAS across all channels
  2. Channel comparison - Side-by-side platform performance
  3. Top/bottom performers - Identify winners and losers to act on
  4. Daily data extraction - Scheduled pulls for trend analysis

Report Types

ReportDescriptionUse When
Executive SummaryTotals + KPIs across channelsWeekly/monthly reviews
Channel SummaryPer-platform breakdownBudget allocation decisions
Campaign PerformanceTop/bottom campaignsOptimization meetings
Trend ReportDay-over-day/week-over-weekIdentifying anomalies

Workflow

Generate Performance Report

Run scripts/generate-report.py with date range:

python3 scripts/generate-report.py \
  --start-date 2025-01-01 \
  --end-date 2025-01-15 \
  --breakdown campaign

Options:

  • --breakdown: campaign | ad_group | keyword | day
  • --top-n: Number of top/bottom performers to show (default: 10)
  • --output: Save to JSON file

Daily Data Pull

Run 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.

GAQL Query Examples

Campaign Performance (Last 30 Days)

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 DESC

Daily Spend Trend

SELECT
  segments.date,
  metrics.cost_micros,
  metrics.conversions,
  metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY segments.date

Ad Group Performance

SELECT
  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 DESC

Keyword Performance

SELECT
  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 DESC

Output Format

Reports 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)

Environment Requirements

Requires environment variables:

  • DATABASE_URL
  • GOOGLE_ADS_DEVELOPER_TOKEN

Account IDs

  • MCC Login Customer ID: 7431593382

Extending to Other Platforms

The scripts are designed for extension. To add a new platform:

  1. Add platform query function in generate-report.py
  2. Normalize data to common schema: {name, spend, impressions, clicks, conversions, cpa}
  3. Add to channel summary aggregation

Supported Platforms

PlatformAPI TypeNotes
Google AdsGAQLGAARF patterns
Meta AdsGraph APICampaign insights
LinkedIn AdsRest.li 2.0B2B metrics
X Adsv12 APIEngagement metrics
Reddit Adsv3 APIRequires User-Agent
TikTok AdsBusiness APIVideo-first metrics
Amazon AdsSponsored Ads APIACOS → ROAS conversion
The Trade DeskREST + GraphQLDelta sync for efficiency
Amazon DSPAsync ReportingRequest → poll → download

Platform-Specific Notes

The Trade Desk

  • Uses changeTrackingVersion for incremental sync
  • GraphQL for complex cross-dimension queries
  • Supports display, video, CTV, audio metrics

Amazon DSP

  • Async reporting - must poll for report completion
  • Order = Campaign, Line Item = Ad Group
  • Lifetime budgets (convert to daily for comparison)

About this skill

Part 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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.