Until November 2026, brunzel.info was a WordPress blog. Next to it sat a separate site for my AI projects and two stand-alone project pages: three designs and three places to keep up to date. Now it’s all one website, and I no longer touch an admin panel. I tell Claude in a chat what should happen.
The idea: sign-off
All my projects work the same way. An AI produces something, and I check it and either sign it off or bin it. That’s exactly what the site looks like: a light table with contact sheets. Images sit in film frames, and decisions are marked next to them in grease pencil. A circle means signed off, a tick means done, a stroke means rejected. Each project has its own pencil colour: red for the music video, blue for NCC, green for Halle 77 Drive.
Headings are set in Anybody and body text in Literata. Both fonts are served from my own server, so nothing is pulled in from Google or anyone else.

No CMS, just a generator
The site is a small Python program that turns text files into finished HTML pages. There’s no database, no login and no plugins, so there’s nothing to hack and nothing to patch.
- Every post is a folder holding one Markdown file plus its images, videos and audio.
- Images are converted to AVIF and WebP in two sizes during the build.
- A post can sit in several topics: AI projects, tutorials, homelab, games, music, general.
- A post dated in the future only appears once that time has come.
- Everything exists in German and English. If the English version is missing, the page shows the German text with a note.
- Search and the RSS feed work without any third-party service.
The project sections read their data straight from the projects themselves. When I add a diary entry in the music video project, it shows up here after the next build.

Where the site lives
The source code sits in a private repository on GitHub. A Gitea instance on my Unraid server keeps a copy as a backup at home.
The site itself is served from a small Linux container on my Proxmox server. Caddy runs inside it as the web server, with a reverse proxy in front that takes care of HTTPS.
The container builds the site on its own:
- Every 15 minutes it checks GitHub for changes and rebuilds if there are any.
- Every night at 00:01 it rebuilds no matter what, so scheduled posts go live right at midnight.
- Each new version is fully checked first, every link and every image. Only then does the site switch over. If something fails, the previous version stays online.
How Claude helps
I don’t work on the site in an editor. I work in a chat with Claude. For example, I write “Update project Warum”. Claude then looks at what has happened in the project, writes a post about it in German and English and shows it to me. Once I approve, Claude puts it on GitHub, and fifteen minutes later it’s live.
To make that work the same way every time, there’s a skill for it: a fixed set of working instructions for Claude. It covers how a post is structured, which topics exist, how translations are done, and that nothing goes live without my okay.
Cheat sheet: telling Claude what to do
These sentences are all it takes in a chat inside the website project. Claude always shows me a draft first and only publishes after I say okay. I write in German, so the examples below are translations.
| I write | What happens |
|---|---|
| “Write a blog post about …” | A draft in German and English, with topics and a teaser. I attach images or point to the folder. |
| “Update project Warum” (or NCC, Halle 77 Drive, brunzel.info) | Claude checks what has happened in the project, updates the project page and writes an update post. |
| “Create a new project: …” | A new project page with its card in the projects overview. |
| “Translate every post that has no English version yet” | English versions, collected for review. |
| “Publish the post on 20 November at midnight” | The post gets that date and appears on its own. |
| “On the hardware page, change …” | The page gets updated. |
| “Publish right away” | Claude skips the review. Only to be used when I’m sure. |
| “What’s still on the to-do list?” | Claude reads out the open items. |
Good to know:
- After my okay, a change is live within 15 minutes.
- For project folders on my PC, the Claude app has to be running on that PC.
- Every image gets a description. If I don’t provide one, Claude suggests one.
- Claude doesn’t make things up. If something is missing, Claude asks.
Moving out of WordPress
The move from WordPress ran through an import script directly on the server: every post and page, with images at full size, plus videos and audio. Old addresses permanently redirect to the new ones, so links from elsewhere keep working. Embedded YouTube videos are now plain links, so reading a post doesn’t set any third-party cookies.
Still to come
- English versions of all posts
- Legal notice and privacy policy
- Project figures that update themselves

