feedgenerator

raw JSON →
2.2.1 verified Fri May 01 auth: no python

Standalone version of django.utils.feedgenerator for generating RSS 2.0 and Atom feeds. Current version 2.2.1, supports Python >=3.9, released under BSD license.

pip install feedgenerator
error ImportError: cannot import name 'SyndicationFeed' from 'feedgenerator'
cause Misspelled or wrong package name; some users confuse with 'feedgen' or 'feedparser'.
fix
Use 'from feedgenerator import SyndicationFeed' after installing feedgenerator.
error AttributeError: 'NoneType' object has no attribute 'strftime'
cause pubdate or updateddate not set or set to None when item is added.
fix
Provide a valid datetime object to pubdate parameter.
error TypeError: writeString() missing 1 required positional argument: 'feedtype'
cause writeString expects 'rss' or 'atom' argument.
fix
Call feed.writeString('rss') or feed.writeString('atom').
gotcha The default writeString method may not include all items if not all feed attributes are set. Ensure feed_url is set for Atom feeds.
fix Always set feed_url when creating an Atom feed.
deprecated In older versions (<2.0), subtitles and descriptions were handled differently; since 2.0, double subtitles are fixed but description may be used as subtitle in Atom if subtitle not provided.
fix Provide both description and subtitle explicitly to avoid confusion.
breaking Python 3.7 and 3.8 support dropped in version 2.2.0. Users on those Python versions must pin to feedgenerator<2.2.0.
fix Upgrade to Python >=3.9, or pin feedgenerator to 2.1.0.

Create RSS and Atom feeds with optional link to feed URL.

from feedgenerator import SyndicationFeed

feed = SyndicationFeed(
    title='My Blog',
    link='https://example.com/',
    description='A blog about stuff',
    feed_url='https://example.com/feed.xml',
    author_name='Author',
    language='en'
)
feed.add_item(
    title='First Post',
    link='https://example.com/first-post',
    pubdate=datetime(2026, 5, 1),
    description='This is my first post.'
)
rss = feed.writeString('rss')
atom = feed.writeString('atom')
print(rss)
print(atom)