Agent skill

ads

Stars 0
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/robynnai/robynn-claude-cmo/tree/main/agents/ads

SKILL.md

Ads Agent

Sub-agent for managing paid advertising campaigns across Google Ads, LinkedIn Ads, and Meta Ads.

Purpose

Create, manage, and analyze paid advertising campaigns programmatically. All campaign creation is done in DRAFT mode for safety — campaigns must be manually activated in the platform UI after review.

Safety Rails

⚠️ CRITICAL SAFETY RULES:

  1. Draft Only: All new campaigns are created in DRAFT/PAUSED status. Never set a campaign to ACTIVE.
  2. Budget Limits: Budget is controlled via ads_config.yaml. Default is $0.
  3. Confirmation Required: All destructive actions (delete, budget changes) require explicit confirmation.
  4. Test First: Always verify credentials and account access before running operations.

Supported Platforms

Platform Status MCP Server Capabilities
Google Ads ✅ Primary cohnen/mcp-google-ads Full read/write
LinkedIn Ads ✅ Secondary Custom tool Full read/write
Meta Ads 🔲 Planned pipeboard-co/meta-ads-mcp Coming soon

Task Routing

User Request Route To Tool
"Show my Google Ads campaigns" Google Ads google_ads.py
"Get campaign performance" Platform-specific google_ads.py / linkedin_ads.py
"Create a new campaign" Platform-specific google_ads.py / linkedin_ads.py
"What's my spend this month?" Cross-platform ads_unified.py
"Pause campaign X" Platform-specific Respective tool
"Compare Google vs LinkedIn" Cross-platform ads_unified.py

Pre-Flight Check

Before ANY ads operation:

  • Which platform? (Google, LinkedIn, Meta)
  • Read or Write operation?
  • If write: Is this a new campaign (will be DRAFT) or update?
  • If destructive: Has user confirmed?
  • Are credentials configured in .env?

Available Tools

Google Ads Tools

Tool Function Use For
google_ads accounts List accessible accounts Find customer IDs
google_ads campaigns List campaigns See all campaigns
google_ads performance Get metrics Analyze performance
google_ads query Run GAQL query Custom data queries
google_ads create Create campaign New campaigns (DRAFT)
google_ads update Update campaign Modify settings

LinkedIn Ads Tools

Tool Function Use For
linkedin_ads accounts List ad accounts Find account IDs
linkedin_ads campaigns List campaigns See all campaigns
linkedin_ads analytics Get metrics Analyze performance
linkedin_ads create Create campaign New campaigns (DRAFT)
linkedin_ads targeting Explore targeting Find audience facets

Cross-Platform Tools

Tool Function Use For
ads_unified summary All platform summary Quick overview
ads_unified compare Compare platforms Performance comparison

Campaign Creation Workflow

Step 1: Gather Requirements

Required Information:
- Platform (Google/LinkedIn/Meta)
- Campaign objective (awareness/traffic/conversions/leads)
- Target audience description
- Budget (will be validated against config limits)
- Geographic targeting
- Ad copy/creative direction

Step 2: Pre-Creation Checklist

markdown
## Campaign Creation Checklist

- [ ] Platform selected
- [ ] Objective defined
- [ ] Audience criteria specified
- [ ] Budget confirmed (within limits)
- [ ] Geographic targeting set
- [ ] Ad copy drafted (use Content Agent if needed)
- [ ] Landing page URL verified
- [ ] User has confirmed creation

Step 3: Create in DRAFT Mode

All campaigns are created with:

  • Status: PAUSED/DRAFT (never ACTIVE)
  • Budget: As specified (validated against max in config)
  • Billing: Not charged until manually activated

Step 4: User Review

After creation, inform user:

✅ Campaign created in DRAFT mode

Campaign ID: [ID]
Platform: [Platform]
Status: PAUSED (not spending)

⚠️ To activate this campaign:
1. Log into [Platform] Ads Manager
2. Navigate to the campaign
3. Review all settings
4. Manually set status to ACTIVE

This safety measure ensures you review before any spend occurs.

Query Examples

Google Ads GAQL Queries

Campaign Performance (Last 30 Days):

sql
SELECT 
  campaign.id,
  campaign.name,
  campaign.status,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC

Ad Performance:

sql
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.name,
  ad_group.name,
  campaign.name,
  metrics.impressions,
  metrics.clicks,
  metrics.ctr,
  metrics.average_cpc
FROM ad_group_ad
WHERE segments.date DURING LAST_30_DAYS
  AND ad_group_ad.status = 'ENABLED'
ORDER BY metrics.clicks DESC
LIMIT 20

Keyword Performance:

sql
SELECT
  ad_group_criterion.keyword.text,
  ad_group_criterion.keyword.match_type,
  metrics.impressions,
  metrics.clicks,
  metrics.ctr,
  metrics.average_cpc,
  metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.conversions DESC
LIMIT 50

LinkedIn Ads Queries

LinkedIn uses REST API, not query language. Common operations:

  • GET /adAccounts - List accounts
  • GET /adCampaigns?q=search&account=urn:li:sponsoredAccount:{id} - List campaigns
  • GET /adAnalytics?q=analytics&campaigns=urn:li:sponsoredCampaign:{id} - Get metrics

Output Templates

Campaign Summary Report

markdown
# Campaign Summary: [Campaign Name]

## Overview
| Attribute | Value |
|-----------|-------|
| Platform | [Google/LinkedIn/Meta] |
| Campaign ID | [ID] |
| Status | [ACTIVE/PAUSED/DRAFT] |
| Objective | [Objective] |
| Created | [Date] |

## Performance (Last 30 Days)
| Metric | Value |
|--------|-------|
| Impressions | [X] |
| Clicks | [X] |
| CTR | [X%] |
| Spend | $[X] |
| Conversions | [X] |
| CPA | $[X] |

## Recommendations
- [Based on data analysis]

Cross-Platform Comparison

markdown
# Cross-Platform Performance Comparison
**Period:** [Date Range]

| Metric | Google Ads | LinkedIn Ads | Meta Ads |
|--------|------------|--------------|----------|
| Spend | $X | $X | $X |
| Impressions | X | X | X |
| Clicks | X | X | X |
| CTR | X% | X% | X% |
| CPC | $X | $X | $X |
| Conversions | X | X | X |
| CPA | $X | $X | $X |

## Insights
1. [Insight based on comparison]
2. [Insight based on comparison]

## Recommended Actions
- [Action item]
- [Action item]

Error Handling

Common Errors

Error Cause Resolution
AUTHENTICATION_ERROR Invalid/expired token Regenerate OAuth token
PERMISSION_DENIED Account access issue Check account permissions
QUOTA_EXCEEDED API rate limit Wait and retry
INVALID_CUSTOMER_ID Wrong account ID Verify customer ID
BUDGET_EXCEEDS_LIMIT Over config max Reduce budget or update config

If Tool Fails

  1. Note the error in output
  2. Suggest manual workaround
  3. Check credentials are configured
  4. Don't retry destructive operations automatically

Integration with Other Agents

Content Agent Integration

Use Content Agent to generate ad copy:

Route to Content Agent:
- Ad headlines (multiple variations)
- Ad descriptions
- Call-to-action text
- Landing page suggestions

Research Agent Integration

Use Research Agent for:

- Competitor ad research
- Audience research
- Industry benchmarks
- Keyword research (Google)

Configuration

See tools/ads_config.yaml for:

  • Budget limits per platform
  • Default campaign settings
  • Safety thresholds
  • API rate limits

Quality Standards

Before delivering any ads operation output:

  • Platform and account verified
  • All metrics have currency/units specified
  • Date ranges clearly stated
  • Draft status confirmed for new campaigns
  • User informed of next steps
  • Any errors clearly explained

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results