sitereal
v0.1

Content & media

SEO & site settings

Titles, descriptions, structured data, robots.txt and sitemap.xml — all derived.

What a page says to a machine is derived, never stored twice. Titles, robots directives, structured data, robots.txt and sitemap.xml all come out of the site settings plus the page — and a value nobody filled in is not emitted, because an empty <meta> is worse than none.

Site

SettingUsed for
Site namethe document title, og:site_name, structured data
Languagethe html lang attribute
Tagline / descriptionthe default meta description
Regionog:locale, where a network wants de_DE rather than de
Theme colourthe browser UI on mobile
Production URLcanonical links, og:url, the sitemap, structured data
Favicon, Logo/public paths; the logo also goes into structured data

Everything that needs an absolute address waits for the production URL. Set it before you publish.

Titles

One template, not a suffix retyped into every page:

%s — %site        →  "Pricing — Harbour Studio"

%s is the page's own title and %site the site name. The homepage rarely wants to be called "Home", so it has its own field. Renaming the site — or carrying a preset into another project — cannot leave the old name in every tab.

Per page

A page carries only the three things that are about it: its title, its description and its share image, plus a hidden from search switch that emits noindex, nofollow and drops it from the sitemap. Everything else answers a question a page cannot.

Structured data

Fill in the publisher — name, kind (organisation, local business or person), email, phone, address — and sitereal emits the JSON-LD for it alongside a WebSite node. A shop with an address is a local business; a portfolio is a person. Leave it empty and nothing is emitted.

robots.txt and sitemap.xml

Real files under public/, rewritten on every build and removed again when you switch them off:

robots.txt
# generated by sitereal
User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

They are only ever touched while they still carry the generated by sitereal marker. Take one over by hand — delete that line — and sitereal will never write it again.

You can append your own rules (a path to keep out of search, a crawler to turn away) and add verification tokens for Google, Bing, Yandex and Pinterest.

Where head tags come from

New head tags go through the layout's head slot, from the emitter — never into src/layouts/PlainBase.astro. That layout is copied into the project at scaffold time and is your file from then on, so a tag added to our copy would never reach a project made last month.

<Base title="Pricing" description="What it costs.">
  <Fragment slot="head">
    <meta name="robots" content="index, follow, max-image-preview:large" />
    <meta property="og:locale" content="en" />
  </Fragment>
  …
</Base>

If you want a tag on every page that sitereal does not emit, add a snippet with the head placement.

The cookie banner

An optional, dependency-free consent banner: text, an accept label, an optional decline label, a link to your policy, and where it sits. It is markup and a small script, emitted like anything else — not a third-party widget.