SkillAgentSearch skills...

Horizon

Automated AI news aggregator & summarizer. Generates daily briefings in English & Chinese. | 全自动 AI 科技新闻聚合与摘要生成器。

Install / Use

/learn @Thysrael/Horizon
About this skill

Quality Score

0/100

Supported Platforms

Claude Code
Cursor

README

<div align="center">

🌅 Horizon

AI curates the tech news. You just read.

Python License uv Daily Summary GitHub commit activity PRs Welcome Sources Welcome <br>

Claude GPT Gemini DeepSeek Doubao MiniMax OpenClaw

Horizon 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 both English and Chinese.

📖 Live Demo · 📋 Configuration Guide · 简体中文

</div>

Screenshots

<table> <tr> <td width="50%"> <p align="center"><strong>Daily Overview</strong></p> <img src="docs/assets/overview_en.png" alt="Daily Overview" /> </td> <td width="50%"> <p align="center"><strong>News Detail</strong></p> <img src="docs/assets/one_news_en.png" alt="News Detail" /> </td> </tr> </table> <details> <summary><strong>Terminal Output</strong></summary> <br> <p align="center"> <img src="docs/assets/terminal_log.png" alt="Terminal Output" width="400" /> </p> </details>

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 both English and Chinese
  • 🔍 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: Local Installation

git clone https://github.com/Thysrael/Horizon.git
cd horizon

# Install with uv (recommended)
uv sync

# Or with pip
pip install -e .

Option B: Docker

git clone https://github.com/Thysrael/Horizon.git
cd horizon

# 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 horizon

# Or run with custom time window
docker-compose run --rm horizon --hours 48

2. Configure

Option A: Interactive wizard (recommended)

uv run horizon-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", "zh"]   // bilingual 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 horizon           # Run with default 24h window
uv run horizon --hours 48  # Fetch from last 48 hours

With Docker

docker-compose run --rm horizon           # Run with default 24h window
docker-compose run --rm horizon --hours 48  # Fetch from last 48 hours

The generated report will be saved to data/summaries/.

4. Automate (Optional)

Horizon 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

Horizon ships with a built-in MCP server so AI assistants can drive the pipeline programmatically.

# Start the MCP server (stdio mode)
uv run horizon-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

  • [x] Multi-source aggregation (HN, RSS, Reddit, Telegram, GitHub)
  • [x] AI scoring with multiple providers
  • [x] Bilingual summary generation (EN/ZH)
  • [x] Web search for background enrichment
  • [x] Community discussion collection
  • [x] GitHub Pages deployment
  • [x] Email Subscription (SMTP/IMAP automated newsletter)
  • [x] Docker deployment support
  • [x] MCP server integration
  • [x] Web UI dashboard
  • [x] 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

Horizon'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 Chinese descriptions)
  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

View on GitHub
GitHub Stars951
CategoryDevelopment
Updated1h ago
Forks151

Languages

Python

Security Score

85/100

Audited on Apr 5, 2026

No findings