Modern Car Blog

· 4 min read

An automotive blog on headless WordPress and Astro, ready to work with AI over MCP.

An automotive blog on headless WordPress and Astro, ready to work with AI over MCP.

At a glance

Problem
Repair and modification write-ups live in forum threads that disappear with the forum, and load slowly while they last.
What was built
A bilingual automotive blog: WordPress kept as the writing tool, and a statically generated Astro site as the thing readers actually load.
My role
The whole project — the headless architecture, the frontend, the WordPress side and the publishing workflow.
What makes it interesting
The panel a writer uses and the site a reader loads are two separate systems. The public site is plain HTML files, so there is no database on it to attack.
Result
The starting point of the polo.blue ecosystem, which now also includes the parts catalog and a used-parts classifieds page.
Today
The site keeps moving: a new design shared with the catalog at the end of 2025, then a redesigned mobile menu, a refreshed search and a move to Cloudflare Workers in 2026. The panel is also ready to work with an AI agent over MCP. Details in the redesign section and the MCP section.

What polo.blue is

Polo.blue is an automotive blog, mostly about the Volkswagen Polo: modifications, repairs, maintenance, wiring diagrams and part-number tables. Posts are written in WordPress, and readers get static pages built with Astro, Vue 3 and UnoCSS from content the build pulls over the REST API.

Technologies used

Astro

Builds the blog into static HTML files at build time. JavaScript reaches the browser only with the components that need it, and Astro’s built-in router handles moving between pages.

Vue 3

The interactive parts of the page are Vue components inside Astro, among them a bar with information about the language editions and the comments with their form, which load asynchronously.

UnoCSS

Generates at build time only the classes the site actually uses, so the stylesheet stays small.

WordPress

A headless WordPress where the posts are written. It has the block editor, the media library and an MCP server the AI agent works through. The public site is prebuilt files.

WordPress REST API

The frontend pulls content over the WordPress REST API, extended by my open-source Enhanced WP REST API plugin. A post response already carries its author, categories, tags and the featured image in every size, with relative URLs, so the build does not query the panel for each relation separately.

Progressive Web App (PWA)

The manifest lets the site be added to a phone’s home screen, and a service worker keeps visited pages in the browser cache for a day: on a slow connection it falls back to the cache after 3 seconds, and offline it uses the cache immediately. The search index is stored locally too.

Cloudflare

The site is served from Cloudflare Workers, with a small Worker in front that handles redirects and serves the WordPress media under the polo.blue address, so a reader never touches the panel. DDoS protection and the global CDN come with it.

Google Tag Manager

Loads Analytics and AdSense, so tracking and ad code change in the GTM panel, without a new build of the site.

Benefits of the stack

Performance:
Readers get ready-made HTML with no database query on each visit, and JavaScript loads only with the components that need it.

Security:
The pages themselves are static files: showing them takes no PHP and no database. WordPress runs separately, as a headless CMS.

Have a WordPress site and want the same result without a full rewrite? See the headless WordPress migration package — keep the admin, get a much faster and lighter frontend.

SEO:
Fast pages with clean HTML that search engines read without running JavaScript.

For readers:
The layout fits both phone and desktop. The built-in search runs with no backend at all, on an index built together with the site, so it answers instantly and never touches WordPress.

For developers:
The interactive parts are plain Vue components inside Astro, and one REST API with complete responses replaces separate queries for each relation.

The 2025 redesign and what changed since launch

The blog launched in 2023 and has not stood still since. At the end of 2025 I rebuilt the front: the home page turned from a list of posts into a magazine layout with large tiles, categories got their own covers and post counts, and a carousel of parts from the classifieds shop moved onto the home page. The hero, buttons and grid now come from my open-source Spoko Design System, the same one the parts catalog runs on, so the blog and the catalog read as one site rather than two projects from different years.

The dark theme the blog launched with is gone. With this many workshop photos, wiring diagrams and part-number tables, a light background simply reads better, and one polished theme is worth more than two average ones.

Before Now
GraphQL (WPGraphQL)
WordPress REST API extended with the Enhanced WP REST API plugin. Complete responses in one request and one plugin fewer to maintain.
A hand-rolled hero and post list
Jumbotron and grid from the Spoko Design System, shared with the parts catalog.
Astro 2
Astro 7, upgraded with each major release.
astro-i18next
Astro's built-in i18n. One dependency fewer, the same English and Polish split.
Netlify
Cloudflare Workers. The same provider as the CDN and DNS, plus a Worker that serves the WordPress media under the blog's own address.
Embedded Google search
Pagefind: an index built with the site and search in the browser, with no backend. It got a new interface in 2026.
Dark theme
One light theme, tuned for photos and tables.

The site is still being developed. In 2026 alone that meant a redesigned mobile menu, a new search interface and the hosting move, and more recently a Worker that serves the WordPress photos under the blog’s address. This case study describes a project I still run, not one I handed over and closed.

Editing WordPress through MCP

Keeping WordPress as the writing tool doesn’t mean every change has to be clicked through the editor by hand. WordPress 6.9 ships the Abilities API, and the official MCP Adapter plugin builds on it to expose a site to an AI agent over the Model Context Protocol. Out of the box the adapter exposes nothing that touches content, so I wrote a plugin with block-level tools for Gutenberg: find posts, read a post’s block outline, fetch and replace a single block, insert, delete, move and unwrap blocks, validate the structure and look up files in the media library. The agent works under its own Editor account and authenticates with an application password, not as me.

Every write carries a hash of the content it was based on, and it is refused if the post changed in the editor in the meantime. Before saving, the plugin also checks the result and refuses an edit that would leave the block structure broken. The tools that write have a dry run, and each change is an ordinary WordPress revision that rolls back with one click. On top of that there is a working rule: the agent proposes, I approve, and a published post changes only once I have said yes.

What it is useful for
  • New content The agent adds a section to an existing article, with sources and an embedded video, and translates it into the other language editions.
  • Tidying up It keeps numbering and cross-references in step and catches duplicated passages and broken links that are easy to miss on the page.
  • Restructuring It moves whole sections in the block tree without re-sending their text, so nothing can change on the way.

So the blog is ready to work with AI: the agent helps with editing, fact-checking and housekeeping, while the panel, the revisions and the final word stay with me. The agent works the same way in my custom CMS, except that there the MCP server has been built in from the start.

Conclusion

Since its 2023 launch the blog has rested on the same split: the author writes in WordPress, and readers get static pages built with Astro. In that time I have replaced the design, the hosting, the search and the way content is fetched, and the panel is now ready to work with AI over MCP.

The polo.blue ecosystem has grown around the blog: a full parts catalog and a classifieds page for used parts. See the VW Polo 6R parts catalog case study for the headless Astro + Laravel + Filament setup that powers catalog.polo.blue.

polo.blue after the 2025 redesign: a post, a category page and the home page on a phone
Back to portfolio