WebHook Notifier:轻松管理 Git 推送和 RSS 更新的通知服务
在如今这个信息爆炸的时代,无论是开发者追踪代码更新,还是信息爱好者关注订阅内容,及时获取动态都变得越来越重要。想象一下,当你的 GitHub 项目有了新的推送,或者你订阅的博客发布了最新文章时,能第一时间收到通知,是不是既省心又高效?这就是 WebHook Notifier 的用武之地。
WebHook Notifier 是一个灵活的自托管工具,专为那些希望无缝连接 Git 平台和 RSS 订阅的人设计。它能接收来自 GitHub、GitLab、Gitea 的推送事件以及 RSS 源的更新,然后将消息发送到 Telegram、电子邮件甚至 QQ 等平台。本文将带你全面了解这个工具的核心功能、安装步骤、配置方法以及使用技巧,让你轻松上手,享受自动化通知的便利。
什么是 WebHook Notifier?
简单来说,WebHook Notifier 是一个“消息中转站”。它能监听你关心的 Git 仓库活动(比如代码推送)和 RSS 订阅的更新,然后按照你的设定,把这些信息推送到你常用的通讯工具上。无论是团队协作中实时掌握代码进展,还是个人追踪喜欢的博客动态,这个工具都能帮你节省时间,避免手动检查的麻烦。
它最大的特点是自托管,也就是说,你可以把它跑在自己的服务器上,完全掌控数据和隐私。而且,它支持多种平台和通知渠道,配置起来也非常灵活。接下来,我们就从它的功能开始讲起。
核心功能:它能做什么?
WebHook Notifier 的功能可以用“强大”和“实用”来形容。以下是它的几个亮点:
1. 支持多种 Git 平台
无论你是用 GitHub 管理开源项目,还是用 GitLab 进行团队开发,或者用 Gitea 自建代码仓库,WebHook Notifier 都能完美兼容。它专门监听这些平台的“推送事件”(push event),一旦有新代码提交,你就能收到通知。
2. RSS 订阅监控
对于喜欢订阅博客、新闻或者技术动态的人来说,WebHook Notifier 提供了两种 RSS 更新方式:
-
定时检查:你可以设定每隔多久(比如 30 分钟)去看看 RSS 源有没有新内容。 -
实时 WebHook:通过一个特定的地址( /webhook/rss
),它还能接收来自 RSS 转 WebHook 服务的即时更新。
3. 多渠道通知
收到更新后,WebHook Notifier 会把消息送到你指定的地方:
-
Telegram:通过 Bot 直接发到你的聊天窗口。 -
电子邮件:用 SMTP 发送到你的邮箱。 -
QQ:通过 Napcat 这个 QQ Bot 工具,推送给个人或群聊。
4. 安全第一
为了确保消息来源可靠,它内置了安全机制:
-
对 GitHub 和 Gitea 的 WebHook 请求进行签名验证。 -
支持 GitLab 的 Token 验证。 -
RSS 更新还有去重功能,避免重复推送相同的内容。
5. 灵活配置
所有的设置都集中在一个 config.yaml
文件里。你可以调整通知延迟(比如收到事件后等几秒再发)、设置代理,甚至为不同的平台和渠道定制规则。
它是怎么工作的?
想知道 WebHook Notifier 的“幕后故事”吗?其实它的流程很简单:
-
接收消息:Git 平台(比如 GitHub)推送代码时,或者 RSS 源有更新时,WebHook Notifier 会通过特定的地址接收这些事件。 -
处理事件:它会根据你的配置,验证消息来源,整理内容。 -
延迟(可选):如果你设定了延迟时间,它会稍微等一等再发通知。 -
发送通知:最后,消息会通过 Telegram、邮件或 QQ 发送到你手上。
用一个流程图来表示就是:
Git 推送 / RSS 更新 → WebHook Notifier → (可选延迟) → Telegram / 邮件 / QQ
这种设计既直观又高效,让你随时掌握动态。
安装与启动:一步步教你上手
别担心,安装 WebHook Notifier 并不复杂。只要你有一点基础的命令行操作经验,就能轻松搞定。以下是详细步骤:
1. 下载代码
首先,你需要从 GitHub 上把 WebHook Notifier 的代码拉到本地:
git clone https://github.com/hxsyzl/WebHook-Notifier.git
cd WebHook-Notifier
这一步就像从网上“借”了一份工具箱,接下来我们要把它组装起来。
2. 安装依赖
WebHook Notifier 是用 Python 写的,所以需要安装一些必要的工具包。为了避免干扰你电脑上已有的 Python 环境,我们推荐用虚拟环境。
创建虚拟环境
在项目文件夹里,根据你的系统运行以下命令:
Windows 用户:
python -m venv venv
.\venv\Scripts\activate
macOS / Linux 用户:
python3 -m venv venv
source venv/bin/activate
运行完后,你会看到命令行前面多了 (venv)
,说明虚拟环境激活成功。
安装所需包
WebHook Notifier 需要以下几个包(都在 requirements.txt
里列好了):
-
fastapi
:一个快速的 Web 框架。 -
uvicorn
:用来运行服务。 -
PyYAML
:处理配置文件。 -
httpx
:发送网络请求。 -
feedparser
:解析 RSS。
安装命令很简单:
pip install -r requirements.txt
3. 配置服务
安装好依赖后,你需要告诉 WebHook Notifier 怎么工作。这一切都在 config.yaml
文件里完成。用文本编辑器打开它:
nano config.yaml
具体的配置方法我们稍后会细讲,先留个悬念。
4. 启动程序
一切就绪后,用以下命令启动服务:
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
-
--reload
是开发时用的,代码改动后会自动重启。 -
生产环境建议去掉这个参数,直接跑:
uvicorn main:app --host 0.0.0.0 --port 8000
启动后,打开浏览器,访问 http://<你的服务器IP>:8000
,你会看到类似这样的欢迎消息:
{
"message": "WebHook Notifier 服务正在运行",
"version": "1.1.0",
"endpoints": {
"git_webhook": "/webhook/git",
"rss_webhook": "/webhook/rss"
}
}
这说明服务已经正常运行,恭喜你迈出了第一步!
配置详解:打造属于你的通知系统
config.yaml
是 WebHook Notifier 的“大脑”,通过它你可以定制所有功能。以下是一个完整的配置示例,我们会逐一解释每个部分:
# 全局设置
global:
notification_delay_seconds: 5
proxy:
enabled: false
url: "http://127.0.0.1:7890"
# Git 平台设置
github:
secret: "your_github_webhook_secret"
gitlab:
secret: "your_gitlab_webhook_secret"
gitea:
secret: "your_gitea_webhook_secret"
# RSS 设置
rss:
enabled: true
check_interval_minutes: 30
webhook:
secret: "your_rss_webhook_secret"
feeds:
- name: "Awesome RSS"
url: "https://example.com/feed.xml"
enabled: true
- name: "Another Feed"
url: "https://another.com/rss"
enabled: true
# 通知渠道
telegram:
enabled: true
bot_token: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
chat_id: "-1001234567890"
email:
enabled: false
smtp_server: "smtp.example.com"
smtp_port: 587
smtp_username: "user@example.com"
smtp_password: "your_email_password_or_app_token"
sender_email: "notifier@example.com"
recipient_emails:
- "recipient1@example.com"
- "recipient2@example.com"
use_ssl: false
use_tls: true
napcat:
enabled: false
base_url: "http://127.0.0.1:3001"
send_mode: "all"
user_id: "10001"
group_id: "123456789"
全局设置
-
notification_delay_seconds
:收到事件后等待几秒再发通知。设为 0 就是立刻发送。比如设成 5 秒,可以避免短时间内收到太多消息。 -
proxy
:如果你的网络需要代理(比如访问 Telegram 或抓取 RSS),可以在这里填上代理地址。
Git 平台
这部分是为 GitHub、GitLab、Gitea 设置的。每个平台都有一个 secret
,这是你在它们网站上配置 WebHook 时填的密钥,用来验证消息来源。
RSS 设置
-
enabled
:设为true
才会启用 RSS 功能。 -
check_interval_minutes
:每隔多少分钟检查一次 RSS 更新,比如 30 分钟。 -
webhook.secret
:如果你用 RSS 转 WebHook 服务,可以加个密钥增强安全性。 -
feeds
:列出你要监控的 RSS 地址,每个都有名字和 URL。
通知渠道
Telegram
-
bot_token
:从 Telegram 的 BotFather 那里拿到的令牌。 -
chat_id
:消息发给谁,可以是个人 ID 或群聊 ID(群聊通常是负数)。
电子邮件
-
smtp_server
和smtp_port
:邮件服务器地址和端口,比如 Gmail 是smtp.gmail.com:587
。 -
smtp_username
和smtp_password
:你的邮箱登录信息(有时需要用应用专用密码)。 -
sender_email
和recipient_emails
:发件人和收件人邮箱。
QQ (Napcat)
-
base_url
:Napcat 服务的地址。 -
send_mode
:选择发到私聊(private
)、群聊(group
)还是两者(all
)。 -
user_id
和group_id
:目标 QQ 号或群号。
配置好后,保存文件,服务会自动应用这些设置。
如何使用:让通知飞起来
安装和配置完成后,接下来就是实际使用它了。以下是具体步骤:
1. 设置 Git WebHook
以 GitHub 为例:
-
打开你的仓库,进入 Settings > Webhooks。 -
点击 Add webhook。 -
在 Payload URL 填入: http://<你的服务器IP>:8000/webhook/git
。 -
Content type 选 application/json
。 -
Secret 填入你在 config.yaml
里设的github.secret
。 -
Events 勾选 Push events,然后保存。
GitLab 和 Gitea 的设置类似,只是界面略有不同。
2. 配置 RSS
方法 1:定时检查
在 config.yaml
的 rss.feeds
里加好 RSS 地址,服务启动后会自动每隔一段时间检查更新。
方法 2:实时 WebHook
如果你想要更快响应:
-
用第三方服务(比如 rss-to-webhook.com)把 RSS 转为 WebHook。 -
把 WebHook 地址设为: http://<你的服务器IP>:8000/webhook/rss
。 -
如果服务支持密钥,就填到 rss.webhook.secret
里。
API 接口:技术爱好者的福利
WebHook Notifier 提供了几个简单的接口:
-
GET /
:检查服务状态,返回版本和可用端点。 -
POST /webhook/git
:接收 Git 推送事件。 -
POST /webhook/rss
:接收 RSS 更新。
这些接口用起来非常直白,适合喜欢自己折腾的人。
数据保存:避免重复通知
每次收到 RSS 更新,WebHook Notifier 都会把已处理的文章 ID 记到 rss_last_check.json
文件里。这样即使 RSS 源重复推送相同内容,你也不会收到重复通知。记得确保服务有权限读写这个文件哦。
效果展示:看看它有多棒
想象一下,你的 GitHub 项目刚推送了一段代码,Telegram 里立刻弹出消息:“新代码已提交!”或者你订阅的博客更新了,QQ 群里马上提醒大家。这样的体验是不是很酷?
写在最后
WebHook Notifier 是一个简单却强大的工具,能帮你把 Git 推送事件和 RSS 更新的管理变得轻松有趣。无论你是开发者、内容创作者还是信息追踪者,它都能为你节省时间,让你专注于更重要的事情。
通过这篇文章,你应该已经掌握了它的安装、配置和使用方法。如果还有疑问,或者想分享你的使用心得,欢迎去 GitHub 仓库留言交流。试试看吧,也许它会成为你日常工作中的得力助手!