Horizon: Turn multi-source news into bilingual daily briefings
Horizon is an AI news radar for developers that turns RSS and community content into contextual bilingual daily briefings.
GitHub Thysrael/Horizon Updated 2026-11-05 Branch main Stars 12.5K Forks 1.8K
Python Shell Docker AI news radar RSS and social platforms GitHub Actions MCP English and Chinese

🧭 Decision Guide

Try it if you

  • You need to combine RSS, Hacker News, Reddit, Telegram, X, and GitHub into a daily briefing.
    The README's Supported Sources lists these sources, and Why Horizon? says Horizon collects, filters, and deduplicates content.
  • You want Profiles to use different scoring criteria and output treatments for news and engineering deep dives.
    Why Horizon? and How It Works? state that each item routes to one Profile whose treatment is defined separately.
  • You want to use the Python CLI or Docker to generate bilingual Markdown and deliver it to Pages, email, or a webhook.
    Quick Start provides uv run horizon and docker compose run commands, while Features lists Pages, email, and webhook delivery.
  • You want an AI assistant to configure sources, modify Profiles, and run Horizon through MCP.
    Agent Skill provides the npx skills add command, and How It Works? says an AI assistant can call the stages through MCP.

Skip it if you

  • Your deployment must use the Twitter extra but cannot install the Playwright browser and system packages.
    The Docker section of Quick Start explicitly says the Twitter extra requires a Playwright browser and system packages that the current Dockerfile does not install.
  • You require stable releases and PyPI installation; the project currently has no Releases and PyPI publication remains planned.
    Project metadata reports 0 releases; Project Status lists publishing the package to PyPI for pip install as a planned improvement.
  • You need Discord as an already-supported source rather than extending the source types yourself.
    Project Status lists More source types, such as Discord as planned, and Discord is absent from Supported Sources.

Requirements

  • Local installation can use uv sync or pip install -e .; the README marks uv as recommended.
  • Docker execution requires the Docker Compose command docker compose run --rm horizon [OPTIONS].
  • The Agent Skill npx skills add command requires Node.js 22.20+.
  • The optional OpenBB financial-news source requires uv sync --extra openbb.
  • Development dependencies and pytest require uv sync --extra dev.

First step (verbatim from README)

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

Watch out

  • Setting --data-dir changes the locations of summaries, subscribers, and the default configuration.
    The Run section of Quick Start says --data-dir changes the state directory and saves reports to data/summaries/ or /summaries/.
  • Setting only --config does not change the data directory; it changes only the configuration file location.
    The Run section of Quick Start explicitly distinguishes the effects of --config and --data-dir.
  • The GitHub Actions template has a .disabled suffix and will not run automatically when deployed as-is.
    The Automate section requires configuring daily-summary.yml.disabled and renaming it to daily-summary.yml to enable it.
  • When OpenBB has no wheel, the README's specified workaround is uv pip install --only-binary=:all: openbb openbb-benzinga.
    The OpenBB installation instructions in Quick Start provide this exact command.

Not stated in the README

  • The README does not specify the required Python version.
  • The README does not list the required AI models, model providers, API-key configuration, or usage costs.
  • The README does not describe authentication limits, rate limits, or retry behavior for each source.
  • The README does not provide CPU, memory, or runtime requirements for generating one daily briefing.
  • The README does not specify credential formats or security requirements for webhook, email, and WeChat delivery.
  • The README does not provide test coverage, a supported operating-system list, or a production-deployment support scope.

💡 Deep Analysis

6
It depends I use Python and Docker to deploy Horizon and must ingest Twitter/X timelines. Since X requires Playwright, can I adopt the Docker deployment directly?
For: A developer deploying an aggregation service with Python and Docker who plans to add Twitter/X timelines

It depends: the base Docker deployment is supported, but Twitter/X is not ready to use out of the box.

  • Quick Start documents running the full pipeline with docker compose run --rm horizon [OPTIONS].
  • Supported Sources describes Twitter / X ingestion through Apify for user timelines and keyword searches, including reply summaries.
  • The README explicitly warns that the twitter extra requires a Playwright browser and system packages, while the current Dockerfile does not install them. Enabling X directly may therefore fail at runtime.
  • If your hard requirement is reliable X ingestion inside an unmodified Docker image, Horizon does not meet it. If you can extend the image and manage Apify access, the deployment remains viable.

The README does not provide a complete Dockerfile patch, Apify quota details, or recovery behavior for authentication and scraping failures.

  • Quick Start: `docker compose run --rm horizon [OPTIONS]`
  • Supported Sources: Twitter / X, user timelines + keyword searches (Apify)
  • Quick Start / Docker: `The twitter extra also requires a Playwright browser and system packages, which the current Dockerfile does not install.`
docker compose build --build-arg EXTRAS=openbb horizon
Not stated in the README:The README does not specify the Dockerfile changes required to install Playwright system dependencies;The README does not document Apify pricing, quotas, or retry behavior after X access failures
Yes I already track technology topics through RSS, Hacker News, GitHub, and Google News, and I want GitHub Actions to generate English and Chinese Markdown briefings every day. Is Horizon suitable?
For: An individual researcher tracking RSS, Hacker News, GitHub, and Google News who wants bilingual briefings generated daily through GitHub Actions

Yes, because the requested sources, bilingual generation, and scheduled GitHub Actions execution are all covered by the README.

  • Supported Sources lists RSS / Atom, Hacker News, GitHub, and Google News. Hacker News also supports fetching top comments.
  • Features and Project Status state that Horizon generates English and Chinese briefings and can output Markdown.
  • The Automate section provides a daily workflow template, but the template is disabled in the repository and must be renamed to daily-summary.yml before it runs.
  • Reports are saved under data/summaries/ by default, which fits a CI or GitHub Pages publishing flow.

The README does not specify the actual GitHub Actions cost, retry behavior, or the default model configuration for Chinese generation.

  • Supported Sources: RSS / Atom, Hacker News, GitHub, and Google News
  • Features: Generate English and Chinese briefings as Markdown
  • Automate: rename it to `daily-summary.yml` to enable it
  • Project Status: GitHub Pages publishing and bilingual generation
git clone https://github.com/Thysrael/Horizon.git
Not stated in the README:The README does not specify model usage, cost, or timeout limits per GitHub Actions run;The README does not identify the default model or guarantee the quality of Chinese output
Yes I run Node.js 22.20+ and want an AI assistant to install Horizon, configure sources and profiles, and execute the pipeline through MCP. Is the Agent Skill suitable for this setup?
For: An AI-assistant user running Node.js 22.20+ who wants the assistant to configure sources, edit profiles, and invoke Horizon through MCP

Yes. The README provides an Agent Skill for Node.js 22.20+ users and explicitly supports having an AI assistant configure sources, customize profiles, and run Horizon.

  • The Agent Skill section provides the installation command and requires Node.js 22.20+; afterward, the assistant can install and configure Horizon.
  • How It Works says the full pipeline can run through the CLI, while an AI assistant can call individual stages through MCP.
  • Project Status lists MCP integration and the setup wizard as supported, reducing the need to edit every configuration file manually.
  • Agent Skill and MCP serve different roles: the Skill assists with installation and configuration, while MCP lets a client invoke pipeline stages. Model, source, and delivery settings still need to be configured.

The README does not identify supported AI-assistant clients, MCP permission boundaries, secret-injection methods, or whether generated profiles are automatically validated.

  • Agent Skill: The command requires Node.js 22.20+
  • Agent Skill: Let your AI assistant configure sources, customize Profiles, and run Horizon
  • How It Works: let an AI assistant call its stages through MCP
  • Project Status: MCP integration and the setup wizard
npx skills add Thysrael/Horizon --skill horizon -g
Not stated in the README:The README does not identify compatible AI-assistant clients or MCP client versions;The README does not document MCP permissions, API-key injection, or automatic profile validation
Yes I need to track company news through an OpenBB watchlist while processing technology RSS with a separate profile. Can Horizon filter them with different thresholds and merge duplicate reports?
For: A Python researcher tracking company news through an OpenBB watchlist while scoring financial and technology RSS items separately

Yes. Horizon’s profile routing, per-profile thresholds, and profile-scoped deduplication fit a split workflow for financial and technology coverage.

  • Features allow profiles to define scoring rubrics, individual thresholds, and duplicate-story merging within each profile.
  • How It Works states that each item routes to one profile and that analysis, filtering, and deduplication happen before enrichment. This allows separate treatment for financial and technology content.
  • Supported Sources lists OpenBB for financial company news by watchlist/provider, while RSS / Atom can supply technology feeds.
  • OpenBB is optional. Quick Start requires uv sync --extra openbb; if the machine lacks compatible wheels, the README provides a binaries-only installation command.

The README does not specify supported OpenBB providers, the watchlist configuration format, financial-news coverage, or whether cross-source duplicates are always merged correctly.

  • Features: Define scoring rubrics with profiles, set individual thresholds, and merge repeated stories within each profile
  • How It Works: Each item routes to one profile; analysis, filtering, and deduplication happen before enrichment
  • Supported Sources: OpenBB — financial company news by watchlist/provider
  • Quick Start: `uv sync --extra openbb`
uv sync --extra openbb
Not stated in the README:The README does not provide the complete OpenBB provider list or watchlist configuration fields;The README does not specify financial-source coverage, update latency, or cross-profile deduplication rules
Yes We already use a Feishu webhook for daily results and want to publish the same English and Chinese Markdown briefing to GitHub Pages. Can Horizon satisfy both output constraints?
For: A small technical team already receiving daily notifications through Feishu or Slack webhooks that also wants a GitHub Pages Markdown briefing

Yes. The README explicitly treats webhook delivery and the GitHub Pages Daily Site as separate output channels, while also supporting English and Chinese briefings.

  • Where Your Briefing Goes states that webhooks can push success or failure results to Feishu/Lark, DingTalk, Slack, Discord, or a custom endpoint.
  • The same section says the GitHub Pages Daily Site copies generated Markdown into docs/ for a daily-updated Pages site.
  • Features and Project Status confirm English and Chinese briefing generation, so separate language-specific pipelines are not required.
  • The webhook description refers to result notifications, not necessarily rendering the full report inside the chat platform; Markdown or Pages can carry the report itself.

The README does not document the exact multi-channel configuration structure, notification payload schema, webhook signing, or repository permissions required for Pages deployment.

  • Where Your Briefing Goes: Webhook Notification — Feishu/Lark, DingTalk, Slack, and Discord
  • Where Your Briefing Goes: GitHub Pages Daily Site — copies generated Markdown into `docs/`
  • Features: Generate English and Chinese briefings as Markdown
  • Project Status: webhook delivery and GitHub Pages publishing
uv run horizon [OPTIONS]
Not stated in the README:The README does not show a configuration example for enabling multiple output channels together;The README does not specify the webhook payload format, signing, or GitHub Pages permission requirements
Yes We track news, engineering deep dives, and GitHub releases, and want news to explain why it matters, engineering content to explain how it can be used, while preventing one category from filling the entire briefing. Can Horizon do this?
For: A small R&D team that wants separate reading criteria for news, engineering deep dives, and GitHub releases while limiting the total daily briefing length

Yes. Horizon puts content-specific scoring, processing prompts, and category quotas into profiles and briefing generation.

  • Why Horizon? explicitly contrasts “why it matters” for news with “what I can use” for engineering deep dives, showing that different reading goals are supported.
  • Features support profiles, scoring rubrics, individual thresholds, and treatments such as summaries, context, solutions, and takeaways.
  • The same Features section supports limiting total briefing length and each category’s share, preventing one popular topic from consuming the entire briefing.
  • GitHub is a supported source that fetches user events and repository releases.

This is suitable for filtering and reading assistance, but the README does not explain the exact ranking algorithm when category quotas conflict, nor does it guarantee that generated “solutions” are safe to apply directly in engineering decisions.

  • Why Horizon: A news story calls for “why it matters”; an engineering deep dive calls for “what I can use.”
  • Features: profiles, scoring rubrics, and individual thresholds
  • Features: Choose summaries, context, solutions, or takeaways
  • Features: Cap the briefing's length and each category's share
  • Supported Sources: GitHub — user events & repo releases
uv run horizon [OPTIONS]
Not stated in the README:The README does not specify ranking and eviction behavior when category quotas conflict;The README does not say whether profiles can share an item or whether generated solutions receive factual validation

✨ Highlights

  • Supports RSS, Hacker News, Reddit, Telegram, X, and GitHub
  • Profiles filter content with scoring rubrics, thresholds, and story deduplication
  • Generates English and Chinese Markdown for Pages, email, and webhooks
  • The Twitter extra requires a Playwright browser and system packages

🔧 Engineering

  • The CLI runs collection, analysis, filtering, deduplication, and briefing generation
  • Profiles define scoring criteria and Markdown output prompts for different content
  • Supports comment summaries, web background, WeChat delivery, and MCP integration
  • A GitHub Actions daily workflow can automate daily briefing generation

⚠️ Risks

  • The Twitter extra depends on Playwright and system packages not installed by the Dockerfile
  • The OpenBB extra may pull packages without wheels; the README specifies binary-only installation
  • daily-summary.yml.disabled is disabled by default and must be renamed to enable it
  • The project has no published versions; GitHub metadata reports 0 releases

👥 For who?

  • Individual developers who need to combine RSS, Reddit, Telegram, and GitHub
  • Teams managing daily technical news with Docker or a Python CLI
  • Users needing English and Chinese Markdown delivered to Pages, email, or webhooks