360 Secure SkillHub
360 安全技能中心

notify-hub

通过 mail-cli 把 GitHub、Stripe、Linear 等平台通知统一收进一个子邮箱,按发件域与主题关键词分层:紧急通知立即转发到主账号,其余记入当日日志并生成每日汇总邮件;支持预演、补发与 cron 定时轮询,收件人自动取自 mail-cli 主账号。

xiyanjun
xiyanjun
热度 42.86
最近更新 2026-08-25 01:56:50
分类:协作依赖:代码执行 / 第三方 API / 读写文件应用场景:工作流 / 自动化脚本 / 邮件起草 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add notify-hub
Metadata
name
notify-hub
description
多平台通知聚合分层。把 GitHub、Stripe、Linear 等 SaaS 平台的通知邮件统一收到一个子邮箱,按紧急度分层:收款/CI 失败立即转发到 claw 注册邮箱,其他通知每天一封汇总。Use when: (1) setting up a unified notification inbox for multiple SaaS platforms, (2) running an on-demand notification check and route, (3) manually triggering a daily digest. Requires: mail-cli CLI with a 'notify' profile configured.
metadata
{"version":"1.0.0"}

notify-hub — 多平台通知聚合分层

把各平台通知邮件统一收到一个 claw 子邮箱,自动按紧急度分两层处理:紧急通知立即转发,其余每日一封汇总。收件人自动从 mail-cli 主账号获取,无需手动配置。

依赖

  • mail-cli CLI(npm install -g @clawemail/mail-cli),已配置 API Key
  • 参考 mail-cli skill 了解安装和配置方法

路径约定

本文档中 $SKILL_DIR 指本 Skill 所在目录(即 SKILL.md 所在目录)。

工作流程

1. 创建 notify 子邮箱

检查是否已存在 notify 子邮箱:

mail-cli clawemail list --json

如果已存在包含 .notify@ 的邮箱,跳到步骤 2。否则创建:

mail-cli clawemail create --prefix notify --display-name "通知聚合器"

创建成功后,命令输出中会包含一条 curl | bash 安装脚本,必须立即执行以配置 notify profile 的认证凭据。将该命令展示给用户并引导其执行。

2. 验证 notify profile

mail-cli --profile notify auth test

输出无报错即表示 profile 已就绪。如果失败,提示用户重新执行步骤 1 中的安装脚本。

3. 配置平台通知接收

将 GitHub、Stripe、Linear 等关注平台的通知邮件引流到 notify 子邮箱。有两种方式(任选其一):

方式 A:直接改收件地址(推荐)

到各平台的通知设置页面,将通知接收邮箱改为步骤 1 中创建的子邮箱地址(格式:你的用户名.notify@claw.163.com)。常见平台设置入口:

平台 设置路径
GitHub Settings → Emails → Notification emails
Stripe Dashboard → Settings → Team notifications
Linear Settings → Notifications → Email

方式 B:配置转发规则

如果平台不支持自定义收件地址,在原收件邮箱中设置转发规则,将来自这些平台发件域的邮件自动转发到 你的用户名.notify@claw.163.com。

必须操作:开放通信权限

无论使用哪种方式,都需要到 clawEmail 控制台配置通信白名单,允许 你的用户名.notify@claw.163.com 与各平台的发信邮箱互相通信。未配置白名单会导致外部平台邮件被拒收。

4. 执行轮询路由

拉取 notify 邮箱未读邮件,按规则分流(收件人自动从 mail-cli 主账号读取):

node "$SKILL_DIR/scripts/router.js"

可选参数:

# 追加自定义紧急关键词(覆盖配置文件中的 urgentKeywords)
node "$SKILL_DIR/scripts/router.js" --urgent-keywords "deploy,outage"

# 只监控指定平台(覆盖配置文件中的 platforms)
node "$SKILL_DIR/scripts/router.js" --platforms "stripe,github"

# 预演(不发邮件,不标已读)
node "$SKILL_DIR/scripts/router.js" --dry-run

分层规则(按优先级,第一个匹配即生效):

来源 发件人域名 主题关键词 处理方式 前缀
Stripe stripe.com / emails.stripe.com payment|charge|refund|payout 立即转发到主账号 💰 Stripe
GitHub github.com / noreply.github.com / notifications.github.com failed|broken|error 立即转发到主账号 🔴 GitHub CI
任意 — security|urgent|critical + 自定义关键词 立即转发到主账号 🚨
其他 — — 追加到每日汇总日志 —

5. 发送每日汇总

读取当日日志,生成汇总邮件发到主账号(自动获取):

node "$SKILL_DIR/scripts/summarize.js"

可选参数:

# 补发历史汇总
node "$SKILL_DIR/scripts/summarize.js" --date 2026-03-30

# 预演(打印内容但不发送)
node "$SKILL_DIR/scripts/summarize.js" --dry-run

6. 注册定时任务

注册两个 cron 任务实现全自动运行:

# 轮询路由(每 10 分钟)
schedule: { kind: "cron", expr: "*/10 * * * *", tz: "Asia/Shanghai" }
payload: { kind: "agentTurn", message: "执行 notify-hub 轮询路由" }
sessionTarget: "isolated"
delivery: { mode: "none" }

# 每日汇总(每天 09:00)
schedule: { kind: "cron", expr: "0 9 * * *", tz: "Asia/Shanghai" }
payload: { kind: "agentTurn", message: "执行 notify-hub 每日汇总" }
sessionTarget: "isolated"
delivery: { mode: "none" }

用户可通过配置文件自定义轮询频率(pollInterval)和汇总时间(summaryTime)。

配置参数

config.json(可选,持久化配置)

位于 ~/.config/notify-hub/config.json(用户级,所有 workspace 共享),通过 node scripts/config.js set <key> <value> 管理。收件人邮箱无需配置,自动从 mail-cli 主账号获取。

字段 必填 说明
urgentKeywords — 自定义紧急关键词,逗号分隔
platforms — 限制平台规则,如 stripe,github
pollInterval — 轮询 cron 表达式(默认 */10 * * * *)
summaryTime — 汇总 cron 表达式(默认 0 9 * * *)

router.js CLI 参数(可覆盖配置文件)

参数 默认值 说明
--profile notify mail-cli profile 名称
--urgent-keywords 读配置 覆盖 config.json 中的 urgentKeywords
--platforms 读配置 覆盖 config.json 中的 platforms
--dry-run false 预演模式,不发邮件不标已读

summarize.js CLI 参数

参数 默认值 说明
--date 今天 汇总日期(YYYY-MM-DD),用于补发
--dry-run false 预演模式,打印汇总内容但不发送

查看当前主账号

node "$SKILL_DIR/scripts/config.js" whoami

状态文件

文件 说明
~/.config/notify-hub/config.json 可选,自定义关键词/平台/cron 等配置
$TMPDIR/notify-hub-YYYY-MM-DD.jsonl 当天待汇总的通知日志,发送后自动删除

去重依赖邮件已读状态(处理完自动标已读),无需额外状态文件。

每日汇总样例

# notify-hub 每日通知汇总

**日期**: 2026-03-30
**通知总数**: 8 封

## github.com (5 封)

| 时间 | 主题 | 发件人 |
|------|------|--------|
| 2026-03-30 10:12 | [your-repo] PR #42 merged by alice | notifications@github.com |
| 2026-03-30 11:05 | [your-repo] Issue #88 opened | notifications@github.com |

## stripe.com (2 封)

| 时间 | 主题 | 发件人 |
|------|------|--------|
| 2026-03-30 09:30 | Your weekly Stripe summary | no-reply@stripe.com |

## linear.app (1 封)

| 时间 | 主题 | 发件人 |
|------|------|--------|
| 2026-03-30 14:20 | [PROJ-123] Status updated to Done | notifications@linear.app |