Connect a site. Get actionable SEO work items every week.
SEO Ops reads your search data, your site and your brand together, and turns them into work
items on your board, each with the evidence behind it. Scout does the thinking.
You decide what ships.
Start on a site you know well — you can judge every recommendation yourself, and you do not
need a client's permission to try it. Free trial, no card, and you will know within one run
whether the work is any good.
You can watch it work — a run, step by step
01
Gathering
Your search data, your live site and your brand, read together.
02
Analyzing
Scout is thinking.
03
Building
Work items, each checked against the data it cites.
04
Delivering
On your board, ready to work.
What you get
Every run fills your board with cards like this one.
Each card says what we found, what to change, and how. Paste it in yourself, or hand it to your agent.
Kinds of work a run can bring
✎Headlines and snippets
▣New pages and content
◇Answers for AI search
⌗Schema
⌖Local presence
⚙Site fixes
Say “video production” and your town in the homepage headline
www.harborlane.example/
What we found
People searched
“video production madison wi” and “madison video production company”
Your page showed up
600 times in Google, in the last 90 days
Clicks
4
Where it sits
Around 8th on the first page of results
A likely reason
The headline names the studio but never says “video production” or the town, which is what people typed.
Change this
The headline · in your page editor this is the “SEO title”
CurrentWhat it says today
Welcome to Harbor Lane | Storytelling, Films and Creative Media for Brands That Care
ProposedPaste it over the old one
Video Production in Madison, WI | Harbor Lane Studio
What to do
Open the homepage in your page editor and find the SEO settings.
Paste the new headline over the old one, then save and publish.
Pricing
Priced per workspace, not per seat.
One price for your whole team. Add sites as you grow.
Trial
Free
no card · for anyone checking the work on their own site
Full product while your trial is active
Start on your own site — no client access needed
Self-serve signup, no call required
One site to try it on
After your trial
Workspace
$49/mo
per workspace · for consultants, in-house teams and agencies
One property included
$10/mo per additional property
API keys, signed webhooks, export
Beta
Scale
Talk to us
for very large sites · big catalogs, many pages
Large e-commerce and catalog sites
Pricing sized to the site
Direct line for onboarding
Why the output is worth acting on
Scout reads three things at once. You only author one of them.
Search data alone produces generic advice. So does a crawl. Read together, with your brand's own
positioning folded in, they produce work a senior SEO would recognise.
Given
What the market is actually asking for
What people search for, and where you already show up.
Observed
What you actually shipped
Your pages as visitors see them, not as the CMS describes them.
Authored
What you are trying to become
Goals, focus phrases, markets, positioning, competitors. The only input a human writes — which makes it the one dial you can turn to sharpen every future run.
How you run it — shown, not described
Runs in the console. Everything on it is also the API.
Every tab is a real result next to the exact thing that produced it. Copy the block on the right,
get the thing on the left.
Work itemsbrindlewhaite.example
Move a card — or tab to one and press Space to pick it up,
←→ to change column, Space or Enter to drop.
agentThree cards in To do. I moved all three to In progress — a new page for ultralight pack frames, the ‘map and compass’ headline on /navigation/, and the bear-canister definition. Starting with the first:
▣CONTENTNew
Add a page for ‘ultralight pack frames’: people search for it, and no page covers it
brindlewhaite.example/packs/
The whole setup
# 1 · mint a partner key: console → Settings → API keys
# 2 · drop it where your agent reads secrets
SEO_OPS_PARTNER_KEY=seoops_…
# 3 · leave a recipe in the project so the agent knows the rules
# .seo-ops/recipe.md
# - backlog: GET /v1/properties/{id}/items?status=backlog
# - start work: PATCH /v1/items/{id} {"status":"in_progress"}
# - never archive; ask first
# 4 · talk to it
"run SEO Ops on brindlewhaite.example
and open the top three work items"
Any agent that can read a file and call HTTP — Claude Code, Cursor, your own runtime. It uses a partner key from Settings, scoped to your workspace.
import hmac, hashlib
def verify(raw: bytes, header: str, secret: str) -> bool:
digest = hmac.new(secret.encode(), raw, hashlib.sha256).hexdigest()
return hmac.compare_digest(header, f"sha256={digest}")
@app.post("/hooks/seo-ops")
def hook(req):
if not verify(req.body, req.headers["X-Agency-Signature"], SECRET):
return 401
for item in req.json["data"]["items"]:
clickup.create_task(list_id, name=item["title"],
description=item["detail"],
priority=item["impact"])
return 200
Or skip the endpoint: GET …/export?format=json pulls the open backlog whenever you want it.
Your agent uses the same API with the same key. The guide inside the console walks through it.
Start
Point it at your own site and see.
Sign up, run Scout on your own site, and read the backlog it files. You will know
within one run whether the recommendations are any good — which is the point of starting
somewhere you can check the work.