feedgen

Python module to generate Atom feeds, RSS feeds, and podcasts

Library
PyPI
v1.0.0
789stars
BSD-2-Clause OR LGPL

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
44/100Fair
Development Activity0
Maintenance20
Community76
Maturity60
Momentum20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
76/100Good
Architecture80
Code Quality78
Innovation62
Learning Curve82

feedgen is a Python library for programmatically building syndication feeds. It generates standards-compliant Atom and RSS 2.0 feeds, and with its podcast extension it produces iTunes-compatible podcast feeds complete with episode metadata and enclosures.

You construct a feed object, set channel-level fields, add entries, and serialize the result to an XML string or file. A pluggable extension system layers in additional vocabularies such as iTunes podcast tags, Dublin Core metadata, syndication hints, and media RSS, so you can enrich feeds without leaving the same fluent API.

What You Get

  • A FeedGenerator object that outputs both Atom and RSS 2.0 from the same model
  • Entry objects for individual items with titles, links, authors, and content
  • A podcast extension producing iTunes-compatible podcast feeds with enclosures
  • Additional extensions for Dublin Core, syndication, and media RSS metadata

Common Use Cases

  • Generating an RSS or Atom feed for a blog or news site
  • Producing an iTunes-ready podcast feed from episode data
  • Serializing feeds to a string for HTTP responses or to a file on disk
  • Adding rich metadata to feeds via Dublin Core or media RSS extensions

Under The Hood

Architecture - The package models feeds as objects: feed.py defines FeedGenerator (channel-level data plus Atom/RSS serialization), entry.py defines FeedEntry for individual items, and an ext/ subpackage holds extension classes (podcast, Dublin Core, syndication, media) that register additional fields onto feeds and entries; XML is produced via lxml element trees. Tech Stack - Pure Python built on lxml for XML generation (per requirements.txt), packaged with setup.py/setup.cfg and distributed on PyPI as feedgen, with a compat.py shim for cross-version support and a version.py for versioning. Code Quality - The codebase is small, focused, and mature with a tests/ suite and documentation under doc/, though development activity is low and the project is largely in maintenance mode. API Design - The API is approachable: construct a generator, use getter/setter methods for each field, add_entry() for items, and atom_str()/rss_str()/file variants for output, with extensions loaded via load_extension(), all covered by clear README examples.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search