All posts

How VoidCraft handles SEO without a CMS

Sitemaps, RSS, robots.txt, llms.txt, structured data and Open Graph — here's everything that's wired up for you out of the box.

Plenty of themes look good. Fewer are actually found. VoidCraft treats search-engine optimization as a first-class concern — not a plugin you bolt on later.

Here’s the full picture of what ships ready to go.

A sitemap that builds itself

Every time you run npm run build, the @astrojs/sitemap integration crawls your routes and emits a sitemap-index.xml. The 404 page is excluded automatically. Submit it to Search Console and you’re done.

An RSS feed for the blog

Readers and aggregators can subscribe at /rss.xml. The feed is generated from your Markdown frontmatter, so it stays in sync without any manual work.

robots.txt and llms.txt

Two small but important files live in public/:

  • robots.txt tells crawlers what they can access and points them to your sitemap.
  • llms.txt is the emerging standard for describing your site to AI assistants and language models.

Both are plain text — edit them freely.

Structured data, everywhere

Each page emits JSON-LD for WebSite and Organization. Blog posts add BlogPosting, and the FAQ section emits FAQPage markup that can earn you rich results in search.

<script type="application/ld+json">
  { "@type": "BlogPosting", "headline": "…" }
</script>

Social cards that look sharp

Open Graph and Twitter Card tags are generated for every page from your config and frontmatter, so links unfurl beautifully in Slack, X, LinkedIn and iMessage.

Semantic, accessible structure

  • Exactly one <h1> per page, with a logical heading hierarchy below it.
  • A skip-to-content link and visible focus styles.
  • Landmarks (<header>, <main>, <footer>, <nav>) on every page.

Speed is SEO too

Because Astro ships static HTML with almost no JavaScript, your Core Web Vitals stay green — and fast sites rank better. Fonts are self-hosted, critical CSS is inlined, and images use responsive srcset.

The result: a site that’s easy for humans, search engines and language models to understand. No CMS required.