https://github.com/ansichen/rss-feed-aggregator
A Flask application that aggregates RSS feeds, normalizes articles, stores them in a database, and presents them through a clean reading interface.
https://github.com/ansichen/rss-feed-aggregator
jinja2 python rss rss-aggregator rss-feed rss-parser rss-reader xml
Last synced: about 10 hours ago
JSON representation
A Flask application that aggregates RSS feeds, normalizes articles, stores them in a database, and presents them through a clean reading interface.
- Host: GitHub
- URL: https://github.com/ansichen/rss-feed-aggregator
- Owner: AnSiChen
- License: other
- Created: 2026-07-07T07:44:40.000Z (3 days ago)
- Default Branch: main
- Last Pushed: 2026-07-07T08:44:24.000Z (3 days ago)
- Last Synced: 2026-07-07T10:10:40.422Z (3 days ago)
- Topics: jinja2, python, rss, rss-aggregator, rss-feed, rss-parser, rss-reader, xml
- Language: Python
- Homepage: https://anthonyem.com/reading
- Size: 326 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RSS Feed Aggregator
A lightweight Python module for aggregating articles from multiple RSS feeds into a normalized, sortable collection.
Focuses on the aggregation pipeline—downloading RSS feeds, parsing XML content, normalizing article metadata, and combining results into a single list. It excludes any web interface or presentation layer.
This aggregation engine powers to some extent the Reading section of my website:
**Live Demo:** https://anthonyem.com/reading
---
## Features
* Aggregate articles from multiple RSS feeds
* Normalize articles into common data model
* Sort articles by publication date
* Extract article images when available
* Simple, modular architecture
* Easily extendable with additional RSS sources
---
## Project Structure
```text
rss_feed_aggregator/
├── aggregator.py
├── parser.py
├── feeds.py
└── models.py
```
---
## Architecture
The aggregation pipeline is intentionally small and modular.

1. RSS feeds are defined in `feeds.py`
2. `parser.py` downloads and parses each feed
3. Feed entries are normalized into `Article` objects
4. `aggregator.py` combines and sorts all articles
---
## Example
```python
from rss_feed_aggregator import load_articles
articles = load_articles()
for article in articles:
print(article.title)
```
---
## Screenshots
Reading interface powered by this aggregation engine:

---
## Future Improvements
* Improve compatibility with RSS feeds that omit fields such as `summary`, `published_parsed`, or `content`
* Support multiple image extraction strategies for different feed formats
* Configurable article filtering
* Unit tests
* Cleaning corrupted feeds
---
## License
This project is licensed under the MIT License.