Skip to content

jamnyjakub700-cloud/google-ads-agent

Repository files navigation

Google Ads Agent

Campaign deployment framework for Google Ads and Sklik (Czech PPC platform) via API. Supports 10 campaign types with a brief-driven workflow: fill a Markdown brief, dry-run, then deploy.

Campaign types

Type Platform Description
Search Standard Google Ads Responsive Search Ads (RSA)
Search DSA Google Ads Dynamic Search Ads
Performance Max Google Ads All Google channels (Search, Display, YouTube, Discover, Gmail, Maps)
Display Google Ads Responsive Display Ads in Google Display Network
Shopping Google Ads Product ads from Merchant Center feed
Video Google Ads YouTube video ads (in-stream, in-feed, shorts)
Demand Gen Google Ads YouTube, Discover, Gmail placements
Sklik Search Sklik Czech search ads
Sklik Context Sklik Czech display/context network
Sklik Retargeting Sklik Czech retargeting campaigns

How it works

  1. Fill a brief — Each campaign type has a Markdown brief template in briefs/. Fill in your campaign settings (budget, keywords, ad copy, targeting).
  2. Dry run — The orchestrator parses the brief, injects values into the Python template, and runs in dry-run mode (validates everything without creating the campaign).
  3. Deploy — Run again with --deploy to create the campaign in Google Ads (always created PAUSED).

Prerequisites

  • Python 3.10+
  • google-ads Python SDK
  • Google Ads API developer token + OAuth credentials
  • (For Sklik) Sklik API token

Quick Start

  1. Clone the repo

    git clone https://github.com/YOUR_USERNAME/google-ads-agent.git
    cd google-ads-agent
  2. Install dependencies

    pip install google-ads
  3. Configure API credentials

    cp google-ads.yaml.example google-ads.yaml
    # Fill in developer_token, client_id, client_secret, refresh_token, login_customer_id
  4. Copy and fill a brief

    cp briefs/search_standard_brief.md my_brief.md
    # Edit my_brief.md with your campaign settings
  5. Dry run (validates without creating anything)

    python run_campaign.py --type search_standard --brief my_brief.md
  6. Deploy (creates the campaign PAUSED)

    python run_campaign.py --type search_standard --brief my_brief.md --deploy

Environment Variables

Variable Required Description
google-ads.yaml Yes (Google Ads) OAuth credentials file. Copy from google-ads.yaml.example and fill in developer_token, client_id, client_secret, refresh_token, login_customer_id.
GOOGLE_ADS_YAML_PATH No Override the default path to google-ads.yaml (defaults to project root).
sklik.yaml Yes (Sklik) Sklik API credentials file. Must contain drak_api_key.
SKLIK_API_TOKEN No Alternative way to pass the Sklik API token instead of sklik.yaml.

Usage

Interactive mode

python run_campaign.py

Displays a menu to select campaign type, brief file, and run mode (dry-run / deploy).

CLI mode

# Dry run
python run_campaign.py --type search_standard --brief briefs/search_standard_brief.md

# Deploy (creates campaign PAUSED)
python run_campaign.py --type search_standard --brief briefs/search_standard_brief.md --deploy

Project structure

google-ads-agent/
├── run_campaign.py              # Master orchestrator (interactive + CLI)
├── templates/                   # Python templates for each campaign type
│   ├── search_standard.py
│   ├── search_dsa.py
│   ├── performance_max.py
│   ├── display.py
│   ├── shopping.py
│   ├── video.py
│   ├── demand_gen.py
│   ├── sklik_search.py
│   ├── sklik_context.py
│   └── sklik_retargeting.py
├── briefs/                      # Markdown brief templates
│   ├── search_standard_brief.md
│   ├── performance_max_brief.md
│   └── ...
├── google-ads.yaml.example      # API credentials template
└── README.md

Brief format

Briefs are Markdown files with a table of configuration values. Section headers and some parameter names support both English and Czech (e.g., "Klicova slova" / "Keywords", "Reklamy" / "Ads") for backward compatibility.

# Search Standard Brief

| Parameter | Value |
|-----------|-------|
| CUSTOMER_ID | 1234567890 |
| CAMPAIGN_NAME | Spring Sale 2026 |
| BUDGET_AMOUNT_CZK | 500 |
| BIDDING_STRATEGY | maximize_conversions |
| KEYWORDS | running shoes, trail shoes, hiking boots |
| HEADLINES | Buy Running Shoes | Trail Shoes Sale | Free Shipping |
| DESCRIPTIONS | Wide selection of running shoes. | Order today, free shipping over $50. |

The orchestrator parses these values and injects them into the template before execution. All campaigns are created PAUSED by default.

Configuration Examples

E-commerce store (shoe shop)

| Parameter | Value |
|-----------|-------|
| CAMPAIGN_NAME | Summer Shoes 2026 |
| BUDGET_AMOUNT_CZK | 300 |
| BIDDING_STRATEGY | maximize_conversions |
| KEYWORDS | running shoes, trail shoes, hiking boots |
| HEADLINES | Buy Running Shoes | Trail Shoes Sale | Free Shipping |
| DESCRIPTIONS | Wide selection of running shoes. | Order today, free shipping over 1500 CZK. |

SaaS company (project management tool)

| Parameter | Value |
|-----------|-------|
| CAMPAIGN_NAME | ProjectHub Q3 Leads |
| BUDGET_AMOUNT_CZK | 800 |
| BIDDING_STRATEGY | maximize_conversion_value |
| KEYWORDS | project management software, team collaboration tool, task tracker |
| HEADLINES | Try ProjectHub Free | Manage Projects Smarter | 14-Day Free Trial |
| DESCRIPTIONS | All-in-one project management for teams of 5-500. | Track tasks, deadlines, and budgets in one place. |

Safety

  • All campaigns created PAUSED (manual activation required)
  • Dry-run mode validates everything without making API calls
  • Budgets in CZK (auto-converted to micros)
  • Full execution logs saved to logs/
  • EU compliance field set automatically

License

MIT

About

Google Ads + Sklik campaign deployment framework. 10 campaign types, brief-driven workflow, dry-run mode. Python + Google Ads API v23.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages