# shapescale-google-ads-cpc-optimizer > Generates Google Ads Editor CSV imports for ShapeScale competitor CPC campaigns (Styku, Fit3D, InBody, Seca, Evolt360). Use this skill when building or refreshing competitor campaigns, generating RSA assets, creating keyword maps, or preparing bulk uploads. - Author: Niemand Assistant - Repository: kesslerio/dialpad-clawdbot-skill - Version: 20260127133854 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/kesslerio/dialpad-clawdbot-skill - Web: https://mule.run/skillshub/@@kesslerio/dialpad-clawdbot-skill~shapescale-google-ads-cpc-optimizer:20260127133854 --- --- name: shapescale-google-ads-cpc-optimizer description: "Generates Google Ads Editor CSV imports for ShapeScale competitor CPC campaigns (Styku, Fit3D, InBody, Seca, Evolt360). Use this skill when building or refreshing competitor campaigns, generating RSA assets, creating keyword maps, or preparing bulk uploads." --- # ShapeScale Google Ads CPC Optimizer ## When to Activate Use this skill whenever a teammate needs to: - Launch or refresh Google Ads competitor campaigns (Styku, Fit3D, InBody, Seca mBCA, Evolt360) - Generate a **complete** Google Ads Editor CSV bundle (campaign ➜ ad groups ➜ RSAs ➜ keywords ➜ negatives) - Produce high-intent keyword maps, RSA assets, and negative keyword lists for CPC bidding - Explain the recommended campaign structure, UTM tagging, and QA checks before import - Troubleshoot “entity does not exist” or similar Google Ads Editor upload failures Trigger phrases: `Google Ads`, `CPC`, `import CSV`, `responsive search ads`, `competitor campaign`, `Styku vs ShapeScale`, `Fit3D alternative`, `bulk upload`. --- ## Skill Capabilities 1. **Deterministic Campaign Blueprint** – Generates a search campaign (`Non-Brand - Competitor Research (CPC BID)`) with Google Search + Search Partners, Manual CPC bidding, $125/day default budget. 2. **Ad Group Fabrication** – Creates four intent tiers per competitor (Pricing Exact, Brand Phrase, Problems Phrase, Comparison Phrase) with pre-set bidding envelopes. 3. **Keyword Library** – Expands competitor variants into exact/phrase match keywords wrapped in Google Ads syntax (e.g., `[styku body scanner price]`, `"shapescale vs fit3d"`). 4. **Responsive Search Ads** – Assembles compliant RSAs (15 unique headlines, 4 descriptions, competitor-specific messaging) with canonical ShapeScale landing paths and UTM tags. 5. **Negative Safeguards** – Provides B2B exclusion terms (`jobs`, `free`, `home use`, etc.) to keep campaigns focused on commercial intent. 6. **CSV Writer** – Uses the embedded `campaign_generator.py` to emit per-entity CSVs plus a consolidated `bulk_upload.csv`, all aligned with Google Ads Editor column specs. 7. **QA + Troubleshooting** – Surfaces import checklists, validation steps, and recovery guidance for common Google Ads Editor errors. --- ## How This Skill Works (Claude Desktop) Claude reads the embedded blueprint, generates the Google Ads CSV content directly in the conversation, and delivers ready-to-import files (or copy/paste tables) without running local scripts. Typical flow: 1. **Clarify Inputs** – Confirm competitors, budget, and bidding knobs. 2. **Generate CSVs** – Claude synthesizes campaign/ad group/keyword/RSA/negative tables from the blueprint. 3. **Review Together** – Ask Claude to surface ad copy, UTM patterns, or keyword lists before downloading. 4. **Import** – Upload the CSV bundle to Google Ads Editor, following the QA checklist in this skill. ### Running the Reference Script Locally (Optional) If you prefer automation outside Claude Desktop, download the package and run the CLI helper: ```bash python scripts/campaign_generator.py \ --output-dir ./google_ads_bundle \ --competitors styku fit3d inbody \ --daily-budget 140 \ --max-cpc-exact 16 \ --max-cpc-phrase 11 \ --max-cpc-problem 12.5 ``` Outputs (by default): - `campaign.csv` - `ad_groups.csv` - `keywords.csv` - `ads.csv` - `negative_keywords.csv` - `bulk_upload.csv` (toggle with `--bulk/--no-bulk`, default `true`) --- ## Embedded Python Utilities The helper lives in `scripts/campaign_generator.py` (standard library only). ```python from pathlib import Path from scripts.campaign_generator import CampaignConfig, build_campaign_package config = CampaignConfig(daily_budget=150.0) package = build_campaign_package(config, competitors=["styku", "fit3d"]) package.write_csv_bundle(Path("./google_ads_bundle")) ``` All CSVs are UTF-8 encoded and follow Google Ads Editor column headers (see [Prepare a CSV file](https://support.google.com/google-ads/editor/answer/56368) and [CSV columns reference](https://support.google.com/google-ads/editor/answer/57747)). --- ## Campaign Architecture - **Campaign**: `Non-Brand - Competitor Research (CPC BID)` - Daily Budget: $125 (override via CLI) - Networks: Google Search + Search Partners - Bid Strategy: Manual CPC - Language: English | Location: United States For each competitor (Styku, Fit3D, InBody, Seca mBCA, Evolt360) the generator builds four ad groups: | Blueprint | Match Type | Default Max CPC | Intent Focus | |-----------|------------|-----------------|--------------| | Pricing Exact | Exact | $15.00 | Direct pricing & cost queries | | Brand Phrase | Phrase | $10.00 | Branded discovery & product searches | | Problems Phrase | Phrase | $12.00 | Pain-point investigations (issues, complaints) | | Comparison Phrase | Phrase | $10.00 | Alternatives, vs ShapeScale, side-by-side | Each ad group receives 10–15 unique keywords derived from competitor variants (brand, model numbers, core attributes) and a compliant RSA with 15 headlines + 4 descriptions. --- ## Quality Checklist - ✅ Campaign row exists before keyword/ad rows (prevents “entity does not exist” errors). - ✅ Every ad group has ≥1 RSA and headlines/descriptions count matches Google specs (15/4). - ✅ Keywords use proper match syntax (`[]` exact, `""` phrase) and include Model/variant coverage. - ✅ Final URLs include UTM source/medium/campaign/content/term and the `competitors/` path. - ✅ Negative keywords include B2B filters (jobs, free, DIY, consumer intent). - ✅ If you scope competitors via `--competitors`, confirm the manifest reflects the selected subset only. ### QA Prompts (Claude Desktop) - “Double-check that every keyword row references a valid ad group before I import.” - “List the responsive ads for the Fit3D Pricing group and confirm each has 15 headlines.” - “Explain the UTM structure used in the generated bundle so I can mirror it in Data Studio.” --- ## Troubleshooting | Symptom | Likely Cause | Fix | |---------|--------------|-----| | Google Ads Editor: `The entity does not exist for "Ad group: ..."` | Campaign/ad group rows missing during import | Ensure `campaign.csv` & `ad_groups.csv` (or `bulk_upload.csv`) import before keywords/ads | | Headlines < 15 or duplicate messaging | Manual edits removed required entries | Re-run generator or regenerate RSA section in Claude | | Budget / CPC mismatch | Overrides not passed to CLI | Use `--daily-budget`, `--max-cpc-*` flags when generating | | Wrong competitor mix | Default includes all 5 | Pass explicit slugs (e.g., `--competitors styku fit3d`) | | Import encoding errors | Excel saved in ANSI | Use UTF-8 output from script (avoid Excel re-save) | ## When NOT to Use This Skill - ❌ Display, Performance Max, Shopping, or Video campaigns (supports Search only). - ❌ Smart Bidding strategies (`Manual CPC` is assumed end-to-end). - ❌ Non-competitor initiatives (generic, brand, or remarketing keyword sets are out of scope). - ❌ International targeting or non-English locales (hard-coded to United States / English). - ❌ Compliance-sensitive copy reviews (marketing/legal must approve RSA text). ## Limitations & Scale Guidance - Built for up to ~20 competitors per run (~12 000 rows ≈ 3 MB CSV). Generate in batches for broader conquesting. - Headlines & descriptions are templates—tune for region, claims, and offers before launch. - Claude Desktop cannot execute CLI commands; only run the reference script after downloading the package locally. - Always run Google Ads Editor’s “Check changes” before posting to catch policy or formatting issues. --- ## Configuration Reference - Competitor slugs: `styku`, `fit3d`, `inbody`, `seca`, `evolt360` - Output path is created automatically; rerunning overwrites existing CSVs. - Set `--no-bulk` if you prefer separate sheets only. - Extend keyword coverage by editing `AD_GROUP_BLUEPRINTS` or `COMPETITOR_LIBRARY` inside `scripts/campaign_generator.py`. --- ## Example Interaction **User:** “Create a ready-to-import CPC campaign targeting Styku and Fit3D with responsive ads.” **Claude (with skill):** 1. Confirms scope and budget preference. 2. Runs generator with `--competitors styku fit3d`. 3. Returns `google_ads_bundle/` ZIP + summary: - 8 ad groups (4 per competitor) - 88 keywords (48 pricing/comparison exacts, 40 phrase) - 8 RSAs (validated 15/4 assets) - 16 negative keywords 4. Shares import checklist and how to swap daily budget if needed. --- ## Related Skills - `competitor-battlecards` for objection handling and positioning talking points. - `shapescale-sales (sales-demo-notes module)` for converting ad-driven meetings into structured notes. - `shapescale-tools (financing-calculator module)` for ROI messaging inside RSA descriptions. --- ## Next Steps After Import 1. Create ad extensions (sitelinks, callouts, snippet) manually in Google Ads Editor. 2. Align conversion tracking with the campaign (`demo requests`, `pricing form submissions`). 3. Monitor search term reports after 72 hours; feed negatives back into the blueprint. 4. Refresh RSAs quarterly with new proof points and testimonial headlines. --- *Last reviewed: 2025-10-29*