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。直连和中转方式都替换此地址即可。
相关集成
- Python 脚本推送 — 在 CI/CD 脚本中调用 Server酱 API 发送部署通知
- Uptime Kuma 宕机告警 — 监控 Vercel 部署站点的可用性
- 青龙面板任务通知 — 定时任务执行结果推送到微信