About this template
An SEO agent that runs your Monday for you
You already know what good SEO looks like.
What you do not have is 90 minutes every Monday to pull Search Console, open DataForSEO, write the diagnosis and stage the fixes. This template is that Monday, on a loop, inside your own Hermes VM. You say: run the weekly SEO improver loop for my property, stage fixes only.
What the SEO agent does each week
- Measure — Google Search Console for your clicks, impressions, CTR and position. DataForSEO for who outranks you, volume and SERP features.
- Prioritize — striking-distance keywords at positions 4–20, high-impression low-CTR pages, cannibalization, decay.
- Stage — exact titles, metas, sections and internal links. Not a vague "write more content" list.
- Verify — next week it opens last week's report and checks what actually moved.
Step 4 is the whole point. An agent that only recommends is a report generator with better manners.
Every run also writes a receipt — including the runs that fail. A scheduled agent that finishes quietly is indistinguishable from one that never fired, so the receipt is what tells those two apart. Treat a missing receipt as a failure.
What you get on fork
- An agency SOUL holding the doctrine: measure, stage, verify
- 12 SEO and marketing skills —
seo-rank-loopandseo-workspace, plusseo-audit,ai-seo,schema,site-architecture,content-strategy,programmatic-seo,marketing-loops,competitors,copy-editing,analytics - Read-only Search Console helpers (service-account JWT scripts)
- A DataForSEO helper over REST, with optional MCP for the competitive layer
The ~/seo/ workspace is scaffolded for you on fork, so run one has somewhere to write. Artifacts land in ~/seo/runs/YYYY-MM-DD/. rankings.csv is the week-over-week join key. report.md is a one-screen pulse with stable IDs like SEO-STRIKE-001, so you can argue about one fix, not the whole document.
What you supply
| Env | What it is |
|---|---|
OPENROUTER_API_KEY | your Hermes model key |
GSC_CREDENTIALS_JSON | Google service-account JSON, one line |
GSC_PROPERTY | e.g. sc-domain:yoursite.com |
DATAFORSEO_LOGIN / DATAFORSEO_PASSWORD | DataForSEO credentials |
GH_TOKEN + blog path | optional, to open PRs against your content repo |
Add the service-account email to Search Console as a Restricted user. DataForSEO fees and model usage are billed to you, by them.
Your first hour
- Fork it and open the Hermes session.
- Put the keys above in
~/.hermes/.env. - Fill
~/seo/client-profile.md. - Run the weekly loop once, stage-only.
- Schedule it for Monday 09:00.
Then leave it alone. Run two is the first one that can verify anything — it opens run one's report and checks those IDs.
Honest limits
- It will not guarantee a #1 ranking.
- It will not auto-merge to your default branch.
- It will not invent rankings when GSC or DataForSEO is down. It tells you the data is missing.
- It will not build thin page farms.
- Most healthy weeks end with no action and a stated reason. That is the agency you want, and it is the one that feels boring.
- You need a Search Console property and a DataForSEO account already. It connects to both; it creates neither.
- Hermes only. Principles match Atom Eve's SEO Improver — GSC primary, DataForSEO competitive, weekly loop — but there is no Eve install here.
Fork it and run one loop stage-only before you trust it with a title tag. Your first jurniti purchase carries a 30-day money-back guarantee.