AI News Subscription Agent
智闻订阅是一个智能化的新闻聚合与报告生成平台。用户可以根据个人兴趣,通过设定关键词和选择信任的新闻来源网站,来创建专属的每日新闻订阅计划。平台内置一个由AI驱动的代理(Agent),它能够自动浏览网页、抓取相关文章、并运用大语言模型(LLM)对信息进行深度分析、提炼和总结。 每天在预设的时间,系统会自动生成一份结构清晰的定制化新闻报告,内容包括“头条新闻”、“特别关注”和“今日总结”三大板块,帮助用户从繁杂的信息中高效获取自己最关心的资讯。该项目采用Flask作为后端框架,通过APScheduler实现任务定时调度,并设计了独立的任务队列和工作线程来处理耗时的AI分析任务,确保了系统的稳定性
Installation
npx ai-news-subscription-agentAsk AI about AI News Subscription Agent
Powered by Claude · Grounded in docs
I know everything about AI News Subscription Agent. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
智闻订阅
这是一个基于 Web 的智能订阅助手应用。它允许用户根据特定的关键词和自定义的新闻源,创建个性化的每日新闻报告。本应用通过一个 AI 代理(Agent)从网络上抓取、汇总新闻,并将其整理成易于阅读的格式。
功能特性
- 自定义订阅: 自由创建、管理和删除个性化的新闻订阅计划。
- 新闻源管理: 添加或删除任何新闻网站作为信息来源。
- 关键词定位: 定义特定的关键词或短语(例如:“AI进展”、“量子计算”)来定制您关心的报告内容。
- 定时生成报告: 可设定一个每日的固定时间,让系统自动生成报告。
- 手动触发: 可以随时手动运行报告生成任务。
- AI 驱动的内容总结: 利用大语言模型(LLM)智能分析和总结文章,并将其分类为“头条新闻”、“特别关注”和“今日总结”。
- 报告查阅: 在一个洁净、优美的 Markdown 渲染页面中查看生成的报告。
系统架构
本系统由以下几个协同工作的组件构成:
-
主应用控制器 (
app.py): 项目的核心。它使用 Flask 框架作为 Web 服务器,负责处理所有用户请求和页面路由。同时,它集成 APScheduler 来管理定时任务,并利用**多线程和队列(Queue)**来处理耗时的 AI 任务,避免阻塞主程序。 -
Web 前端 (HTML):
index.html: 主页面,用于展示和管理所有订阅任务。report.html: 用于展示已生成报告内容的模板页面。
-
数据库 (
database.py): 使用 SQLite 数据库持久化存储用户的订阅、新闻源和生成的报告。 -
网页抓取服务 (
news_browser.py): 一个基于FastMCP构建的后台微服务。它使用DrissionPage库来控制一个真实的网页浏览器,从而提取新闻链接和文章内容。 -
AI 新闻代理 (
news_agent_client.py): 项目的 AI 核心,基于pydantic-ai构建。它负责调度整个流程:调用网页抓取服务来收集数据,然后将数据发送给大语言模型(LLM)进行分析、总结和格式化。 -
配置文件 (
config.json): 用于存放 LLM 的 API 密钥和接口地址等信息。
安装与部署
请按照以下步骤来设置和运行本应用。
1. 环境要求
- Python 3.8+
- 一个现代网页浏览器 (例如: Google Chrome 或 Microsoft Edge)
- 一个兼容 OpenAI 格式的 LLM 服务商提供的 API 密钥(示例配置使用了阿里云的通义千问)。
2. 克隆代码库
3. 安装依赖
推荐使用 Python 虚拟环境。
# 创建虚拟环境 (可选, 但强烈推荐)
python -m venv venv
# 激活虚拟环境
# Windows:
# venv\Scripts\activate
# macOS/Linux:
# source venv/bin/activate
# 安装所有必需的库
pip install -r requirements.txt
4. 配置应用
-
配置大语言模型 (LLM): 打开
config.json文件,将其中的占位符替换为您真实的 API 密钥和模型服务地址。{ "base_url": "你的大模型服务商的api地址", "api_key": "你的api_key", "llm_model_name": "要使用的大模型,比如qwen-plus" } -
配置浏览器路径 (如果需要): 如果您的浏览器没有安装在默认位置,您可能需要编辑
news_browser.py文件,通过co.set_browser_path()来手动指定其可执行文件的路径。
5. 初始化数据库
app.py 会在启动时自动检查并初始化数据库,但您也可以手动执行一次以确保数据库文件已创建。
python database.py
6. 运行应用
您需要同时运行两个独立的进程:news_browser.py 网页抓取服务和 app.py 主应用。
-
启动网页抓取服务: 打开一个终端窗口,运行以下命令:
python news_browser.py此服务将启动并监听
http://0.0.0.0:9017端口。 -
启动主 Web 应用: 另外打开一个新的终端窗口,运行以下命令来启动主程序:
python app.py主应用启动后,会监听
http://0.0.0.0:9039端口。
使用指南
- 访问 Web 界面: 打开您的浏览器,访问
http://127.0.0.1:9039。 - 添加新闻源: 点击“管理新闻源”,添加您希望抓取新闻的网站名称和 URL。
- 创建新订阅:
- 点击“创建新订阅”。
- 为您的报告计划输入一个名称(例如:“每日科技简报”)。
- 输入您感兴趣的关键词(例如:“人工智能, 机器学习”)。
- 设置一个每日生成报告的时间。
- 勾选您希望本次订阅使用的新闻源。
- 查看报告: 当报告生成后(无论是按计划自动生成还是手动点击“立即运行”),一个“查看报告”的链接将会出现,点击即可查看由 AI 生成的完整新闻报告。
