Astro SEO Blog · Part 2

I Let Claude Build My SEO-Ready Astro Blog From Scratch

Instead of following a tutorial, I gave Claude one prompt and watched it install Astro, wire up Tailwind, MDX, RSS, and a sitemap, push to GitHub, and deploy to Vercel — all in one session.

· 3 min read
Contents
  1. The Prompt
  2. What Claude Installed
  3. What Claude Built
  4. Push to GitHub
  5. Deploy on Vercel
  6. The Result
  7. Why This Works for SEO
  8. Write Your First Post

In part 1 I explained why I moved from Lovable.dev to Astro for SEO. Lovable builds React apps that serve empty HTML to Googlebot — Astro builds static HTML that Google can read instantly, no JavaScript required.

This post is part 2: actually building the blog. But instead of walking you through every command manually, I handed it to Claude.

The Prompt

One prompt. That’s it.

Build me an SEO-ready Astro blog from scratch with Tailwind, MDX, RSS feed, sitemap, and fonts

From that, Claude installed everything, built the full project structure, and had a working blog ready to deploy. Here’s exactly what happened.

What Claude Installed

Claude ran the following commands in sequence:

npm create astro@latest astro-demo

When prompted:

  • Template: Empty
  • TypeScript: Yes, strict
  • Install dependencies: Yes
  • Initialize git repo: Yes

Then added the integrations:

npx astro add tailwind
npx astro add mdx

Then fonts and RSS:

npm install @fontsource-variable/inter @fontsource/jetbrains-mono
npm install @astrojs/rss

No @astrojs/sitemap — it crashes on Astro 4.16+. Claude built a manual sitemap endpoint instead.

What Claude Built

The full project structure:

src/
├── components/       # reusable UI pieces
├── content/
│   └── posts/        # your .md/.mdx files go here
├── layouts/
│   └── BaseLayout.astro   # html shell, meta tags, JSON-LD
├── pages/
│   ├── index.astro        # homepage, lists all posts
│   ├── posts/[slug].astro # dynamic post pages
│   ├── tags/[tag].astro   # posts by tag
│   ├── rss.xml.ts         # RSS feed endpoint
│   └── sitemap.xml.ts     # manual sitemap
└── styles/

Every post page gets full SEO automatically — <title>, <meta name="description">, canonical URL, Open Graph tags, and JSON-LD Article schema. All baked into BaseLayout.astro so you never have to think about it.

Push to GitHub

Claude handled this too:

gh repo create astro-demo --public --source=. --remote=origin --push

One command. Creates the repo on GitHub, links it as origin, and pushes everything.

Deploy on Vercel

Once the repo was on GitHub, I went to vercel.com, clicked Add New Project, imported the astro-demo repo, and hit Deploy. Vercel detects Astro automatically — no config needed.

Within a minute the site was live at a Vercel URL. No custom domain needed for a demo.

The Result

A fully working, SEO-ready blog — deployed on Vercel, live on the internet — from a single prompt. The whole session took just over 7 minutes.

Live demo: astro-demo-theta-tawny.vercel.app

Why This Works for SEO

When Google crawls your Astro blog it gets real HTML — your title, your content, your structured data — on the first request. No JavaScript to run, no second crawl wave, no waiting days to get indexed.

Compare that to a CSR React app where Googlebot sees an empty <div id="root"> and has to come back later to render it.

Astro’s build step does the heavy lifting once at deploy time. Every visitor and every crawler gets the same fast, complete HTML.

Write Your First Post

Drop a .md file in src/content/posts/:

---
title: "My First Post"
description: "A short description for Google."
publishDate: "2026-04-27"
tags: ["astro", "seo"]
draft: false
---

Your content here.

Push to GitHub. Vercel redeploys automatically. Done.

Ted

Web Developer · SEO Operator · Security

I build web applications, run SEO campaigns, and dig into offensive security on the side. Most of what ends up here started as something I was already doing — agentic workflows, local LLMs, automation systems. This blog is the documentation layer.