# 青龙面板接入 Server酱：定时任务结果推送微信（2026 教程）

> 青龙面板内置 Server酱 通知：系统通知选 serverChan 填 SendKey，脚本通知配 PUSH_KEY。任务成功失败、签到结果实时推送微信，本文含两种配置方式、Docker 下的文件位置、降噪技巧与完整排查清单。

- 网页版：https://sct.ftqq.com/docs/integrations/qinglong/
- 更新日期：2026-07-28

# 青龙面板 + Server酱：定时任务结果，微信实时可见

> 效果：青龙面板的定时任务（签到、监控、脚本）执行后，结果自动推送到你的微信。青龙**内置** Server酱通知渠道，SCT 与 SC3 的 SendKey 都直接支持，无需写代码。

一句话答案：青龙有**两套互相独立**的通知配置——面板自己的系统通知在「系统设置 → 通知设置」里选 `serverChan`；脚本产出的通知走 `config.sh` 里的 `export PUSH_KEY="你的SendKey"`。两者互不影响，多数人"测试通知收得到、任务通知收不到"就是只配了前者。

## 前置条件

- 一个 Server酱 SendKey（[30 秒获取教程](https://sct.ftqq.com/docs/getting-started/sendkey/)，SCT 或 SC3 均可）
- 已部署的青龙面板（[whyour/qinglong](https://github.com/whyour/qinglong)）

## 先搞清楚：青龙有两套通知

这是青龙接入里最容易踩的坑。两套通知的触发源、配置位置、生效范围都不一样：

| | 面板系统通知 | 脚本通知 |
| --- | --- | --- |
| 谁发的 | 青龙面板本身 | 你跑的脚本（京东签到等） |
| 典型消息 | 任务执行失败、登录异常、容器重启 | 签到结果、账号状态、脚本自定义输出 |
| 配置位置 | 系统设置 → 通知设置（图形界面） | `config.sh` 里的 `PUSH_KEY` 环境变量 |
| 改完要重启吗 | 不用 | 不用，下次任务执行即生效 |

**想收到签到脚本的结果，必须配第二套。** 只配第一套的话，你只会收到"任务执行失败"这类面板级事件。

## 方式一：面板系统通知

面板级事件（任务失败、登录异常等）走这里：

1. 打开青龙面板 → **系统设置** → **通知设置**。
2. **通知方式**选择 `serverChan`（Server酱）。
3. 在 **serverChanKey** 字段粘贴你的 SendKey，保存。
4. 点击测试按钮，微信/App 应立刻收到测试消息。

青龙会按 SendKey 前缀自动选择端点：`sctp` 开头走 Server酱³，其余走 Server酱Turbo（`sctapi.ftqq.com`）——两种 key 都开箱即用。

> 不同版本的菜单文案略有出入（有的版本叫「通知设置」，有的在「系统设置」二级页里）。找不到就在设置页搜 `serverChan`。

## 方式二：脚本通知（签到脚本类）

跑第三方脚本库（京东签到、各类 checkin 脚本）时，脚本产出的通知走 `config.sh` 的环境变量：

1. 面板 → **配置文件** → `config.sh`，找到通知配置区第 1 项：

```bash
## 1. Server酱
## 下方填写 SendKey 值
export PUSH_KEY="你的SENDKEY"
```

2. 保存后，凡是调用了青龙自带 `notify.py` / `notify.js`（或兼容的 sendNotify）的脚本，执行结果都会推送到微信。

不用重启容器，下一次任务执行就会带上通知。

### Docker 部署下 config.sh 在哪

如果你习惯直接改文件而不是用面板的编辑器，`config.sh` 在容器里的位置随版本变化，进容器确认一下最稳妥：

```bash
docker exec -it qinglong ls /ql/data/config/config.sh   # 较新版本
docker exec -it qinglong ls /ql/config/config.sh        # 早期版本
```

宿主机上则是你 `docker run` 时映射的那个目录，比如 `-v $PWD/ql/data:/ql/data` 就对应 `./ql/data/config/config.sh`。

改完之后确认变量真的进了脚本环境：

```bash
docker exec -it qinglong bash -c 'source /ql/data/config/config.sh && echo $PUSH_KEY'
```

打印为空，说明改错文件了，或者 `export` 那一行还被 `#` 注释着。

### 旧变量名 SCKEY

老教程和老脚本里会看到 `SCKEY`，那是旧版 Server酱（sc.ftqq.com）时期的变量名。现在统一用 `PUSH_KEY`。两个都设置不会更保险，只会让你分不清哪个生效——留 `PUSH_KEY` 一个就好。

## 先验证 SendKey 本身可用

排查之前先把变量因素排除掉。在任意终端执行：

```bash
curl -X POST "https://sctapi.ftqq.com/你的SENDKEY.send" \
  -d "title=青龙配置测试" -d "desp=SendKey 可用"
```

返回的 JSON 里 `code` 为 0 且手机收到消息，说明 key 没问题，后面只需要查青龙这一侧。

在容器内部再跑一次同样的命令，可以顺带确认容器的网络能出去：

```bash
docker exec -it qinglong curl -s -X POST \
  "https://sctapi.ftqq.com/你的SENDKEY.send" -d "title=容器内测试"
```

## 别让签到脚本把额度刷爆

这是青龙用户最常遇到的实际问题：几十个签到脚本各推一条，免费额度（每天 5 条）一个上午就没了。

几个有效的做法：

- **只给关键脚本开通知**。签到成功这种事，失败时知道就够了，成功不必每天播报。
- **合并推送**。很多脚本库支持把一轮任务的结果汇总成一条再发，优先用这种模式。
- **按失败推送**。在脚本里判断退出码，只有非 0 才调用通知：

```bash
# 在青龙的任务命令里包一层，只有失败才推
task xxx.js || curl -s -X POST "https://sctapi.ftqq.com/${PUSH_KEY}.send" \
  --data-urlencode "title=任务失败：xxx.js" \
  --data-urlencode "desp=退出码 $?，请查看青龙日志。"
```

- **额度确实不够再升级**。订阅会员每天最多 1000 次 API 调用（[价格详情](https://sct.ftqq.com/subscribe)）。

## 排查清单

按顺序过一遍，基本都能定位：

1. **测试通知收到了，任务通知没收到** → 你只配了方式一。去 `config.sh` 配 `PUSH_KEY`，并确认脚本引用了 `notify.py` / `notify.js`。
2. **`PUSH_KEY` 配了还是没消息** → 进容器 `echo $PUSH_KEY` 确认变量生效；确认 `export` 那行没被注释；确认改的是青龙实际读取的那个 `config.sh`。
3. **接口返回 429** → 24 小时内 API 调用超限，停一天自动恢复。通常是某个脚本在循环重试，先去日志里找它。
4. **提示超出今日免费限制** → 当天 5 条额度用完了。见上面的降噪办法。
5. **消息内容格式乱、换行没了** → `desp` 支持 Markdown；部分脚本库输出纯文本换行，在 Server酱³ 中需要两次换行才分段，详见 [FAQ](https://sct.ftqq.com/docs/getting-started/faq/)。
6. **标题报"包含特殊字符"** → `title` 里不能有换行，长内容放 `desp`。
7. **以上都没问题但仍然收不到** → 微信端确认没有取消关注服务号，或换一个[推送通道](https://sct.ftqq.com/docs/getting-started/channels/)试试。

完整排查顺序见 [FAQ 的排查清单](https://sct.ftqq.com/docs/getting-started/faq/)：看返回值 → 查额度 → 查频率 → 查通道状态。

## 相关集成

- [Python 脚本推送微信通知](https://sct.ftqq.com/docs/integrations/python/)
- [Linux crontab 定时任务推送](https://sct.ftqq.com/docs/integrations/crontab/)
- [Uptime Kuma 宕机微信告警](https://sct.ftqq.com/docs/integrations/uptime-kuma/)
- [哪吒监控接入](https://sct.ftqq.com/docs/integrations/nezha/)
- [通道对比：也可以推到企业微信/钉钉群](https://sct.ftqq.com/docs/getting-started/channels/)

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

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

```text
请帮我把 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 条结果摘要即可，批量任务合并成一条，不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。
```
