Gitee + Server酱:仓库事件推送到微信

效果:Gitee 仓库有推送、PR、Issue 等事件时,自动收到微信通知。

前置条件

  • Server酱 SendKey(30 秒获取教程
  • 一个 Gitee 仓库的管理权限
  • (中转方案)Cloudflare Workers 或腾讯云函数等可部署 HTTP 中转的环境

配置步骤

方案一:直连(固定文案通知)

Server酱 API 会优先读取 URL query 中的 title 参数,因此可以直接把通知标题写进 Webhook URL,无需中转。

  1. 在 Gitee 仓库页面进入 管理 → WebHooks → 添加
  2. URL 填入以下地址(将 你的SENDKEY 替换为实际 SendKey):
https://sctapi.ftqq.com/你的SENDKEY.send?title=Gitee%E6%9C%89%E6%96%B0%E4%BA%8B%E4%BB%B6
  1. 勾选要监听的事件(如推送、Pull Request 等)
  2. 点击添加,若配置正确,微信端应收到标题为「Gitee有新事件」的通知

此方案每次推送的标题固定为「Gitee有新事件」,正文为空。适合只需要知道"有事件发生"的场景。

方案二:中转(动态内容)

要把提交信息、PR 标题等动态内容送进通知正文,需要一层中转:Gitee → 中转服务 → Server酱。以下以 Cloudflare Workers 为例。

  1. 在 Cloudflare Workers 中创建一个 Worker,部署以下代码:
export default {
  async fetch(request) {
    const SENDKEY = "你的SENDKEY";
    const text = await request.text();

    const params = new URLSearchParams();
    params.set("title", "Gitee 有新事件");
    params.set("desp", "```\n" + text + "\n```");

    await fetch("https://sctapi.ftqq.com/" + SENDKEY + ".send", {
      method: "POST",
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      body: params.toString()
    });

    return new Response("ok");
  }
};
  1. 记下 Worker 的访问地址(如 https://your-worker.workers.dev
  2. 在 Gitee 仓库 管理 → WebHooks → 添加,URL 填 Worker 地址,勾选要监听的事件
  3. 添加后,若配置正确,微信端应收到通知,正文为 Gitee 推送的 JSON

收到通知后,你可以根据 JSON 中的字段,在中转代码里用 JSON.parse(text) 解析出提交标题、PR 链接等内容,拼接到 desp 中发送。Server酱 支持推送到微信服务号/企业微信/钉钉/飞书等多个通道,详见 /getting-started/channels/

常见问题

直连方案收不到通知怎么办?

确认 URL 中的 SendKey 正确、title 参数已做 URL 编码。检查 Gitee Webhook 配置是否正确,若返回非 200 则检查 URL 拼写。更多排查方法见 常见问题与排查

免费额度够用吗?

Server酱免费版每天 5 条,每分钟上限 50 条。Gitee 的推送、PR 等事件通常不会超量。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

中转代码收到的 JSON 怎么解析?

先部署上面的原始转发版本,收到一条通知后查看 JSON 结构,再据此修改代码提取需要的字段。用 JSON.parse(text) 解析后按实际字段名取值即可。

Gitee Webhook 的密码/签名怎么用?

Gitee 添加 Webhook 时可设置密码,中转代码中应校验请求签名以确保来源可信。具体签名算法以 Gitee 官方文档为准。

相关集成

懒人方案:把这段话复制给你的 AI 助手

把下面这段文字原样粘贴给 Claude Code、Cursor 或任何 AI 编程助手,它就会替你完成 Server酱 的接入:

请帮我把 Server酱 微信通知接入到我当前的项目/工具中:
1. API:POST https://sctapi.ftqq.com/{SendKey}.send,参数 title(必填,不能含换行)、desp(正文,支持 Markdown,可选);成功时返回 JSON 的 code 为 0。
2. 如果我的 SendKey 以 sctp 开头,则改用 https://{uid}.push.ft07.com/send/{SendKey}.send,uid 是 SendKey 中 sctp 与 t 之间的数字。
3. SendKey 从环境变量 SERVERCHAN_SENDKEY 读取;如果没有,提醒我到 https://sct.ftqq.com 免费获取(每天 5 条额度)。
4. 安全要求:不要把 SendKey 硬编码进代码、不要打印到日志、不要提交到 git。
5. 频率约定:任务结束发 1 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。