
Short answer: To publish a feed from a Jekyll site, add the jekyll-feed gem to your Gemfile, list it under plugins in _config.yml, set the site url, title and description, and run a build. The plugin writes an Atom feed to /feed.xml with your newest posts. Raise posts_limit if you publish often, add the feed_meta tag to your layout so tools can discover the feed, choose between full content and excerpts, test the built file with curl and a validator, and give the public address to an auto-poster so new posts are shared automatically.
Jekyll is one of the oldest and most widely used static site generators, and it is the engine behind a large share of project blogs and personal sites, including sites hosted on GitHub Pages. A Jekyll site is rebuilt from markdown files and templates, so a feed has to be produced during the build. The official jekyll-feed plugin does that with almost no configuration, which makes it one of the first things a new Jekyll blog should have. This guide walks through the setup, explains the options that matter, covers the traps around the site address and future-dated posts, and ends with the checks that keep the feed dependable once readers and auto-posters rely on it.
A static site has no interface that outside tools can query, so a feed is often the only machine-readable list of what is new. Readers who follow it receive every post in order, search engines and aggregators find new pages sooner, and an auto-poster such as PostRSS can share each new post on social networks within minutes of publication. For a blog that is updated by one or two people, that removes a task that otherwise tends to be forgotten.
If you only need to locate the feed that your site already produces, read how to find your Hugo, Jekyll or Eleventy feed. If you are comparing generators, the same ideas are covered for Hexo, Zola та Pelican.
Add the gem to your Gemfile, inside the group used for Jekyll plugins if you have one, and then list it in the configuration file. Older versions of Jekyll used a key called gems instead of plugins, so check which version you run.
# Gemfile
group :jekyll_plugins do
gem "jekyll-feed"
end
# _config.yml
plugins:
- jekyll-feedRun bundle install once to fetch the gem. If you build on GitHub Pages without a custom workflow, the plugin is already available there, and listing it in the configuration is enough.
The plugin reads a few ordinary settings from your configuration file. Without them the feed still builds, but it may point to the wrong addresses or carry an empty title.
# _config.yml
title: Example Journal
description: News and guides from Example Journal.
url: "https://example.com"
baseurl: ""
author:
name: Example Journal
feed:
posts_limit: 20
excerpt_only: falseThe url value is the most important. The plugin uses it to build absolute links, and an auto-poster fetching your feed from outside needs them. Do not include a trailing slash, and do not put a path in it; if the site lives in a subfolder, set that in baseurl. The title and description fill the header of the feed. The author is used for entries that have no author of their own, and you can override it in the front matter of a post. By default the plugin includes the ten newest posts, so set posts_limit if you publish several items a week or want readers and tools to see a longer history.
Jekyll takes a post’s date from the start of its file name, and you can add a time and a time zone in the front matter. The feed uses that date for publication, and an auto-poster uses it to decide what is new. Two settings are worth knowing.
Never run builds with the option that includes future posts on the production site, because an auto-poster would share an article before it exists on the website.
# _posts/2026-10-27-hello-jekyll.md
---
title: "Hello, Jekyll"
date: 2026-10-27 09:00:00 +0000
description: A short note on how this site publishes new posts.
image: /assets/hello-jekyll.png
---
The first paragraph of the post goes here.The plugin uses the title, the date, the excerpt, the categories and the tags that Jekyll generates, and it reads a few optional values from the front matter: an image that represents the post, an author and a short description. Give every post a description of one or two sentences. If it is missing, readers and auto-posters see only the title and, depending on your settings, the beginning of the content. An image helps an auto-poster attach a picture to each post; use an absolute path that resolves on your real domain.
The plugin generates an Atom feed, not an RSS 2.0 file. Atom is a mature, well-specified format, and every modern feed reader and auto-poster understands it, including PostRSS. If a tool you use insists on RSS, check whether it accepts Atom first; the differences are explained in Atom or RSS: does it matter for auto-posting. The address of the feed is /feed.xml, and the .xml extension is a normal choice for Atom.
If you already publish a feed at another path and your host cannot redirect, set the path option in the feed configuration to your old address, so that existing subscribers keep receiving updates. That is the only reason to change it.
By default each entry contains the full content of the post. If you prefer readers to visit your site, set excerpt_only to true in the configuration, or set it for a single post in its front matter, and the content element is omitted. Auto-posters rarely need the full text, because they build a short post from the title, the summary and the link. The trade-off is explained in full text or excerpt in an RSS feed.
| Feed element | Jekyll source | Rule |
|---|---|---|
| Title | title in front matter | Plain text, no markup |
| Link | Post address plus url | Absolute, https, returns 200 |
| Date | File name or date in front matter | Fixed once published |
| Summary | description or excerpt | One or two sentences |
| Author | author in front matter or config | A name, not an email address |
| Feed address | /feed.xml or the path option | Never changes once published |
The address of the feed itself deserves the most care. Subscribers and auto-posters store it, so if you move it you silently break every connection. Choose a path once and keep it.
The plugin can create more than one feed. List categories in the configuration to get a feed for each, with addresses that follow the pattern /feed/category-name.xml. Switch on tags to create a feed for every tag, written to /feed/by_tag/tag-name.xml by default, with options to include only some tags or to exclude others. Collections other than posts can also have feeds, which works best for chronological collections such as a changelog. Separate feeds are the cleanest way to send different topics to different social channels; see category filtering for auto-posting. Keep the number of feeds small, because each one is an address you must keep stable.
Add the feed_meta tag to the head of your layout so browsers, feed readers and tools can find the feed from any page. Themes based on the default theme include it already; custom layouts need the line added by hand.
<head>
...
{% feed_meta %}
</head>The tag writes a link element with the right type, title and address. With that in place, a visitor or an auto-poster that only knows your home page can locate the feed on its own. The details are in the guide to feed autodiscovery.
Build the site as it will be built for production and look at the file before you publish anything. The serve command overrides the site address with a local one for convenience, so links in a feed produced by it point to localhost; for a realistic test, build in the production environment.
JEKYLL_ENV=production bundle exec jekyll build
head -c 1200 _site/feed.xml
curl -i https://example.com/feed.xmlWork through a short list of checks:
There is a longer checklist in the feed validation guide and a short routine in the guide to debugging a feed with curl. If your host serves the file with the wrong content type, see the content type header guide.
PostRSS has been publishing RSS and Atom feeds to social networks since 2014. Paste the address of your Jekyll feed, connect your accounts and choose how each post is built from the title, the summary 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, and webhooks connect PostRSS to your own systems. See the PostRSS features page and the plan limits on the pricing page. More developer guides are under the Technical Guide tag.
Jekyll needs one gem and a few settings to publish a dependable feed: add jekyll-feed to the Gemfile and the plugin list, set the site url, title and description, raise posts_limit if you publish often and decide between full content and excerpts. Write an explicit date and a short description for every post, set a time zone, keep future posts out of production builds, add the feed_meta tag to your layout, build in the production environment, test the file with curl and a validator, keep the address unchanged and connect it to an auto-poster. After that, every post you publish can reach your readers and your social channels automatically.
Not in the core, but the official jekyll-feed plugin creates an Atom feed at /feed.xml from your posts with almost no configuration, and it is available on GitHub Pages.
You probably tested with the serve command, which replaces the site address with a local one, or the url setting is missing. Set url in the configuration and build in the production environment.
The default is ten. Set posts_limit in the feed section of the configuration to include more.
Atom. Modern readers and auto-posters, including PostRSS, accept Atom, so there is normally no need to convert it.
Yes. PostRSS reads any valid RSS or Atom address that is reachable without a login. Paste the address, connect your channels and new entries 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. Кожен продукт заощаджує ваш час по-своєму.