If your software only has a web interface, your customers will automate that interface. I've done it twice now. Why make them?
Joost.blog
• Joost de Valk
Joost de Valk - internet entrepreneur, Group Head of AI & Growth at Your.Online, founder of Yoast
Joost.blog
• Joost de Valk
If your software only has a web interface, your customers will automate that interface. I've done it twice now. Why make them?
Joost.blog
• Joost de Valk
I built a Chrome extension to keep XML sitemaps readable once browsers drop XSLT. It turned into a sitemap checker, and it taught me that almost nobody ships a clean sitemap. Not Adobe, not Anthropic, not GOV.UK, not Manchester City, not X, and not even Semrush.
Joost.blog
• Joost de Valk
Your XML sitemap still helps search engines find your pages. The thing going away is the browser feature that makes it look pretty.
Joost.blog
• Joost de Valk
MCP 2026-07-28 shipped today, and the headline change is a stateless core: no more initialize handshake, no more sessions. That's the exact shape I built joost.blog's MCP endpoint in back in May, when it was a tolerated corner of the spec rather than the spec itself. Here's what changed in my hand-rolled endpoint, why most of an MCP server on a static site can now be CDN, and why my agent skills now ship over MCP too.
Joost.blog
• Joost de Valk
I've spent most of my working life on websites. So the question I keep coming back to lately is an existential one for my whole field: what even is "the website" five years from now? Several things are true at once, and some of them pull in different directions.
Joost.blog
• Joost de Valk
Dries Buytaert split open source into license-only and stewarded. It's a useful distinction, but it misses a more dangerous one. Stewardship tells you whether someone cares for the code. It doesn't tell you whether that same someone can cut you off from it.
Joost.blog
• Joost de Valk
Two standards for the agentic web shipped within a week, both with Google's fingerprints, neither referencing the other, one not even agreeing with itself about a field name. They turn out to connect almost perfectly: OKF packages a knowledge base, ARD makes it discoverable. I adopted both on specification.website and filed the gaps they left.
Joost.blog
• Joost de Valk
Today I'm happy to share that Progress Planner is joining Your.Online. And it's not just Progress Planner: Marieke, our whole team, and I are joining too.
Joost.blog
• Joost de Valk
Lovable announced this week that every new project on its platform now builds on TanStack Start. That's 100,000 new apps a day riding on open-source infrastructure Lovable doesn't fund.
Joost.blog
• Joost de Valk
This week I shipped an MCP so AI agents could read one of my sites. The same week, one of my hosts shipped a CAPTCHA to keep them out. Only one of us is reading the room.
Joost.blog
• Joost de Valk
I shipped specification.website, a platform-agnostic specification of what every good website should ship. Because two recent PRs taught me that patches fix one platform at a time, and the open web has no shared target.
Joost.blog
• Joost de Valk
SUSE and a coalition of European open source companies are asking the EU to make Open Source First a binding procurement principle ahead of the June 3 Tech Sovereignty Package. They're right. But after FAIR, I know procurement preference alone recreates the same lock-in problem at EU scale. Sovereignty needs both the demand side and the supply side.
Joost.blog
• Joost de Valk
I retrofitted this blog to be agent-ready, then built cocktail.glass from an empty repo with AI agents as a first-class audience from the first commit. Here's what changes when agent-ready is a design input instead of a renovation: one source of truth, Markdown negotiation, a stateless MCP server, and discovery in every response.
Joost.blog
• Joost de Valk
In the 24 hours before I started writing this post, Plausible told me joost.blog had 254 visitors. My server logs told me 536 fetches over the same window came from on-demand AI bots like ChatGPT-User and Claude-User. Those bots only fire because a human, in real time, asked an AI a question. Is the real number 254, 790, or something else? I genuinely don't know, and I think that's the more interesting story.
Joost.blog
• Joost de Valk
Google killed FAQ rich results entirely on May 7, 2026. FAQ schema spam killed it once in 2023, and finished it off this month. The "FAQ schema is critical for GEO" advice now flooding LinkedIn is starting the same cycle in AI search.
Joost.blog
• Joost de Valk
Why I redesigned joost.blog: getting rid of AI-generated post imagery, building the plumbing for longer pieces, and the typography rabbit hole that landed on Klim's Domaine and Pitch.
Joost.blog
• Joost de Valk
Gutenberg 23.1 ships a native UI for custom post types. Good. But CPTs without custom fields are just renamed posts, and the half Core still hasn't answered is the half that matters.
Joost.blog
• Joost de Valk
Domain migrations are asymmetric bets: the upside has a ceiling, the downside doesn't. Here is how to plan, prepare, and execute one without losing what you already have.
Joost.blog
• Joost de Valk
I ran joost.blog through Cloudflare's isitagentready.com and got a 25. Here's what I built to close the gaps: markdown content negotiation, Content Signals, Link headers, an API catalog, an agent skills index, WebMCP tools, and a server-side MCP endpoint. Also: where the scoring gets it wrong.
Joost.blog
• Joost de Valk
Open source spent thirty years winning an argument about cost. AI is about to make that argument irrelevant. Whether open source can win the argument that replaces it (about agency) is an open question. The point of this post is to be honest about why.
Joost.blog
• Joost de Valk
Astro's ClientRouter is a solid abstraction for complex apps. For a simple blog, it turned out to be a workaround for things the platform now does natively — and it was quietly breaking iOS Safari's Reader Mode.
Joost.blog
• Joost de Valk
Agent Skills install as loose folders. There's no npm, no registry, no daemon checking for updates. I shipped a version-check pattern, published it, and got corrected on LinkedIn. Here's what I learned and what replaced it.
Joost.blog
• Joost de Valk
The SEO Framework analyzed 180,000 AI bot requests and found zero llms.txt lookups. Their conclusion: not worth implementing. That conclusion reveals a misunderstanding of how web standards work, and a willingness to only pick sides after the debate is settled.
Joost.blog
• Joost de Valk
In 2008 I wrote "WordPress SEO: the definitive guide." Eighteen years later, this is the Astro version. The full SEO stack: linked JSON-LD graphs, per-collection sitemaps, auto-generated OG images, IndexNow, schema endpoints for agent discovery, and why keyphrase optimization matters less than you think.
Joost.blog
• Joost de Valk
I've been arguing that the next open web needs machine-readable architecture. So I built a piece: seo-graph, a schema.org JSON-LD graph engine that now powers four sites and a CMS plugin. Built in a single session with Claude Code.
Joost.blog
• Joost de Valk
Anil Dash calls it the endgame for the open web, and he's right. But the structural collapse has already started. The indie web is mostly gone, the winners have already left, and defense alone won't fix it. The question isn't how to protect what remains. It's what to build next.
Joost.blog
• Joost de Valk
WordPress's deepest problems aren't cosmetic, they're architectural. The responses to EmDash from Matt Mullenweg, Hendrik Luehrsen, and Brian Coords crystallize what needs to change: the data model, content storage, and plugin permissions.
Joost.blog
• Joost de Valk
Cloudflare just launched EmDash, a CMS designed for how we actually build in 2026: AI agents, structured content, edge deployment. Here's why it matters.
Joost.blog
• Joost de Valk
I built an AI-powered Q&A feature that lets you ask questions about anything I've written. Here's how it works, and why I built it on Cloudflare Workers AI.
Joost.blog
• Joost de Valk
For twenty years, wanting a website meant needing a CMS. That's no longer true. The real question people ask now is simpler: how do I get my content on the web?