Ghost
Agents write and refresh your posts, and set the canonical tags and schema most platforms will not let them touch. You decide what goes live.

Each local area page used to take us half a day to create and optimize.
With SEOmatic, we can create hundreds of pages in the same time, which helps our clients make the best use of their budget.
It's transformed how we deliver scalable SEO solutions.
Will Hawkins
Marketing Director, Digi-Business UK
Agents read your Search Console data, do the work, and prove what actually moved. You decide what ships.
14-Day Free Trial. $1 card check, refunded. Cancel Anytime.
Agents write new documents and improve the ones you already published. Sanity accepts almost any key you send it, so agents check your document's real shape first rather than guessing at field names.

SEOmatic connects to your Sanity project with an API token. Agents write new documents and improve existing ones, resolving where your titles and meta actually live in the same query that finds the document.
All integrations are included in every plan. Plans start at $99/month. See pricing.
A Sanity project and dataset, plus an API token with Editor permissions or higher, created under API > Tokens in manage.sanity.io. You will also need your Project ID and dataset name, usually production.
Visit our blog to learn more about programmatic SEO and how it can help your business generate more traffic, leads, and sales.
SEOmatic connects to your Sanity project through the Content Lake API, then works on the documents you already have.
Step 1: Go to manage.sanity.io, open your project, and under API > Tokens add a token with Editor permissions or higher.
Step 2: In SEOmatic, go to Connections and select Sanity. Paste the token along with your Project ID and dataset, then pick the document type to work in.
Step 3: Agents read your Search Console data, find what is holding those documents back, and propose the changes with the reasoning attached.
Step 4: You approve what you want. Approved work is patched into your dataset, logged as a diff you can read, and undone in one click if you change your mind.
New documents written from research, plus rewrites of the title, slug and meta on ones already published.
Agents resolve where your meta and body actually live in the same query that finds the document, so nothing is guessed.
Sanity accepts any key you send. A guessed name would create a field nothing renders, so agents only write what exists.
The agent arrives switched off and starts in approval mode. It earns more rope only when you give it.
A before and after view with the reasoning attached, so you see what changed and why.
Any change rolls back to its previous value. Low-risk edits that cost you traffic revert on their own.
Meta is patched at its exact path, so updating a title leaves the description and everything beside it intact.
Sanity keeps drafts as separate documents. Agents respect that split rather than pushing work live by accident.
Everything goes through the Content Lake, so whatever renders your content keeps rendering it the same way.
Sanity's schema lives in your Studio, not in the API, so a write to a guessed field name succeeds and quietly creates an orphan nothing renders. Agents resolve the document's real shape before they write.

Case studies are the pages buyers read last and teams write least. Agents draft them into your document type, then keep the titles and meta sharp as the ones that rank start to slip.

Customer stories build the trust that turns a visit into a conversation. Agents write them into your dataset and revisit the ones losing ground, so a page from two years ago is not still working against you.

Comparison pages catch people close to deciding. Agents write them into your document type and revisit them as the competitive picture shifts, so the page stays accurate instead of ageing badly.
How does it know where my meta lives?
It looks. Sanity has no fixed field names, so agents resolve your document's real shape in the same query that finds the document: whether meta sits in a seo object or at the top level, and which key holds the body. The change is then written exactly there, which is why your template renders it instead of a stray field nobody reads.
Could it create a field my schema does not have?
This is the failure mode worth knowing about on Sanity, and the answer is no. Your schema lives in your Studio, not in the API, so the mutation API accepts any key you send and returns a success. A tool that guesses at field names silently creates orphan attributes nothing renders, and it looks fine because reading them back returns what was written. Agents write only into keys the document already has.
Will updating a title clear the fields next to it?
No. Meta is patched at its exact path, so setting a meta title touches only that key and leaves the description, canonical and anything else in the same object untouched.
Can agents rewrite the body of a document?
Only where the body is a plain string field. Sanity stores rich content as Portable Text, a structured format rather than HTML, and agents do not write into it. Titles, slugs and meta work regardless. If your bodies are Portable Text, treat SEOmatic as handling everything around the content rather than the content itself.
Can agents set canonical tags, noindex or schema markup?
Not unless your schema has fields for them, and even then those directives are rendered by your front end rather than the CMS. When a fix needs one, the agent writes the exact change and hands it to you. On WordPress the same agent writes all three directly.
Does the change show up on my live site straight away?
That depends on your front end. Sanity is headless, so the document updates immediately and your site reflects it on its next build or revalidation. If your site is statically generated, the change is live in Sanity before a visitor sees it.
What if the agent makes a change I do not like?
Every edit stores the previous values before it writes, so a change goes back to what it was in one click. The agent starts in approval mode, so by default you see each change before it is applied, and documents you mark as protected keep waiting for your yes. One honest limit: restoring a field that was previously empty is handed to you rather than applied automatically, because an empty value is treated as leave alone rather than clear.
What happens to the work if I cancel?
It stays yours. Agents write into your own Sanity dataset, so the documents and edits are simply part of it. Nothing reverts or disappears if you stop paying.
See what agents can do on the other platforms SEOmatic connects to.
Agents write and refresh your posts, and set the canonical tags and schema most platforms will not let them touch. You decide what goes live.
Agents write and improve the entries in your Contentful space, meta fields included. You decide what goes live.
Agents write and improve the entries in your Strapi collections, without disturbing the fields they were not asked to touch. You decide what goes live.
Agents fix titles, meta, content and schema on your live WordPress site. You stay in control, and every change can be undone.
Agents work through your CMS collections item by item, fixing the SEO nobody has time to maintain. You stay in control.
Agents write your blog, build the collection and landing pages you are missing, and repair the pages that are slipping. You decide what goes live.