Vercel + Server酱:项目部署成功或失败时推送到微信

效果:Vercel 项目每次部署完成时,自动收到微信通知,包含部署状态等信息。

前置条件

  • Server酱 SendKey:登录 sct.ftqq.com,在「SendKey」页面复制(30 秒获取教程)。
  • Vercel 项目已创建,可访问项目或团队的 Settings。
  • 如需将部署详情送进消息正文,准备一个 Cloudflare Workers 或云函数作为中转。
  • 如需推送到企业微信、钉钉或飞书群,参见通道配置

配置步骤

方式一:URL 直连(固定文案)

在 Vercel 项目的 Settings 中找到 Deploy webhook 配置项(具体入口以应用内实际显示为准),URL 填入:

https://sctapi.ftqq.com/你的SENDKEY.send?title=Vercel%E9%83%A8%E7%BD%B2

Vercel%E9%83%A8%E7%BD%B2 是「Vercel部署」的 URL 编码。每次部署触发 webhook 时,你会收到标题为「Vercel部署」的微信消息。此方式不解析 Vercel 推送的 JSON,仅推送固定标题。

方式二:中转解析(含部署详情)

若要把 Vercel 推送的 JSON 内容送进消息正文,需要一层中转:Vercel → Cloudflare Workers → Server酱。

1. 创建 Cloudflare Worker,粘贴以下代码:

export default {
  async fetch(request, env) {
    try {
      const body = await request.json();
      const desp = "```json\n" + JSON.stringify(body, null, 2) + "\n```";
      const resp = await fetch("https://sctapi.ftqq.com/" + env.SERVERCHAN_SENDKEY + ".send", {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: "title=" + encodeURIComponent("Vercel部署通知") + "&desp=" + encodeURIComponent(desp)
      });
      const result = await resp.json();
      return new Response(JSON.stringify(result), {
        headers: { "Content-Type": "application/json" }
      });
    } catch (e) {
      return new Response("error: " + e.message, { status: 500 });
    }
  }
}

2. 在 Worker 的环境变量中添加 SERVERCHAN_SENDKEY,值为你的 SendKey。

3. 在 Vercel 项目的 Deploy webhook 设置中(具体入口以应用内实际显示为准),URL 填入 Worker 的域名地址。

部署该 Worker 后,Vercel 每次部署触发 webhook 时,Worker 会将完整 JSON 以代码块格式推送到微信。

常见问题

免费额度够用吗?

Server酱免费版每天 5 条消息,每分钟上限 50 条。Vercel 部署频率通常不高,免费额度基本够用。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

配置了 webhook 但没收到消息?

先确认 SendKey 是否正确、Vercel webhook 是否已触发(查看 Vercel 部署日志确认 webhook 发送状态)。中转方式还需检查 Worker 的日志输出。更多排查步骤见常见问题与排查

部署频繁触发会超限吗?

每分钟上限 50 条。如果项目部署非常频繁,建议在中转脚本中做去重或合并处理。

SendKey 以 sctp 开头怎么填?

sctp 开头的 SendKey 属于 Server酱³,API 端点改为 https://你的UID.push.ft07.com/send/你的SENDKEY.send。直连和中转方式都替换此地址即可。

相关集成

懒人方案:把这段话复制给你的 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 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。