A minimal, searchable RSS feed archive automatically updated via GitHub Actions and hosted on GitHub Pages.
- 📡 Automatic RSS feed fetching
- 🔍 Real-time search by title or source
- 📅 Sortable by date
- 🎨 Clean, minimal design with Tailwind CSS
- 🌙 Dark mode friendly
- 📱 Fully responsive
- ⚡ No frameworks needed (vanilla JS)
- 🔄 Auto-updates weekly via GitHub Actions
- Create a new repository on GitHub (e.g.,
rss-archive) - Clone it to your local machine:
git clone https://github.com/YOUR-USERNAME/rss-archive.git cd rss-archive
Copy all files from this project to your repository:
rss-archive/
├── .github/
│ └── workflows/
│ └── update-feed.yml
├── fetch_rss.py
├── requirements.txt
├── index.html
└── README.md
You have two options:
Option A: Use GitHub Secrets (Recommended)
- Go to your repository on GitHub
- Navigate to Settings → Secrets and variables → Actions
- Click "New repository secret"
- Name:
RSS_FEED_URL - Value: Your RSS feed URL (e.g.,
https://example.com/feed.xml) - Click "Add secret"
Option B: Edit the Python Script Directly
Edit fetch_rss.py line 84:
RSS_FEED_URL = os.environ.get("RSS_FEED_URL", "https://your-feed-url.com/rss")- Go to your repository on GitHub
- Navigate to Actions tab
- If prompted, enable Actions for your repository
- Go to Settings → Pages
- Under "Source", select "Deploy from a branch"
- Under "Branch", select
mainand/ (root) - Click "Save"
- Wait a few minutes for deployment
Your site will be available at: https://YOUR-USERNAME.github.io/rss-archive/
For the first run, you'll need to generate the initial feed.json:
Option 1: Run locally
# Install dependencies
pip install -r requirements.txt
# Set your RSS feed URL
export RSS_FEED_URL="https://your-feed-url.com/rss"
# Run the script
python fetch_rss.py
# Commit and push
git add feed.json
git commit -m "Initial RSS feed data"
git pushOption 2: Trigger GitHub Action manually
- Go to Actions tab
- Click "Update RSS Feed" workflow
- Click "Run workflow"
- Select branch
mainand click "Run workflow"
- Visit your GitHub Pages URL
- You should see your RSS feed items displayed
- Test the search functionality
- Try sorting by clicking the "Date" column header
Edit .github/workflows/update-feed.yml:
schedule:
- cron: '0 9 * * 0' # Every Sunday at 9 AM UTCCron format: minute hour day month weekday
Examples:
- Daily at midnight:
0 0 * * * - Every Monday at 8 AM:
0 8 * * 1 - Twice a week (Mon & Thu at 10 AM):
0 10 * * 1,4
Edit index.html to:
- Change the title and header
- Modify colors (Tailwind classes)
- Add your GitHub repo link in the footer
- Adjust table columns
To support multiple RSS feeds, modify fetch_rss.py to loop through multiple URLs:
RSS_FEEDS = [
"https://feed1.com/rss",
"https://feed2.com/rss",
]
for feed_url in RSS_FEEDS:
new_items.extend(fetch_rss(feed_url))- Check if Actions are enabled in Settings → Actions
- Verify the
RSS_FEED_URLsecret is set correctly - Check the Actions tab for error logs
- Make sure
feed.jsonexists in the repository - Run the workflow manually to generate initial data
- Check browser console for errors
- Ensure Pages is enabled in Settings → Pages
- Wait a few minutes after pushing changes
- Check Actions tab for Pages deployment status
To test locally:
# Install dependencies
pip install -r requirements.txt
# Set your RSS feed URL
export RSS_FEED_URL="https://your-feed-url.com/rss"
# Fetch feed
python fetch_rss.py
# Serve locally with Python
python -m http.server 8000
# Open http://localhost:8000 in your browser- Python 3.7+
- feedparser
- requests
- GitHub account
- GitHub Pages enabled repository
MIT License - feel free to use and modify as needed.