---
title: What an AI Website Builder Should Actually Generate
description: Most AI builders generate one page. A business needs a site: linked pages, one h1, a sitemap, structured data and a form that sends mail. Our checklist.
date: 2026-09-11
author: crea.site
tags: [product, seo]
---

A generated page is easy. Ask any model for a landing page and you will get one: a headline, three columns of features, a call to action. It looks fine in a screenshot.

A generated _site_ is a different problem, and it is the one a small business actually has. The bakery does not need a page. It needs somewhere people find the opening hours, a menu that matches what is in the counter, a form that reaches an inbox someone reads, and enough structure that a search engine can tell what the business is and where it is.

Here is the checklist we hold ourselves to, and what each item is really about.

## Several pages, linking to each other

One page cannot rank for more than one thing. If the bakery wants to be found for both "sourdough" and "wedding cakes", those are two pages with two titles, two descriptions and two first headings - and they have to link to each other, because a page nothing links to is a page nothing finds.

That means the generator has to decide a structure before it writes a word: which pages exist, what each one is _for_, and how a visitor gets from the front page to any of them in two or three clicks. A category page - services, with a page per service under it - is the shape most trades and clinics want, and it is the shape a flat list of sections cannot express.

## One h1, and an outline under it

Every page gets exactly one `h1`, and the headings below it descend without skipping a level. This sounds like pedantry until you find the failure it prevents: a page whose first block happens not to be a hero can easily end up with **no h1 at all**, and nothing in a normal review catches it, because the page still looks right.

We check it by rendering every section type in every variant and asserting the outline, rather than by reading the code and believing it.

## The machine-readable half

A site that a person can read and a crawler cannot is half a site. Generated with the page, never bolted on afterwards:

- `sitemap.xml`, listing exactly the pages that are public - not the members-only ones.
- `robots.txt` that says the same thing, so the two files cannot disagree.
- A canonical URL per page, from the site's real domain rather than whatever host answered.
- `ld+json` describing the business: what it is, where it is, when it opens, what it sells.
- Breadcrumbs that a visitor can see, matching the `BreadcrumbList` in the structured data. Markup describing navigation that is nowhere on the page is the exact thing Google's guidelines warn about.

> Every one of those comes from the same site definition the page is rendered from. There is no second source of truth to drift.

## Words a person would actually type

The part no amount of engineering supplies. A title that reads "Home - Welcome" is a wasted line in every search result the site ever appears in. A description that lists keywords is a wasted sentence.

So the generator is told the shape of the job in detail: the title is fifty to sixty characters, leading with what the business does and the town it does it in; the description is a hundred and fifty to a hundred and sixty and ends with a reason to click; every page owns one subject, because two pages aimed at the same phrase compete with each other and both lose.

## Something that works without JavaScript

Generated sites here are server-rendered, with no client-side routing. It is an unfashionable choice and an easy one: it is why the pages are fast on a phone on a bad connection, why every one of them is crawlable, and why a form still submits when a script fails to load.

The interactive parts - a menu, a gallery, a map - are progressive. They improve a page that already worked.

## Readable by an agent, too

Increasingly the visitor is not a person. Every page of every site we generate is available as markdown: add `.md` to the path, or send `Accept: text/markdown`. Each site publishes an `llms.txt` listing its public pages, and its `robots.txt` names the AI crawlers explicitly instead of leaving them to guess from a wildcard.

For a business that wants to be _recommended_ when somebody asks a model where to get a sourdough loaf in Kraków, being readable is the whole game.

## What this does not include

No invented facts. Not a review, not a registration number, not an award, not a price the owner never gave us, not a photograph of a team that does not exist. A generated site is a draft of a real business's public face, and a plausible-sounding invention on it is worse than an empty section.

That constraint costs us the odd impressive-looking demo. It is not close to a difficult trade.
