explaingit

thysrael/horizon

3,766PythonAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

A self-hosted Python tool that pulls from Hacker News, Reddit, RSS feeds, Twitter, GitHub, and financial news, uses AI to score and filter stories, adds web-search context, and delivers a ranked daily briefing to email, Slack, Discord, or a GitHub Pages site.

Mindmap

mindmap
  root((Horizon))
    What it does
      News aggregation
      AI scoring
      Daily briefing
    Sources
      Hacker News Reddit
      RSS feeds Twitter
      GitHub OpenBB
    Delivery
      Email newsletter
      Slack Discord
      GitHub Pages
      MCP interface
    AI backends
      Claude GPT Gemini
      Ollama DeepSeek
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Get a single daily briefing that combines and ranks stories from all your news sources without manually visiting each site

USE CASE 2

Filter out low-quality content automatically by setting a minimum AI relevance score tuned to your interests

USE CASE 3

Deliver personalized news summaries to a Slack or Discord channel, or push them to a self-hosted GitHub Pages site

USE CASE 4

Access your briefing through an MCP interface so AI assistants can query the day's top stories directly

Tech stack

PythonGitHub PagesGitHub Actions

Getting it running

Difficulty · moderate Time to first run · 30min

Requires an AI provider API key and credentials for any social or financial data sources you want to include in the briefing.

Use, modify, and distribute freely for any purpose including commercial use, as long as you keep the MIT license notice.

In plain English

Horizon is a self-hosted news aggregator that uses AI to build a personalized daily briefing. Instead of manually visiting Hacker News, Reddit, RSS feeds, Telegram channels, Twitter/X, GitHub, or financial news sources through OpenBB, you configure which sources you want to watch, and Horizon runs a pipeline to fetch, deduplicate, score, and summarize them into a single ranked briefing. The pipeline works in stages: it pulls content from all configured sources, merges duplicate stories that appeared across platforms, uses an AI model to score each item from 0 to 10 and filters out anything below your threshold, searches the web to add background context for unfamiliar concepts, collects and summarizes community discussion from Hacker News and Reddit, then produces a structured Markdown briefing. That briefing can be delivered as a GitHub Pages site, by email through a self-hosted newsletter, or pushed to chat platforms like Feishu/Lark, DingTalk, Slack, Discord, or any custom webhook endpoint. An MCP interface is also available, letting AI agents access the briefing directly. AI scoring supports multiple providers: Claude, GPT, Gemini, DeepSeek, Doubao, MiniMax, Ollama, or any OpenAI-compatible API. Briefings can be generated in both English and Chinese from the same source set. Configuration is handled through a single JSON config file, and a setup wizard helps generate a personalized source configuration to get started. It is written in Python and licensed under MIT. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Set up Horizon to aggregate Hacker News, two subreddits, and my RSS feeds, score stories with Claude, and deliver a Markdown briefing to my email each morning.
Prompt 2
Walk me through the Horizon JSON config file, what does each field control and how do I express my interest profile so the AI scoring reflects my actual priorities?
Prompt 3
How does Horizon deduplicate stories that appear on both Hacker News and Reddit? Walk me through the merging step in the pipeline.
Prompt 4
How do I schedule Horizon to run every morning at 7am using GitHub Actions and push the briefing to GitHub Pages automatically?
Prompt 5
Configure Horizon to post daily briefings to a Discord channel using a webhook URL.
Open on GitHub → Explain another repo

← thysrael on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.