在信息爆炸的时代,如何高效获取关注网站的更新而不被广告和噪音打扰?Telegram频道+RSS是一个经典方案,但很多网站并不提供原生RSS。今天,我们引入一个神器——RSSHub,它几乎能为任何网站生成RSS源,再配合Telegram机器人,就能实现「网站一更新,频道立马收到通知」的极致自动化体验。本文以keep-telegram.cn的视角,带你从零搭建这套系统。
为什么选择RSSHub?
RSSHub是一个开源、轻量、易于扩展的RSS生成器。它通过大量预制路由,可以轻松为B站、微博、小红书、GitHub、知乎甚至许多小众网站生成RSS订阅链接。相比直接使用第三方RSS服务,RSSHub可控性更高、更隐私,还能自定义规则。结合Telegram的频道推送,你可以打造一个完全属于自己的「信息中枢」。
准备工作
在开始前,你需要具备以下条件:
- 一个Telegram账号,并创建好一个目标频道(用于接收推送)。
- 一个Telegram Bot(通过@BotFather创建),并获得其Token。
- 一个可用的RSSHub实例。你可以使用公共实例(如rsshub.app),但推荐自行部署,避免限速和隐私问题。
- 基本的命令行操作能力,以及Python或Node.js环境(用于编写推送脚本)。
通用实现思路
整个流程分为三步:获取RSSHub生成的自定义RSS链接,让脚本定期抓取RSS并解析更新,通过Bot API将新条目发送到频道。
具体操作步骤
1. 启动RSSHub
如果你选择自建,Docker是最快捷的方式:
docker run -d --name rsshub -p 1200:1200 diygod/rsshub启动后,通过http://你的服务器IP:1200即可访问。公共实例则直接使用https://rsshub.app作为根路径。
2. 查找并测试目标网站的路由
RSSHub的文档(https://docs.rsshub.app/)列出了所有支持的路由。例如,想要订阅某个B站UP主,路径为/bilibili/user/video/uid。在浏览器中打开https://rsshub.app/bilibili/user/video/你的UID,若返回XML内容则说明成功。
3. 配置Telegram Bot与频道
创建好Bot后,将Bot添加为频道管理员(赋予“发布消息”权限)。获取频道ID(形如@your_channel),并记下Bot Token。
4. 编写RSS轮询脚本
这里以Python脚本为例,使用feedparser解析RSS,并通过requests调用Telegram Bot API发送消息。核心代码如下:
import feedparser
import requests
import time
RSS_URL = "https://rsshub.app/bilibili/user/video/UID"
BOT_TOKEN = "你的BOT_TOKEN"
CHANNEL_ID = "@your_channel"
def send_message(text):
url = f"https://api.telegram.org/bot/sendMessage"
data = {"chat_id": CHANNEL_ID, "text": text, "disable_web_page_preview": False}
requests.post(url, data=data)
last_entries = set()
while True:
feed = feedparser.parse(RSS_URL)
for entry in feed.entries[:5]: # 每次最多检查最新5条
if entry.link not in last_entries:
send_message(f"📢 {entry.title}\n{entry.link}")
last_entries.add(entry.link)
time.sleep(600) # 每10分钟检查一次将上面的参数替换为实际值,运行脚本即可。注意,你需要用pip install feedparser requests安装依赖。
5. 精细优化:定制推送格式
默认脚本只是发送标题和链接,你可以利用RSS条目的更多字段(如summary、author、updated)来丰富消息内容。例如,加上发布时间、作者名,甚至通过parse_mode参数支持Markdown或HTML格式,让推送更美观。
高级玩法:RSSHub的过滤与路由参数
RSSHub不仅生成RSS,还支持路由参数,让你在源头就过滤内容。例如:
- 在路由末尾添加
?filter=关键词,只推送包含指定关键词的条目。 - 使用
?filter_title=针对标题过滤。 - 有些路由支持排序或限制数量,如
?limit=10。
这样,你可以精准控制什么内容进入Telegram频道,避免垃圾信息轰炸。
定时任务部署(以Linux为例)
手动运行脚本不够优雅,建议部署为系统服务或cron任务。较简单的方式是使用crontab -e,添加一行:
*/10 * * * * cd /path/to/script && /usr/bin/python3 rss.py这样每10分钟自动执行一次。注意脚本内部需要处理重复推送问题(比如用数据库或文件记录已发送的链接),这样cron重复执行不会重复推送。
常见问题解答
公共RSSHub实例不稳定怎么办?
公共实例经常被大量请求拖慢或封锁,最佳方案是自建。自建只需要一台VPS和Docker,对小白也很友好。
脚本运行一段时间后不再推送?
可能是RSSHub路由失效或目标网站改版。首先用浏览器访问RSS链接,查看是否还能正常返回数据;若失败,尝试更新RSSHub容器或检查路由参数。
想要推送图片或媒体内容?
Telegram Bot API支持sendPhoto和sendVideo。你可以在脚本中解析RSS条目中的媒体链接,然后调用对应接口,实现富媒体推送。
是否支持推送多个RSS源?
当然,你可以维护一个RSS列表,脚本遍历所有源并推送。只需将RSS_URL改为一个列表,循环处理即可。
总结
通过RSSHub和Telegram Bot的结合,你不仅能让网站更新即时触达,还能借助RSSHub强大的路由定制能力,过滤出真正有价值的信息。这套方案适用于个人学习、工作监控、社群运营等场景,是Telegram效率提升的重要拼图。动手搭建属于自己的信息流吧,一旦用上,你将再也回不去手动刷网页的日子。