ai-news-briefing-generator
是一个全自动化的新闻处理工具。它能自动从指定网站开始抓取新闻,利用大语言模型(LLM)进行智能排名、去重、总结和分类,并最终生成结构清晰的每日新闻简报(Markdown格式)。
- 🤖 自动化爬虫与发现: 从一个起始URL开始,自动发现和抓取网站上的文章链接和栏目链接。
- 🏆 两阶段锦标赛排名: 创新地使用“瑞士制”锦标赛排名系统,通过“资格赛”和“决赛圈”两个阶段,高效且公平地筛选出最重要的新闻文章。
- 💡 智能聚类去重: (新) 利用LLM进行高效的语义聚类。通过将文章标题进行批处理比较,能精准识别报道同一新闻事件的不同文章,并将其合并为一个议题,选出得分最高的作为代表,确保了新闻的独特性和多样性。
- 🧠 LLM深度赋能: 全面利用大语言模型(LLM)执行复杂的自然语言任务,是整个项目的核心驱动力:
- 链接分类: 判断链接是指向具体文章还是新闻栏目。
- 内容排名: 根据用户定义的“任务描述”,对一组新闻进行重要性排序。
- 深度处理: 对文章进行全面的分析和再创造,输出包含以下元素的结构化JSON数据:
- 生成全新的、更精炼的标题。
- 撰写“一句话摘要”和更详细的“深度摘要”。
- 提取核心关键词。
- 自动分配最合适的分类。
- 总编导语: 在所有新闻处理完毕后,AI会模仿总编辑的口吻,为当天的简报撰写一段宏观的导语。
- 🛡️ 稳健的解析与重试: 拥有强大的LLM响应解析能力,能稳定地从LLM返回的文本中提取出有效的JSON对象。同时,内置了针对文章处理和网络请求的、带指数退避策略的多轮重试机制,确保了流程的稳定性和高成功率。
- 📄 全面的报告输出:
- 生成一份包含目录和AI导语的每日主简报 (
News-Briefing-YYYY-MM-DD.md
)。 - 为每一篇成功处理的文章生成一份独立的Markdown文件,方便单独查看。
- 生成一份包含目录和AI导语的每日主简报 (
- 🛠️ 高度可配置: 从爬取深度、排名算法、处理文章数量,到所有与LLM交互的Prompt,几乎所有参数都可以在
config.js
文件中轻松调整。 - 🖥️ 丰富的命令行界面: 使用
ora
和cli-progress
提供了优雅且实时的多阶段进度条,让整个处理流程的进度一目了然。
整个工具的执行流程被清晰地划分为五个主要步骤,由 index.js
统一调度:
- [步骤 1/5] 抓取与资格赛:
crawler.js
模块负责从入口URL开始,递归抓取页面上的链接。然后,通过一个多轮积分制的“资格赛”,从大量链接中初步筛选出具有潜在价值的候选文章。 - [步骤 2/5] 聚类与去重:
grouper.js
模块通过高效的批处理方式,调用LLM对候选文章进行语义聚类。它将报道同一事件的文章分到一组,并选出该组的“代表”,从而过滤掉重复内容。 - [步骤 3/5] 决赛圈排名:
ranker.js
模块对去重后的独特文章列表进行最终的“锦标赛排名”。通过多轮小组比对和积分,精确地确定每篇文章的重要性次序。 - [步骤 4/5] 深度处理与总结:
processor.js
模块负责处理最终入选的文章。它会提取原文、调用LLM进行分析和总结、解析返回的JSON数据,并内置强大的失败重试逻辑。 - [步骤 5/5] 生成最终简报:
reporter.js
模块负责收尾工作。它会调用LLM生成“总编导语”,然后将所有处理好的文章数据整合成一份格式优美的Markdown简报。
-
克隆仓库
git clone https://github.com/hixyl/aiNewsAgent.git cd aiNewsAgent
-
安装依赖
npm install
-
配置环境
- 打开
config.js
文件。 - 关键配置: 修改
llm.studioUrl
,使其指向你本地正在运行的、兼容OpenAI API格式的LLM服务(例如 LM Studio, Ollama, LoLLMs 等)的地址。 - (可选) 根据你的需求调整其他配置,如
startUrl
(起始抓取网站) 和taskDescription
(定义你的新闻偏好)。
- 打开
-
启动程序
npm start
-
查看结果
- 程序执行完毕后,所有生成的报告和日志文件都会保存在
output/
目录下(该目录已被.gitignore
忽略)。 - 日志文件会记录在
logs/
目录下。
- 程序执行完毕后,所有生成的报告和日志文件都会保存在