Updated: 2026-09-07
How to Find Your Hugo, Jekyll, or Eleventy RSS Feed and Auto-Post It

Hugo, Jekyll, and Eleventy don’t work like WordPress or Ghost. There’s no dashboard toggle for RSS, no plugin marketplace you can browse from a settings screen, and no guarantee that what worked in the starter template you cloned two years ago still generates a valid feed today. If you’re running a static site generator, the RSS feed either lives in your build output or it doesn’t — and the only way to know for sure is to check the generated files yourself.

This matters more than it might seem, especially if you’re trying to auto-post new articles to X, LinkedIn, Bluesky, or Facebook. Static site generators are popular precisely because they’re fast, cheap to host, and free of runtime dependencies — but that same simplicity means RSS isn’t always turned on by default, and when it is, small configuration mistakes can silently break it. A feed that returns a 404, serves relative URLs, or reuses the same GUID for every post will cause your auto-posting tool to either post nothing or post the same three articles over and over.

Below is a practical walkthrough for Hugo, Jekyll, and Eleventy: whether each one ships RSS by default, how to find and verify your feed URL, how to add a feed if one doesn’t exist, the gotchas that trip up static-site RSS specifically, and how to wire the finished feed into PostRSS so new posts get auto-published to your social accounts the moment you deploy.

Does Your Static Site Generator Create RSS by Default?

Short answer: it depends which one you’re using, and in Jekyll’s case, which template you started from.

Hugo: Yes, Built In

Hugo generates an RSS 2.0 feed automatically for every site, every section, and every taxonomy term, with zero configuration required. This has been true since early Hugo versions and remains true in current releases. Out of the box you’ll get:

  • A site-wide feed at /index.xml
  • A feed per section, e.g. /posts/index.xml veya /blog/index.xml
  • A feed per taxonomy term, e.g. /tags/hugo/index.xml

Hugo builds these from its built-in rss.xml template (the output format is literally named RSS in hugo.toml/config.toml‘s outputs section). You don’t need a plugin, a module, or a shortcode. If you’ve done nothing special to your Hugo config, your feed almost certainly already exists — you just need to confirm it’s pointing at the right content and not accidentally disabled.

Jekyll: Yes, but via a Plugin (jekyll-feed)

Jekyll itself does not generate RSS natively. What makes Jekyll “yes by default” in practice is that GitHub Pages — historically Jekyll’s most common host — auto-includes the jekyll-feed plugin, and most modern Jekyll starter themes (Minima being the default theme scaffolded by jekyll new) ship with it pre-configured in the Gemfile and _config.yml.

jekyll-feed generates an Atom feed (not RSS 2.0 — this distinction matters less to social auto-posting tools since both are XML feed formats they can parse, but it’s worth knowing) at /feed.xml by default. If your Jekyll site was built from Minima, from the Jekyll quick-start guide, or from most theme templates on jekyllthemes.io, you likely already have this plugin. If you built your Jekyll site from a bare-bones layout or stripped out the default gems to speed up your build, you may not.

Eleventy: No, You Have to Build It Yourself

Eleventy (11ty) is intentionally minimal — it doesn’t assume you want a blog, a feed, or even HTML output by default. There is no built-in RSS generation. To get a feed you need one of two things:

  • The official @11ty/eleventy-plugin-rss plugin, which provides Nunjucks/Liquid filters (dateToRfc3339, dateToRfc822, getNewestCollectionItemDate, absoluteUrl) that you use inside a feed template you still have to write yourself, or
  • A fully manual template — commonly named feed.njk, feed.liquid, or rss.njk — placed in your input directory that loops over your posts collection and outputs valid XML.

In other words, the plugin doesn’t generate a feed on its own — it gives you the date-formatting and URL-formatting helpers so the feed template you write doesn’t get the RFC dates or absolute URLs wrong. Most Eleventy starter kits (the official eleventy-base-blog being the most common) include a working feed.njk already, so if you scaffolded your site from that starter, you likely have RSS. If you built your Eleventy site from scratch or from a minimal starter, you probably don’t, and you’ll need to add one.

Hugo vs Jekyll vs Eleventy: RSS Support at a Glance

GeneratorRSS by default?Config fileDefault feed output pathPlugin/template needed?
HugoYes — built inhugo.toml / config.toml / config.yaml/index.xml (site-wide); /section/index.xml per sectionNone — native RSS output format
JekyllUsually — depends on theme/host_config.yml/feed.xmljekyll-feed gem (bundled with GitHub Pages and Minima)
EleventyNo — must be added.eleventy.js / eleventy.config.jsWherever your template outputs it — commonly /feed.xml veya /feed/feed.xml@11ty/eleventy-plugin-rss + a manual feed.njk/feed.liquid template

How to Find and Verify Your Feed URL

Whichever generator you’re on, don’t take the “default path” in the table above on faith — config changes, custom base URLs, and theme overrides can all move it. Verify with these steps.

1. Check the Rendered HTML for a Feed Link

Nearly every well-built theme, on all three generators, injects a <link rel="alternate" type="application/rss+xml"> veya type="application/atom+xml" tag into the page <head>. View source on your homepage (or open dev tools and inspect the head) and search for rss+xml veya atom+xml. The href attribute is your feed URL. This is the fastest and most reliable check because it reflects what your theme actually generated, not what the docs say it should generate.

2. Check the Known Default Paths Directly

If there’s no link tag, try loading these directly in a browser, replacing yourdomain.com with your actual domain:

  • Hugo: yourdomain.com/index.xml
  • Jekyll: yourdomain.com/feed.xml
  • Eleventy: yourdomain.com/feed.xml (if using eleventy-base-blog’s convention) or check your feed.njk template’s front matter for a custom permalink

A valid feed will render as XML (or your browser will offer to display it as a feed/RSS reader view). If you get a 404, the feed either isn’t being generated or lives at a different path.

3. Search Your Source for the Feed Template

If neither of the above works, go straight to the source:

  • Hugo: check hugo.toml for an [outputs] section — if home doesn’t list "RSS", it’s been explicitly disabled and you’ll need to add it back.
  • Jekyll: check your Gemfile ve _config.yml for jekyll-feed under plugins: (or the older gems: key). If it’s missing from both, the plugin isn’t installed.
  • Eleventy: search your input directory (usually src/) for a file with RSS/Atom XML front matter — look for filenames like feed.njk, feed.liquid, or rss.xml.njk, and check .eleventy.js for addPlugin(pluginRss).

4. Validate the Feed’s Content, Not Just Its Existence

A feed that loads isn’t necessarily a feed that will work for auto-posting. Run the URL through the W3C Feed Validator and confirm three things specifically:

  • Every <item> (or Atom <entry>) has a unique <guid> veya <id>
  • Every <link> is a full absolute URL, not a relative path
  • The feed actually contains your recent posts, not stale content from an old build

These three checks map directly to the gotchas covered next, and they’re the difference between a feed that quietly breaks your auto-posting and one that just works.

Adding RSS When It’s Missing

Hugo: Re-Enabling a Disabled Feed

If your hugo.toml has an [outputs] block that omits RSS, add it back:

[outputs]
  home = ["HTML", "RSS"]
  section = ["HTML", "RSS"]

If there’s no [outputs] block at all, Hugo is using its defaults, which already include RSS for the homepage — so if your feed is missing, check the layouts directory for a custom _default/rss.xml that might have been broken or emptied by a theme override, and check that disableKinds in your config doesn’t list "RSS".

Jekyll: Installing jekyll-feed

Add the gem to your Gemfile:

group :jekyll_plugins do
  gem "jekyll-feed"
end

Then add it to _config.yml:

plugins:
  - jekyll-feed

Run bundle install, rebuild, and check /feed.xml. If you’re hosting on GitHub Pages, jekyll-feed is already part of the supported gem whitelist, so no extra installation approval is needed on their end.

Eleventy: Adding the RSS Plugin and a Feed Template

Install the official plugin:

npm install @11ty/eleventy-plugin-rss

Register it in your config file:

const pluginRss = require("@11ty/eleventy-plugin-rss");

module.exports = function (eleventyConfig) {
  eleventyConfig.addPlugin(pluginRss);
};

Then create a feed template — feed.njk is the standard convention, borrowed from the official eleventy-base-blog starter — that sets its own permalink to /feed.xml, loops through your posts collection sorted newest-first, and uses the plugin’s absoluteUrl ve dateToRfc822/dateToRfc3339 filters for every link and date field. If you’d rather not write this from scratch, copying the feed.njk file from the official eleventy-base-blog GitHub repository and adjusting the collection name and site metadata is the fastest path to a working, spec-correct feed.

Common Gotchas With Static-Site RSS

Static site RSS feeds fail in ways that dynamic CMS feeds usually don’t, mostly because the feed is a build artifact rather than something generated live on each request. These four issues account for most of the auto-posting problems people run into.

The Feed Isn’t Rebuilt on Deploy

This is the single most common static-site RSS failure. Because the feed is generated at build time, if your deploy pipeline caches the build output, serves a stale CDN copy, or only rebuilds pages that changed (some incremental build setups do this), your feed.xml or index.xml can silently stop updating even though your site’s HTML looks current. Confirm your CI/CD pipeline (GitHub Actions, Netlify, Vercel, Cloudflare Pages) runs a full hugo, jekyll build, or eleventy command on every publish, and check your CDN/host cache headers aren’t serving an old copy of the XML file specifically — it’s easy to invalidate the HTML cache and forget the feed.

Absolute vs. Relative URLs

All three generators can produce relative URLs in feed items if the base URL isn’t set correctly:

  • Hugo: make sure baseURL in hugo.toml is a full absolute URL (https://example.com/), not blank or relative — Hugo’s RSS template uses it to construct every <link>.
  • Jekyll: jekyll-feed relies on the url value in _config.yml being set correctly (and matching your actual production domain, not localhost) to build absolute links.
  • Eleventy: since you’re writing the template yourself, it’s easy to forget the absoluteUrl filter on a link and ship a relative path by accident. Every URL in the feed should be run through it.

A feed with relative URLs will often display fine in a browser (which resolves relative paths against the current page) but will break when a social auto-posting tool tries to pull the article URL to build a post — you’ll get broken links in your tweets and posts, or the tool may reject the item entirely.

Missing or Duplicate GUIDs Causing Repeat Posts

Auto-posting tools track which feed items they’ve already posted using each item’s GUID (RSS) or id (Atom) — not the title or content. If your feed template doesn’t set a unique, stable GUID per item — or worse, sets the same GUID for every item, or regenerates a new GUID on every build — the auto-poster can’t tell old posts from new ones. The two failure modes are opposite but equally annoying: a static/duplicate GUID means new posts never get detected as new, while a GUID that changes on every rebuild means the same post gets flagged as “new” and republished every time you deploy.

Hugo and jekyll-feed both handle this correctly by default, using the post’s permalink as a stable GUID. If you’re hand-rolling an Eleventy feed template, explicitly set <guid>{{ post.url | absoluteUrl(metadata.url) }}</guid> (or the Atom <id> equivalent) using each post’s permanent URL, not its title or a random value — the permalink is stable across rebuilds as long as your URL structure doesn’t change.

Feed Only Includes a Partial Excerpt (or Nothing Useful)

Some feed templates only output a truncated excerpt or, in stripped-down configurations, nothing but the title and link. That’s usually fine for auto-posting purposes since most tools just need the title, link, and publish date to build a social post — but if you’re relying on the feed’s description field to populate your post caption automatically, verify it’s actually populated with meaningful text and not an empty tag.

Connecting Your Feed to PostRSS

Once your feed URL loads correctly, validates cleanly, uses absolute URLs, and carries stable GUIDs, the rest of the setup is generator-agnostic — PostRSS doesn’t care whether the XML came from Hugo, Jekyll, Eleventy, or anything else, because it’s reading standard RSS/Atom output either way.

  1. Sign in to your PostRSS account and add a new feed source, pasting in the exact feed URL you just verified (/index.xml, /feed.xml, or your custom path).
  2. Connect the social accounts you want new posts pushed to — X/Twitter, Facebook, LinkedIn, Pinterest, Instagram, Threads, Mastodon, Bluesky, or VKontakte are all supported, and you can connect more than one per feed.
  3. Set your posting schedule and any platform-specific formatting — character limits, hashtag handling, and image selection all vary by network, so review the per-platform settings rather than relying on one generic template across every account.
  4. Run a manual test post against your most recent article to confirm the title, link, and image are pulling through correctly before you let the schedule run unattended.

Because static site feeds are rebuilt from scratch on every deploy rather than updated incrementally like a database-backed CMS, it’s worth double-checking the GUID stability point above before you turn on RSS feed automation for a static site — a template misconfiguration that regenerates GUIDs on every build is the single most common cause of a Hugo or Eleventy site suddenly re-posting its entire archive to social media after a routine deploy. If you catch that happening, pause the connected feed in PostRSS, fix the GUID logic in your template, redeploy, and confirm the feed’s GUIDs are now stable before resuming.

Beyond the initial setup, tools built around RSS automation are particularly well suited to the static-site workflow, since your publishing process is already git-based and CI-driven — the feed becomes just another build artifact that your existing deploy pipeline produces automatically, and PostRSS simply polls it on a schedule and posts whatever’s new. There’s no webhook to configure on the CMS side and no API integration to maintain, which is exactly the kind of low-maintenance setup that fits a JAMstack site’s philosophy in the first place. If you’re new to the platform, the getting started with PostRSS resources walk through account setup and first-feed configuration in more detail than the summary above.

Testing Your Setup Before You Trust It

Don’t connect a freshly fixed feed to your live social accounts and walk away. Before enabling automatic posting on a schedule, run through this checklist:

  • Load the feed URL directly and confirm it returns valid XML with no errors, using the W3C validator mentioned earlier.
  • Publish a test post on your site, wait for your deploy pipeline to finish, and reload the feed to confirm the new item appears with a correct absolute link, a sensible title, and (if you’re using it) a description.
  • Check that the test post’s GUID differs from every other item’s GUID, and that re-running your build without changing content doesn’t change any existing item’s GUID.
  • In PostRSS, trigger a manual check or test post against that same article and inspect the resulting social post for broken links, missing images, or truncated text before your first scheduled auto-post goes out.
  • Only after that test post looks correct on every connected platform should you switch the feed to its normal automatic schedule.

Frequently Asked Questions

Does Hugo support Atom feeds instead of RSS?

Yes. While Hugo’s default output format is named “RSS” and produces RSS 2.0 by default, you can add a custom Atom output format in your outputFormats configuration and write your own Atom template if a specific downstream tool requires Atom specifically. In practice this is rarely necessary — RSS 2.0 is universally supported by auto-posting tools, including PostRSS.

Why does my Jekyll feed show old posts after I published a new one?

This is almost always a caching or deploy issue rather than a jekyll-feed problem. Check that your host actually rebuilt the site after your last commit (look at your GitHub Pages build log or your CI pipeline’s most recent run) and that no CDN or browser cache is serving a stale copy of feed.xml specifically. Also confirm the new post’s front matter has a date that isn’t in the future — Jekyll excludes future-dated posts from the build by default unless you’ve set future: true in _config.yml.

Can I have more than one RSS feed on the same Eleventy site?

Yes, and it’s common — you can create multiple feed templates for different collections (e.g., one for blog posts, another for a changelog or podcast episodes), each with its own permalink. Just make sure each one has a distinct filename and permalink so they don’t overwrite each other during the build, and connect each one to PostRSS as a separate feed source if you want them posted to different social accounts or with different formatting.

My feed validates fine but PostRSS isn’t picking up new posts. What should I check first?

Start with the deploy pipeline: confirm the feed URL you connected in PostRSS actually reflects your latest deploy by loading it directly in a browser and checking the most recent item’s date and link. If the live feed is current but PostRSS still isn’t posting, check whether the new item’s GUID is genuinely unique compared to previously posted items — if your build process is regenerating GUIDs identically across rebuilds due to a caching quirk in your feed template, the auto-poster may correctly recognize it as already-seen content.

Do I need a plugin for Hugo RSS, or is the built-in feed good enough?

The built-in feed is good enough for the vast majority of use cases, including auto-posting to social media. You’d only need to go beyond it — for example, adding a custom Atom template or a feed with non-standard fields — if a specific downstream service required a format Hugo’s default RSS 2.0 template doesn’t produce, which is uncommon.

Does switching my Eleventy site’s permalink structure break my existing feed connection in PostRSS?

It can, if the change affects the URLs used as GUIDs in already-published feed items. Since PostRSS (and most feed readers) track posted items by GUID, changing your permalink structure after posts have already gone out — without preserving the original GUIDs — can cause old posts to look “new” again and get reposted. If you’re restructuring URLs, keep the GUID field pinned to something stable (like a post’s original slug or a manually assigned id) independent of the current permalink format.

Is it safe to auto-post from a staging or preview deploy’s feed URL?

No — always connect the production feed URL, not a preview/staging deployment’s URL, which is typically ephemeral (branch previews on Netlify or Vercel get a new URL per deploy) and not intended for long-term external consumption. Connecting a preview URL will eventually break silently when that preview deployment expires or gets replaced.

The Bottom Line

Hugo gives you RSS for free — check /index.xml and you’re almost certainly already set. Jekyll gives it to you too, as long as jekyll-feed is in your Gemfile, which it usually is if you started from Minima or GitHub Pages’ defaults. Eleventy is the outlier: you have to build the feed yourself, either from the official RSS plugin’s helpers or by copying a known-good template like the one in eleventy-base-blog.

Whichever generator you’re on, the real risk isn’t the absence of a feed — it’s a feed that looks fine in a browser but quietly breaks automation: stale content from a caching issue, relative URLs that turn into broken links in your social posts, or unstable GUIDs that cause the same articles to get reposted every time you redeploy. Run your feed through a validator, confirm it survives a real deploy cycle with a real test post, and check GUID stability specifically before you trust it with unattended posting.

Once that verification is done, connecting the feed to PostRSS takes minutes, and from then on every article your build process publishes gets picked up and pushed to your connected social accounts automatically — no manual cross-posting, no extra step in your git-based workflow, just a working feed URL doing what RSS was built to do.

Menü
x
PostRSS - RSS Besleme Otomasyon Platformu ve Otomatik Paylaşım Aracı
Gizlilik Genel Bakış

Bu web sitesi, size mümkün olan en iyi kullanıcı deneyimini sunabilmek için çerezler kullanmaktadır. Çerez bilgileri tarayıcınızda saklanır; web sitemize geri döndüğünüzde sizi tanımak ve ekibimizin web sitesinin hangi bölümlerini daha ilgi çekici ve yararlı bulduğunuzu anlamasına yardımcı olmak gibi işlevler görür.