Skip to main content

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.

Python License uv Daily Summary GitHub commit activity PRs Welcome Sources Welcome

Claude GPT Gemini DeepSeek Doubao MiniMax OpenClaw

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

Daily Overview

News Detail

News Detail
Terminal Output

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 (hi in 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
  1. Fetch โ€” Pull latest content from all configured sources concurrently
  2. Deduplicate โ€” Merge items pointing to the same URL across different platforms
  3. Score โ€” AI rates each item 0-10 based on technical depth, novelty, and impact
  4. Filter โ€” Keep only items above your configured threshold (default: 6.0)
  5. Enrich โ€” For high-scoring items, search the web for background context and collect community discussions
  6. Summarize โ€” Generate a structured Markdown report with summaries, tags, and references
  7. 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",
    "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 โ€”
Reddit 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!

  1. Fork this repo
  2. Add your sources to data/presets.json (provide both English and Hindi description / description_hi where useful)
  3. 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

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

genaiforgenews-0.1.0.tar.gz (60.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

genaiforgenews-0.1.0-py3-none-any.whl (72.5 kB view details)

Uploaded Python 3

File details

Details for the file genaiforgenews-0.1.0.tar.gz.

File metadata

  • Download URL: genaiforgenews-0.1.0.tar.gz
  • Upload date:
  • Size: 60.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for genaiforgenews-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bfa6c30d16d4b6d8393d3f7a95fdf521399d5d812f90634611d8928ddc64588d
MD5 ec476d976905fae551ca63391a83fe06
BLAKE2b-256 358d383d33d8fbdb6c9557b3c3315b2abe11bc8e219ebb7d17a8d52f63dcada4

See more details on using hashes here.

File details

Details for the file genaiforgenews-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: genaiforgenews-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 72.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for genaiforgenews-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5251a62f11c3d4b1910992f7b815379d9fd39a26598f68d8ea11d6fa19087989
MD5 b4e6c710cd2691e462d5df727a881cb1
BLAKE2b-256 6a6b102d100c783a47f8a8f2442f6eee6ba99c050dedfe93f1569f02178faabc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page