Tutorial

How to Automate SEO Tasks with Hermes Desktop Agent

Use Hermes desktop agent with live search data for SEO automation. Run rank checks, content audits, and keyword research from your desktop.

Hermes is a desktop agent that can interact with your computer and run multi-step workflows. Combining it with a search API creates an SEO automation system that checks rankings, audits content, and researches keywords without manual SERP checks. The Scavio API provides structured search data that Hermes can process and act on. This tutorial shows how to configure Hermes with web search access, build SEO automation workflows, and run recurring rank checks. You will have a desktop-based SEO assistant that handles repetitive research tasks automatically.

Prerequisites

  • Hermes desktop agent installed
  • A Scavio API key from scavio.dev
  • Python 3.8+ for testing API calls

Walkthrough

Step 1: Configure search access for Hermes

Set up the Scavio API connection so Hermes can query search data.

Python
# Hermes tool configuration:
# Add a web search tool that calls the Scavio API
# The agent will use this tool for all SEO tasks

import os, requests

API_KEY = os.environ["SCAVIO_API_KEY"]

def search_serp(query, search_type="search"):
    resp = requests.post("https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": query, "type": search_type})
    return resp.json()

Step 2: Build a rank checking workflow

Create a workflow that checks where your domain ranks for target keywords.

Python
def check_rank(domain, keyword):
    data = search_serp(keyword)
    results = data.get("organic_results", [])
    for i, r in enumerate(results):
        if domain in r.get("link", ""):
            return {"keyword": keyword, "position": i + 1, "url": r["link"]}
    return {"keyword": keyword, "position": None, "url": None}

keywords = ["search api", "serp api", "web search api"]
for kw in keywords:
    rank = check_rank("scavio.dev", kw)
    pos = rank["position"] or "not found"
    print(f"{kw}: position {pos}")

Step 3: Add content audit capability

Build a content audit that checks top-ranking pages for a keyword and identifies gaps.

Python
def audit_content(keyword):
    data = search_serp(keyword)
    results = data.get("organic_results", [])[:5]
    paa = data.get("people_also_ask", [])
    return {
        "keyword": keyword,
        "top_titles": [r["title"] for r in results],
        "content_gaps": [q.get("question", "") for q in paa],
        "aio_present": bool(data.get("ai_overview")),
    }

audit = audit_content("best project management tool")
for gap in audit["content_gaps"]:
    print(f"  Gap: {gap}")

Step 4: Schedule recurring checks

Set up Hermes to run SEO checks on a schedule.

Python
# Hermes scheduling:
# Tell Hermes to run the rank check daily:
# "Every morning at 9am, check rankings for these keywords
# and save results to seo_report.json"

import json
from datetime import date

def daily_report(domain, keywords):
    report = {"date": date.today().isoformat(), "rankings": []}
    for kw in keywords:
        report["rankings"].append(check_rank(domain, kw))
    with open("seo_report.json", "w") as f:
        json.dump(report, f, indent=2)
    return report

print(daily_report("example.com", ["crm software", "project management"]))

Python Example

Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def rank(domain, kw):
    resp = requests.post("https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": kw})
    for i, r in enumerate(resp.json().get("organic_results", [])):
        if domain in r.get("link", ""):
            return i + 1
    return None

for kw in ["search api", "serp api"]:
    print(f"{kw}: position {rank('scavio.dev', kw) or 'N/A'}")

JavaScript Example

JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function rank(domain, kw) {
  const r = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST", headers: H,
    body: JSON.stringify({platform: "google", query: kw})
  });
  const results = (await r.json()).organic_results || [];
  const idx = results.findIndex(r => (r.link||"").includes(domain));
  return idx >= 0 ? idx + 1 : null;
}
rank("scavio.dev", "search api").then(p => console.log("Position:", p));

Expected Output

JSON
A Hermes desktop agent configured with SEO automation workflows that check rankings, audit content gaps, and generate daily reports using live SERP data.

Related Tutorials

Frequently Asked Questions

Most developers complete this tutorial in 15 to 30 minutes. You will need a Scavio API key (free tier works) and a working Python or JavaScript environment.

Hermes desktop agent installed. A Scavio API key from scavio.dev. Python 3.8+ for testing API calls. A Scavio API key gives you 250 free credits per month.

Yes. The free tier includes 250 credits per month, which is more than enough to complete this tutorial and prototype a working solution.

Scavio has a native LangChain package (langchain-scavio), an MCP server, and a plain REST API that works with any HTTP client. This tutorial uses the raw REST API, but you can adapt to your framework of choice.

Start Building

Use Hermes desktop agent with live search data for SEO automation. Run rank checks, content audits, and keyword research from your desktop.