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",   // 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 โ€”
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.1.tar.gz (61.8 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.1-py3-none-any.whl (73.7 kB view details)

Uploaded Python 3

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

Hashes for genaiforgenews-0.1.1.tar.gz
Algorithm Hash digest
SHA256 23d5f27ccd3816eaa2ca4a3f379bb4c3b25053bde6e78ff5f15617618562d0d2
MD5 57ec14e401b0fa1810c51ff2b2745105
BLAKE2b-256 705ac8541d0f585a3ff1518b32deca102418b1f5dd3f08e7a6afdc6743e69195

See more details on using hashes here.

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

Hashes for genaiforgenews-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7e95603e9d18f902a2089a5c837cb5784e53c1c10ffb146dcdf9c65622ac076a
MD5 149d08e177a3c63d988d82911d4a7447
BLAKE2b-256 9218b4c24b2c35581205de4a79bd4bff847bedeaf95f561363d95ae010e0804a

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