
Short answer: To add an RSS feed to a VuePress 2 site, install the official feed plugin, give it the public address of your site, and make sure every article has a title, a description and a date in its front matter. The next build writes an RSS file, an Atom file and a JSON feed into the output folder. Check that the links inside the feed are absolute, validate the file, publish it, and connect its address to an auto-poster so that every new page is shared on your social networks without extra work.
VuePress is a static site generator built on Vue. Teams use it for documentation, changelogs and small blogs, and all of those publish content that readers want to follow. A feed is the simplest way to let people and tools follow it. The official feed plugin does most of the work, but the result is only as good as the information you give it: a missing site address produces relative links, a missing date puts items in the wrong order and a changed file path creates a second copy of a post. This guide shows the setup, the settings that matter and a test routine that you can repeat before every release.
VuePress 2 keeps official plugins in separate packages. Add the feed plugin to the development dependencies of your project with the package manager that you already use.
npm install -D @vuepress/plugin-feedThe plugin runs at build time. It reads the pages that VuePress has already processed, picks those that qualify as articles and writes the feed files next to the rest of the output. Nothing runs in the browser, and the feed is a plain static file that any web server can deliver. If you also publish a documentation site built with another tool, the same idea applies; see the Docusaurus feed guide και the VitePress feed guide for neighbouring setups.
Open the configuration file of your site and register the plugin. The only option that you must set is the host name, because the plugin needs it to build absolute links. The other options choose which formats are written and how many items they hold.
// docs/.vuepress/config.ts
import { defineUserConfig } from "vuepress";
import { feedPlugin } from "@vuepress/plugin-feed";
export default defineUserConfig({
lang: "en-US",
title: "Example Docs",
description: "Guides and release notes",
plugins: [
feedPlugin({
hostname: "https://example.com",
atom: true,
rss: true,
json: false,
count: 20,
}),
],
});The host name must be the real address that visitors use, including the https scheme and without a trailing path. If your site lives in a sub-folder, set the base option of VuePress as well, and the plugin will place the links under it. Keep the item count modest. Twenty items are enough for a reader or an auto-poster, and a short file is fetched quickly. Check the option names against the documentation of the plugin version that you installed, because plugin options change between releases.
A feed item needs a title, a date and a summary, and VuePress takes them from the front matter at the top of each Markdown file. Write them on purpose instead of letting the build guess.
---
title: Version 2.4 release notes
date: 2026-10-30T08:00:00Z
description: New search filters, faster builds and two fixes for the sidebar.
category:
- Releases
tag:
- changelog
---
The first paragraph of the page starts here.The date deserves care. A full timestamp with a time zone sorts correctly and cannot be read in two ways. A date without a time is allowed, but two articles published on the same day then have no clear order. The description becomes the summary that an auto-poster may use as the post text, so write one or two complete sentences and avoid cutting a paragraph in the middle of a word. Pages without a date are left out of the feed by default, which is the right behaviour for ordinary documentation pages and a common reason why a new blog post seems to be missing.
A documentation site holds hundreds of pages, and most of them are not news. You do not want a configuration page from three years ago to appear as a new item. The plugin lets you filter the pages with a function, so you can keep only those in a blog folder or only those that carry a category.
feedPlugin({
hostname: "https://example.com",
rss: true,
atom: true,
count: 20,
filter: ({ frontmatter, filePathRelative }) =>
Boolean(frontmatter.date) && filePathRelative?.startsWith("blog/"),
}),The filter above keeps only pages with a date that sit in the blog folder. Whatever rule you choose, keep it simple and write it down, because the person who adds a page next year must know why it does or does not appear. The effect on duplicates is also important: if a page moves from one folder to another, its address changes, and that is a new item for any tool that stores addresses. The causes and cures are covered in why a feed auto-posts the same article twice.
| Output | Typical file | Use |
|---|---|---|
| RSS 2.0 | rss.xml | The format that most readers and auto-posters expect |
| Atom | atom.xml | An alternative with a stricter definition of dates and identifiers |
| JSON Feed | feed.json | Useful for scripts, not needed for social sharing |
| Location | Build output folder | Served from the root of the site |
Turn on the formats that you will actually use. Publishing three files that nobody reads only creates three things to maintain, so many sites keep RSS and Atom and switch the JSON file off. Run the build and open the output folder to see the real file names for your version.
Build the site and serve the output folder with any static server. Then look at the file instead of assuming that it is right.
npm run docs:build
npx serve docs/.vuepress/dist
curl -s http://localhost:3000/rss.xml | head -40The local server may use another port and a different content type from your production server, so a local test shows only the content of the file. The headers have to be tested after deployment. See the guide to the feed content type header for what a correct response looks like.
A practical habit is to treat the feed as part of the release. When you add a page, open the generated file, find the new item and read it the way a stranger would: is the title clear without the surrounding site, does the summary make sense on its own and does the link lead to the right page? Two minutes of checking after a build costs far less than correcting a post that has already been shared on several networks.
Static sites have a particular problem with time. The feed is created when you build, and nothing happens between builds. If you write a page with a date in the future and build today, the page may appear in the feed today, long before its date. Some readers hide such an item and others show it, and an auto-poster will share it immediately. Decide on one rule: either keep future pages out with the filter, or only build on the day when the page should go live. Draft pages should carry a marker in the front matter and be removed by the same filter. For the effect of old dates see the guide to feed order and backdated posts.
People and tools should not have to guess where the feed is. Check the head of a built page: the plugin normally adds link elements that announce the feeds, and you can confirm this by viewing the source of the page. If they are missing in your version, add them through the head option of VuePress, with the relation set to alternate, the type set to the RSS media type and the absolute address of the file. The full explanation is in the guide to feed autodiscovery.
Most VuePress sites are deployed to a static host or an object store behind a content delivery network. After the first deployment, request the live file and compare it with the local one.
curl -I https://example.com/rss.xml
curl -s https://example.com/rss.xml | grep -c "<item>"The first command should return a 200 status and a content type that names XML. The second counts the items and should match the number that you configured, or the number of qualifying pages if you have fewer. Then paste the address into the W3C Feed Validation Service and fix every error. A cache in front of the site may keep an old copy of the feed for a while after each deployment, so check how long it holds files; a feed that lags behind your site delays every social post. A longer routine is in the feed validation guide.
PostRSS has been publishing RSS and Atom feeds to social networks since 2014. Paste the address of your feed, connect your accounts and choose how each post is built from the title, the description or the page title. PostRSS checks the feed as often as every minute and shares each new entry, with its image and link, to the channels you choose among 66 supported networks, messengers, team chats and blogs, including LinkedIn, X, Bluesky, Mastodon and Telegram. Keyword filters, UTM parameters and posting windows let you tune each channel. See the PostRSS features page and the plan limits on the pricing page. More developer guides are under the Technical Guide tag.
A VuePress feed is mostly configuration: the official plugin, the real host name, front matter with a date and a description, a filter that keeps only real articles and stable file paths. Build the site, read the XML, validate it, deploy it and test the live address, because the cache and the server decide what outsiders receive. Once the feed is reliable, connect it to an auto-poster and every page you publish reaches your readers and your social channels without anyone copying links by hand.
No. VuePress does not create a feed by itself, but the official feed plugin writes RSS, Atom and JSON files during the build once you set the host name of your site.
The usual cause is a missing date in the front matter, or a filter that does not match the folder of the page. Add a full date and check the rule that selects pages.
Yes. The feed is a static file created at build time, so it changes only when you build and deploy again. Most hosts rebuild automatically when you push a change.
RSS 2.0 is the safest choice, and Atom also works. Use the address of the file as it appears on your live domain.
Yes. PostRSS reads any valid RSS or Atom address that is reachable without a login. Paste the address, connect your channels and new pages are shared as soon as they appear.
What changed in the networks, what broke, and how to fix it before it costs you reach.
Από την Internet Solutions, την ομάδα πίσω από το PostRSS. Κάθε προϊόν σάς εξοικονομεί χρόνο με τον δικό του τρόπο.