SEO & AI·5 min read·

How do I automatically generate dynamic XML sitemaps and RSS feeds for a headless blog?

VeloCMS generates /sitemap.xml and /feed.xml on every request with no setup or toggle; the sitemap refreshes on publish and is CDN-cached for an hour.

To automatically generate dynamic XML sitemaps and RSS feeds in VeloCMS, you do... nothing. There is no plugin to install and no setting to flip. Your site serves /sitemap.xml and /feed.xml out of the box, and both routes are built from your live PocketBase content every time they are requested.

Why do dynamic feeds matter for a headless setup?

Running a headless blog sounds super futuristic until you realize Google still needs a literal map to crawl your content. Back in the clunky WordPress days, you'd rely on bloated, expensive plugins that slowed your site to a crawl just to spit out an RSS link. VeloCMS ditches all that baggage entirely. Because we run on a modern, AI-first Next.js architecture, your frontend is blazing fast and vastly more secure by default. But raw speed doesn't mean much if search engines can't actually find your newest articles. Dynamic sitemaps act like a real-time megaphone for your brand. Whenever you drop a new piece of content, the sitemap updates instantly to wave down Google's crawlers. Meanwhile, your RSS feed shoots the raw text straight out to your loyal subscribers and syndication networks so nobody misses an update.

How does the PocketBase backend handle these constant updates?

It's honestly pretty slick how this works under the hood. PocketBase is insanely lightweight and incredibly cheap to host, acting as the perfect, snappy backend for your blog. Instead of generating a heavy static file that hogs precious server space, VeloCMS constructs your sitemap and feed URLs on the server the moment a reader or a search bot requests the link, so they always get the freshest version of your site's structure. Publishing a post also busts the cached sitemap right away, so the new URL shows up immediately. On top of that, the sitemap response already carries a one-hour cache header with a day of stale-while-revalidate out of the box — there is no caching configuration for you to tune, and aggressive crawlers never see a sitemap older than your last publish.

Can I control which pages actually end up in the feed?

Your sitemap and RSS feed only include posts whose status is Published, so drafts and works in progress never leak into them. There is no per-post "hide from search engines" checkbox in the editor — the way to keep a specific post out of the sitemap, the feed, and search results is to simply not publish it, or to flip a published post back to Draft from the post's settings. Pages like your privacy policy or author bio aren't in the blog feed to begin with; the sitemap lists your public pages and published posts. If you are experimenting with a massive AI-generated content cluster, keep those posts in Draft (or Review) status until they are fully polished and ready for the spotlight.

Getting your content out into the wild shouldn't feel like pulling teeth. We built VeloCMS to easily outrun the older, bloated alternatives so you can just focus on writing (or letting the AI help you write!) rather than fighting with broken backend configurations. With zero setup on your side, the entire Next.js and PocketBase ecosystem works quietly in the background to keep your audience and search engines perfectly in the loop.