Next.js
Agents research, write and publish pages into the Postgres database behind your Next.js site. You approve the work before it lands.

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.
When your site is code in a repository, there is no CMS for an SEO tool to write into, so most of them stop at a report. Agents here work the way your team already does: they open a pull request with the change, the diff is the preview, and nothing reaches your site until you merge it.

SEOmatic connects to one repository through the SEOmatic GitHub App. Agents read your site's files to understand your pages, and deliver every edit as a pull request for you to review and merge. The default branch is off limits by design.
All integrations are included in every plan. Plans start at $99/month. See pricing.
A site whose pages live in a GitHub repository as HTML or Markdown files, and permission to install a GitHub App on that repository. The app asks for access to contents and pull requests on the one repository you choose.
Visit our blog to learn more about programmatic SEO and how it can help your business generate more traffic, leads, and sales.
Connecting means installing the SEOmatic GitHub App on the repository your site is built from.
Step 1: In SEOmatic, go to Connections, select GitHub, and click Continue with GitHub.
Step 2: On GitHub, install the app on the one repository your site lives in. GitHub sends you back to SEOmatic.
Step 3: Pick the repository and confirm your live site URL, then click Connect repository.
Step 4: Agents read your Search Console data, find the pages losing clicks they should be winning, and open a pull request for each fix you approve. You review the diff and merge it, or close it to say no.
On plain HTML files, agents set the title, meta description, canonical tag and structured data, and rewrite content inside your page's existing main element. Structured data sits in a clearly marked block, so your own markup is never touched.
On Markdown and MDX files, agents update the title and description in the front matter. The body is left alone, because converting it through HTML and back breaks its formatting and can break an MDX build, and a lossy edit is worse than none.
On a Markdown blog, programmatic pages arrive as one pull request per batch, all in a single commit with a manifest. The next batch is queued only once you merge the last one, and undoing a batch is reverting one commit.
React page files are read so agents understand your site and can diagnose what is holding a page back, but they are never edited. Having an AI rewrite JSX is a risk we decline, and the fix comes to you as a written change instead.
The connector refuses to commit to your default branch. Every change is a branch and a pull request, so it goes through the same review, checks and preview builds as your team's own code.
A merged pull request still has to build and deploy. The change counts as applied only once your live page shows it. If bot protection blocks that check, it confirms the change in the merged files instead and labels it that way. An open pull request never counts, and if the deploy never lands, it says so rather than reporting a success.
Every edit keeps the previous values it replaced. Rolling a change back opens a pull request that restores them and removes any field the agent added, reviewed and merged like any other.
The app is installed on the single repository you pick. Uninstall it on GitHub at any time: open pull requests stay yours, and everything already merged lives in your own git history.
A repository has no fields and no API for SEO, only files. So the agent has to earn the right to edit one: it maps each live URL to the file that produces it, checks that the file's title matches the page, and opens a pull request only when the match holds up (a page with no title to compare is matched on its path alone). When it is not, you get a note instead of a guess.

Comparison and alternative pages catch people close to deciding. Agents write them against real search demand and deliver them as a pull request you can preview before anything ships.

Every term your buyers look up is a page you do not have yet. On a Markdown blog, agents write the ones people actually search for and send them as a batch you merge.

Resource pages bring in people long before they are ready to buy. Agents build them against real search demand, then keep an eye on how each performs and propose a refresh when one starts slipping.
Which files can the agent edit in my repository?
The content and SEO files your site is built from, as covered on this page. Every change arrives as a pull request, so nothing reaches your site until you merge it.
Can the agent push straight to my main branch?
No. Writing to the default branch is refused by the connector itself, not left to a setting. Every change is a new branch and a pull request, so it goes through your normal review and any checks or preview deployments you already run.
Which files can it edit?
Plain HTML files fully: title, meta description, canonical, structured data, and content inside the main element. Markdown and MDX files: the title and description in the front matter. Next.js React page files are mapped to their URLs but never edited. If the agent cannot be sure which file produces a URL, it sends you a note instead of opening a pull request against the wrong one.
When does a change count as applied?
Only when your live site shows it. Merging is your approval, but your site still has to build and deploy, so the agent checks the live page for the new title or description before it marks the fix applied. If the change never shows up, the task says it was merged but is not live yet.
How do I undo a change?
The agent keeps the previous content of every file it edits. Rolling back opens a restore pull request that puts the previous values back and removes any field the agent added, and you merge it like any other.
Can it publish new pages?
On a Markdown blog, yes: new posts arrive in batches, each batch one pull request with a single commit and a manifest of what it adds. The next batch is queued only once you merge the last one. Static HTML repos and MDX have no layout contract for new pages, so on those the agent improves the pages you already have.
What access does the GitHub App get?
Contents and pull requests on the one repository you choose when you install it, and nothing else. Uninstall it from the repository on GitHub whenever you like: open pull requests stay yours to merge or close, and everything already merged is in your own history.
What happens to the work if I cancel?
It stays yours. Every change lives in your own repository as a normal commit, so nothing reverts or disappears if you stop paying.
See what agents can do on the other platforms SEOmatic connects to.
Agents research, write and publish pages into the Postgres database behind your Next.js site. You approve the work before it lands.
Agents write the pages that get your Lovable app found, straight into the Supabase database it already runs on. 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.
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.