站点图标 高效码农

WebHook Notifier:GitHub推送与RSS更新的自动化通知终极指南

WebHook Notifier:轻松管理 Git 推送和 RSS 更新的通知服务

WebHook Notifier 在行动

在如今这个信息爆炸的时代,无论是开发者追踪代码更新,还是信息爱好者关注订阅内容,及时获取动态都变得越来越重要。想象一下,当你的 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 的“幕后故事”吗?其实它的流程很简单:

  1. 接收消息:Git 平台(比如 GitHub)推送代码时,或者 RSS 源有更新时,WebHook Notifier 会通过特定的地址接收这些事件。
  2. 处理事件:它会根据你的配置,验证消息来源,整理内容。
  3. 延迟(可选):如果你设定了延迟时间,它会稍微等一等再发通知。
  4. 发送通知:最后,消息会通过 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_serversmtp_port:邮件服务器地址和端口,比如 Gmail 是 smtp.gmail.com:587
  • smtp_usernamesmtp_password:你的邮箱登录信息(有时需要用应用专用密码)。
  • sender_emailrecipient_emails:发件人和收件人邮箱。

QQ (Napcat)

  • base_url:Napcat 服务的地址。
  • send_mode:选择发到私聊(private)、群聊(group)还是两者(all)。
  • user_idgroup_id:目标 QQ 号或群号。

配置好后,保存文件,服务会自动应用这些设置。


如何使用:让通知飞起来

安装和配置完成后,接下来就是实际使用它了。以下是具体步骤:

1. 设置 Git WebHook

以 GitHub 为例:

  1. 打开你的仓库,进入 Settings > Webhooks
  2. 点击 Add webhook
  3. Payload URL 填入:http://<你的服务器IP>:8000/webhook/git
  4. Content typeapplication/json
  5. Secret 填入你在 config.yaml 里设的 github.secret
  6. Events 勾选 Push events,然后保存。

GitLab 和 Gitea 的设置类似,只是界面略有不同。

2. 配置 RSS

方法 1:定时检查

config.yamlrss.feeds 里加好 RSS 地址,服务启动后会自动每隔一段时间检查更新。

方法 2:实时 WebHook

如果你想要更快响应:

  1. 用第三方服务(比如 rss-to-webhook.com)把 RSS 转为 WebHook。
  2. 把 WebHook 地址设为:http://<你的服务器IP>:8000/webhook/rss
  3. 如果服务支持密钥,就填到 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 仓库留言交流。试试看吧,也许它会成为你日常工作中的得力助手!

退出移动版