Using Claude skills to run Google and Meta ads from the terminal
If you run ad accounts and live in a terminal, the repetitive part of that work (CPA diagnostics, wasted-spend audits, the Monday anomaly check) can be moved into Claude Code using plain Markdown skill files. This is a write-up of what the setup looks like, where it helps, and where the limits are. Every number and feature name below comes from two sources: Ryze's guide to the skill library and the GitHub repo it points at. Disclosure up front: I work with the Ryze team.
What a "skill" is, mechanically
A Claude skill is a folder containing a SKILL.md file. The file opens with a YAML frontmatter block (a name and a description), followed by Markdown instructions. Claude keeps every skill's description in view and loads the full body only when a request matches it. That is the whole mechanism; there is no fine-tuning and no app to install in your ad account.
Claude Code discovers skills in two places: ~/.claude/skills/ for skills you want everywhere, and .claude/skills/ inside a project for team-shared, version-controlled ones (source: get-ryze.ai).
The distinction that trips most people up is skills versus MCP. The Ryze guide puts it as: a prompt is instructions, a skill is instructions with a save button, an MCP connector is data access. A skill cannot see your account by itself. You either paste CSV exports or pair the skill with an MCP server that wraps the Google Ads API or Meta Marketing API.
The library
The open-source repo is github.com/irinabuht12-oss/marketing-skills. The Ryze blog post describes 30 ad skills: 21 that run on both Google Ads and Meta Ads, 5 Google-only (Bid Strategy Recommendations, Quality Score Breakdown, Keyword Cannibalization Check, Ad Extension Audit, Search Query Intent Classifier), and 4 Meta-only (Audience Overlap Analysis, Competitor Creative Analysis, Frequency Cap Recommendations, Retargeting Window Analysis) (source: get-ryze.ai).
One thing to know before you clone: the repo has outgrown the blog post. As of 13 October 2026 the README says 49 skills across four folders (Google Ads, Meta Ads, SEO, AI visibility), MIT licensed, and the GitHub API reported 4,421 stars (source: irinabuht12-oss/marketing-skills). The ad skills described in the blog post are still there; the extra ones cover SEO and AI visibility.
Install
Two routes. The one the repo README recommends is the Claude Code plugin marketplace:
claude plugin marketplace add irinabuht12-oss/marketing-skills
claude plugin install marketing-skills@ryze
The manual route, useful if you want to read the files before loading them:
git clone https://github.com/irinabuht12-oss/marketing-skills
cp -r marketing-skills/skills/* ~/.claude/skills/
(Both snippets from the repo README: irinabuht12-oss/marketing-skills.)
If you copy skills by hand from the older per-platform folders, remember the convention is one folder per skill with the file saved as SKILL.md inside it. The Ryze guide shows the pattern:
mkdir -p ~/.claude/skills/wasted-spend-finder
cp marketing-skills/<skill-file>.md ~/.claude/skills/wasted-spend-finder/SKILL.md
What a skill file looks like
Here is the trimmed wasted-spend skill as the Ryze guide prints it, because the shape matters more than any single skill:
---
name: wasted-spend-finder
description: Audits Google or Meta Ads data for spend with
zero conversions. Use when asked to find wasted spend,
budget leaks, or to build exclusion / negative lists.
---
# Wasted Spend Finder
## Inputs
Search terms, placements, audiences, and ads with spend +
conversions columns. Last 90 days. CSV export or MCP pull.
## Steps
1. Isolate every row with spend > 0 and conversions = 0.
2. Ignore rows below $10 total spend (noise).
3. Group the rest by theme: irrelevant intent, wrong geo,
broad-match drift, display placement junk, dead ads.
4. Attach the dollar total to each group.
## Output
Summary table (theme, spend, % of total waste) first.
Then a negative keyword list and an exclusion list,
formatted ready to upload. No commentary in the lists.
Four parts: inputs, steps, thresholds (numbers, not adjectives), output format. The guide's advice: spend more editing time on the description line than on anything else, because it is the index entry routing runs on. A vague description ("helps with ads") produces a skill that never fires.
Getting live data in
Without MCP, every skill run starts with ten minutes in the Google Ads or Ads Manager UI picking columns and date ranges. The Ryze guide lists two ways to remove that step:
1. Build your own MCP server against the Google Ads API and Meta Marketing API. The guide estimates 30 to 60 minutes and notes it is read-only in practice because the open-source servers wrap the read endpoints. You need a Google Ads developer token, an OAuth client, and account or MCC access; on the Meta side a Meta app with ads_read and a system-user token (source: get-ryze.ai).
2. Use a hosted connector. The repo README gives the Ryze one as a single command:
claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp
The README says the connector itself is free and gives Claude live Google Ads, Meta Ads, GA4 and Search Console data; the blog post says write access (pausing ads, adjusting budgets, adding negatives) is part of the paid Ryze plan, from $89/month with a free trial (sources: irinabuht12-oss/marketing-skills and get-ryze.ai). As noted above I work with the Ryze team, so weigh that accordingly and read the connector's permissions page before you authorize anything.
Whichever route you take, one rule from the guide that I would put in bold if dev.to let me: never paste API keys, developer tokens, or OAuth secrets into a chat. Credentials belong in the MCP server config.
What running it actually looks like
The interface is a one-line prompt. The guide's example:
Run the wasted spend finder on my Google Ads account,
last 90 days. Write the negative keyword list to
negatives-2026-07.csv and the summary to waste-report.md.
The reason the terminal beats claude.ai for this is that outputs land as files. Exclusion lists, report drafts and budget models end up in a folder you can git diff, rather than chat text you copy out. The second reason is chaining. In one Claude Code session the anomaly detector's findings become the CPA diagnostic's starting point without re-explaining anything. The guide's morning-run prompt shows the pattern:
Morning run for [client]:
1. Anomaly check vs the trailing 14-day average.
2. For anything flagged, run the CPA diagnostic on
that campaign.
3. Append findings to reports/[client]/log.md and
draft the one-paragraph Slack update.
Stop before suggesting changes — read-only today.
The six skills the guide says do most of the work, with the cadence it suggests: CPA Diagnostics (whenever CPA moves more than 15%), Wasted Spend Finder (monthly), Budget Scenario Planner (before every budget conversation), Creative Fatigue Detection (weekly, Meta), Client Report Narratives (reporting week), Anomaly Detection (daily). The guide estimates the total time cost once the setup exists at roughly an hour a week, most of it reading outputs (source: get-ryze.ai).
Where it breaks
The guide lists six failure modes; these four are the common ones:
- Claude ignores the skill. Routing. Name the skill explicitly and tighten the "use when" line.
- Output is generic. Claude got the method but no numbers. Attach the export or connect MCP, and state the date range and target CPA.
- Numbers don't match the platform UI. Attribution window, conversion action set and timezone shift totals. State them in the prompt.
- A metric looks invented. Add "use only the supplied data; if something is missing, say so instead of estimating" to the skill.
The habit the guide recommends for all of these: ask Claude which skill it used and what data it actually received.
If you are starting today
Start read-only. Every skill in the library is written to analyze and recommend, not to touch the account, so a wrong conclusion costs a raised eyebrow, not a paused campaign. Pick one skill, run it on this week's real numbers with a pasted export, add MCP when the export step becomes the bottleneck, and add write access last, if ever, with an approval step in front of each change.
And commit the .claude/skills/ folder to the client repo. Thresholds in a Markdown file that go through pull-request review are a better audit trail than anyone's notes app.
Mentions
Using Claude skills to run Google and Meta ads from the terminal If you run ad accounts and live in a terminal, the repetitive part of that work (CPA diagnostics, wasted-spend audits, the Monday anomaly check) can be moved into Claude Code using plain Markdown skill files. This is a write-up of what the setup looks like, where it helps, and where the limits are. Every number and feature name below comes from two sources: Ryze's guide to the skill library and the GitHub repo it points at. Disclosure up front: I work with the Ryze team. What a "skill" is, mechanically A Claude skill is a folder containing a SKILL.md file. The file opens with a YAML frontmatter block (a name and a description), followed by Markdown instructions. Claude keeps every skill's description in view and loads the full body only when a request matches it. That is the whole mechanism; there is no fine-tuning and no app to install in your ad account. Claude Code discovers skills in two places: ~/.claude/skills/ for skills you want everywhere, and .claude/skills/ inside a project for team-shared, version-controlled ones (source: get-ryze.ai). The distinction that trips most people up is skills versus MCP. The Ryze guide puts it as: a prompt is instructions, a skill is instructions with a save button, an MCP connector is data access. A skill cannot see your account by itself. You either paste CSV exports or pair the skill with an MCP server that wraps the Google Ads API or Meta Marketing API. The library The open-source repo is github.com/irinabuht12-oss/marketing-skills. The Ryze blog post describes 30 ad skills: 21 that run on both Google Ads and Meta Ads, 5 Google-only (Bid Strategy Recommendations, Quality Score Breakdown, Keyword Cannibalization Check, Ad Extension Audit, Search Query Intent Classifier), and 4 Meta-only (Audience Overlap Analysis, Competitor Creative Analysis, Frequency Cap Recommendations, Retargeting Window Analysis) (source: get-ryze.ai). One thing to know before you clone: the repo has outgrown the blog post. As of 13 October 2026 the README says 49 skills across four folders (Google Ads, Meta Ads, SEO, AI visibility), MIT licensed, and the GitHub API reported 4,421 stars (source: irinabuht12-oss/marketing-skills). The ad skills described in the blog post are still there; the extra ones cover SEO and AI visibility. Install Two routes. The one the repo README recommends is the Claude Code plugin marketplace: claude plugin marketplace add irinabuht12-oss/marketing-skills claude plugin install marketing-skills@ryze The manual route, useful if you want to read the files before loading them: git clone https://github.com/irinabuht12-oss/marketing-skills cp -r marketing-skills/skills/* ~/.claude/skills/ (Both snippets from the repo README: irinabuht12-oss/marketing-skills.) If you copy skills by hand from the older per-platform folders, remember the convention is one folder per skill with the file saved as SKILL.md inside it. The Ryze guide shows the pattern: mkdir -p ~/.claude/skills/wasted-spend-finder cp marketing-skills/<skill-file>.md ~/.claude/skills/wasted-spend-finder/SKILL.md What a skill file looks like Here is the trimmed wasted-spend skill as the Ryze guide prints it, because the shape matters more than any single skill: --- name: wasted-spend-finder description: Audits Google or Meta Ads data for spend with zero conversions. Use when asked to find wasted spend, budget leaks, or to build exclusion / negative lists. --- # Wasted Spend Finder ## Inputs Search terms, placements, audiences, and ads with spend + conversions columns. Last 90 days. CSV export or MCP pull. ## Steps 1. Isolate every row with spend > 0 and conversions = 0. 2. Ignore rows below $10 total spend (noise). 3. Group the rest by theme: irrelevant intent, wrong geo, broad-match drift, display placement junk, dead ads. 4. Attach the dollar total to each group. ## Output Summary table (theme, spend, % of total waste) first. Then a negative keyword list and an exclusion list, formatted ready to upload. No commentary in the lists. Four parts: inputs, steps, thresholds (numbers, not adjectives), output format. The guide's advice: spend more editing time on the description line than on anything else, because it is the index entry routing runs on. A vague description ("helps with ads") produces a skill that never fires. Getting live data in Without MCP, every skill run starts with ten minutes in the Google Ads or Ads Manager UI picking columns and date ranges. The Ryze guide lists two ways to remove that step: 1. Build your own MCP server against the Google Ads API and Meta Marketing API. The guide estimates 30 to 60 minutes and notes it is read-only in practice because the open-source servers wrap the read endpoints. You need a Google Ads developer token, an OAuth client, and account or MCC access; on the Meta side a Meta app with ads_read and a system-user token (source: get-ryze.ai). 2. Use a hosted connector. The repo README gives the Ryze one as a single command: claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp The README says the connector itself is free and gives Claude live Google Ads, Meta Ads, GA4 and Search Console data; the blog post says write access (pausing ads, adjusting budgets, adding negatives) is part of the paid Ryze plan, from $89/month with a free trial (sources: irinabuht12-oss/marketing-skills and get-ryze.ai). As noted above I work with the Ryze team, so weigh that accordingly and read the connector's permissions page before you authorize anything. Whichever route you take, one rule from the guide that I would put in bold if dev.to let me: never paste API keys, developer tokens, or OAuth secrets into a chat. Credentials belong in the MCP server config. What running it actually looks like The interface is a one-line prompt. The guide's example: Run the wasted spend finder on my Google Ads account, last 90 days. Write the negative keyword list to negatives-2026-07.csv and the summary to waste-report.md. The reason the terminal beats claude.ai for this is that outputs land as files. Exclusion lists, report drafts and budget models end up in a folder you can git diff, rather than chat text you copy out. The second reason is chaining. In one Claude Code session the anomaly detector's findings become the CPA diagnostic's starting point without re-explaining anything. The guide's morning-run prompt shows the pattern: Morning run for [client]: 1. Anomaly check vs the trailing 14-day average. 2. For anything flagged, run the CPA diagnostic on that campaign. 3. Append findings to reports/[client]/log.md and draft the one-paragraph Slack update. Stop before suggesting changes — read-only today. The six skills the guide says do most of the work, with the cadence it suggests: CPA Diagnostics (whenever CPA moves more than 15%), Wasted Spend Finder (monthly), Budget Scenario Planner (before every budget conversation), Creative Fatigue Detection (weekly, Meta), Client Report Narratives (reporting week), Anomaly Detection (daily). The guide estimates the total time cost once the setup exists at roughly an hour a week, most of it reading outputs (source: get-ryze.ai). Where it breaks The guide lists six failure modes; these four are the common ones: - Claude ignores the skill. Routing. Name the skill explicitly and tighten the "use when" line. - Output is generic. Claude got the method but no numbers. Attach the export or connect MCP, and state the date range and target CPA. - Numbers don't match the platform UI. Attribution window, conversion action set and timezone shift totals. State them in the prompt. - A metric looks invented. Add "use only the supplied data; if something is missing, say so instead of estimating" to the skill. The habit the guide recommends for all of these: ask Claude which skill it used and what data it actually received. If you are starting today Start read-only. Every skill in the library is written to analyze and recommend, not to touch the account, so a wrong conclusion costs a raised eyebrow, not a paused campaign. Pick one skill, run it on this week's real numbers with a pasted export, add MCP when the export step becomes the bottleneck, and add write access last, if ever, with an approval step in front of each change. And commit the .claude/skills/ folder to the client repo. Thresholds in a Markdown file that go through pull-request review are a better audit trail than anyone's notes app.
12/ 每一步对应的 Claude Skills 链接 irinabuht12-oss/marketing-skills t.co
49 个营销 skill(Claude Code 装法在 README):irinabuht12-oss/marketing-skills