Articlay 📰
A comprehensive news aggregator that fetches articles from popular magazines and news sources worldwide, including India and Tamil Nadu, and presents them in a beautiful, minimalistic UI.
✨ Zero Configuration CLI - Install and use immediately with pip install articlay!
Features
News Aggregation
- 🌍 Global Coverage: Fetches from 35+ news sources including Reuters, Forbes, The Economist, Wired, Nature, BBC, CNN, Al Jazeera, and more
- 🇮🇳 Indian News: Includes The Hindu, Times of India, Indian Express, NDTV, Hindustan Times, Zee News, India Today, DD News
- 🏛️ Tamil Nadu News: Features Dinamalar, Dinamani, Daily Thanthi
- 🎬 Movie & Film: Mubi, Letterboxd, RogerEbert.com, IndieWire, Criterion Collection, Film Companion, Filmfare, Variety
- 📚 Literature: Literary Hub, Project Gutenberg, The Paris Review, Granta, New Yorker Books, Hindu Literary Review
- ✍️ Writing: Medium, Substack, Wattpad, Electric Literature, Poets.org, Reddit r/writing
- 📂 Categorized Articles: Organized by World, India, Tamil Nadu, Movie, Literature, Writing, Reddit, Business, Technology, Science, Culture, and more
- ⚡ Frequent Updates: Runs automatically every 15 minutes
- 🔄 Deduplication: Intelligent article deduplication to prevent duplicates across sources
- 🎯 One Article Per Source: Displays one unique article from each news source per update
Wikipedia & Special Content
- 📚 Wikipedia Article of the Day: Featured article with full content
- 🖼️ Wikipedia Picture of the Day: Beautiful daily images from Wikimedia Commons
- 📜 Wikipedia Quote of the Day: Inspiring quotes from Wikiquote
- 🎲 Random Wikipedia Article: Discover something new every day
- 📅 On This Day in History: Historical events that happened on the current date
- 💡 Daily Quotes: Inspirational quotes from multiple sources
User Interface
- 🌐 GitHub Pages UI: Beautiful, minimalistic interface to browse today's articles
- 🎨 1970s Retro Design: Bold red Courier New header with vintage text shadow effects
- 🌈 Retro Article Highlights: Colorful gradient left border appears on hover for a vintage magazine feel
- 🎭 Easter Egg: Jean-Michel Basquiat-style art revealed when scrolling to bottom (footer fades away)
- 👆 Touch Gestures: Swipe left/right to switch between tabs (no refresh), pull down to refresh
- 🌓 Dark Mode: Toggle between light and dark themes with localStorage persistence
- 🔍 Powerful Search: Real-time search by keywords or source names (e.g., "forbes", "technology", "climate")
- Search across all fields or filter by source name, title, description, or category
- Case-insensitive with instant results as you type
- Clear search to return to all articles
- 📊 Statistics Dashboard: View article counts, sources, and categories at a glance
- 📱 Responsive Design: Works perfectly on desktop, tablet, and mobile
- 🕐 IST Timezone: All times and dates use Indian Standard Time
Data Management
- 💾 Gist Storage: Stores current date's article data (title, description, link, publish date, category) to GitHub Gist
- 🎯 Current Date Focus: Only keeps today's articles to maintain optimal performance (keeps JSON ~386KB instead of accumulating to 11+MB over time)
Installation
Prerequisites
- Python 3.7 or higher
- GitHub Personal Access Token (for Gist archiving)
Setup
- Clone the repository:
git clone https://github.com/pappater/articlay.git
cd articlay
- Install dependencies:
pip install -r requirements.txt
- Set up your GitHub token (for Gist archiving):
export GITHUB_TOKEN="your_github_personal_access_token"
Or create a .env file:
GITHUB_TOKEN=your_github_personal_access_token
Usage
Daily Automation (Recommended)
The repository is configured to automatically fetch articles every day at 6:00 AM IST via GitHub Actions. The scraped articles are:
- Stored in a GitHub Gist
- Displayed on the live UI
No manual intervention is required!
Command-Line Interface (CLI)
Articlay provides a powerful CLI for viewing articles right in your terminal.
✨ Zero Configuration Required! The CLI works immediately after installation with no setup needed.
Installation
Install from PyPI (recommended):
pip install articlay
That's it! No configuration, no Gist ID, no setup. Just install and use.
Or install from source:
git clone https://github.com/pappater/articlay.git
cd articlay
pip install -e .
Quick Start (No Setup Needed!)
# Install and use immediately
pip install articlay
# Show all articles
articlay --all
# Show India news
articlay --india --limit 10
# Get one random article
articlay random
# Show Tamil Nadu news
articlay --tamilnadu --limit 5
# Show tech articles
articlay --codetech -l 15
✅ Works out of the box - No Gist ID or environment variables needed!
✅ Same content as web UI - Access all articles from the terminal
✅ Perfect for developers - Fast, lightweight, and scriptable
Available Category Flags
--foryou- Curated selection from all sources--indiaor--indi- India news--tamilnaduor--tn- Tamil Nadu news--movie- Movie reviews and film news--literatureor--lit- Literature and books--writing- Writing tips and author resources--reddit- Popular Reddit posts--codetechor--tech- Technology and programming--artcultureor--art- Art exhibitions and culture--others- All other categories--all- Show all articles from today
Examples
# View help
articlay --help
# Show specific category with limit
articlay --india --limit 10
articlay --movie -l 5
# Random article discovery
articlay random
# Show all available articles
articlay --all --limit 0
Advanced Configuration (Optional)
Note: Configuration is NOT required for normal use! Only needed for advanced scenarios.
# Use your own Gist ID (optional)
export ARTICLAY_GIST_ID="your_gist_id"
articlay --all
# Use a private Gist (optional)
export GITHUB_TOKEN="your_token"
articlay --india
# Or pass Gist ID as argument (optional)
articlay --gist-id your_gist_id --all
For complete CLI documentation, see CLI_GUIDE.md.
Manual Scraper Execution
To manually run the article scraper:
# Set your GitHub token (required for Gist storage)
export GITHUB_TOKEN="your_github_token_here"
# Run the daily scraper
python daily_gist_job.py
This will:
- Fetch articles from all configured news sources
- Store them in the configured GitHub Gist
- Organize them by date and category
Legacy Magzter Tool
The original articlay.py tool for Magzter is still available:
# Basic usage (uses placeholder data)
python articlay.py --magazines 20 --articles 10
Output
The tool generates two types of output:
- Console Output: Displays selected articles with titles, magazine names, and links
- JSON File: Saves articles locally as
articlay-YYYY-MM-DD.json - GitHub Gist: Archives articles as markdown to a public Gist (if enabled)
Example Output
📰 Articlay - Magzter Article Aggregator
==================================================
Fetching top 10 popular magazines...
Found 10 magazines
Selecting 5 random articles from different magazines...
📚 Selected Articles:
--------------------------------------------------
1. Magazine 1 - Article 3
Magazine: Magazine 1
Link: https://www.magzter.com/magazine-1/article-3
2. Magazine 5 - Article 2
Magazine: Magazine 5
Link: https://www.magzter.com/magazine-5/article-2
...
✓ Archived to Gist: https://gist.github.com/...
✓ Articles saved to: articlay-2024-01-15.json
Setup for Your Own Instance
If you want to run Articlay on your own repository:
-
Fork the repository
-
Create a GitHub Gist
- Go to https://gist.github.com/
- Create a new gist with filename
magazine-articles.json - Initialize it with
{} - Copy the Gist ID from the URL
-
Update Configuration
- Edit
gist_config.pywith your Gist ID - Edit
docs/index.htmlto update theGIST_IDconstant
- Edit
-
Set up GitHub Token
- Go to GitHub Settings → Developer settings → Personal access tokens
- Generate a new token with
gistscope - Add it as a repository secret named
GIST_TOKEN
-
Enable GitHub Pages
- Go to repository Settings → Pages
- Source: Deploy from a branch
- Branch: main, folder: /docs
- Save
-
Enable GitHub Actions
- The workflows will run automatically
- Articles will be fetched daily at 6 AM IST
Requirements
See requirements.txt:
- requests>=2.31.0
- beautifulsoup4>=4.12.0
- lxml>=4.9.0
Live Demo
Visit the live UI: https://pappater.github.io/articlay/
Browse daily articles in a clean, minimalistic interface organized by category.
News Sources
World News (7 sources)
- Reuters, Time, The Atlantic, NPR, BBC, CNN, Al Jazeera
Business & Economics (3 sources)
- Forbes, The Economist, Bloomberg
Technology (1 source)
- Wired
Science & Nature (5 sources)
- National Geographic, Scientific American, Popular Science, New Scientist, Nature
Culture (2 sources)
- The New Yorker, Smithsonian Magazine
India (8 sources)
- The Hindu, Times of India, Indian Express, NDTV, Hindustan Times, Zee News, India Today, DD News
Tamil Nadu (3 sources)
- Dinamalar, Dinamani, Daily Thanthi
Wikipedia & Special Content (6 sources)
- Wikipedia Article of the Day
- Wikipedia Picture of the Day
- Random Wikipedia Article
- Wikiquote Quote of the Day
- On This Day in History
- Daily Inspirational Quotes
Total: 35+ sources across 9 categories
Automation
Articles are automatically scraped and stored every 15 minutes via GitHub Actions. Non-working scrapers are gracefully skipped.
Note: The 15-minute schedule is aggressive and may cause rate limiting with some sources. Monitor the GitHub Actions logs and adjust the schedule in .github/workflows/daily-gist.yml if needed (e.g., change to 0 */1 * * * for hourly updates).
Scraper Status
For tracking which scrapers are working and which need attention, see SCRAPER_STATUS.md. This document helps identify:
- Newly added scrapers pending production testing
- Known issues with specific scrapers
- Alternative sources when scrapers fail
- Testing instructions for individual scrapers
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for articlay 1.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| articlay-1.1.6.tar.gz | 40.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| articlay-1.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.9 kB
Release files / articlay-1.1.6.tar.gz
| Download URL | articlay-1.1.6.tar.gz |
|---|---|
| Size | 40.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6712f6dc2b5d1c645fe925d4ad866a666be11d7b424e056a30b68048549450b8
|
|
BLAKE2b-256 checksum How to use checksums |
116c154a2875d99fc4bb00e0ef8af601c874c8f1a67d283e11d8d40dc2eaf11e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.1
|
Release files / articlay-1.1.6-py3-none-any.whl
| Download URL | articlay-1.1.6-py3-none-any.whl |
|---|---|
| Size | 12.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68455b8d40038cc7c7c685ab23fa63382c6467361ae1a115c555e7c8c65064ef
|
|
BLAKE2b-256 checksum How to use checksums |
8ecb4b5a12db8939ca918dde26a95455a1880290b54a81d25037d82382619ec0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.1
|
Security for articlay 1.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.