AI-driven news aggregation: multi-source fetch, AI scoring, bilingual summaries (EN/HI), MCP server.
Project description
genaiforgenews
AI curates the tech news. You just read.
genaiforgenews collects news from multiple customizable sources, uses AI to score and filter them, and generates a daily briefing โ complete with summaries, community discussions, and background explanations in English and/or Hindi.
๐ Live Demo ยท ๐ Configuration Guide ยท เคนเคฟเคเคฆเฅ
Screenshots
|
Daily Overview |
News Detail |
Terminal Output
Features
- ๐ก Multi-Source Aggregation โ Collects from Hacker News, RSS feeds, Reddit, Telegram channels, and GitHub (releases & user events)
- ๐ค AI-Powered Scoring โ Uses Claude, GPT-4, Gemini, DeepSeek, Doubao, MiniMax, or any OpenAI-compatible API to rate each item 0-10, filtering out the noise
- ๐ Bilingual Summaries โ Generates daily reports in English and/or Hindi (
hiin config) - ๐ Content Enrichment โ Searches the web to provide background knowledge for unfamiliar concepts
- ๐ฌ Community Voices โ Collects and summarizes discussions from comments on HackerNews, Reddit, etc.
- ๐ Cross-Source Deduplication โ Merges duplicate items from different platforms automatically
- ๐ง Email Subscription โ Self-hosted newsletter system (SMTP/IMAP) that handles "Subscribe" requests automatically
- ๐ Static Site Generation โ Deploys as a GitHub Pages site via GitHub Actions, updated on a schedule
- โ๏ธ Fully Configurable โ Single JSON config file, easy to customize sources, thresholds, and AI providers
- ๐ง Setup Wizard โ Interactive CLI that recommends sources based on your interests, with a curated preset library open to community contributions
How It Works
โโโโโโโโโโโโ
โ Hacker โ
โโโโโโโโโโโ โ News โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ RSS โโโโถโ Reddit โโโโถโ AI Score โโโโถโ Enrich โโโโถโ Summary โ
โ Telegramโ โ GitHub โ โ & Filter โ โ & Search โ โ & Deploy โ
โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
Fetch from Merge & Score Web search Generate
all sources deduplicate 0-10 each background Markdown &
& filter knowledge deploy site
- Fetch โ Pull latest content from all configured sources concurrently
- Deduplicate โ Merge items pointing to the same URL across different platforms
- Score โ AI rates each item 0-10 based on technical depth, novelty, and impact
- Filter โ Keep only items above your configured threshold (default: 6.0)
- Enrich โ For high-scoring items, search the web for background context and collect community discussions
- Summarize โ Generate a structured Markdown report with summaries, tags, and references
- Deploy โ Optionally publish to GitHub Pages as a daily-updated static site
Quick Start
1. Install
Option A: From PyPI (quickest)
Install from PyPI and use a dedicated working directory (the app reads ./data/ and .env from your current folder):
pip install genaiforgenews
mkdir ~/my-genaiforgenews && cd ~/my-genaiforgenews
# Add API keys to .env (see .env.example in the repo)
genaiforgenews-wizard # writes data/config.json
genaiforgenews
Full notes for pip users and maintainer publishing steps (build, TestPyPI, Twine) are in docs/PYPI.md.
Option B: Local installation (git clone)
git clone https://github.com/vikas972/genAINews.git
cd genAINews
# Install with uv (recommended)
uv sync
# Or with pip (editable)
pip install -e .
Option C: Docker
git clone https://github.com/vikas972/genAINews.git
cd genAINews
# Configure environment
cp .env.example .env
cp data/config.example.json data/config.json
# Edit .env and data/config.json with your API keys and preferences
# Run with Docker Compose
docker compose run --rm genaiforgenews
# Or run with custom time window
docker compose run --rm genaiforgenews --hours 48
2. Configure
Option A: Interactive wizard (recommended)
uv run genaiforgenews-wizard
The wizard asks about your interests (e.g. "LLM inference", "ๅตๅ
ฅๅผ", "web security") and auto-generates data/config.json from a curated preset library + optional AI recommendations.
Option B: Manual configuration
cp .env.example .env # Add your API keys
cp data/config.example.json data/config.json # Customize your sources
Here's what a config looks like:
{
"ai": {
"provider": "openai", // or "anthropic", "gemini", "doubao", "minimax"
"model": "gpt-4",
"api_key_env": "OPENAI_API_KEY", // env var NAME only; put the secret in .env (e.g. GOOGLE_API_KEY for Gemini)
"languages": ["en", "hi"] // English + Hindi output
},
"sources": {
"hackernews": { "enabled": true, "fetch_top_stories": 20, "min_score": 100 },
"rss": [
{ "name": "Simon Willison", "url": "https://simonwillison.net/atom/everything/" }
],
"reddit": {
"subreddits": [{ "subreddit": "MachineLearning", "sort": "hot" }],
"fetch_comments": 5
},
"telegram": {
"channels": [{ "channel": "zaihuapd", "fetch_limit": 20 }]
}
},
"filtering": {
"ai_score_threshold": 6.0,
"time_window_hours": 24
}
}
For the full reference, see the Configuration Guide.
3. Run
Local Installation
uv run genaiforgenews # Run with default 24h window
uv run genaiforgenews --hours 48 # Fetch from last 48 hours
With Docker
docker compose run --rm genaiforgenews # Run with default 24h window
docker compose run --rm genaiforgenews --hours 48 # Fetch from last 48 hours
The generated report will be saved to data/summaries/.
4. Automate (Optional)
genaiforgenews works great as a GitHub Actions cron job. See .github/workflows/daily-summary.yml for a ready-to-use workflow that generates and deploys your daily briefing to GitHub Pages automatically.
Supported Sources
| Source | What it fetches | Comments |
|---|---|---|
| Hacker News | Top stories by score | Yes (top N comments) |
| RSS / Atom | Any RSS or Atom feed | โ |
| Subreddits + user posts | Yes (top N comments) | |
| Telegram | Public channel messages | โ |
| GitHub | User events & repo releases | โ |
MCP Integration
genaiforgenews ships with a built-in MCP server so AI assistants can drive the pipeline programmatically.
# Start the MCP server (stdio mode)
uv run genaiforgenews-mcp
Available tools include hz_validate_config, hz_fetch_items, hz_score_items, hz_filter_items, hz_enrich_items, hz_generate_summary, and hz_run_pipeline.
See src/mcp/README.md for the full tool reference and src/mcp/integration.md for client setup.
Roadmap
- Multi-source aggregation (HN, RSS, Reddit, Telegram, GitHub)
- AI scoring with multiple providers
- Bilingual summary generation (EN/HI)
- Web search for background enrichment
- Community discussion collection
- GitHub Pages deployment
- Email Subscription (SMTP/IMAP automated newsletter)
- Docker deployment support
- MCP server integration
- Web UI dashboard
- Setup Wizard โ interactive CLI that recommends sources based on user interests
- Improved Web UI โ better digest and article detail experience
- Slack / Webhook notification
- More source types (Twitter/X, Discord, etc.)
- Custom scoring prompts per source
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests.
Contribute Source Presets
genaiforgenews's setup wizard uses a community-maintained preset library to recommend sources. We'd love your help expanding it!
- Fork this repo
- Add your sources to
data/presets.json(provide both English and Hindidescription/description_hiwhere useful) - Submit a PR
Great candidates: niche RSS feeds, active subreddits, notable GitHub accounts, or Telegram channels in your area of expertise.
Acknowledgements
- Special thanks to LINUX.DO for providing a promotion platform.
- Special thanks to HelloGitHub for valuable guidance and suggestions.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file genaiforgenews-0.1.1.tar.gz.
File metadata
- Download URL: genaiforgenews-0.1.1.tar.gz
- Upload date:
- Size: 61.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23d5f27ccd3816eaa2ca4a3f379bb4c3b25053bde6e78ff5f15617618562d0d2
|
|
| MD5 |
57ec14e401b0fa1810c51ff2b2745105
|
|
| BLAKE2b-256 |
705ac8541d0f585a3ff1518b32deca102418b1f5dd3f08e7a6afdc6743e69195
|
File details
Details for the file genaiforgenews-0.1.1-py3-none-any.whl.
File metadata
- Download URL: genaiforgenews-0.1.1-py3-none-any.whl
- Upload date:
- Size: 73.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e95603e9d18f902a2089a5c837cb5784e53c1c10ffb146dcdf9c65622ac076a
|
|
| MD5 |
149d08e177a3c63d988d82911d4a7447
|
|
| BLAKE2b-256 |
9218b4c24b2c35581205de4a79bd4bff847bedeaf95f561363d95ae010e0804a
|