# SEO with coding agents: what the agent fixes, and the data it needs

If Claude Code, Cursor or an AI app builder writes your site, most of the SEO work is already within reach: titles, rendering, links, sitemaps and pages are code. What the agent cannot see is search itself: which searches show your pages, where they sit, who beats you. These guides cover both halves and the loop that joins them.

Updated 2026-09-23 · Source: https://porteur.ai/guides/seo-with-coding-agents

## The split that decides the work

An agent in your repository reads every route, every template and every link. It can give each page its own title, make the first HTML response carry the content, return a real 404 for a path that does not exist, and write the sitemap. That is most of technical SEO, and an agent does it in minutes.

It cannot tell which of those changes matter. Whether /pricing is shown for "yourproduct pricing" at position 11, whether a rival holds the search your category is won on, whether a page lost half its impressions last month: that lives in Search Console and in search data, outside the repository. An agent that edits without it guesses, and a guessing agent rewrites pages that were working.

| The agent sees | The agent does not see |
| --- | --- |
| Titles, descriptions, headings, canonicals per route | Which searches each page is shown for |
| Whether the HTML carries the content before JavaScript | Positions, impressions and clicks |
| Internal links, sitemap, robots.txt, structured data | Who else ranks, and how strong they are |
| The copy on every page | Whether a change worked four weeks later |

## Sites built by an app builder

Lovable, Bolt, v0 and Replit produce very different stacks, and the stack decides the first problem. A client-rendered single page app sends Google an almost empty page and every route under one title; a server-rendered one does not. Check what your own project uses before you follow any advice written for a tool in general: open the page source, not the inspector.

Most sites from a builder that do not show on Google have a simpler problem: they are new, nothing links to them, and Search Console has never been opened. The guide on AI-built sites puts the causes in the order they usually occur.

## The first hour in your repository

Before any content work, ask your agent to check the five things that stop a page from being read at all. Each is a question with a yes or no answer, and each has a fix that fits in one commit.

| The check | How to see it | What fixed looks like |
| --- | --- | --- |
| The first HTML response holds the page's text | curl the page and search the output for a sentence you can read on screen | The sentence is in the response, before any script runs |
| Each route has its own title and description | curl three routes and compare their title tags | Three different titles, each naming what the page is for |
| A path that does not exist answers 404 | curl -I a made-up path such as /no-such-page | The status line says 404, not 200 |
| Links between pages are real links | Search the built HTML for a href pointing at your main pages | Every page is reachable from another through an a element with an href |
| The sitemap lists the public routes | Open /sitemap.xml and compare it with the routes in the code | Every public route once, no private ones, no redirects |

Once those pass, the site can be read, and what remains is whether it deserves to be shown: which searches it answers, and how well. That half needs figures from outside the repository, which is where the next section starts.

> Run these checks against the deployed site as well as the local build. A preview host, a missing environment variable or a rewrite rule on the host can serve crawlers something different from what your laptop shows you.

## Giving the agent the search data

There are three ways to put search data in front of an agent, from the cheapest to the most complete. An export from Search Console, pasted or saved in the repository, is enough for a small site and a first session. A Search Console MCP server lets the agent query your own figures while it works. A report that already joins your figures with the searches around you and your rivals gives it findings instead of rows.

1. **Read before you write** Pages at positions 4 to 20, pages shown often and rarely clicked, pages losing impressions. Improving a page that is nearly there beats writing a new one.
2. **One finding, one change** Give the agent one page and one reason. A change small enough to judge is a change you can keep or undo.
3. **Date it** Note the day each change shipped. Search Console lags two to three days, and a fair comparison is 28 days against the 28 before.
4. **Judge it, then do the next one** Keep what moved, undo what fell, and let the next round start from what the figures say.

## What never to hand over

An agent can write a hundred pages in an afternoon, and that is the trap. Google's spam policies call it scaled content abuse when many pages are made mainly to rank, whoever or whatever wrote them. Pages from a keyword list with nothing of their own do not rank, and they can pull the rest of the site down with them.

> Keep three rules in your CLAUDE.md or AGENTS.md: one page per topic, improve the page that exists before creating one; never invent a figure, a price or a feature; keep each change small enough to judge on its own.

## The order to read the guides

1. Why a site built with an AI builder is not on Google, and the checklist for the first four weeks.
2. What Claude Code can fix in your repository, and what it needs from you.
3. An SEO skill for Claude Code, written out whole to copy.
4. Connecting Search Console to Claude or Cursor through MCP.
5. What an SEO agent can run on its own, and where it goes wrong.
6. The rendering guides: Lovable, single page applications, React.

## The guides, in the order to read them

- [SEO for sites built with AI app builders: Lovable, Bolt, v0 and Replit](https://porteur.ai/guides/seo-for-ai-built-sites): Built your site with Lovable, Bolt, v0 or Replit and Google does not show it? The five usual causes, a 30-minute checklist and the first four weeks.
- [Claude Code for SEO: what it can fix in your repository, and what it cannot see](https://porteur.ai/guides/claude-code-for-seo): Use Claude Code for SEO: what it fixes in your repo, the search data it lacks, how to bring that data in, a worked session and rules for CLAUDE.md.
- [A Claude SEO skill for your repository: what it should hold, and one to copy](https://porteur.ai/guides/claude-seo-skill): A complete Claude Code SEO skill to paste into .claude/skills: what it checks in your repo, the findings it writes, what it cannot see, and how to adapt it.
- [Google Search Console MCP: giving Claude or Cursor your search data](https://porteur.ai/guides/google-search-console-mcp): What a Google Search Console MCP server is, the three ways to get one, setup for Claude Code and Cursor, the prompts worth asking, and how to keep it safe.
- [SEO AI agents: what an agent can do for a small site, and where it goes wrong](https://porteur.ai/guides/seo-ai-agent): What an SEO AI agent is, the loop that works for a small site, where agents go wrong, and a table of what to automate, review and never delegate.
- [Lovable SEO: why older Lovable sites were not indexed, and what to check now](https://porteur.ai/guides/lovable-seo): Is Lovable good for SEO? It depends on the project's age. How to tell which you have, test what crawlers get, and the checklist still yours to do.
- [Single page application SEO: rendering, routes and status codes that Google can read](https://porteur.ai/guides/single-page-application-seo): Are single page applications bad for SEO? The six failure points with a test for each, the fixes ranked by effort, and host rules for real 404s.
- [React SEO: making a React app readable by Google and by AI crawlers](https://porteur.ai/guides/react-seo): Is React bad for SEO? How to tell what your React app sends crawlers, set per-route titles in React 19, prerender routes and avoid the React traps.

## The free tools

- [On-page SEO checker](https://porteur.ai/tools/on-page-seo-checker): Paste a URL and get the page read as a crawler reads it: title, description, canonical, indexability, headings, alt text, links, share tags, what to fix first.
- [Server response checker](https://porteur.ai/tools/server-response-checker): Paste a URL and time the server's answer: time to first byte, HTTP/2 or HTTP/3, brotli or gzip, Cache-Control, HSTS, the headers that decide when a page starts.
- [robots.txt tester](https://porteur.ai/tools/robots-txt-tester): Paste a site, paths and a crawler: what its robots.txt allows by the rules Google reads with, the rule that decided each, why it won, and the file mended.
- [Sitemap checker](https://porteur.ai/tools/sitemap-checker): Read a sitemap the way a crawler does: what it lists, how it is dated, whether robots.txt names it, and whether thirty of its addresses answer 200.
- [AI crawler access checker](https://porteur.ai/tools/ai-crawler-access-checker): Paste a site or a page and see, crawler by crawler, whether it may read it: root and page, the rule that decides, the text without JavaScript, llms.txt.
- [Structured data checker](https://porteur.ai/tools/structured-data-checker): Read the JSON-LD on a page: every type, the rich result each can earn, the required and recommended fields it lacks, and a mended copy of each node.

## The words

- [Agentic SEO](https://porteur.ai/glossary/agentic-seo): Agentic SEO is search work done by AI agents that read data, edit pages and publish in a loop. What it means for a small site, and its traps.
- [Model Context Protocol (MCP)](https://porteur.ai/glossary/model-context-protocol): The Model Context Protocol in plain words: how MCP servers give Claude or Cursor your data, what that means for SEO work, and what to check before connecting.
- [Prerendering](https://porteur.ai/glossary/prerendering): Prerendering means producing a page's HTML before the request. How it differs from SSR and dynamic rendering, how to test it, and where it becomes cloaking.
- [Rendering](https://porteur.ai/glossary/rendering): Rendering is how Google executes your JavaScript and CSS after crawling HTML, which can delay indexing. Here is what to check and how to fix it.
- [JavaScript SEO](https://porteur.ai/glossary/javascript-seo): What JavaScript SEO means, how Googlebot renders, what breaks, how to fix links and content, and how to choose SSR or SSG so pages index fast.
- [Soft 404](https://porteur.ai/glossary/soft-404): A soft 404 answers with a success status while being an error or an empty page. How Google detects it, where it shows, and the fix for each cause.
- [Canonical URL](https://porteur.ai/glossary/canonical-url): A canonical URL names the original version of a page. Use it to handle parameters and duplicates, avoid split signals and keep the right page indexed.

## Questions

### Can Claude Code do SEO on its own?

It can do the part that lives in code: metadata, rendering, links, sitemaps, structured data and copy. It cannot see which searches show your pages or who beats you, so on its own it guesses what to change. Give it your Search Console figures and one finding at a time.

### Is a site built with Lovable, Bolt or v0 bad for SEO?

Not by itself. What matters is whether the first HTML response carries the content and each route has its own title, which depends on the stack your project was generated with. Check the page source of your own site before changing anything.

### Should I let an agent write my blog?

Let it draft pages you have decided on from real demand, with the facts it needs, and read every page before it ships. Do not let it generate pages from a keyword list: that is what Google's policy on scaled content abuse describes.

### What does an MCP server add for SEO?

It lets the agent query your data while it works, instead of you pasting an export. For SEO that usually means Search Console, so the agent can pick the page close to the first page before it edits anything.

Before your agent changes anything, see who holds the searches around your product: the free check reads your site, those searches and the rivals on them from a URL in about thirty seconds. Free check: https://porteur.ai/
