11 Oct 2026
9 min read
How we built an SEO-ready .NET website without writing a line of code
A practical guide to how plan9.co.uk went from a Claude Design prototype to a live, prerendered site on IIS in just a few days, scoring 100 for SEO, with every line of code written by Claude.
In just a few days, the site you’re reading went from a Claude Design prototype to a live, prerendered ASP.NET Core website on IIS. It scores 100 for SEO and 91 for mobile performance in Lighthouse. Nobody on our team typed a line of code. Every line of C#, MSBuild and Node was written by Claude Cowork.
This is the guide we wish we’d had at the start. If you run your sites on Windows, IIS and .NET and want to use Claude to build a fast, search-friendly website, this is how we did it, what went wrong and what we’d do again.
This is the how-we-did-it article. For why we built our own site this way, read The cobbler’s children go barefoot.
Key takeaways
You don’t need to code, but you do need to know the landscape
Claude wrote every line of code. Our job was to describe what we wanted, review the results and test them. That only works if you understand the tools involved, such as Visual Studio, IIS, Cloudflare, DNS, email delivery and Google Search Console, well enough to spot when something isn’t right. Think of it as directing the build rather than doing it.
Two Claudes, two lanes
The most useful decision we made was splitting the work between two tools and keeping each in its own lane.
The stack
We started with an empty ASP.NET Core project whose only code said “Hello World!”, and copied the Claude Design export into wwwroot.
Step 1: serve the static site
The first fix was simple. The app wasn’t serving wwwroot, so every visit showed “Hello World!”. Claude Cowork switched on static files so each folder’s index.html loads at a clean address like /work/alliance-wine/, set sensible caching, hid working files such as design notes and build scripts, and added an HTTPS redirect for production.
Step 2: a working contact form
Claude Design defined the form and wrote a short contract describing it. Claude Cowork built the server side to match.
Step 3: a real 404 page and redirects
Missing pages now show our designed 404 page with a genuine 404 status, so search engines don’t index broken links. Old addresses from the previous site redirect permanently to their new homes, and adding a redirect is one line in a list.
Step 4: prerendering for SEO
This was the most important step. Claude Design pages are templates filled in by JavaScript in the browser. Google copes, but Bing, LinkedIn previews, AI crawlers such as ChatGPT, Perplexity and Claude, and most SEO tools saw raw template placeholders in curly brackets instead of headings and text.
Step 5: one-click publishing
Updating the site is now two actions:
The extra steps run automatically on every Release build, so normal debugging stays fast. The only one-off setup is installing Node.js in the development environment and letting the first publish download Playwright’s browser.
Step 5a: the team alternative, Git and a runner
Publishing from Visual Studio suits a small team. If several people work on the site, publish to a Git repository instead, and set up a runner on your server, such as a GitHub Actions or GitLab self-hosted runner. Each time changes are pushed, the runner builds, prerenders and deploys the site automatically, so everyone works from the same source and every release is recorded.
Step 6: tuning with Lighthouse
We ran Lighthouse in an incognito window and pasted the report into both tools. Claude Design fixed the content side: the page language, a home page H1 and image sizes. Claude Cowork fixed the server side: long-term caching with versioned file names, a non-blocking main script, React served from our own server, Google Tag Manager loading after the page, and minified scripts roughly half their original size.
Tips if you want to do the same
What this means for our clients
This site is deliberately simple: a small number of pages, edited by the people who built it. For clients who need editors, workflows and integrations, Umbraco is still the right answer. But the same approach, with AI doing the routine work and experienced people reviewing every change, now runs through our client projects too. It’s faster, it costs less, and it leaves our developers more time for the problems that need them.
If you’d like help building something similar on your own .NET and IIS setup, get in touch.