A curated collection of RSS/Atom news feeds organized by language, topic, and region.
news-feed/
├── bundles/ # Bundle configuration files
│ ├── all.yaml # All feeds
│ ├── all-en.yaml # English feeds only
│ ├── all-es.yaml # Spanish feeds only
│ └── all-ro.yaml # Romanian feeds only
├── scripts/ # Build and validation scripts
│ └── build_bundles.py # Main bundle builder script
├── *.opml.xml # Individual feed collections by category
└── .github/workflows/ # Automated build and release
- global-briefing.opml.xml - Major international news sources
- tech-en.opml.xml - Tech blogs, engineering, AI/ML, cloud, security
- science-en.opml.xml - Scientific publications and research
- tech-es.opml.xml - Spanish technology news
- science-es.opml.xml - Spanish science news
- spain-free-first.opml.xml - Spanish national news (free sources)
- local-madrid.opml.xml - Madrid local news
- local-almeria.opml.xml - Almería local news
- tech-ro.opml.xml - Romanian technology news
- science-ro.opml.xml - Romanian science news
- romania-free-first.opml.xml - Romanian national news (free sources)
- local-bucharest.opml.xml - Bucharest local news
- football-real-madrid.opml.xml - Real Madrid and football news
Go to the Releases page and download the latest bundle:
- all-news-feeds.opml.xml - Complete collection (all languages)
- all-en-news-feeds.opml.xml - English feeds only
- all-es-news-feeds.opml.xml - Spanish feeds only
- all-ro-news-feeds.opml.xml - Romanian feeds only
# Install Python dependencies
pip install pyyaml
# Validate all OPML files
python scripts/build_bundles.py --validate-only
# Build all bundles
python scripts/build_bundles.py
# Output will be in the dist/ directory- Create a new YAML file in the
bundles/directory:
name: "My Custom Bundle"
description: "Description of your bundle"
output: "my-bundle.opml.xml"
sources:
- tech-en.opml.xml
- science-en.opml.xml- Run the build script:
python scripts/build_bundles.py- Find your bundle in
dist/my-bundle.opml.xml
Every push to the main branch triggers an automated workflow that:
- ✅ Validates all OPML files
- 🔨 Builds all configured bundles
- 📦 Creates a GitHub release with automatic versioning
- 🚀 Publishes bundles as release artifacts
Version Format: vYYYY.MM.DD-{git-hash}
Example: v2025.10.19-abc1234
- Add feeds to the appropriate category file (e.g.,
tech-en.opml.xml) - Update bundle configurations if needed
- Commit and push to
main - Automated workflow will validate and release
python scripts/build_bundles.py --validate-onlypython scripts/build_bundles.py --build-onlypython scripts/build_bundles.py- Python 3.11+
- PyYAML (
pip install pyyaml)
This collection is provided as-is for personal use. Individual feeds are subject to their respective sources' terms of service.
Contributions are welcome! Please:
- Ensure feeds are freely accessible (no hard paywalls)
- Verify RSS/Atom URLs are valid
- Organize feeds in the appropriate category file
- Update bundle configurations if adding new categories
All feeds in this collection should:
- ✅ Be freely accessible (or have substantial free content)
- ✅ Provide valid RSS/Atom feeds
- ✅ Have consistent publishing schedules
- ✅ Be from reputable sources