Thysrael/Horizon

GitHub: Thysrael/Horizon

Horizon是一款基于AI的新闻雷达工具,生成英文和中文的每日简报。

Stars: 5655 | Forks: 794

# 🌅 天际线 **享受新闻本身。让其他人去天际线** [![许可证](https://img.shields.io/badge/license-MIT-green.svg?style=flat-square)](LICENSE) [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json&style=flat-square)](https://github.com/astral-sh/uv) [![每日摘要](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a781c6d8b4101948.svg)](https://thysrael.github.io/Horizon/) [![GitHub 提交活动](https://img.shields.io/github/commit-activity/m/Thysrael/Horizon?style=flat-square)](https://github.com/Thysrael/Horizon/commits/main) [![PRs 欢迎提交](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) ![来源欢迎](https://img.shields.io/badge/📡_sources-welcome-f97316?style=flat-square) Featured|HelloGitHub
![Claude](https://img.shields.io/badge/Claude-f0daba?style=flat-square&logo=anthropic&logoColor=black) ![GPT](https://img.shields.io/badge/GPT-412991?style=flat-square) ![Gemini](https://img.shields.io/badge/Gemini-8E75B2?style=flat-square&logo=google&logoColor=white) ![DeepSeek](https://img.shields.io/badge/DeepSeek-0A6DC2?style=flat-square) ![Doubao](https://img.shields.io/badge/Doubao-00D6C2?style=flat-square) ![MiniMax](https://img.shields.io/badge/MiniMax-FF6F00?style=flat-square) ![OpenClaw](https://img.shields.io/badge/OpenClaw-C83232?style=flat-square) ![Ollama](https://img.shields.io/badge/Ollama-FFFFFF?style=flat-square&logo=Ollama&logoColor=black) 📡 您自己的 AI 新闻雷达。生成英文和中文的每日简报。 | 构建你专属的 AI 新闻雷达 [📖 在线演示](https://thysrael.github.io/Horizon/) · [📋 配置指南](https://thysrael.github.io/Horizon/configuration) · [简体中文](README_zh.md)
## 截图

Ranked Daily Briefing

Daily Overview

Context, Summary & Discussion

News Detail
More Screenshots

Terminal Output

Terminal Output

Feishu Notification

Feishu Notification

Email Delivery

Email Delivery
## 为什么选择天际线? 好消息散落各处;坏消息源源不断。天际线为您提供了对 Hacker News、Reddit、Telegram、RSS 和 GitHub 的个人初筛:它抓取、去重、评分、过滤,并用背景信息和社区讨论丰富故事。 但天际线不仅仅是另一个摘要器。AI 在减少噪音方面很出色,但新闻仍需要人类的品味:您信任的来源、改变您阅读故事方式的评论,以及只有人们才能分享的隐藏宝藏。天际线通过可定制的来源、阈值、模型、语言、交付渠道、评论摘要和社区来源中心,将这一人类层融入循环中。 ## 功能 - **📡 监控您的来源** — 在一个管道中跟踪 Hacker News、RSS、Reddit、Telegram、Twitter/X、GitHub 发布或用户活动以及 OpenBB 财经新闻观察名单 - **🤖 将噪音转化为阅读列表** — 使用 Claude、GPT、Gemini、DeepSeek、Doubao、MiniMax、Ollama 或任何 OpenAI 兼容的 API 对每个条目进行 0-10 分的评分 - **🔗 合并重复的故事** — 在到达您的简报之前,跨平台合并指向同一故事的相同故事 - **🔍 理解背景** — 为不熟悉的概念、公司、项目和术语添加网络研究背景 - **💬 阅读对话** — 收集并总结来自 Hacker News、Reddit 和其他支持来源的社区评论 - **🌐 用两种语言发布** — 从同一来源集生成英文和中文的每日简报 - **📝 发布每日网站** — 将生成的 Markdown 作为 GitHub Pages 每日简报网站发布 - **📧 通过电子邮件发送** — 运行一个自托管的 SMTP/IMAP 通讯简报,自动处理订阅和取消订阅请求 - **🔔 推送到聊天或自动化** — 将模板化结果发送到飞书/Lark、钉钉、Slack、Discord 或自定义 webhook 端点 - **🧙 从您的兴趣开始** — 使用设置向导生成个性化的来源配置 - **⚙️ 调整雷达** — 从一个 JSON 配置中自定义来源、阈值、模型、语言和交付渠道 ## 它是如何工作的 ``` %%{init: { "theme": "base", "themeVariables": { "fontFamily": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif", "fontSize": "18px", "primaryTextColor": "#2d2a3e", "primaryBorderColor": "#e0dbd3", "lineColor": "#7c7891", "tertiaryColor": "#faf8f5", "clusterBkg": "#f3f0eb", "clusterBorder": "#e0dbd3" } }}%% flowchart LR classDef config fill:#fbbf24,stroke:#d4a017,color:#2d2a3e,stroke-width:1.5px; classDef source fill:#ede7fb,stroke:#6d4aaa,color:#2d2a3e,stroke-width:1.5px; classDef process fill:#ffe8db,stroke:#e0652e,color:#2d2a3e,stroke-width:1.5px; classDef output fill:#f9d7e5,stroke:#be185d,color:#2d2a3e,stroke-width:1.5px; config["⚙️ Config
sources, thresholds, models, outputs"] subgraph sources["Configured Sources"] rss["📡 RSS"] hn["📰 Hacker News"] reddit["💬 Reddit"] telegram["✈️ Telegram"] twitter["🐦 Twitter / X"] github["🐙 GitHub"] openbb["💹 OpenBB"] end fetch["📥 Fetch"] dedup["🧹 Deduplicate"] score["🤖 AI Score & Filter"] enrich["🔎 Enrich"] summary["📝 Summarize"] subgraph outputs["Outputs"] direction TB site["🌐 Pages"] email["📧 Email"] webhook["🔔 Webhooks"] mcp["🧩 MCP"] end config --> fetch rss --> fetch hn --> fetch reddit --> fetch telegram --> fetch twitter --> fetch github --> fetch openbb --> fetch fetch --> dedup --> score --> enrich --> summary config --> score config --> summary config --> outputs summary --> site summary --> email summary --> webhook summary --> mcp class config config class rss,hn,reddit,telegram,twitter,github,openbb source class fetch,dedup,score,enrich,summary process class site,email,webhook,mcp output ``` 1. **定义** — 从一个 JSON 配置中配置来源、阈值、模型、语言和交付。 2. **抓取** — 从所有配置的来源并发拉取最新内容。 3. **去重** — 合并指向同一故事或 URL 的项目。 4. **评分和过滤** — 使用 AI 对项目进行排名,并仅保留高于您阈值的那些。 5. **丰富** — 为重要项目搜索网络背景信息和收集社区讨论。 6. **总结** — 生成一个包含摘要、标签和引用的结构化 Markdown 简报。 7. **交付** — 将结果发布到 GitHub Pages、电子邮件、Feishu、MCP 或本地文件等。 ## 快速开始 ### 1. 安装 **选项 A:本地安装** ``` git clone https://github.com/Thysrael/Horizon.git cd Horizon # 使用 uv 安装(推荐) uv sync # 需要时安装测试/开发额外组件 uv sync --extra dev # 或使用 pip 安装 pip install -e . ``` `dev` 目前在 `pyproject.toml` 中定义为可选额外组件,因此使用 `uv sync --extra dev` 为 pytest 和其他开发依赖项。 如果您想安装可选的 OpenBB 财经新闻来源,也安装其额外组件: ``` uv sync --extra openbb ``` 如果 `openbb` 在您的机器上拉取没有 wheels 的包,请手动使用二进制文件安装 SDK: ``` uv pip install --only-binary=:all: openbb openbb-benzinga ``` **选项 B:Docker** ``` git clone https://github.com/Thysrael/Horizon.git cd Horizon # 配置环境 cp .env.example .env cp data/config.example.json data/config.json # 使用您的 API 密钥和偏好设置编辑 .env 和 data/config.json # 使用 Docker Compose 运行 docker compose run --rm horizon # 或使用自定义时间窗口运行 docker compose run --rm horizon --hours 48 ``` ### 2. 配置 **选项 A:交互式向导(推荐**) ``` uv run horizon-wizard ``` 向导会询问您的兴趣(例如,“LLM 推理”、“嵌入式”、“Web 安全”)并自动生成 `data/config.json`。 **选项 B:手动配置** ``` cp .env.example .env # Add your API keys cp data/config.example.json data/config.json # Customize your sources ``` 最小手动配置: ``` { "ai": { "provider": "openai", "model": "gpt-4", "api_key_env": "OPENAI_API_KEY" }, "sources": { "rss": [ { "name": "Simon Willison", "url": "https://simonwillison.net/atom/everything/" } ] }, "filtering": { "ai_score_threshold": 6.0 } } ``` `api_key_env` 必须是环境变量的名称,而不是 API 密钥本身。将真实密钥放入 `.env`: ``` OPENAI_API_KEY=sk-your-key ``` 对于 Gemini,使用 `GOOGLE_API_KEY`: ``` { "ai": { "provider": "gemini", "model": "gemini-2.0-flash", "api_key_env": "GOOGLE_API_KEY" } } ``` `data/config.json` 中的任何字符串值都可以使用 `${VAR_NAME}` 引用环境变量。这对于 `ai.base_url`、私有 RSS 源 URL、webhook 端点或自定义头部模板等值很有用。 有关完整参考,请参阅 [配置指南](docs/configuration.md)。 ### 3. 运行 #### 本地安装 ``` uv run horizon # Run with default 24h window uv run horizon --hours 48 # Fetch from last 48 hours ``` #### 使用 Docker ``` docker compose run --rm horizon # Run with default 24h window docker compose run --rm horizon --hours 48 # Fetch from last 48 hours ``` 生成的报告将保存到 `data/summaries/`。 ### 4. 自动化(可选) 天际线非常适合作为 **GitHub Actions** cron 作业。请参阅 [`.github/workflows/daily-summary.yml`](.github/workflows/daily-summary.yml) 以获取一个可立即使用的流程,该流程可以自动生成和部署您的每日简报到 GitHub Pages。 ## 支持的来源 | 来源 | 它抓取的内容 | 评论 | |--------|----------------|----------| | **Hacker News** | 根据评分的顶级故事 | 是(前 N 个评论) | | **RSS / Atom** | 任何 RSS 或 Atom 源 | — | | **Reddit** | 子版块 + 用户帖子 | 是(前 N 个评论) | | **Telegram** | 公共频道消息 | — | | **Twitter / X** | 特定用户的推文 | 是(前 N 个回复) | | **GitHub** | 用户事件和仓库发布 | — | | **OpenBB** | 根据观察名单/提供商的财经公司新闻 | — | ## 简报的去向 天际线可以通过几种方式发布或交付生成的简报: | 通道 | 它做什么 | |---------|--------------| | **GitHub Pages 每日网站** | 将生成的 Markdown 复制到 `docs/`,以便 GitHub Pages 可以发布一个每日更新的简报网站 | | **电子邮件订阅** | 将每日简报发送给订阅者,并通过 SMTP/IMAP 处理订阅/取消订阅请求 | | **Webhook 通知** | 将成功或失败的结果推送到飞书/Lark、钉钉、Slack、Discord 或任何自定义 webhook 端点 | | **MCP 服务器** | 将 Horizon 管道步骤作为工具公开,以便 AI 助手可以抓取、评分、过滤、丰富、总结并运行完整工作流程 | 有关设置详细信息,请参阅 [配置指南](docs/configuration.md)。有关 MCP 工具参考和客户端设置,请参阅 `src/mcp/README.md`(src/mcp/README.md)和 `src/mcp/integration.md`(src/mcp/integration.md)。 ## 支持 天际线是一个在业余时间维护的开源项目。如果您想支持该项目或在此处列出,请随时 [提交问题](https://github.com/Thysrael/Horizon/issues/new) 或 [给我发邮件](mailto:thysrael@163.com)。 | 支持者 | 详情 | |-----------|---------| | [Compshare / 优云智算](https://www.compshare.cn/?ytag=GPU_YY_git_Horizon) | Compshare 目前支持天际线。Compshare 是 UCloud 的 AI 云平台,提供从每月 49 元人民币起价的成本效益高和按需付费国内模型代理计划,以及稳定官方中继的海外模型。它支持 Claude Code、Codex 和 API 使用,具有企业级高并发、24/7 技术支持和自助发票。

通过他们的 [链接](https://www.compshare.cn/?ytag=GPU_YY_git_Horizon) 注册以获得 5 元人民币的免费试用信用额。 | ## 文档 | 指南 | 描述 | |-------|-------------| | [配置](docs/configuration.md) | AI 提供商、来源、过滤、电子邮件、webhook、GitHub Pages 和 MCP 设置 | | [评分](docs/scoring.md) | 天际线如何评估和排名新闻条目 | | [抓取器](docs/scrapers.md) | 来源抓取器详细信息和使用说明 | | [MCP 工具](src/mcp/README.md) | 与 MCP 兼容的客户端工具参考 | ## 项目状态 天际线已经支持完整的每日简报循环:多来源收集、AI 评分、去重、丰富、评论摘要、双语生成、GitHub Pages 发布、电子邮件交付、webhook 交付、Docker 部署、MCP 集成和设置向导。 计划改进: - 更多来源类型,例如 Discord - 每个来源的定制评分提示 - 在 GitHub 上发布版本 - 将软件包发布到 PyPI 以供 `pip install` ## 贡献 欢迎贡献。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解代码、文档和源共享指南。 ### 分享来源 想与天际线社区分享有价值的来源发现?请通过 **[horizon1123.top](https://horizon1123.top)** 提交。 ## 致谢 - 感谢 [LINUX.DO](https://linux.do/) 提供推广平台。 - 感谢 [HelloGitHub](https://hellogithub.com/) 提供宝贵的指导和建议。 - 感谢 [AIGC Link](https://xhslink.com/m/80ngts127cA) 在小红书上的推广。 ## 许可证 [MIT](LICENSE)
标签:AI新闻雷达, AI模型, Claude, CVE检测, DeepSeek, DNS解析, Doubao, Gemini, GPT, IPv6支持, LLM评估, MiniMax, Ollama, OpenClaw, 中文新闻, 人工智能, 多语言新闻, 开源项目, 新闻聚合, 日志审计, 每日摘要, 漏洞管理, 熵值分析, 用户模式Hook绕过, 英文新闻, 请求拦截, 贡献欢迎, 逆向工具