Bridge SEO

AI SEO: what it fills in, and what it never touches

7 min readUpdated Aug 2026
A page that nobody wrote tags for still has to be described somewhere. A search result needs a title and a line under it. A pasted link needs something to unfold into. A machine reading the page for an answer needs to know what the page claims to be about.

Most pages supply a title and stop there. That is not negligence; it is what happens when a site outgrows the person who writes its metadata, and the gap never shows up in a browser.

What gets filled

title description og json-ld /page-1 /page-2 /page-3 /page-4 /page-5 the shape of it: one column filled, the rest not

Four families of tags, and one step that follows them.

  • Meta title and description

    The pair a search result is assembled from. Where a page declares neither, both are written from what the page actually says.

  • Open Graph

    What a link preview reads. Without it, a link pasted into a chat unfolds as a rectangle with a URL in it.

  • Twitter and X cards

    The same intent, a different vocabulary, and a separate set of tags. A page can preview correctly in one place and badly in another for no other reason.

  • JSON-LD

    Structured data in the form engines read for rich results. Structured data already on the page stays where it is.

  • Then IndexNow

    Not a tag family but a step after them: when a page's tags change, that page can be announced to the engines that accept such announcements. Google is not one of them.

Each family has a page of its own:

  • Meta title and description covers the pair a result is built from, and what filling the gap leaves alone.
  • Open Graph covers the tags a link preview reads, and what a missing set costs where you cannot see it.
  • Twitter and X cards covers the second vocabulary, and why falling back to Open Graph is not quite enough.
  • JSON-LD covers what is written where a page has no structured data, and what happens to markup it already carries.
  • Preview images covers the card composed from your colour, your typeface and a picture of the page.

The boundary

Filling a gap and improving an existing line are different jobs, and only the first one happens here.

A description written three years ago and long forgotten is treated as authored, because it is, and is left exactly as you left it. Every injected node carries data-bb-seo="1", so what came from you and what was filled in stays distinguishable later, in the page source, without taking anyone's word for it. This is the part worth reading twice, because the category around it says the opposite constantly.

Two settings decide what the model is allowed to know. A brand profile holds the facts that do not change from page to page: the site's name, its social handle, the postfix on a title. Those are copied rather than guessed. A short account of what the site does and how its copy should sound steers the wording, and is never published on any page.

brand profile written tag Site name Site name @handle @handle — Site name — Site name the same string on both ends — copied, not composed

Where it happens

Enrichment does not edit your site. It edits the copy of the page that is assembled for machines at the edge, and your own HTML is left where it is, byte for byte.

That distinction decides most of what follows. A person loading the page sees what your server sent, generated tags included or not. A crawler asking for the same address gets the assembled copy, and it is there that a missing description or a missing card is filled. Nothing is written back to your origin, so there is no migration to plan, no plugin to install and nothing to undo if you switch the whole thing off.

It also explains why the result is the same on a site rendered in a browser and on one rendered by a server. The assembled copy is built the same way in both cases, and the tags are added to it at the same point.

How the record is made

The model runs on our own hardware rather than behind a call out to a third-party API.

Output is checked before it is stored, and a record that fails the check is discarded rather than injected. The page keeps its gap instead of receiving something malformed, which is the safer of the two outcomes: a missing tag and a broken one do not fail the same way. A parser that chokes on invalid JSON-LD can drop the whole block, including the markup you wrote yourself, which was fine until something invalid landed next to it.

How to see what it did

A claim about tags is only worth as much as your ability to check it, and this one is checkable in a browser.

Every generated node carries data-bb-seo="1". Fetch the page the way a crawler does, read the head, and the attribute separates what came from you from what was filled in. Nothing that lacks the attribute was generated; nothing that carries it was ever yours.

Two more things follow from that. The first is that removing enrichment removes exactly the marked nodes and nothing else, so the switch is genuinely reversible. The second is that an audit of your own tags stays possible: filter the marked nodes out, and what remains is the state of your metadata as you wrote it, gaps and all.

Where the words come from

The niche has three names and they are used interchangeably more often than not. AEO and GEO covers what the terms mean, where the distinction is real, and where it is a distinction without a difference.

The signals underneath

Tags are one layer. Underneath them sit ordinary technical declarations, and a surprising share of findability problems are one of those being declared wrongly rather than anything to do with answer engines. Meta tags covers what a title and description are read for, and duplication across a site covers what it costs when the same pair appears on many pages at once.

FAQ

Does AI SEO rewrite tags I already wrote?

No. The check is for absence, so injection fills what is missing and nothing else. A description you wrote years ago and forgot about is kept exactly as it stands, whether or not it is any good, because deciding that it is not good enough would be a different job from filling a gap. A generated tag appears only where that tag is absent.

Do I need a plugin or a code change?

Neither. Your site sits behind Bridge CDN, and enrichment happens to the copy assembled for machines at the edge. That is why it works the same on a site rendered in the browser as on one rendered by a server.

Is it on by default?

No. It stays off on each domain until you switch it on, and it is available on Pro and above. The default is deliberate: enrichment changes what machines read about your pages, and that is not a change anyone should discover after the fact. Turning it on is a decision you make per domain, not once for an account.

What happens to a generated tag when I write my own?

Yours takes over. The check is for absence, so a tag that exists is a tag that is left alone, whether it was there yesterday or added this morning. The generated node stops appearing once the gap it filled is gone.

Can I tell which tags were generated?

Yes, and without asking anyone. Generated nodes carry data-bb-seo="1", so fetching the page the way a crawler does and reading its head separates them from your own. That marker is also what makes switching enrichment off a clean operation rather than a hopeful one: what disappears is exactly the marked nodes, and your own tags are not part of the transaction.

In this section

AI SEO, without the overclaiming

These pages pin down what enrichment fills and what it never touches. The platform they describe is Bridge CDN, where an account is created.