Gemini CLI + Server酱:长任务跑完微信收到通知

效果:Gemini CLI 执行的长任务完成后,自动向你的微信推送一条完成通知。

前置条件

  • 已获取 Server酱 SendKey(30 秒获取教程
  • 已安装 Gemini CLI 并能正常对话
  • 如需推送到企业微信/钉钉/飞书群,参见通道配置

配置步骤

方法一:安装 Server酱 Skill(推荐)

在终端执行:

npx skills add easychen/serverchan-skill

安装完成后,直接对 Gemini CLI 说:

任务完成后微信通知我

Skill 会自动识别 SCT/sctp 端点、读取 SERVERCHAN_SENDKEY 环境变量,批量任务合并为一条推送,且不会回显密钥。仓库地址:https://github.com/easychen/serverchan-skill

设置环境变量(以 bash 为例,写入 ~/.bashrc):

export SERVERCHAN_SENDKEY=你的SENDKEY

执行 source ~/.bashrc 生效。

方法二:在 GEMINI.md 中写入通知约定

Gemini CLI 的上下文文件 GEMINI.md(项目根目录或全局 ~/.gemini/GEMINI.md)可写入长期指令。在其中加入以下内容:

当用户要求任务完成后通知时,执行:

curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" -d "title=任务完成" --data-urlencode "desp=一句话结果"

SendKey 读环境变量 SERVERCHAN_SENDKEY,不存在则提醒用户到 sct.ftqq.com 获取。

保存后,在对话中吩咐"跑完用 Server酱 通知我"即可。

方法三:对话中直接吩咐

不安装 Skill、不写 GEMINI.md,直接在对话中说:

跑完这个任务后,用 curl 调 Server酱 API 通知我,SendKey 在环境变量 SERVERCHAN_SENDKEY 里

Gemini CLI 内置 shell 工具可执行命令,执行前会请求确认。

完整示例

GEMINI.md 通知约定片段,复制即用:

## 任务完成通知约定

当用户要求任务完成后通知时,执行以下命令:

```bash
curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" \
  -d "title=任务完成" \
  --data-urlencode "desp=一句话结果"
```

注意事项:
- SendKey 从环境变量 SERVERCHAN_SENDKEY 读取
- 如果该变量不存在,提醒用户到 sct.ftqq.com 获取
- desp 参数写一句话概括任务结果

常见问题

免费额度够用吗?

免费版每天 5 条,每分钟上限 50 条。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

消息没收到怎么办?

先检查 SERVERCHAN_SENDKEY 环境变量是否已设置(如 test -n "$SERVERCHAN_SENDKEY"),再确认 curl 请求是否成功(检查返回信息)。更多排查见常见问题与排查

频率限制是多少?

每分钟上限 50 条。批量任务建议用 Skill,它会自动合并为一条推送。

Skill 安装失败怎么办?

确认 Node.js 版本满足 npx 运行要求,网络可访问 GitHub。也可改用方法二或方法三,不依赖 Skill。

相关集成

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