当前位置: 首页 > news >正文

03_AI总结每日AI新闻推送到微信

效果展示:

一、 为什么选择“Python + GitHub Actions”?(可忽略)

每天早上,你是否花费大量时间筛选AI新闻?本教程将教你如何搭建一个完全免费(仅需支付极少量API调用费)、全自动的AI新闻摘要系统,每天准时通过微信给你推送一份定制化的AI早报。

1. 方案核心优势

  • ⚡️ 自动化与定时:利用GitHub Actions的定时功能,让程序每天在设定的时间(如早上7点)自动运行,无需人工干预。
  • 💸 成本极低:利用 GitHub 提供的免费服务器资源运行程序,只需支付大模型(如DeepSeek)极低的Token费用。
  • 🛠️ 结果可控:你可以自定义新闻来源(RSS)和总结风格(Prompt),确保日报内容完全符合你的兴趣。

GitHub Actions: GitHub 提供的一项自动化服务,可以让你定时或在特定事件发生时运行脚本,就像拥有一个免费的云端服务器。

2. 工作流原理概览

整个系统遵循一个简单的“抓取 → 总结 → 推送”逻辑:

  1. 抓取 (RSS):Python 脚本自动访问你配置的高质量新闻源(RSS链接)。
  2. 总结 (DeepSeek API):将抓取到的标题和摘要发送给DeepSeek大模型。
  3. 筛选与优化:DeepSeek 根据你的Prompt(指示词)筛选出最重要的几条新闻,并生成专业、简洁的总结。
  4. 推送 (PushPlus):最终的日报通过PushPlus服务推送到你的微信。

二、 准备阶段:你需要的三个工具

搭建这个工作流,你只需要注册并配置好以下三个关键工具:

类别工具用途准备要求直达链接
自动化托管平台GitHub 账号托管程序代码,并提供免费的定时运行环境(GitHub Actions)。注册一个账号即可。http://github.com/
大模型能力DeepSeek API Key提供强大的AI总结能力。访问 DeepSeek 官方网站,注册并获取你的API Keyhttps://platform.deepseek.com/usage
消息通知服务PushPlus (推送加)将最终总结的日报推送到你的微信。搜索PushPlus官网,使用微信登录后,获取你的Tokenhttps://www.pushplus.plus/push1.html

三、 部署流程:三步实现自动化

1. 部署代码文件

你需要创建以下三个文件,并将它们上传到一个新的 GitHub 仓库中(例如命名为ai-daily-news)。

文件名用途说明
main.py核心脚本,负责抓取新闻、调用API和推送消息的逻辑。
requirements.txt依赖文件,列出 Python 运行所需的所有库。包含feedparser,requests,openai,pytz等。
.github/workflows/daily.yml自动化配置文件,告诉 GitHub 每天什么时候运行哪个脚本。设置定时任务和运行环境。

其实可以直接fork一份

2. 配置 GitHub 密钥 (Secrets)

这是确保程序安全运行的关键步骤。你需要将 API Key 等敏感信息存储在 GitHub 的Secrets中,程序运行时才能读取。

  • 操作路径:进入你的 GitHub 仓库 -> 点击Settings(设置)标签 -> 左侧边栏找到Secrets and variables-> 点击Actions
  • 添加密钥:点击New repository secret

依次添加以下变量:

Secret Name (变量名)必填值内容
LLM_API_KEY你的 DeepSeek API Key
LLM_BASE_URLhttps://api.deepseek.comhttps://api.deepseek.com
LLM_MODELdeepseek-chatdeepseek-chat(其他模型也可)
PUSHPLUS_TOKEN你的 PushPlus Token

3. 运行与验证

配置完成后,你的自动化工作流已经部署成功。

  1. 手动触发验证
    • 进入仓库的Actions标签页。
    • 点击左侧的Daily AI News工作流。
    • 点击右侧的Run workflow手动触发,进行第一次测试。
  2. 检查结果
    • 如果运行成功(显示绿色 ✅),您将立即在微信上收到一份测试日报。
    • 如果失败,点击运行日志检查错误信息(常见错误如密钥拼写错误或模型名称错误)。

至此,你的每日AI新闻自动总结工作流就搭建完成了。从今往后,每天早上7:00(北京时间),这份定制的日报就会准时推送到你的微信上!


code

目录层级(省略 .git/ 与 .venv/ 详内容):

e:\AI\cursor\03_daily_ai_news\

├─ main.py ├─ requirements.txt └─ .github\ └─ workflows\ └─ daily.yml

文件内容:
main.py:

importfeedparserimportrequestsimportjsonimportosimportdatetimeimportpytzfromopenaiimportOpenAI# --- 配置区域 (从环境变量获取,安全第一) ---# 建议在GitHub Secrets中配置这些 KeyAPI_KEY=os.getenv("LLM_API_KEY")API_BASE_URL=os.getenv("LLM_BASE_URL","https://api.deepseek.com")# 默认为DeepSeekMODEL_NAME=os.getenv("LLM_MODEL","deepseek-chat")PUSHPLUS_TOKEN=os.getenv("PUSHPLUS_TOKEN")# 定义高质量AI新闻源 (RSS)RSS_FEEDS=[{"name":"机器之心","url":"https://www.jiqizhixin.com/rss"},{"name":"OpenAI Blog","url":"https://openai.com/blog/rss.xml"},{"name":"Hacker News (AI)","url":"https://hnrss.org/newest?q=AI"},# 你可以在这里继续添加]defget_recent_news():"""获取过去24小时的新闻标题和链接"""print("正在抓取新闻...")news_content=""#以此刻为基准,推算24小时前的时间now=datetime.datetime.now(datetime.timezone.utc)one_day_ago=now-datetime.timedelta(hours=24)forfeedinRSS_FEEDS:try:d=feedparser.parse(feed["url"])print(f"正在解析:{feed['name']}")count=0forentryind.entries:# 尝试解析发布时间published_time=Noneifhasattr(entry,'published_parsed'):published_time=datetime.datetime(*entry.published_parsed[:6],tzinfo=datetime.timezone.utc)# 如果找不到时间,默认取前3条;如果找到时间,只取24h内的if(published_timeandpublished_time>one_day_ago)or(notpublished_timeandcount<3):news_content+=f"- [{feed['name']}]{entry.title}:{entry.link}\n"count+=1exceptExceptionase:print(f"解析{feed['name']}失败:{e}")returnnews_contentdefsummarize_with_ai(content):"""调用大模型进行总结"""ifnotcontent:return"过去24小时没有检测到重要更新。"print("正在进行AI总结...")client=OpenAI(api_key=API_KEY,base_url=API_BASE_URL)prompt=f""" 你是专业的AI行业分析师。请根据以下抓取到的新闻列表,写一份“每日AI早报”。 要求: 1. 筛选出最有价值的3-5条新闻。 2. 格式: **标题** (emoji) > 一句话深度解读,说明它为什么重要。 3. 最后给出一个“行业风向”的一句话点评。 4. 必须使用中文。 新闻列表:{content}"""response=client.chat.completions.create(model=MODEL_NAME,messages=[{"role":"user","content":prompt}],temperature=0.7)returnresponse.choices[0].message.contentdefsend_pushplus(content):"""推送到微信 (PushPlus)"""print("正在推送消息...")url="http://www.pushplus.plus/send"data={"token":PUSHPLUS_TOKEN,"title":f"📅 AI早报{datetime.date.today()}","content":content,"template":"markdown"}requests.post(url,json=data)if__name__=="__main__":# 1. 获取raw_news=get_recent_news()# 2. 总结summary=summarize_with_ai(raw_news)# 3. 推送ifPUSHPLUS_TOKEN:send_pushplus(summary)else:print("未配置推送Token,直接打印结果:")print(summary)

requirements.txt:

feedparser requests openai pytz

daily.yml:

name:Daily AI Newson:workflow_dispatch:# 允许手动点击按钮触发测试schedule:# GitHub使用UTC时间。# 北京时间早上 7:00 = UTC时间 前一天 23:00-cron:'0 23 * * *'jobs:build:runs-on:ubuntu-lateststeps:-name:Checkout codeuses:actions/checkout@v3-name:Set up Pythonuses:actions/setup-python@v4with:python-version:'3.9'-name:Install dependenciesrun:|pip install -r requirements.txt-name:Run scriptenv:# 这里引用你在GitHub Secrets里填写的变量LLM_API_KEY:${{secrets.LLM_API_KEY}}LLM_BASE_URL:${{secrets.LLM_BASE_URL}}LLM_MODEL:${{secrets.LLM_MODEL}}PUSHPLUS_TOKEN:${{secrets.PUSHPLUS_TOKEN}}run:python main.py
http://www.jsqmd.com/news/79479/

相关文章:

  • SIGTERM与SIGKILL:进程清理全解析
  • 哔哩下载姬完整使用指南:5个技巧让你成为B站视频下载高手
  • 小红书爆笔记却零转化?这个引流神器帮你接住每一分流量
  • 2、数据库管理员的 Linux/Solaris 入门指南
  • 3、数据库管理中Shell的高效使用指南
  • 电机学中标幺化:工程计算的秘密武器
  • 如何快速处理NCM格式?NCMconverter终极解决方案
  • 国产MaaS速度之王SophNet周年庆!双十二狂欢购tokens,京东卡、iPhone17ProMax豪礼送不停! - SophNet
  • 进阶流程图绘制工具 Unione Flow Editor-- 击破样式痛点:全维度自定义解决方案
  • 进阶流程图绘制工具 Unione Flow Editor-- 直击行业痛点:高扩展性解决方案解析
  • 基于Spring Boot框架和vue的的图书借阅及书店图书销售商城管理系统设计与实现_s9a59ap7
  • 蓝桥杯软件赛模拟练习三(C++ Python)
  • python处理高光谱数据
  • 我感觉现在我无比强大
  • 基于Spring Boot框架和vue的的社区助老志愿者服务中心_k10oo7xf
  • 【教学类-89-13】20251212新年篇09——实心点状福字贴对联(通义万相AI福字实心字+点子,传统字体+儿童风格字体)
  • TA自学习复习文档(二)
  • 7.2 Python3序列 | 字符串操作:常用方法与格式化技巧
  • Solidity-learning(5)
  • ZooKeeper三节点集群搭建出现的问题和解决过程
  • Ubuntu 配置 RustDesk
  • 嵌入式-硬件基础:了解三极管
  • 基于Spring Boot框架和vue的的实验室机房预约管理系统的_1tc0u6bd
  • MySQL 数据类型详解
  • 基于Spring Boot框架和vue的的摄影社区论坛交流平台的设计与实现_scwxyip5
  • 基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
  • 【PYTHON】python venv创建虚拟环境,非conda
  • 基于模型预测控制对PMSM进行FOC控制,模拟控制了PMSM的速度(Simulink仿真实现)
  • 传统vs现代:AI如何让MTTF分析效率提升10倍
  • 基于模型预测控制与滚动时域估计应用于移动机器人研究(Matlab代码实现)