Hermes Agent for SEO: Connect Search Console, DataForSEO, and Build SEO Skills
Web search lets Hermes Agent read pages, not measure them. This guide adds the data layer: Google Search Console through the mcp-gsc MCP server, keyword and SERP data through DataForSEO, SEO routines packaged as reusable skills, and a scheduled weekly report, with config.yaml blocks and SKILL.md files you can copy.
- #hermes-agent
- #google-search-console
- #dataforseo
- #mcp
- #seo-automation
- #ai-agent-skills
- #seo-reporting
Which tools does a Hermes Agent SEO setup need?
| Layer | What it gives the agent | How you connect it | Needed? |
|---|---|---|---|
| Web search + extract | Live pages and search results | API key in ~/.hermes/.env (guide 1) | Yes |
| Google Search Console | Your clicks, impressions, CTR, positions, URL inspection, sitemaps | mcp-gsc MCP server (MIT, community-built) | Yes, for sites you own |
| DataForSEO | Keyword, SERP, and other DataForSEO API data | dataforseo-mcp-server (Apache-2.0) | Optional, paid API |
| Browser tools | Rendered pages on JavaScript-heavy sites | hermes tools → browser toolset | For JS-rendered sites |
| Skills | Repeatable procedures with your rules | SKILL.md files in ~/.hermes/skills/ | Yes |
| Cron | Unattended scheduled runs | hermes cron create | Optional |
| Memory | Site context and past findings across sessions | Built in (MEMORY.md, USER.md) | Built in |
How do you connect SEO data and skills to Hermes Agent?
- 1
Turn on the toolsets SEO work needs
Run hermes tools and enable web, browser, file, terminal, skills, memory, and cronjob. Leave unrelated toolsets off (Spotify, Home Assistant, Discord admin): a shorter tool list gives the model less to choose from when it decides what to call. For a one-off session you can also pass a list directly with hermes chat --toolsets.
Terminal hermes tools # or, for a single session hermes chat --toolsets "web,browser,file,skills,memory"
- 2
Create Google Cloud credentials for Search Console
In Google Cloud Console, create a project, enable the Search Console API, and create credentials. You have two options. An OAuth client signs in as you and sees every property your Google account can reach. A service account sees only the properties where you add its email as a user in Search Console, which the mcp-gsc README says needs full access. For an agent, the service account is the better habit: you decide exactly which sites it can read. Save the downloaded JSON somewhere permanent and outside any git repo.
- 3
Install mcp-gsc and register it in config.yaml
Install uv, clone mcp-gsc, and add it under mcp_servers in ~/.hermes/config.yaml (full block in the examples below). mcp-gsc needs Python 3.11 or newer. The detail that is easy to miss: Hermes strips environment variables from MCP subprocesses and passes only safe system variables plus what you write in the server's env block, so a GSC_CREDENTIALS_PATH exported in your shell never reaches the server. Leave GSC_ALLOW_DESTRUCTIVE unset so the agent cannot run destructive Search Console operations. Then type /reload-mcp in a chat and ask the agent to list your properties.
Terminal curl -LsSf https://astral.sh/uv/install.sh | sh git clone https://github.com/AminForou/mcp-gsc.git ~/mcp/mcp-gsc cd ~/mcp/mcp-gsc uv venv .venv uv pip install -r requirements.txt
- 4
Add DataForSEO for keyword and SERP data
Create a DataForSEO account, copy your API credentials, and add the official dataforseo-mcp-server to config.yaml with DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD in its env block. It runs through npx, so Node.js must be on your PATH. DataForSEO is a paid API: check its pricing before asking the agent for anything in bulk, and start with a single keyword to see what one request returns. An agent retrying in a loop can send far more requests than you expect. If you prefer not to run the server locally, DataForSEO also hosts one at https://mcp.dataforseo.com/v3/mcp with OAuth.
- 5
Search the skills hub before writing your own
Search for existing SEO skills with hermes skills search seo, read a skill's SKILL.md before installing it, and install only what matches how you work. Hub skills come from the official Hermes repo, Vercel's skills.sh, GitHub repos, and sites that publish a skills index. Every hub install passes a security scanner that checks for data exfiltration, prompt injection, and destructive commands. A clean scan means the skill is not obviously malicious. It says nothing about whether its SEO advice is good. Our read: generic public checklists are a starting point, and your own skills win because they carry your site's rules.
Terminal hermes skills search seo hermes skills browse hermes skills install <identifier> # after reading its SKILL.md hermes skills list
- 6
Write an on-page audit skill
Create ~/.hermes/skills/seo/page-audit/SKILL.md with YAML frontmatter (name, description, version, tags, required toolsets) and a body that spells out the procedure, the output format, and the pitfalls. Skills load on demand, so the description decides when Hermes reaches for one; write it as the task a person would actually ask for. Test with /page-audit followed by a URL. Then use it for a week and add a line to Pitfalls every time the output goes wrong. Hermes can also create and patch skills itself after complex tasks; set skills.write_approval to true if you want to review those edits before they are saved.
- 7
Write a weekly Search Console report skill
Create a second skill, gsc-weekly-report, that compares the last 7 days with the previous 7 through mcp-gsc and returns a short report in a fixed format. The fixed format matters more than clever analysis: a report shaped the same every week can be scanned in two minutes and compared with last week. Tell the skill which movements count and set an impressions floor so it ignores noise from tiny queries. Keep in mind that recent Search Console data can still change. mcp-gsc's GSC_DATA_STATE defaults to all, which includes fresh data; set it to final to use finalized data only.
- 8
Schedule the report with hermes cron
Create the job with hermes cron create, a schedule, a prompt, and --skill gsc-weekly-report. Hermes accepts natural schedules like "every monday 9am" as well as cron expressions like "0 9 * * 1". Each run is saved under ~/.hermes/cron/output/, and once the messaging gateway is set up, --deliver can send results to Telegram, Slack, Discord, or email. Before the first unattended run, review the approvals settings (there is a separate cron_mode) and trigger the job once by hand with hermes cron run so you read the output before anyone else does.
Terminal hermes cron create "every monday 9am" "Run the weekly Search Console report for sc-domain:example.com and save it to ~/seo/example-com/reports/" --skill gsc-weekly-report --name gsc-weekly hermes cron list hermes cron run <job-id> # test once by hand
Copy-ready config and skill files
mcp_servers:
gsc:
command: "/Users/you/mcp/mcp-gsc/.venv/bin/python"
args: ["/Users/you/mcp/mcp-gsc/gsc_server.py"]
env:
GSC_CREDENTIALS_PATH: "/Users/you/keys/gsc-service-account.json"
GSC_SKIP_OAUTH: "true"
GSC_DATA_STATE: "all"
dataforseo:
command: "npx"
args: ["-y", "dataforseo-mcp-server@latest"]
env:
DATAFORSEO_LOGIN: "your-api-login"
DATAFORSEO_PASSWORD: "your-api-password"Use absolute paths. Credentials must sit in each env block because Hermes does not pass your shell environment to MCP servers, so treat config.yaml as a secret file too: chmod 600 and keep it out of git. Run /reload-mcp in a chat after editing.
---
name: page-audit
description: Audit one URL for on-page SEO issues using the live page and Search Console data
version: 1.0.0
metadata:
hermes:
tags: [seo, audit]
category: seo
requires_toolsets: [web]
---
# On-page SEO audit
## Procedure
1. Fetch the live URL. Quote title, meta description, canonical, robots meta, H1, and H2s.
2. Pull the last 28 days of queries for this URL from Search Console.
3. Check whether the top 5 queries by impressions appear in the title, H1, or first paragraph.
## Output (always this format)
| Element | Current | Issue | Fix | Evidence |
Evidence is a quoted element or a Search Console figure with its date range.
## Never
- Estimate traffic or search volume without a tool result
- Recommend changes to pages other than the given URL
- Rewrite the whole page; propose the specific edit
## Pitfalls (add a line after every bad run)
- Search Console URLs can differ from the live URL by trailing slash or locale prefix; match both
- A plain fetch can miss JavaScript-rendered content; use the browser tool if the body looks emptyThe Pitfalls section starts short on purpose. It grows from real mistakes, which is what makes the skill better than a generic checklist.
---
name: gsc-weekly-report
description: Weekly Google Search Console report comparing the last 7 days with the previous 7
version: 1.0.0
metadata:
hermes:
tags: [seo, reporting, search-console]
category: seo
---
# Weekly Search Console report
## Procedure
1. Compare the last 7 days with the previous 7 days for the given property.
2. Report site totals: clicks, impressions, CTR, average position, each with % change.
3. List the 5 pages with the largest click loss and the 5 with the largest gain.
4. For each page, list the queries behind the change. Skip queries under 100 impressions in both periods.
## Output
- A 5-line summary first: numbers only, no adjectives
- Then the two tables
- End with at most 3 things worth checking, each tied to a row above
## Never
- Blame a change on an algorithm update without a source
- Round or estimate figures; copy them from the tool output
- Call a single week-over-week change a trendThe 100-impression floor is a starting point, not a rule. Raise it for large sites, lower it for small ones.
Frequently asked questions
How do I connect Google Search Console to Hermes Agent?
Create a Google Cloud project, enable the Search Console API, and download OAuth or service account credentials. Clone the open-source mcp-gsc server and add it under mcp_servers in ~/.hermes/config.yaml, with the credentials path inside its env block. Run /reload-mcp in a chat and ask the agent to list your properties to confirm the connection.
Why does my MCP server say credentials are missing when they are set in my shell?
Hermes does not pass your shell environment to MCP servers. MCP subprocesses receive only safe system variables such as PATH and HOME, plus whatever you write in that server's env block in config.yaml. Move the variables into env and run /reload-mcp.
What is a Hermes Agent skill?
A skill is a folder under ~/.hermes/skills/ containing a SKILL.md file: YAML frontmatter (name, description, version, tags) followed by markdown instructions. Hermes loads it when a task matches, or when you type its name as a slash command such as /page-audit. Skills follow the agentskills.io open standard, and Hermes can create and patch its own skills after complex tasks.
Do I need DataForSEO, or is Search Console enough?
Search Console is enough to optimize pages that already get impressions, because it shows the queries you already appear for. It cannot show keywords you do not rank for yet or who holds the top results, which is what DataForSEO's keyword and SERP data adds. Start with Search Console alone and add DataForSEO when you plan new content.
Can Hermes Agent send the SEO report to Slack or Telegram automatically?
Yes. Set up the messaging gateway with hermes gateway setup, then create the cron job with --deliver slack or --deliver telegram. Cron delivery also supports Discord and email. The gateway denies all users until you configure an allowlist, so add yourself before expecting messages.
Should I let the agent make changes in Search Console?
We would not. mcp-gsc keeps destructive operations off unless GSC_ALLOW_DESTRUCTIVE is set to true, and a service account limited to the properties you choose narrows the damage further. Let the agent read and recommend, and make the changes yourself.
Key takeaways
The data layer turns Hermes Agent from a page reader into an SEO tool. Connect Search Console through mcp-gsc with a service account limited to your properties, add DataForSEO when you need keyword and SERP data beyond your own, and put every credential in the MCP server's env block, because Hermes will not pass your shell environment through. Package routines as skills with a fixed output format and a Pitfalls section you update after each bad run. Schedule a job only after you have run it by hand and read the result.