一键导入
google-ads-create-campaign
Use when creating a Google Ads campaign. Loaded after the create master skill.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when creating a Google Ads campaign. Loaded after the create master skill.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when researching competitor ad creatives: find competitors, brand IDs, evergreen winners, breakout winners, pattern analysis.
Use when generating Word documents (.docx). Uses the marble_docx API.
Use when generating PDF documents. Uses the marble_pdf API.
Use when generating PowerPoint presentations (.pptx). Uses the marble_pptx API.
Use when generating Excel workbooks (.xlsx). Pandas + openpyxl patterns for multiple sheets, number formats, freeze panes, formulas.
Use for any GA4 query whose result will be reported back to the user. Covers conversions ≠ transactions distinction, channel-subset-sum trap with sessionDefaultChannelGroup, intraday partial-data discipline, Paid Social aggregation rules, API-vs-UI attribution mismatch.
| name | google-ads-create-campaign |
| description | Use when creating a Google Ads campaign. Loaded after the create master skill. |
Tools: google_ads_propose_create_campaign, google_ads_propose_update_campaigns. The tool schemas describe shape and types; this skill covers the business rules they don't.
Each entity type has its own propose call. Capture new campaign IDs from the execution result before moving to ad-group.
ENABLED. The spend gate is the ad layer (see ad), not the campaign.ENABLED and PAUSED. Don't propose REMOVED — we don't expose entity removal.advertising_channel_type: SEARCH only.bidding_strategy_type: MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS, MAXIMIZE_CONVERSION_VALUE, TARGET_CPA, TARGET_ROAS, TARGET_SPEND, MANUAL_CPC.| Need | Probe |
|---|---|
| Currency for budget | SELECT customer.currency_code FROM customer |
| Smart-bidding eligibility | SELECT customer.conversion_tracking_setting.conversion_tracking_status FROM customer |
| Reusable budget | SELECT campaign_budget.id, campaign_budget.name FROM campaign_budget WHERE campaign_budget.status = 'ENABLED' |
conversion_tracking_status is NOT_CONVERSION_TRACKED and the user requested TARGET_CPA / TARGET_ROAS / MAXIMIZE_CONVERSIONS / MAXIMIZE_CONVERSION_VALUE, fall back to MAXIMIZE_CLICKS and tell the user once: "Account has no conversion tracking — switching to Maximize Clicks. Set up conversion tracking to use smart bidding."target_cpa only applies under TARGET_CPA or MAXIMIZE_CONVERSIONS.target_roas only applies under TARGET_ROAS or MAXIMIZE_CONVERSION_VALUE.target_cpa and target_roas on the same campaign.end_date after 2037-12-30 → block, cite Google's sentinel.end_date ≤ start_date → block.daily_budget as a number; the propose tool converts to micros.negative_keywords[] seeds CampaignCriterion negatives at creation time. Two non-schema rules:
(text, match_type) — duplicates rejected.google-ads-create-negative-keyword-list instead.The schema enumerates which fields are mutable. Notable extra rules:
daily_budget updates flow through the linked CampaignBudget (one CampaignBudget can back multiple campaigns; an update affects all of them).bidding_strategy_type switches reset learning — warn the user once before proposing.geo_changes[] and negative_keyword_changes[] are add-only in this skill set. We don't expose criterion removal — if the user wants to undo a geo target or campaign-level negative they previously added, tell them to manage it in the Google Ads UI.error_code | Meaning | Fix |
|---|---|---|
| 601 | Validator rejected the payload | Read validation_errors[], fix the root cause, re-propose once |
403 / PLATFORM_API_FAILURE | Google rejected — usually policy / permission | Surface to user; needs Ads UI fix |
Done. Created campaign
<name>(id<id>) ENABLED, daily budget<currency> <amount>, bidding<strategy>. (No spend yet — ads under it are PAUSED until enabled.)
One line per campaign in batched calls.