🌅 Horizon

你只需享受新闻,剩下交给 Horizon。

Thysrael%2FHorizon | Trendshift Thysrael%2FHorizon | Trendshift Featured|HelloGitHub
[![License](https://img.shields.io/badge/license-MIT-green.svg?style=for-the-badge&logo=opensourceinitiative&logoColor=white)](LICENSE) [![Tool uv](https://img.shields.io/badge/Tool-uv-4B275F?style=for-the-badge&logo=uv&logoColor=white)](https://github.com/astral-sh/uv) [![Website](https://img.shields.io/badge/Website-Horizon-263238?style=for-the-badge&logo=homepage&logoColor=white)](https://www.horizon1123.top/) [![Daily](https://img.shields.io/github/actions/workflow/status/Thysrael/Horizon/deploy-docs.yml?branch=main&label=Daily&style=for-the-badge&logo=date-fns&logoColor=white)](https://thysrael.github.io/Horizon/) [![Commit](https://img.shields.io/github/commit-activity/m/Thysrael/Horizon?label=Commit&style=for-the-badge&logo=github&logoColor=white)](https://github.com/Thysrael/Horizon/commits/main) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Thysrael/Horizon/pulls) ![Sources Welcome](https://img.shields.io/badge/sources-welcome-f97316?style=for-the-badge&logo=rss&logoColor=white) ![Claude](https://img.shields.io/badge/Claude-f0daba?style=flat-square&logo=anthropic&logoColor=black) ![GPT](https://img.shields.io/badge/GPT-10A37F?style=flat-square&logo=data:image/svg%2bxml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTIyLjI4MTkgOS44MjExYTUuOTg0NyA1Ljk4NDcgMCAwIDAtLjUxNTctNC45MTA4IDYuMDQ2MiA2LjA0NjIgMCAwIDAtNi41MDk4LTIuOUE2LjA2NTEgNi4wNjUxIDAgMCAwIDQuOTgwNyA0LjE4MThhNS45ODQ3IDUuOTg0NyAwIDAgMC0zLjk5NzcgMi45IDYuMDQ2MiA2LjA0NjIgMCAwIDAgLjc0MjcgNy4wOTY2IDUuOTggNS45OCAwIDAgMCAuNTExIDQuOTEwNyA2LjA1MSA2LjA1MSAwIDAgMCA2LjUxNDYgMi45MDAxQTUuOTg0NyA1Ljk4NDcgMCAwIDAgMTMuMjU5OSAyNGE2LjA1NTcgNi4wNTU3IDAgMCAwIDUuNzcxOC00LjIwNTggNS45ODk0IDUuOTg5NCAwIDAgMCAzLjk5NzctMi45MDAxIDYuMDU1NyA2LjA1NTcgMCAwIDAtLjc0NzUtNy4wNzI5em0tOS4wMjIgMTIuNjA4MWE0LjQ3NTUgNC40NzU1IDAgMCAxLTIuODc2NC0xLjA0MDhsLjE0MTktLjA4MDQgNC43NzgzLTIuNzU4MmEuNzk0OC43OTQ4IDAgMCAwIC4zOTI3LS42ODEzdi02LjczNjlsMi4wMiAxLjE2ODZhLjA3MS4wNzEgMCAwIDEgLjAzOC4wNTJ2NS41ODI2YTQuNTA0IDQuNTA0IDAgMCAxLTQuNDk0NSA0LjQ5NDR6bS05LjY2MDctNC4xMjU0YTQuNDcwOCA0LjQ3MDggMCAwIDEtLjUzNDYtMy4wMTM3bC4xNDIuMDg1MiA0Ljc4MyAyLjc1ODJhLjc3MTIuNzcxMiAwIDAgMCAuNzgwNiAwbDUuODQyOC0zLjM2ODV2Mi4zMzI0YS4wODA0LjA4MDQgMCAwIDEtLjAzMzIuMDYxNUw5Ljc0IDE5Ljk1MDJhNC40OTkyIDQuNDk5MiAwIDAgMS02LjE0MDgtMS42NDY0ek0yLjM0MDggNy44OTU2YTQuNDg1IDQuNDg1IDAgMCAxIDIuMzY1NS0xLjk3MjhWMTEuNmEuNzY2NC43NjY0IDAgMCAwIC4zODc5LjY3NjVsNS44MTQ0IDMuMzU0My0yLjAyMDEgMS4xNjg1YS4wNzU3LjA3NTcgMCAwIDEtLjA3MSAwbC00LjgzMDMtMi43ODY1QTQuNTA0IDQuNTA0IDAgMCAxIDIuMzQwOCA3Ljg3MnptMTYuNTk2MyAzLjg1NThMMTMuMTAzOCA4LjM2NCAxNS4xMTkyIDcuMmEuMDc1Ny4wNzU3IDAgMCAxIC4wNzEgMGw0LjgzMDMgMi43OTEzYTQuNDk0NCA0LjQ5NDQgMCAwIDEtLjY3NjUgOC4xMDQydi01LjY3NzJhLjc5Ljc5IDAgMCAwLS40MDctLjY2N3ptMi4wMTA3LTMuMDIzMWwtLjE0Mi0uMDg1Mi00Ljc3MzUtMi43ODE4YS43NzU5Ljc3NTkgMCAwIDAtLjc4NTQgMEw5LjQwOSA5LjIyOTdWNi44OTc0YS4wNjYyLjA2NjIgMCAwIDEgLjAyODQtLjA2MTVsNC44MzAzLTIuNzg2NmE0LjQ5OTIgNC40OTkyIDAgMCAxIDYuNjgwMiA0LjY2ek04LjMwNjUgMTIuODYzbC0yLjAyLTEuMTYzOGEuMDgwNC4wODA0IDAgMCAxLS4wMzgtLjA1NjdWNi4wNzQyYTQuNDk5MiA0LjQ5OTIgMCAwIDEgNy4zNzU3LTMuNDUzN2wtLjE0Mi4wODA1TDguNzA0IDUuNDU5YS43OTQ4Ljc5NDggMCAwIDAtLjM5MjcuNjgxM3ptMS4wOTc2LTIuMzY1NGwyLjYwMi0xLjQ5OTggMi42MDY5IDEuNDk5OHYyLjk5OTRsLTIuNTk3NCAxLjQ5OTctMi42MDY3LTEuNDk5N1oiLz48L3N2Zz4=) ![Gemini](https://img.shields.io/badge/Gemini-8E75B2?style=flat-square&logo=googlegemini&logoColor=white) ![DeepSeek](https://img.shields.io/badge/DeepSeek-0A6DC2?style=flat-square&logo=deepseek&logoColor=white) ![Doubao](https://img.shields.io/badge/Doubao-00D6C2?style=flat-square&logo=bytedance&logoColor=white) ![MiniMax](https://img.shields.io/badge/MiniMax-FF6F00?style=flat-square&logo=minimax&logoColor=white) ![OpenClaw](https://img.shields.io/badge/OpenClaw-C83232?style=flat-square&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWxhYmVsPSJQaXhlbCBsb2JzdGVyIj4KICA8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiLz4KICAKICA8ZyBmaWxsPSIjM2EwYTBkIj4KICAgIDxyZWN0IHg9IjEiIHk9IjUiIHdpZHRoPSIxIiBoZWlnaHQ9IjMiLz4KICAgIDxyZWN0IHg9IjIiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjIiIHk9IjgiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjMiIHk9IjMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjQiIHk9IjIiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjQiIHk9IjEwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+CiAgICA8cmVjdCB4PSI1IiB5PSIyIiB3aWR0aD0iNiIgaGVpZ2h0PSIxIi8+CiAgICA8cmVjdCB4PSIxMSIgeT0iMiIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI5IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIi8+CiAgICA8cmVjdCB4PSIxMyIgeT0iNCIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iMTMiIHk9IjgiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjE0IiB5PSI1IiB3aWR0aD0iMSIgaGVpZ2h0PSIzIi8+CiAgICA8cmVjdCB4PSI1IiB5PSIxMSIgd2lkdGg9IjYiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iNCIgeT0iMTIiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjExIiB5PSIxMiIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iMyIgeT0iMTMiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSIxMyIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iNSIgeT0iMTQiIHdpZHRoPSI2IiBoZWlnaHQ9IjEiLz4KICA8L2c+CgogIAogIDxnIGZpbGw9IiNmZjRmNDAiPgogICAgPHJlY3QgeD0iNSIgeT0iMyIgd2lkdGg9IjYiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjgiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iMyIgeT0iNSIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjMiIHk9IjYiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxIi8+CiAgICA8cmVjdCB4PSIzIiB5PSI3IiB3aWR0aD0iMTAiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iNCIgeT0iOCIgd2lkdGg9IjgiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iNSIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iNSIgeT0iMTIiIHdpZHRoPSI2IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjYiIHk9IjEzIiB3aWR0aD0iNCIgaGVpZ2h0PSIxIi8+CiAgPC9nPgoKICAKICA8ZyBmaWxsPSIjZmY3NzVmIj4KICAgIDxyZWN0IHg9IjEiIHk9IjYiIHdpZHRoPSIyIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjIiIHk9IjUiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjIiIHk9IjciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEzIiB5PSI2IiB3aWR0aD0iMiIgaGVpZ2h0PSIxIi8+CiAgICA8cmVjdCB4PSIxMyIgeT0iNSIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iMTMiIHk9IjciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICA8L2c+CgogIAogIDxnIGZpbGw9IiMwODEwMTYiPgogICAgPHJlY3QgeD0iNiIgeT0iNSIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogICAgPHJlY3QgeD0iOSIgeT0iNSIgd2lkdGg9IjEiIGhlaWdodD0iMSIvPgogIDwvZz4KICA8ZyBmaWxsPSIjZjVmYmZmIj4KICAgIDxyZWN0IHg9IjYiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjkiIHk9IjQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiLz4KICA8L2c+Cjwvc3ZnPgoK) ![Ollama](https://img.shields.io/badge/Ollama-FFFFFF?style=flat-square&logo=Ollama&logoColor=black) 📡 构建你专属的 AI 新闻雷达,生成中英双语日报。 | Your own AI-powered news radar. [📖 在线演示](https://thysrael.github.io/Horizon/) · [📋 配置指南](https://thysrael.github.io/Horizon/configuration) · [💬 QQ 群](#交流群) · [English](README.md) · [日本語](README_ja.md)
## 截图

按优先级排序的日报

日报总览

背景、总结与评论

新闻详情
More Screenshots

终端输出

终端输出

飞书通知

飞书通知

邮件推送

邮件推送

微信推送

微信中的日报头部、总览和正文
## 为什么需要 Horizon? 好内容散落在订阅、社区和时间线里,你的阅读时间却有限。Horizon 替你收集、筛选、去重,再把值得读的内容连同背景和讨论送到面前。 读什么,需要你的品味;怎么读,也一样。新闻里你想知道「为什么重要」,技术长文里你想找到「有什么值得借鉴」。Horizon 的 **Profile** 让不同内容有不同的评分标准和呈现方式,也让这份日报更像你亲手挑选的。 ## 功能特性 - **📡 把关注汇到一处** — 从 RSS、Hacker News、Reddit、Telegram、X、GitHub 和金融新闻等来源收集内容。 - **🎯 值不值得读,你定标准** — 用 Profile 定义评分规则,分别设置筛选门槛,合并同一 Profile 下的重复报道。 - **🧩 新闻看背景,长文看方法** — 自定义摘要、背景、方案、启示等内容区块,修改 Markdown 提示词和 JSON 配置即可。 - **💬 多看一层,再下判断** — 按需搜索背景、提炼社区讨论,读到标题之外的信息。 - **⚖️ 留下刚好够读的量** — 限制日报总条数和各类内容的份额,让热门话题给其他兴趣留点位置。 - **📬 在你习惯的地方读** — 生成中英双语日报,保存为 Markdown、发布到 Pages,或通过邮件和 Webhook 送达。 ### 同一份日报,不同的读法 一个 Profile 是一套可复用的内容处理规则:**什么内容适用、什么值得留下、最后写成什么样。** 内置示例包括: | 你在读什么 | Profile | 它替你提炼什么 | |---|---|---| | 科技新闻 | `tech-news` | 事件与背景,按需补充影响和社区讨论 | | 技术长文 | `tech-blog` | 背景、方案、值得借鉴的启示 | | AI 创作素材 | `ai-creator` | 内容摘要,按需提炼时效意义与创作切入点 | 为信息源指定 Profile,或让 AI 自动匹配。想换一种读法?从现有 Profile 改起,通常无需修改 Python。[定制你的 Profile →](docs/profiles.md) ## 工作原理 ![Horizon 架构:十类信息源汇入 Profile 驱动的处理流程,按区块启用历史与网络搜索,再通过 Markdown、Pages、邮件、微信和 Webhook 分发。](docs/assets/architecture.svg) [OmniGraffle 可编辑图源](docs/assets/architecture.graffle) **Profile 定义处理规则,运行配置掌握阅读偏好。** 每条内容路由到一个 Profile,完成分析、筛选和去重后,再为入选内容生成区块,按 Profile 分组渲染成日报。 通过 CLI 运行完整流程,也可通过 [MCP](src/mcp/README.md) 让 AI 助手调用采集、分析和生成等阶段。 ## 赞助 Horizon 是一个业余时间维护的开源项目。如果你愿意支持这个项目,或希望出现在这里,欢迎[创建一个 Issue](https://github.com/Thysrael/Horizon/issues/new) 或[发邮件](mailto:thysrael@163.com)联系我。 | 支持方 | 说明 | |--------|------| | [Modelflare](https://modelflare.dev/sign-up?utm_source=github&utm_campaign=horizon) | 感谢 Modelflare 赞助本项目!Modelflare:满血、稳定、不掺水,以更低成本使用全球 SOTA 模型。平台由美国 Havenbyte LLC 运营,通过常见兼容协议支持 GPT、Claude、Gemini、Grok 等领先模型,并提供 40+ 图片和视频模型。

缓存补偿是一大亮点:指定 OpenAI 分组(价格优先、稳定、优质)分别保障每日 65%、75% 或 85% 的缓存命中率;符合条件的请求若未达标,Modelflare 将退还差额,结算后可在用量看板查看。

特别优惠:单笔充值 20 美元即可解锁价格倍率为 0.015x 的 GPT 优惠分组,单笔充值 50 美元即可解锁价格倍率为 0.03x 的 Claude 优惠分组。通过[此专属链接](https://modelflare.dev/sign-up?utm_source=github&utm_campaign=horizon)注册即可开始使用。 | | [Compshare / 优云智算](https://www.compshare.cn/?ytag=GPU_YY_git_Horizon) | 优云智算目前正在支持 Horizon。优云智算是 UCloud 旗下 AI 云平台,主打包月、按次的高性价比国模 Agent Plan 套餐,低至 49 元/月起,同时提供官转稳定海外模型。支持接入 Claude Code、Codex 及 API 调用,支持企业高并发、7*24 技术支持和自助开票。

通过其[链接](https://www.compshare.cn/?ytag=GPU_YY_git_Horizon)注册,可获得 5 元平台体验金。 | | [OfoxAI](https://ofox.ai/?utm_source=github&utm_medium=sponsorship&utm_content=horizon) | OfoxAI 是统一的 AI API 平台,汇集多家文本、图像和视频模型,支持 OpenAI 兼容接口及 Anthropic、Gemini 原生接口。开发者可通过一个平台为 AI 应用、智能体和内容创作接入模型,按任务选择合适的能力。

[探索 OfoxAI 模型与 API →](https://ofox.ai/?utm_source=github&utm_medium=sponsorship&utm_content=horizon) | | [星图 AstraFlow
星图 AstraFlow](https://www.ucloud.cn/site/active/astraflow-credit?ytag=geo_waituo_Horizon) | 感谢星图 AstraFlow 赞助 Horizon!AstraFlow 是 UCloud 推出的模型服务平台,汇集 200+ 主流大模型及视频生成模型,在一个平台完成文本与视频生成。支持按 Key 级别计费,调用明细可查。

Horizon 用户专属福利:通过[专属链接领取 50 元算力金](https://www.ucloud.cn/site/active/astraflow-credit?ytag=geo_waituo_Horizon),体验模型调用与内容创作。 | ## Agent Skill 让 AI 助手帮你配置信息源、定制 Profile、生成日报: ```bash npx skills add Thysrael/Horizon --skill horizon -g ``` [安装与使用](docs/agent-skill.md) · [下载 Skill ZIP](https://thysrael.github.io/Horizon/downloads/horizon-skill.zip) 安装命令需要 Node.js 22.20+。装好 Skill 后,可以直接说“帮我安装并配置 Horizon”,也可按下方步骤手动安装。 ## 快速开始 ### 1. 安装 #### 方式 A:本地安装 ```bash git clone https://github.com/Thysrael/Horizon.git cd horizon # 使用 uv 安装(推荐) uv sync # 需要测试/开发依赖时 uv sync --extra dev # 或使用 pip pip install -e . ``` 当前 `dev` 在 `pyproject.toml` 中定义为 optional extra,因此安装 `pytest` 等开发依赖时应使用 `uv sync --extra dev`。 如果你要启用可选的 OpenBB 金融新闻源,还需要安装对应 extra: ```bash uv sync --extra openbb ``` 如果 `openbb` 在你的机器上会拉到缺少 wheel 的依赖,建议改用只安装二进制包: ```bash uv pip install --only-binary=:all: openbb openbb-benzinga ``` #### 方式 B:Docker ```bash git clone https://github.com/Thysrael/Horizon.git cd horizon # 可选:首次运行前构建逗号分隔的 extras docker compose build --build-arg EXTRAS=openbb horizon ``` 基础安装已包含 `trafilatura` 全文提取。`twitter` extra 还需要 Playwright 浏览器及系统依赖,当前 Dockerfile 不会安装这些组件。 ### 2. 配置 **方式 A:交互式向导(推荐)** ```bash uv run horizon-wizard ``` 向导会询问你的兴趣(如"LLM 推理"、"嵌入式"、"web 安全"),自动推荐并生成 `data/config.json`,还可选让 AI 补充推荐小众源。若你想分享信息源,请前往 [horizon1123.top](https://horizon1123.top/)。CLI 选项见[交互式向导](docs/configuration.md#interactive-wizard)。 符合条件的 ChatGPT 订阅用户可选择 `openai-chatgpt`,通过[官方登录授权](docs/chatgpt.md)使用订阅额度,无需 OpenAI API Key。 **方式 B:手动配置** ```bash cp .env.example .env # 添加 API 密钥 cp data/config.example.json data/config.json # 自定义信息源 ``` 最小手动配置示例: ```jsonc { "ai": { "provider": "openai", "model": "gpt-4", "api_key_env": "OPENAI_API_KEY" }, "sources": { "rss": [ { "name": "Simon Willison", "url": "https://simonwillison.net/atom/everything/", "profile": "tech-news" } ] }, "processing": { "profiles_dir": "profiles", "default_profile": "tech-news", "profile_settings": { "tech-news": { "threshold": 7.0, "topic_dedup": true } } } } ``` 信息源显式指定 `profile` 时会直接使用该 Profile;省略该字段或设为 `"auto"` 时,AI 会在全部 Profile 中自动匹配。也可设置 `["tech-news", "finance-news"]`,将匹配范围限定在这些候选项中,每条内容选一个。 详见 [Profile 指南](docs/profiles.md)。筛选阈值和主题去重等个人偏好配置在 `processing.profile_settings` 中。 **均衡日报(可选)** 可以限制日报总条数,并避免单一类别占据过多内容。类别来自 `sources.rss[].category` 等信息源配置。 ```jsonc { "digest": { "max_items": 20, "category_groups": { "ai": { "limit": 5, "categories": ["ai-news", "ai-tools", "machine-learning"] }, "finance": { "limit": 5, "categories": ["finance", "business", "equities"] } }, "default_group": "other", "default_group_limit": 3 } } ``` 分组限额在 Profile 筛选之后、内容补充之前执行。未配置 `category_groups`、`max_items` 和 `default_group_limit` 时,不应用均衡日报限额。 `data/config.json` 里的任意字符串值都可以通过 `${VAR_NAME}` 引用环境变量。这适合用于 `ai.base_url`、私有 RSS 链接、Webhook 地址或自定义请求头模板等字段。 完整配置参考请查看[配置指南](docs/configuration.md)。 ### 3. 运行 **A. 本地安装** ```bash uv run horizon [OPTIONS] ``` **B. Docker** ```bash docker compose run --rm horizon [OPTIONS] ``` | 选项 | 默认值 | 说明 | |--------|---------|-------------| | `--hours N` | 24 | 抓取最近 N 小时的内容 | | `-d`, `--data-dir PATH` | `data` | 数据目录路径 | | `-c`, `--config PATH` | `/config.json` | 配置文件路径 | | `-l`, `--log-level LEVEL` | `WARNING` | 日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)| `--data-dir` 会更改状态目录,包括日报、订阅者文件和默认配置位置;`--config` 只更改配置文件。生成的日报将保存在 `data/summaries/` 目录中(如设置了 `--data-dir`,则保存在 `/summaries/`)。两处位置都要修改,或需要初始化自定义配置位置时,请查看[配置路径](docs/configuration.md#configuration-paths)。 ### 4. 自动化(可选) 可使用 **GitHub Actions** 定时运行 Horizon。[每日工作流模板](.github/workflows/daily-summary.yml.disabled) 当前处于禁用状态;根据你的部署配置后,将文件重命名为 `daily-summary.yml` 即可启用。 ## 支持的信息源 | 信息源 | 抓取内容 | 评论收集 | |--------|---------|---------| | **Hacker News** | 按分数排序的热门文章 | 支持(前 N 条评论) | | **RSS / Atom** | 任意 RSS 或 Atom 订阅源 | — | | **Reddit** | Subreddit 帖子 + 用户动态 | 支持(前 N 条评论) | | **Telegram** | 公开频道消息 | — | | **Twitter / X** | 用户推文 + 关键词搜索(Apify) | 支持(前 N 条回复) | | **GitHub** | 用户动态 & 仓库 Release | — | | **OpenBB** | 按观察列表 / provider 抓取金融公司新闻 | — | | **OSS Insight** | 热门开源仓库 | — | | **GDELT** | 按查询搜索新闻 | — | | **Google News** | 通过 RSS 搜索新闻 | — | ## 日报可以去哪里 Horizon 支持通过多种方式发布和分发生成的日报: | 方式 | 作用 | |------|------| | **GitHub Pages 日报站点** | 将生成的 Markdown 复制到 `docs/`,通过 GitHub Pages 发布为每日更新的静态日报站点 | | **邮件订阅** | 通过 SMTP/IMAP 向订阅者发送日报,并自动处理订阅/退订请求 | | **Webhook 通知** | 在成功或失败时将结果推送到飞书、钉钉、Slack、Discord 或任意 Webhook 端点 | | **微信通知** | 通过 iLink Bot 推送日报;扫码登录后向机器人发一条消息即可连接,推送受微信回复额度限制 | 投递配置见[配置指南](docs/configuration.md)。希望让 AI 助手调用流水线各阶段,可接入 **MCP Server**:[工具说明](src/mcp/README.md) · [客户端接入](src/mcp/integration.md)。 ## 文档 | 文档 | 内容 | |------|------| | [配置指南](docs/configuration.md) | AI 模型、信息源、Profile、筛选、邮件、Webhook、微信、GitHub Pages 和 MCP 配置 | | [Profile 指南](docs/profiles.md) | 内置读法、自定义评分与内容区块、路由和工具权限 | | [评分机制](docs/scoring.md) | Horizon 如何评估和排序新闻 | | [抓取器](docs/scrapers.md) | 信息源抓取器说明和扩展细节 | | [内容提取器](docs/extractors.md) | RSS 信息源的全文提取 | | [MCP 工具](src/mcp/README.md) | MCP 客户端可调用的工具说明 | | [Agent Skill](docs/agent-skill.md) | 让 AI 助手配置、运行、定制、定时投递和扩展 Horizon | ## 项目状态 Horizon 已经支持完整的日报流程:多源抓取、Profile 驱动的分析与内容生成、去重、评论摘要、双语生成、GitHub Pages 发布、邮件分发、Webhook 推送、微信推送、Docker 部署、MCP 集成和配置向导。 计划中的改进: - 更多信息源类型,例如 Discord - 在 GitHub 上发布 Release - 发布到 PyPI,支持通过 `pip install` 安装 ## 交流群 欢迎加入 Horizon 用户与开发交流群,分享信息源、交流 Profile,或讨论部署和开发。

Horizon QQ 群 1106121909 的入群二维码
QQ 群号:1106121909
使用 QQ 扫码,或搜索群号加入。

## 贡献 欢迎贡献!请随时提交 Issue 或 Pull Request。 ### 分享信息源 想把有价值的信息源分享给 Horizon 社区?请直接前往 **[horizon1123.top](https://horizon1123.top)** 提交。 欢迎提交:你所在领域里优质的小众 RSS 发现、活跃 subreddit 的趋势、值得关注的 GitHub 动态,或 Telegram 频道精选内容。 ## 鸣谢 - 特别感谢 [LINUX.DO](https://linux.do/) 提供的宣传平台。 - 特别感谢 [HelloGitHub](https://hellogithub.com/) 提供的指导意见。 - 特别感谢 [AIGC Link](https://xhslink.com/m/80ngts127cA) 提供的小红书和微信公众号宣传。 ## 许可证 [MIT](LICENSE)