👍同事看了都点赞!免费的自动化 RSS 聚合推送方案

不用起服务器,不用跑定时脚本,不用定时爬网页,只需要 Amazon Lambda,和一个 webhook,就能每天早上收到最新的RSS推送啦~

这玩意看似简单,其实也很简单🤣

是的,我们今天要来干点小事儿(doge),做一个自动化 RSS 聚合推送!

起因

作为一名互联网民工,咱虽然职位不高,但关注的内容是一点都不少的:

  • GitHub Trending
  • 技术社区博主更新
  • 少数派/36kr/虎嗅精选
  • 某些小众技术博客

考虑到每天刷 RSS 太麻烦了,我寻思能不能搞个全自动的?

我想要的是:每天自动推送前一天的更新内容,然后发到企业微信中。

实现方案

我整活的技术栈:

  • Amazon Lambda:免费使用,部署简单,不用维护
  • Python :用 feedparser 解析 RSS,熟悉且轻巧
  • 企业微信 Webhook:消息推送落地方式,简单稳定
  • CloudWatch Events(EventBridge) :定时触发器,每天自动执行

你问我为什么用 Amazon Lambda?

  • 每月有 100 万次调用免费额度,且永久免费,用不完,根本用不完
  • 不用管部署,写完代码直接丢上去就完事了,非常适合这种简单的项目

那我们要怎么拿到这些免费额度呢?其实只要注册一个账号就可以了。

注册账号

先去 亚马逊云科技官网,点击右上角注册账号,关键流程如下:

  • 手机号、账单信息可以直接用国内资料填写;
  • 选择基础支持计划(无需额外开支);
  • 注册完成后等待身份验证通过,即可开始使用资源。

接下来回归我们的主线任务,继续实现我们的 RSS 聚合推送神器。

新用户可获得高达 200 美元的服务抵扣金

亚马逊云科技新用户可以免费使用亚马逊云科技免费套餐(Amazon Free Tier)。注册即可获得 100 美元的服务抵扣金,在探索关键亚马逊云科技服务时可以再额外获得最多 100 美元的服务抵扣金。使用免费计划试用亚马逊云科技服务,最长可达 6 个月,无需支付任何费用,除非您选择付费计划。付费计划允许您扩展运营并获得超过 150 项亚马逊云科技服务的访问权限。

目录结构

bash 复制代码
rss-pusher/
├── lambda_function.py   # 主逻辑
├── requirements.txt     # 依赖

代码实现

因为这个代码逻辑比较简单,所以咱就用Python来写了,方便又快捷~

python 复制代码
import datetime
import requests
import feedparser

# 企业微信 Webhook 地址
WEBHOOK_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"

# RSS 源列表
RSS_FEEDS = [
    "https://sspai.com/feed"
]

# 昨天的时间范围
today = datetime.datetime.utcnow() + datetime.timedelta(hours=8)
yesterday = today - datetime.timedelta(days=1)

def is_yesterday(published_parsed):
    if not published_parsed:
        return False
    pub_date = datetime.datetime(*published_parsed[:6])
    return yesterday.date() <= pub_date.date() < today.date()

def lambda_handler(event, context):
    updates = []

    for url in RSS_FEEDS:
        d = feedparser.parse(url)
        for entry in d.entries:
            if is_yesterday(entry.get("published_parsed")):
                updates.append(f"🔹 [{entry.title}]({entry.link})")

    if not updates:
        print("昨日无更新,继续摸鱼")
        return

    content = "\n".join(updates)
    message = {
        "msgtype": "markdown",
        "markdown": {
            "content": f"🎯 **昨日 RSS 更新(共 {len(updates)} 条)**\n\n{content}"
        }
    }

    resp = requests.post(WEBHOOK_URL, json=message)
    print("消息发送结果:", resp.status_code, resp.text)

# 方便本地调试
if __name__ == "__main__":
    lambda_handler({}, {})

依赖列表(requirements.txt)

复制代码
requests
feedparser

部署时可以打个 zip 包上传,或者用 Amazon Lambda 层(Layer)方式管理依赖。

本地调试:

sh 复制代码
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 test.py

创建 Lambda 函数

我们需要把项目代码进行上传:

  1. 进入 Lambda 服务控制台,点击 "创建函数" (Create function)
  2. 选择 "从头开始创作" (Author from scratch)
  3. 函数名称 (Function name): 填写 RSS-Aggregator-Function,其实你随便填也没事。
  4. 运行时 (Runtime): 选择 Python 3.9 或更高版本。
  5. 架构 (Architecture): 保持默认的 x86_64
  6. 点击 "创建函数"

创建成功!

设置定时触发器

最后一步,我们需要让这个函数自动运行。

  1. 在 Lambda 函数页面,点击 "添加触发器" (Add trigger)
  2. 在下拉菜单中选择 EventBridge (or CloudWatch Events)
  3. 选择 "创建新规则" (Create a new rule)
  4. 规则名称 (Rule name): 填写 RSS-Hourly-Trigger,其实你随便填也没事。
  5. 计划表达式 (Schedule expression): 选择 "速率" (rate) ,然后输入 1day,表示每天执行一次。你也可以使用 Cron 表达式进行更精细的控制。
  6. 点击 "添加" (Add)

至此,整个系统已经搭建完成!

效果展示

尾声

方案优点:

  • 不需要服务器、不用起定时任务
  • 全自动、稳定、高扩展性(你可以自己改成 Telegram、钉钉、邮箱)
  • 免费使用,无需维护

需要注意的是,有些RSS源不规范,最好先在本地进行调试下,没问题了再部署上去。

如果你也想过"每天自动看资讯",又懒得手动刷RSS的话,不如试试这个自动化组合拳。

技术活干得漂亮,推送内容也能顺便炫一波,岂不美哉?

友情提示:如果用完了之后不再需要使用服务的话,记得要在控制台关闭服务,以防超过免费额度产生扣费

相关推荐
郝学胜-神的一滴1 小时前
SpringBoot实战指南:从快速入门到生产级部署(2025最新版)
java·spring boot·后端·程序人生
爷_6 小时前
字节跳动震撼开源Coze平台!手把手教你本地搭建AI智能体开发环境
前端·人工智能·后端
不过普通话一乙不改名9 小时前
第一章:Go语言基础入门之函数
开发语言·后端·golang
豌豆花下猫10 小时前
Python 潮流周刊#112:欢迎 AI 时代的编程新人
后端·python·ai
Electrolux10 小时前
你敢信,不会点算法没准你赛尔号都玩不明白
前端·后端·算法
whhhhhhhhhw11 小时前
Go语言-fmt包中Print、Println与Printf的区别
开发语言·后端·golang
ん贤11 小时前
Zap日志库指南
后端·go
Spliceㅤ11 小时前
Spring框架
java·服务器·后端·spring·servlet·java-ee·tomcat
IguoChan12 小时前
10. Redis Operator (3) —— 监控配置
后端
Micro麦可乐13 小时前
前端与 Spring Boot 后端无感 Token 刷新 - 从原理到全栈实践
前端·spring boot·后端·jwt·refresh token·无感token刷新