# SEO Rank Loop: SEO + Auto-Indexing Agency

> An SEO agent that reruns your Monday — reads Search Console + DataForSEO, stages exact title/meta/link fixes, verifies what moved — and now submits your non-indexed pages to Google's Indexing API every day, emailing you a receipt. BYO keys.

- Agent: Hermes Agent
- Plan: Starter (1 vCPU, 2 GiB RAM, 10 GiB disk)
- Forks: 0 · Stars: 0
- Creator: https://www.jurniti.com/creator-ca0ff2
- Tags: agency, dataforseo, google-indexing, hermes, indexing, marketing-loops, rank-loop, search-console, seo, seo-improver
- Requires config (you provide): OPENROUTER_API_KEY
- Skills: ai-seo, airtable, analytics, apple-notes, apple-reminders, architecture-diagram, arxiv, ascii-art, ascii-video, audiocraft-audio-generation, baoyu-infographic, blogwatcher, claude-design, codebase-inspection, comfyui, competitors, computer-use, content-strategy, copy-editing, design-md, dogfood, evaluating-llms-harness, excalidraw, findmy, gif-search, github-auth, github-code-review, github-issues, github-pr-workflow, github-repo-management, google-workspace, heartmula, hermes-agent-skill-authoring, hermes-desktop-plugins, himalaya, huggingface-hub, humanizer, imessage, jupyter-live-kernel, llama-cpp, llm-wiki, manim-video, maps, marketing-loops, nano-pdf, node-inspect-debugger, notion, obsidian, ocr-and-documents, openhue, p5js, petdex, plan, polymarket, popular-web-designs, powerpoint, pretext, programmatic-seo, python-debugpy, requesting-code-review, research-paper-writing, schema, segment-anything-model, seo-audit, seo-index-coverage, seo-rank-loop, seo-workspace, serving-llms-vllm, simplify-code, site-architecture, sketch, songsee, songwriting-and-ai-music, spike, systematic-debugging, teams-meeting-pipeline, test-driven-development, touchdesigner-mcp, weights-and-biases, xurl, youtube-content, yuanbao

**To fork:** open https://www.jurniti.com/templates/seo-rank-loop-seo-auto-indexing-agency and use the Fork action — it starts a Stripe Checkout for a new VM seeded with this template's persist disk (same flat plan price, no fork fee).

## README

# An SEO agent that runs your Monday for you — and gets your pages into Google

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 — nor a daily habit of checking which pages Google still hasn't indexed. This template is that Monday on a loop **plus** a daily index-coverage sweep, inside your own Hermes VM.

## What the SEO agent does each week

1. **Measure** — Google Search Console for your clicks, impressions, CTR and position. DataForSEO for who outranks you, volume and SERP features.
2. **Prioritize** — striking-distance keywords at positions 4–20, high-impression low-CTR pages, cannibalization, decay.
3. **Stage** — exact titles, metas, sections and internal links. Not a vague "write more content" list.
4. **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.

## New — daily index coverage (get pages into Google fast)

Publishing a page is not the same as Google indexing it. The `seo-index-coverage` skill runs **every day**:

1. Reads your `sitemap.xml` — the set of pages that *should* be indexed.
2. Checks each against the GSC **URL Inspection** API (concurrently) to find the ones Google has **not** indexed.
3. Submits those to Google's **Indexing API** — capped to the daily quota, with a per-URL cooldown so nothing is spammed, and only ever your own on-property URLs.
4. Writes a dated receipt **and emails you the summary** (submitted / already-indexed / failures) — the same delivery as the weekly report.

It fails closed and only cries "revoked permission" on an actual 403, so a quiet run means it worked. One-time setup: make your service account an **Owner** of the property and enable the Web Search Indexing API.

Every run — weekly or daily — writes a **receipt**, including the runs that fail. A scheduled agent that finishes quietly is indistinguishable from one that never fired; the receipt is what tells those two apart.

## What you get on fork

- An agency SOUL holding the doctrine: measure, stage, verify — and index.
- **SEO + marketing skills** — `seo-rank-loop`, `seo-workspace`, and the new **`seo-index-coverage`**, plus `seo-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) + the indexing engine (`gsc_index.py`, pure stdlib).
- A DataForSEO helper over REST, with optional MCP for the competitive layer.

The `~/seo/` workspace is scaffolded for you on fork. Weekly artifacts land in `~/seo/runs/YYYY-MM-DD/`; daily index receipts land in `~/seo/index-runs/YYYY-MM-DD/`.

## 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 |
| `NOTIFY_FROM` / `NOTIFY_TO` | optional — to email yourself the daily/weekly receipts |

For the weekly rank loop, add the service-account email to Search Console as a **Restricted** user. For the daily indexing, it needs **Owner** (the Indexing API requires it) and the Web Search Indexing API enabled in your GCP project. DataForSEO fees and model usage are billed to you, by them.

## Your first hour

1. Fork it and open the Hermes session.
2. Put the keys above in `~/.hermes/.env`.
3. Fill `~/seo/client-profile.md`.
4. Run the weekly loop once, stage-only; run the index-coverage skill once.
5. Schedule the rank loop for Monday 09:00 and index-coverage daily.

Then leave it alone.

## Honest limits

- It will not guarantee a #1 ranking, and the Indexing API is a *request* to crawl, not a promise to index.
- 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 only ever submits your own on-property URLs, and never a redirected or dead one.
- Google officially scopes the Indexing API to job-posting/livestream pages; it works for ordinary pages in practice, and the daily receipt surfaces any 403 immediately.
- Hermes only. Principles match [Atom Eve's SEO Improver](https://www.atomeve.dev/agents/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.
