The SEO Operator
A recipe for handing an agent the whole SEO job for one site, run from the site's own repo on a schedule. It doesn't add new mechanics. It bundles the SEO loops from the catalog, gives them one shared memory, and sets the rules that keep an always-on agent useful instead of busy.
Use it when the user wants SEO run for them rather than advice about SEO, and the agent can work in the repo that builds the marketing site. If the site lives in a hosted builder with no repo access, run the same loops in draft mode and hand the changes to a human.
Before the first run
Settle five things with the owner and write them at the top of the operator brief (below):
| Setting | What to capture |
|---|---|
| Site | The production URL |
| Conversion | The one action that counts (trial, demo request, purchase). Traffic that never reaches it isn't the goal |
| Competitors | 3–8 names, or permission to find them from the SERPs and AI answers |
| Ship mode | "Open a PR for review" (default) or "merge when checks pass." Auto-merge needs the owner's explicit say-so; see I0 |
| Data access | Which of Search Console, analytics, a rank or backlink tool, and an AI-visibility tool the agent can read |
Then confirm the foundation: tracking works (the tracking-QA loop), and .agents/product-marketing.md exists. If it doesn't, build it with the product-marketing skill first. The operator reads product facts from there; it doesn't keep a second copy.
Shared memory
Agents start every run with no memory, so everything the operator knows lives in files. Use the loop-state convention (.agents/loops/) for run logs, plus one folder for SEO working files: