信咕咕文档
开发者后台
信咕咕 · XINGUGU

把系统通知,送到用户真正会看的地方。

信咕咕是一个面向个人的统一消息中心。用户用唯一的 10 位信咕咕号接收消息;应用通过 HTTP API、Go SDK 或 CLI 安全投递。

01创建应用获取 API Key
02指定收件人10 位信咕咕号
03投递消息API / SDK / CLI
01 · 快速开始

5 分钟发送第一条消息

你需要一个开发者账号、一个应用和收件人的信咕咕号。API Key 只在创建或轮换时完整展示一次,请立即保存到安全的密钥系统。

  1. 1
    创建应用

    登录开发者后台,在“应用”中创建接入。复制以 xs_live_ 开头的 API Key。

  2. 2
    取得收件人账号

    让用户提供其 10 位信咕咕号。它相当于消息地址,不是登录凭证。

  3. 3
    调用投递接口

    /ingest/v1/messages 发送 JSON。首次成功返回 HTTP 201。

cURL
curl https://notify.skyloong.cc/ingest/v1/messages \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: xs_live_xxx" \
  -H "X-Idempotency-Key: order-20260920-001" \
  -d '{
    "recipient_account": "1234567890",
    "title": "订单已发货",
    "body": "你的包裹已由顺丰揽收。",
    "level": "info",
    "metadata": {"order_id": "20260920-001"}
  }'
成功响应

首次投递返回 201 Created;相同应用在 24 小时内使用相同幂等键再次请求,会返回 200 OK 和原消息 ID。

02 · 基础

核心概念

#

信咕咕号

用户注册后获得的唯一 10 位数字账号。它用于寻址,不可用于登录,也不应当视作秘密。

应用

开发者创建的消息来源。应用名称会作为消息“来源”显示,并拥有独立的启停状态和发送统计。

API Key

应用的投递凭证。仅能发送消息,不能读取用户消息或访问用户资料。应只保存在服务端。

!

消息等级

infosuccesswarningerror,用于客户端视觉提示和筛选。

角色隔离

终端用户和开发者使用不同的账号体系与令牌。开发者不能读取收件箱,终端用户也不能操作开发者应用。

03 · 授权

应用如何获得投递授权

当前版本采用“用户提供信咕咕号 + 开发者应用凭证”的直接寻址方式,适合告警、内部系统和一对一通知。信咕咕号像邮箱地址一样可交付给可信应用,但 API Key 必须始终由应用服务端保管。

用户提供 10 位信咕咕号
你的服务保存账号与业务用户的绑定
信咕咕校验 API Key 并投递

推荐的绑定流程

  1. 在你的产品中提供“信咕咕号”输入框,并明确说明消息用途。
  2. 校验它是 10 位数字,但不要根据前端校验推断账号一定存在。
  3. 首次绑定时发送一条测试消息,让用户在客户端确认接收成功。
  4. 在你的数据库中保存业务用户 ID 与信咕咕号的映射;不要保存用户密码或登录令牌。
  5. 提供解绑入口,并在用户解绑后停止投递。
不要把 API Key 放进客户端

移动端、网页前端和桌面客户端都可能泄露静态密钥。消息应由你的服务端发送;公开客户端通过你自己的后端发起请求。

04 · 消息投递

发送第一条消息

所有投递请求使用 JSON。标题适合表达“发生了什么”,正文补充上下文;结构化信息放入 metadata,方便后续跳转或排查。

字段类型必填说明
recipient_accountstring10 位信咕咕号
titlestring消息名称;会参与模糊搜索
bodystring消息正文;会参与模糊搜索
levelstringinfo / success / warning / error
metadataobject业务扩展字段,如订单号、主机名或跳转地址

幂等投递

通过 X-Idempotency-Key 传入稳定的业务事件 ID,例如订单号与事件名的组合。相同应用下的相同键在 24 小时内只创建一条消息。

建议的幂等键
order:20260920-001:shipped
deployment:payment-api:2.4.1
alert:server-01:disk-c:20260920T1030
05 · Go SDK

Go SDK

官方 Go SDK 无第三方依赖,内置随机幂等键、临时错误重试、Retry-After 支持、上下文取消和结构化 API 错误。

go get github.com/LaRysLuo/xinggu/sdk/go
main.go
package main

import (
  "context"
  "log"

  xinshu "github.com/LaRysLuo/xinggu/sdk/go"
)

func main() {
  client, err := xinshu.NewClient("xs_live_xxx")
  if err != nil {
    log.Fatal(err)
  }

  result, err := client.Send(context.Background(), xinshu.Message{
    RecipientAccount: "1234567890",
    Title:            "部署完成",
    Body:             "production v2.4.1 已成功发布",
    Level:            xinshu.LevelSuccess,
    Metadata: map[string]any{
      "service": "payment-api",
      "version": "2.4.1",
    },
  })
  if err != nil {
    log.Fatal(err)
  }
  log.Printf("message_id=%s duplicate=%t", result.MessageID, result.Duplicate)
}

自定义地址与重试

Go
client, err := xinshu.NewClient(
  "xs_live_xxx",
  xinshu.WithBaseURL("http://127.0.0.1:8080"),
  xinshu.WithMaxRetries(3),
)

默认每次 Send 都会生成随机幂等键,并在内部重试时复用。要跨进程去重,请使用 xinshu.WithIdempotencyKey("your-business-key")

06 · CLI

命令行工具

CLI 适合部署脚本、定时任务和服务器巡检。预编译文件是独立可执行程序,不需要安装 Go 或其他运行时。密钥只从环境变量读取,避免进入 Shell 历史与进程参数。

直接安装(推荐)

curl -fL https://github.com/LaRysLuo/xinggu/releases/latest/download/xingugu-linux-amd64 -o xingugu
chmod +x xingugu
sudo install xingugu /usr/local/bin/xingugu
xingugu version
curl -fL https://github.com/LaRysLuo/xinggu/releases/latest/download/xingugu-linux-arm64 -o xingugu
chmod +x xingugu
sudo install xingugu /usr/local/bin/xingugu
xingugu version
$installDir = "$env:LOCALAPPDATA\Xingugu\bin"
New-Item -ItemType Directory -Force $installDir | Out-Null
Invoke-WebRequest `
  https://github.com/LaRysLuo/xinggu/releases/latest/download/xingugu-windows-amd64.exe `
  -OutFile "$installDir\xingugu.exe"
& "$installDir\xingugu.exe" version
curl -fL https://github.com/LaRysLuo/xinggu/releases/latest/download/xingugu-darwin-arm64 -o xingugu
chmod +x xingugu
sudo install xingugu /usr/local/bin/xingugu
xingugu version

Intel Mac 请下载 xingugu-darwin-amd64。Release 同时提供 sha256sums.txt查看全部下载

Go 开发者

go install github.com/LaRysLuo/xinggu/sdk/go/cmd/xingugu@latest

配置并发送

$env:XINGUGU_API_KEY = 'xs_live_xxx'
$env:XINGUGU_RECIPIENT = '1234567890'

xingugu send `
  --title '磁盘空间不足' `
  --body 'server-01 剩余空间低于 10%' `
  --level warning `
  --metadata '{"host":"server-01","disk":"C:"}'
export XINGUGU_API_KEY='xs_live_xxx'
export XINGUGU_RECIPIENT='1234567890'

xingugu send \
  --title '磁盘空间不足' \
  --body 'server-01 剩余空间低于 10%' \
  --level warning \
  --metadata '{"host":"server-01","disk":"/data"}'
命令用途常用选项
xingugu send发送消息--to --title --body --level --metadata --json
xingugu health检查 API 可用性--api-url --json
xingugu version显示版本

退出码:0 成功,1 网络或 API 错误,2 参数或配置错误。正文可传 --body - 从标准输入读取。

07 · 客户端

查看、搜索和筛选消息

客户端按页加载消息,并通过实时连接同步新消息、已读和删除事件。离线后重新连接时,以服务端消息列表恢复一致状态。

模糊搜索

关键词同时匹配消息名称和正文,无需输入完整文本。

来源筛选

按应用来源名称模糊筛选,例如输入“监控”可匹配“服务器监控”。

等级筛选

按信息、成功、警告或错误组合缩小范围。

跨设备同步

在一台设备标记已读或删除,其他在线设备会收到更新。

分页统计

列表会分别显示当前筛选结果总数、账号全部消息数和未读消息数,筛选不会改变全局统计。

08 · 会话

登录状态与多端会话

客户端会安全保存刷新令牌。只要你持续使用客户端,它会在访问令牌到期前自动刷新会话,因此无需每天重新登录。

支持多客户端同时登录

同一账号可在 Windows、macOS、iOS 和 Android 等多个客户端保持独立会话。单个设备退出不会让其他设备下线。

会话会滚动续期

有效使用会触发刷新令牌轮换,持续延长活跃会话。长时间不使用或令牌失效后,需要重新登录。

共享设备提示

在公共或临时设备上使用后请主动退出。退出会撤销当前设备的刷新会话,并清除本地登录信息。

09 · API 参考

HTTP API

基础地址为 https://notify.skyloong.cc。成功响应统一使用 { "data": ... },错误响应统一使用 { "error": { "code": "...", "message": "..." } }

消息投递

POST/ingest/v1/messages

使用 X-API-Key 投递一条消息

用户消息

GET/api/v1/messages

分页查询;支持 pagepage_sizeqsourcelevelunread_only

GET/api/v1/messages/stream

SSE 实时事件:messagemessage.readmessage.deleted

GET/api/v1/messages/:id

获取消息详情

POST/api/v1/messages/:id/read

标记消息为已读

DELETE/api/v1/messages/:id

删除自己的消息

开发者应用

GET/api/v1/developer/integrations

列出应用与发送统计

POST/api/v1/developer/integrations

创建应用并获得 API Key

PATCH/api/v1/developer/integrations/:id/status

启用或停用应用

POST/api/v1/developer/integrations/:id/rotate-key

轮换 API Key

YAML
下载 OpenAPI 规范

用于代码生成、接口调试和自动化校验

10 · 可靠性

错误、限流与重试

状态码含义建议
400请求字段无效检查账号、等级和 JSON 格式,不要自动重试
401 / 403凭证无效或应用已停用检查或轮换 API Key,不要自动重试
404收件人不存在让用户重新确认信咕咕号
429超过速率限制遵守 Retry-After,指数退避后重试
5xx服务临时不可用带同一幂等键退避重试

单个应用默认限制为每分钟 120 次请求。批量或高频通知应在业务侧排队,并控制并发;不要通过多个 API Key 绕过限流。

SDK 已处理临时故障

Go SDK 会自动重试网络错误、HTTP 429 和 5xx,并在所有尝试中复用同一个幂等键。

11 · 运维

运维接入

推荐用 CLI 连接监控脚本、CI/CD 和计划任务;长期运行的服务使用 Go SDK。密钥应注入环境变量或密钥管理服务,不要写入仓库。

部署完成后通知
export XINGUGU_API_KEY="$XINGUGU_DEPLOY_KEY"
export XINGUGU_RECIPIENT="1234567890"

if deploy-production; then
  xingugu send --title "部署成功" \
    --body "payment-api ${GIT_COMMIT} 已上线" \
    --level success --json
else
  xingugu send --title "部署失败" \
    --body "请检查 CI 日志" \
    --level error --json
  exit 1
fi

健康检查

Shell
xingugu health --json
# 或
curl -fsS https://notify.skyloong.cc/healthz

自托管环境可设置 XINGUGU_API_URL,或为单次命令传入 --api-url

12 · 帮助

常见问题

API Key 泄露了怎么办?+

立即在开发者后台轮换密钥,并更新服务端配置。旧密钥会失效。随后检查发送统计和日志,确认是否存在异常投递。

为什么出现重复消息?+

如果业务侧重试时没有复用相同的 X-Idempotency-Key,每次请求都会被视为新消息。使用稳定的业务事件 ID,或直接使用 Go SDK 的重试机制。

一个账号可以同时登录几台设备?+

支持多客户端同时登录,每台设备保持独立刷新会话。消息状态通过实时事件同步,离线设备重连后会恢复一致。

用户收不到消息时如何排查?+

先确认 API 响应、收件人信咕咕号和应用状态;再让用户清除筛选条件并刷新列表。HTTP 404 通常表示收件人账号不正确。

可以从浏览器直接调用投递 API 吗?+

不建议。浏览器中的 API Key 很容易被查看和滥用。请从你的后端调用信咕咕,再由前端调用你自己的受控接口。

已复制