Hermes Agent for marketing: 16 PPC skills, 9 routines and 6 workflows
Quick answer: Hermes Agent, the open-source AI agent from Nous Research, can take on the routine side of paid ads: the morning check, the Monday search terms, new-client audits and the monthly client report. Install AdPlug's Hermes plugin for 16 PPC skills, add AdPlug's server with one command and connect your ad accounts, and Hermes reaches Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads and Reddit Ads. The plugin's 9 routines only read and report to Telegram, Slack or Discord, and Hermes shows AdPlug's preview and waits for your yes before any change.
I wrote these 16 skills from how I run ad accounts, and I built AdPlug, the connector they work through. I'm biased, obviously, so I've stuck to what you can check: the plugin is public on GitHub, and the Hermes facts come from Nous Research's own docs.

Hermes Agent keeps working when you're not in the chat, which is exactly what makes PPC people nervous.
Say “connect your ad account to AI” to anyone who runs paid media, and what they hear is: something else is about to change my account while I'm asleep, and I'll find out when it's too late.
So here's Hermes Agent for marketing, set up the way I'd trust it with client money. The scheduled jobs only read and report to Telegram or Slack. Nothing changes until you say yes in a chat, and new campaigns and ads start paused (drafts on LinkedIn).
You need two things from AdPlug. Its Hermes plugin adds 16 PPC skills, which are how I run accounts, written down. Its server connects Google Ads, Meta Ads, LinkedIn Ads, Microsoft Ads and Reddit Ads to Hermes, and HubSpot and Google Search Console have servers of their own.
Set up Hermes Agent for PPC in 3 steps
- Install AdPlug's plugin. In a terminal where Hermes runs (Hermes Agent 0.21.6 or later, see its install guide):
hermes plugins install adplug-app/adplug-hermes-plugin --enableThat's the 16 skills. The plugin holds no code or scripts, and it's public on GitHub if you'd like to read it first.
- Add AdPlug and sign in. A plugin can't set up a sign-in by itself, so this is a second command:
hermes mcp add adplug --url https://api.adplug.app/mcp \ --auth oauth --connect-timeout 300A browser tab opens on AdPlug. Sign in (or create a free account), click Approve, and answer Y when Hermes asks to enable all 53 tools. The
--connect-timeout 300part gives you five minutes to sign in instead of about 30 seconds.
Hermes' MCP page: AdPlug's ads server (53 tools), HubSpot and Search Console, each set to trust: untrusted (see safeguards), so Hermes asks before any change. - Connect your ad platforms in AdPlug. On the Connections page, sign in to each platform once. A Google Ads manager (MCC) sign-in reaches every account under it, and on Meta you pick the ad accounts. The free plan covers one platform.

AdPlug's Connections page with all five ad platforms connected. Emails and account names blurred.
Type /reload-mcp in Hermes (or start a new session) and ask for a first look:
Check the last 30 days across every ad account I've connected, and tell me what needs my attention first, platform by platform.
On a server or VPS with no browser, put this in ~/.hermes/config.yaml and run hermes mcp login adplug:
mcp_servers:
adplug:
url: https://api.adplug.app/mcp
auth: oauthOpen the sign-in link on your laptop. When it lands on a page that won't load, copy that address and paste it back into Hermes, or forward the port over SSH instead. Hermes' OAuth over SSH guide covers both.
HubSpot (on paid plans, for lead quality) and Search Console (paid and organic search side by side) have servers of their own:
hermes mcp add adplug-hubspot --url https://api.adplug.app/mcp/hubspot \
--auth oauth --connect-timeout 300hermes mcp add adplug-search-console --url https://api.adplug.app/mcp/google-search-console \
--auth oauth --connect-timeout 300Don't add a single-platform AdPlug server, such as /mcp/google-ads, next to adplug, or Hermes sees the same tools twice.
6 PPC workflows I'd hand to Hermes Agent first
1. A new client, before the first call
Every new account gets an audit from me, and Hermes can have it ready before the first call. First the brief, from the client's website and ad accounts:
Set up a brief for Acme from acme.com and their connected ad accounts. Work out what they sell, who converts and what it costs now, then ask me only what you couldn't find.
Then the audit:
Use adplug:account-audit on all of Acme's ad accounts against their brief, and tell me what to fix first.
You get the brief as a file in ~/adplug/clients/, findings ranked by severity and a week-by-week plan. Ask for adplug:find-opportunities next and it sizes what's missing.
None of it changes the ad accounts, which makes it a safe first job on an account you don't know yet.

2. Every weekday at 8am: the morning check
This is the first routine I'd set up on any account big enough to lose real money in a day:
Every weekday at 8am, check Acme's ad accounts: spend, clicks and conversions against a normal day, tracking gone quiet, ads disapproved or not delivering, and pages that don't load. Message me on Telegram only what needs me. If nothing does, say so. Change nothing.
Two lines matter most. “If nothing does, say so” means a quiet morning still sends a message, so silence means something broke.
“Change nothing” keeps it read-only. With Hermes set to ask first (see safeguards), a scheduled run can't make a change anyway, because nobody's there to say yes.
For an agency, there's a digest version: one message a morning, grouped by client.

3. Monday: the review, then the search terms
Monday is the review across every platform, then the search terms, placements and communities that spent without converting (the report we all mean to read every week):
Every Monday at 8am, find Acme's Google search terms, Microsoft search queries and placements, and Reddit communities and keywords that spent enough to judge without converting, with the negative or exclusion you'd add. Change nothing. I'll pick in chat.
Nothing changes until you pick in chat. Then AdPlug shows the preview, you say yes, and Hermes asks once more before it runs. That's the video at the top, negatives and all.
The skills behind it are adplug:performance-review and adplug:cut-wasted-spend.
4. Ads wearing out on Meta or LinkedIn
On Meta, a tired ad shows it in frequency and click-through rate first, then in cost per result. Ask before the client spots it:
Which of Acme's Meta ads are wearing out, with frequency up, click-through rate down and cost per result up? Tell me which to replace first.
Ask for replacements and adplug:ad-copy writes them from the brief's personas and the landing page. They go in as new ads beside the old ones, paused on Meta and as drafts on LinkedIn, with AdPlug's preview first.
That's how the video ends. For more Meta prompts, see how to connect Meta Ads to Hermes Agent.
5. Which leads were any good
In lead gen, the cheapest lead is rarely the one sales wants. With AdPlug's HubSpot MCP added, adplug:lead-quality follows the leads into the CRM:
Which ad platforms and campaigns brought Acme's qualified leads and deals in HubSpot this quarter, and what did each cost per qualified lead and per deal?
It also finds paid leads nobody followed up, and where the junk comes from. Then it can send qualified leads back to Google, Microsoft, LinkedIn and Reddit as offline conversions, showing you what it'll send and waiting for your yes, so each platform bids towards the leads that mattered.
6. First of the month: the client report
I used to dread reporting. The same questions every week, and none of it the job I'm paid to do. The monthly one makes a good routine:
At 9am on the 1st of each month, build Acme's client-ready PDF report for last month: a short summary, results against target and the month before, the insights behind them and what changes next. Change nothing.
adplug:performance-review has the PDF waiting at 9am on the 1st. It comes to you, not the client. Read it, add the judgement only you have, and send it yourself.
The 16 Hermes Agent marketing skills
AdPlug's plugin has five platform skills and eleven job skills, and Hermes picks the right one on its own (or you name it: “use adplug:account-audit”).
| Skill | What it does |
|---|---|
| adplug:google-ads | Search, Performance Max, Demand Gen and Shopping |
| adplug:meta-ads | Pixel, audiences, creative fatigue, lead ads and catalogues |
| adplug:linkedin-ads | Job title and company targeting, Lead Gen Forms, Thought Leader Ads |
| adplug:microsoft-ads | Bing search, Audience Network, LinkedIn profile targeting, Google imports |
| adplug:reddit-ads | Communities, conversation keywords, brand safety, the Reddit Pixel |
| adplug:ppc-agent | The working rules, including a preview and your yes before every change |
| adplug:client-brief | One brief per client, with a change log. Every skill reads it |
| adplug:account-audit | An audit ranked by severity, with a week-by-week plan |
| adplug:find-opportunities | What's missing, sized and ranked |
| adplug:cut-wasted-spend | Search terms, placements, job titles and communities that spend without converting |
| adplug:build-campaigns | Groundwork for a new ad account, and new campaigns from the brief, created paused or as drafts |
| adplug:ad-copy | Ads from the personas and landing page, character limits checked |
| adplug:performance-review | Morning check, weekly review, pacing, monthly report |
| adplug:lead-quality | What ad leads become in HubSpot, and qualified leads sent back as offline conversions |
| adplug:diagnose | Why something stopped spending or converting |
| adplug:routines | Sets up the routines as Hermes cron jobs, per client |

9 Hermes Agent routines that only read
adplug:routines sets these up as Hermes cron jobs per client, delivered to Telegram, Slack or Discord, and every one ends with “Change nothing”.
| Routine | When |
|---|---|
| 1. Morning check | Each weekday morning |
| 2. Agency morning digest | Each weekday morning |
| 3. Monday review | Every Monday |
| 4. Waste and search terms | Every Monday, or every other week |
| 5. Lead quality, with HubSpot | Every Monday |
| 6. Client report | The 1st of each month |
| 7. Competitor sweep | Monthly |
| 8. Audit and growth scan | Quarterly |
| 9. Change check | On the date in the change log |

The easiest way to set them up is to ask:
Use adplug:routines to set up Acme's routines, delivered to Telegram. Run the morning check once now so I can see what it sends.
Or from the terminal (0 8 * * 1-5 means 8:00 every weekday):
hermes cron create "0 8 * * 1-5" "Morning check for Acme: message me only what needs me. If nothing does, say so. Change nothing." --skill adplug:ppc-agent --skill adplug:performance-review --name "Acme morning check" --deliver telegramHermes' gateway runs the jobs, so set it up once with hermes gateway install, then hermes gateway start. Jobs run on the server's clock unless you set Hermes' time zone, so check it before you trust “8am” (Hermes' cron docs have the details). Every run uses AdPlug requests, so match how often it runs to the money at stake.
Why I'd trust Hermes Agent with client ad accounts
I built AdPlug, and I still wouldn't let an AI agent touch an ad account with zero oversight. 12 years in PPC and $100M+ of other people's ad spend will do that to you.
So every change comes back as AdPlug's preview, and the plugin has Hermes wait for your yes to that exact change. On Google Ads, HubSpot and Search Console, AdPlug's server also refuses a change that wasn't previewed. On Meta, LinkedIn, Microsoft and Reddit the preview is the plugin's rule, not a lock, which is why I'd add Hermes' own check below.
New campaigns and ads start paused (drafts on LinkedIn), so they don't spend until you switch them on.
Then there's Hermes' own check. Add trust: untrusted to AdPlug's entry in ~/.hermes/config.yaml and type /reload-mcp:
mcp_servers:
adplug:
url: https://api.adplug.app/mcp
auth: oauth
trust: untrustedReads and previews run as normal. A change stops on “MCP server 'adplug' is asking”, with [o]nce | [s]ession | [a]lways | [d]eny. Choose once (always rather defeats the point).
Don't use /yolo or approvals.mode: off, since both skip the question. Hermes' MCP config reference has the details.
Routines only read. In a scheduled run nobody's there to answer, so with trust: untrusted set, Hermes refuses a change rather than make it.
On Max and Agency, the team owner sets each teammate to View only or Can edit per platform, and AdPlug enforces it, as long as each teammate signs Hermes in as themselves (everyone who can message one Hermes shares its AdPlug login). The free plan can't change anything. Every call and change lands in AdPlug's Usage and Audit Log.
Every platform sign-in stays encrypted on AdPlug's servers and never passes through Hermes. Hermes only keeps its own AdPlug sign-in, in ~/.hermes/mcp-tokens/.
And it all runs through each platform's official API with the platform's own sign-in, the route each platform built for tools. No tool can promise an account is never reviewed, and your ads still have to follow each platform's policies.
What Hermes Agent does on each ad platform
Google Ads
Hermes turns search terms into negatives, reads Performance Max's search terms and can make more than 170 kinds of change, each previewed, across every account under a manager account. Setup, 10 prompts and 5 routines: connect Google Ads to Hermes Agent.
Meta Ads (Facebook and Instagram)
Meta Ads connects with a normal Facebook sign-in, no developer app or token. Hermes Agent then finds ads that should be running and aren't, spots creative wearing out and builds new campaigns, paused. Setup, 10 prompts and 5 routines: connect Meta Ads to Hermes Agent.
LinkedIn Ads
LinkedIn Ads is where I first ran AdPlug in Hermes Agent. Hermes reports cost per lead, reads job titles from Lead Gen Form responses (LinkedIn's demographic reports leave those leads out) and creates new campaigns as drafts. Setup and prompts: connect LinkedIn Ads to Hermes Agent.
Microsoft Advertising (Microsoft Ads)
Hermes reviews search queries, what Microsoft's Google import brought over or missed, and LinkedIn profile targeting on search. New campaigns start paused. More on the Microsoft Ads MCP.
Reddit Ads
Hermes reports by community and keyword, works out why ads aren't spending, and excludes communities that spend without converting. Everything new starts paused. More on the Reddit Ads MCP.
What it costs
Hermes Agent is free and open source, and you pay your model provider (local models are free to run).
AdPlug's free plan covers one ad platform, view only, with 500 requests in your first 5 days, then 50 a month. Pro is $29 a month for every platform, with 5,000 requests and 200 edits a month. Max is $89 a month with unlimited requests and edits, and 3 team members.
Pro and Max start with a 7-day free trial (checked 10 November 2026, details on the pricing page). Every routine run uses requests, so daily checks across clients need a paid plan.
I'd start free on one platform, with a brief and an audit. Both only read.