RSS a 66 redes sociales: Facebook, Instagram, X, LinkedIn, Telegram y más Blog Afiliados Contactos
Iniciar sesión Empezar gratis
Updated: 2026-10-29
Nikola RSS Feed: Configure It in Python and Auto-Post

Short answer: Nikola, the static site generator written in Python, creates an RSS feed for your blog during every build, and also builds feeds for tags and categories if you ask for them. Set the public address of your site, the blog title and description, choose how many items the feed contains and whether it carries the full post or a teaser, run the build, and check the generated file. When the address returns valid XML with stable links and dates, give it to an auto-poster so that each new post is shared on your social networks.

Nikola is popular with people who like Python, plain files and a build that does exactly what the configuration file says. Its feeds are generated together with the rest of the site, which means they are fast, cacheable and free of server code. It also means that every mistake is baked into the output until the next build: a wrong site address, a feed that shows only the last ten posts, a teaser that stops in the middle of a sentence. This guide shows what Nikola produces, which settings control it, how to publish new posts reliably and how to test the result before an auto-poster starts to depend on it.

What Nikola generates for you

When feed generation is switched on, Nikola writes an RSS file for the main blog at the root of the output folder. In a default project this is output/rss.xml, so a site published at the domain root serves it at /rss.xml. Nikola can also write an Atom file, and it can build separate feeds for each tag, category and author when those archives are enabled. In every case the feed is a normal static file, with no database and no request handler behind it.

If you are still choosing a generator, the same ideas are covered for other tools in the guides to Pelican, Hexo y Zola. Nikola is closest to Pelican in spirit, since both are Python tools driven by one configuration file.

The settings that matter

All feed behaviour is controlled in conf.py. Names can change between major versions, so compare the lines below with the comments in the file that your own version generated when you created the site.

# conf.py (excerpt)
SITE_URL = "https://example.com/"
BLOG_TITLE = "Example Journal"
BLOG_DESCRIPTION = "News and guides from Example Journal."
BLOG_AUTHOR = "Example Team"
LANGUAGE = "en"

GENERATE_RSS = True
GENERATE_ATOM = False

FEED_LENGTH = 20
FEED_TEASERS = True
FEED_PLAIN = False

The site address deserves the most care. Nikola builds every absolute link in the feed from it, so it must be the real public address with https and a trailing slash. If it still holds a placeholder or a local address, every link in the feed will be wrong and nothing will warn you. The title, description and language fill the channel header. The length setting decides how many of the newest posts appear. If you publish several times a day, choose a number large enough that a short outage of the reader or the auto-poster cannot make it miss a post; the reasoning is in how many items should be in your RSS feed.

Teasers or full posts

Nikola can put either a teaser or the whole post into each feed item. A teaser is the part of the article before the teaser marker, which you can place yourself in the source file, or an automatic cut if you do not. Writing the marker by hand gives you a clean break at the end of a sentence, while an automatic cut may stop in the middle of a thought and an auto-poster will copy that fragment into a social post. The plain-text option removes markup from the item, which is useful when readers or tools show the description as raw text.

For auto-posting a teaser is usually enough, because the post on the social network only needs a title, a short description, an image and a link. Full text is friendlier to feed readers but makes a larger file; the trade-offs are explained in full text or excerpt in an RSS feed. Whichever you choose, write a real summary for important posts instead of relying on a cut.

Write posts with stable dates and slugs

Every item in the feed is built from the metadata at the top of the post file. Set the title, the slug and the date explicitly, and write the date with a time zone so that it does not move when the build runs on another machine.

.. title: Spring Opening Hours
.. slug: spring-opening-hours
.. date: 2026-10-29 08:00:00 UTC
.. tags: news, hours
.. description: Our new opening hours start on Monday.
.. type: text

The slug becomes part of the post address, and the address becomes the identifier that an auto-poster stores. If you rename a slug after publication, the old and the new address look like two different posts and the article may be shared twice. The causes and cures are covered in why a feed auto-posts the same article twice. Dates matter in the same way: a post with a date in the past that suddenly appears in the feed is called a backdated post, and its effects are described in the guide to feed order and backdated posts.

Where each field comes from

Feed elementNikola sourceRule
Channel titleBLOG_TITLEShort, plain text
Channel linkSITE_URLPublic address with https
Item titletitle in the post metadataNo markup
Item linkPermalink built from the slugAbsolute, returns 200, never changes
Publication datedate in the post metadataIn the past, with a time zone
DescriptionTeaser or full postEnds at a sentence boundary

Look at that list as a checklist. If one of the sources is vague, for example a date without a zone, fix it in the post and not in the feed, because the feed only repeats what the source says.

Scheduled posts and the build

A static site changes only when you build and deploy it. Nikola does not publish a post on its own at the moment written in the date field; it treats posts dated in the future as not ready and leaves them out of the feed until a build runs after that moment. That is a feature if you use it deliberately, and a surprise if you do not. To publish on a schedule, set the date, then run the build and the deployment from a scheduler, for example once an hour, so that the feed catches up soon after the date passes.

nikola build
head -c 1200 output/rss.xml
rsync -a output/ user@server:/var/www/example/

Drafts are skipped by default, which protects you from sharing unfinished work. Keep that default in production. If a draft or a future post ever reaches the live feed, an auto-poster will share an article that is not yet on your website.

Feeds for tags and categories

Because Nikola can build a feed for every tag and category, you can send different topics to different channels without writing code. A shop blog with news, recipes and events can feed three social accounts from three feeds. Decide which archives you need, link to their feeds from the pages where people expect them, and switch off the rest if you do not want the extra files. A broader plan for routing is described in category filtering for auto-posting.

Make the feed discoverable

Nikola’s default themes add link elements for the feed to the head of every page, so browsers and readers can find it from any address. If you use a custom theme and the links are missing, add them back to the base template, with the type set to the RSS media type and the address built from the site configuration. A person or tool that knows only your home page should be able to locate the feed without asking you; see the guide to feed autodiscovery.

Test the deployed feed

Build the site the way your pipeline does and check the output before you publish anything. Then request the deployed address from outside, because a local file proves nothing about the server.

curl -i https://example.com/rss.xml
curl -sI https://example.com/rss.xml | grep -i content-type
  • The status is 200 and the file begins with an XML declaration followed by an rss element.
  • The content type is an XML type; if a browser downloads the file or shows plain text, read the content type header guide.
  • Every link is absolute, uses https and points to your domain and not to a local address.
  • Paste the address into the W3C Feed Validation Service and fix every error before continuing.
  • Build twice without changing anything and confirm that no address or date has moved.

A longer routine is in the feed validation guide, and a short one in debugging a feed with curl.

Common mistakes to avoid

  • A placeholder site address. Every link in the feed points to the wrong place.
  • A length that is too small. A short outage makes a reader or an auto-poster miss posts.
  • Automatic teasers. They can end mid-sentence; place the marker by hand in important posts.
  • Dates without a time zone. The same post moves by hours when the build runs elsewhere.
  • Renaming slugs after publication. The permalink changes and the post may be shared twice.
  • Forgetting to deploy. The build succeeded on your computer, but the server still serves the old file.

How PostRSS works with a Nikola feed

PostRSS has been publishing RSS and Atom feeds to social networks since 2014. Paste the address of your Nikola 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.

Lectura relacionada

The bottom line

Nikola gives you a working RSS feed with one setting, and a few more make it dependable: the real site address, a length that fits your publishing rhythm, hand-placed teasers, explicit slugs and dates with a time zone, and a build that never includes drafts or future posts. Deploy after every build, test the live address with curl and a validator, keep the permalinks unchanged and connect the feed to an auto-poster. After that, every post you publish reaches your readers and your social channels without extra work.

FAQ

Does Nikola create an RSS feed by default?

Yes. A new Nikola site has feed generation switched on, so the build writes an RSS file for the blog into the output folder. Check the generation setting in conf.py if the file is missing.

How do I change how many posts the Nikola feed contains?

Change the feed length setting in conf.py and rebuild. Choose a number large enough that a short outage does not make a reader or an auto-poster miss anything.

Why do the links in my Nikola feed point to the wrong address?

The site address in conf.py is missing, still a placeholder or a local address. Set it to the real public address with https and a trailing slash, rebuild and deploy.

Can Nikola publish a post at a future time by itself?

No. Nikola is a static generator, so a post dated in the future appears only after the first build that runs after that time. Run the build and the deployment on a schedule if you rely on dated posts.

Can PostRSS read a Nikola feed?

Yes. PostRSS reads any valid RSS or Atom address that is reachable without a login. Paste the address, connect your channels and new posts are shared as soon as they appear.

New guides, once a month

What changed in the networks, what broke, and how to fix it before it costs you reach.

We send a confirmation e-mail first. Unsubscribe any time.

Más herramientas de nuestro equipo

Creadas por Internet Solutions, el equipo detrás de PostRSS. Cada una te ahorra tiempo a su manera.