👍同事看了都点赞!免费的自动化 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的话,不如试试这个自动化组合拳。

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

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

相关推荐
Victor3561 小时前
Redis(50) Redis哨兵如何与客户端进行交互?
后端
程序员爱钓鱼1 小时前
Go语言实战案例-开发一个JSON格式校验工具
后端·google·go
M1A17 小时前
小红书重磅升级!公众号文章一键导入,深度内容轻松入驻
后端
0wioiw08 小时前
Go基础(④指针)
开发语言·后端·golang
李姆斯10 小时前
复盘上瘾症:到底什么时候该“复盘”,什么时候不需要“复盘”
前端·后端·团队管理
javachen__10 小时前
Spring Boot配置error日志发送至企业微信
spring boot·后端·企业微信
seabirdssss10 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
OC溥哥99912 小时前
Flask论坛与个人中心页面开发教程完整详细版
后端·python·flask·html
迷知悟道14 小时前
java面向对象四大核心特征之抽象---超详细(保姆级)
java·后端
Aurora_NeAr14 小时前
对比Java学习Go——程序结构与变量
后端