关于 novu-dashboard-workflows
为在 Novu Dashboard 中编写或编辑工作流步骤内容提供规则,适用于手动操作或通过 Novu MCP 操作的场景。涵盖多种步骤类型,并强调变量、编辑器结构和条件的正确处理。
主要功能
- 01覆盖邮件、通知、HTTP 等步骤
- 02使用 Liquid 变量进行个性化
- 03遵循 HTTP 响应字段架构
- 04保留编辑器类型与步骤结构
- 05按意图合并或替换条件
适用场景
- 01编辑 Dashboard 工作流的邮件正文
- 02调整通知的延迟或摘要窗口
- 03添加 HTTP 请求头或正文
- 04修改步骤发送条件
MCP 相关
该技能指导通过 Novu MCP 创建或更新工作流步骤内容,例如使用 create_workflow 和 update_workflow_step。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ novuhq/ skills --skill novu-dashboard-workflows安装后在 Claude Code 中输入/novu-dashboard-workflows确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/chat-step.mddelay-step.mddigest-step.mdemail-step.mdhttp-request-step.mdin-app-step.mdpush-step.mdsms-step.mdstep-conditions.mdthrottle-step.md详细介绍
仪表板工作流
在 Novu 仪表板中创建工作流时,编写步骤内容(主题、正文、editorType、标头、正文、条件)的规则——无论是手动编辑,还是通过 Novu MCP 编辑。
使用
@novu/framework通过代码编写?跳过此技能——Framework SDK 会通过类型和辅助工具编码这些约束。仍需决定工作流的设计(渠道、严重性、关键性、摘要、模板)?请从
design-workflow/开始,然后回到这里填写步骤内容。
何时使用此技能
每当你编写或编辑仪表板 / MCP 步骤的控件时,都请使用此技能:
- “为此步骤设置电子邮件主题和正文”
- “更新应用内通知文案”
- “为此 HTTP Request 步骤添加标头”
- “将摘要时间窗口更改为 1 小时”
- “当订阅者处于离线状态时跳过此步骤”(步骤条件)
- 任何会写入步骤内容的 Novu MCP 工具调用(
create_workflow、update_workflow_step等)
步骤内容指南
这些规则适用于所有步骤类型。
- 在控件值中使用 Liquid 变量进行个性化。变量必须用双花括号
{{和}}括起来。示例:{{ subscriber.firstName }}、{{ payload.* }}。 - **例外:**在 Block Editor(
editorType: "block")节点属性中,切勿使用花括号——请使用不带花括号的变量名,例如payload.actionUrl,而不是{{ payload.actionUrl }}。完整的 Block Editor 规则请参见references/email-step.md。 - 对于 HTTP Request 步骤之后的步骤,使用
{{ steps.<http-step-id>.<property> }}引用响应数据。只有在该 HTTP 步骤的responseBodySchema中定义的属性可用——切勿臆造任意响应字段。示例:如果 HTTP 步骤fetch-user在responseBodySchema中定义了name和email,则使用{{ steps.fetch-user.name }}和{{ steps.fetch-user.email }}。 - 切勿硬编码 URL、名称或产品名称——请改用变量。
- 内容应与工作流中的其他步骤保持一致。
- 根据用户意图修改内容。
- 保留所有未明确要求更改的内容。
- 保持相同的
editorType(电子邮件使用block或html)和结构。
步骤类型
每种步骤类型都有各自的内容规则。编写控件前,请先打开对应的参考文档。
| 步骤类型 | 参考文档 | 适用场景 |
|---|---|---|
references/email-step.md | 详细内容、正式通信、回执 | |
| In-App | references/in-app-step.md | 实时更新、活动动态、高参与度 |
| SMS | references/sms-step.md | 紧急提醒、验证码、时效性消息 |
| Push | references/push-step.md | 移动端互动、重新互动、时效性更新 |
| Chat | references/chat-step.md | Slack / Discord / Teams 团队及开发者提醒 |
| Delay | references/delay-step.md | 在渠道步骤之前暂停工作流执行 |
| Digest | references/digest-step.md | 将多条通知合并为一条 |
| Throttle | references/throttle-step.md | 限制通知频率,避免造成疲劳 |
| HTTP Request | references/http-request-step.md | 调用外部 API / webhook;为后续步骤获取数据 |
| 步骤条件 | references/step-conditions.md | 用 JSON-Logic 实现“仅在……时发送”、合并 / 替换 / 移除 |
常见陷阱
- Block Editor 属性中的花括号 — Maily TipTap 节点属性(
url、text、src、id、each、href、externalLink)必须使用不带花括号的变量名。"{{ payload.actionUrl }}"是错误的;"payload.actionUrl"才正确。请参阅references/email-step.md。 - 引用未声明的 HTTP 响应字段 —
{{ steps.<http-step-id>.<property> }}仅适用于该步骤的responseBodySchema中列出的属性。请先将属性添加到架构中。 - 硬编码数组项而不是循环遍历 — 当负载包含数组(
payload.items、payload.providers)时,请使用 Block Editorrepeat节点或 HTML{% for %}循环进行迭代。不要将数组项分别列为节点 / 元素。 - HTTP 标头或正文中存在空键值条目 — 不需要时请使用空数组
[]。不要使用[{ "key": "", "value": "" }]。 - 硬编码 URL / 产品名称 — 始终从
payload.*或subscriber.*获取,以确保工作流可移植。 - 编辑 Email 时更改
editorType— 除非用户明确要求切换,否则保持block为block、html为html。 - 用户说“添加”时替换步骤条件 — “添加” / “也” / “并且”应使用
{ "and": [...] }合并;“更改为” / “设为”表示替换;“移除” / “清除”则返回null。请参阅references/step-conditions.md。
另请参阅
design-workflow/— 在编写步骤内容之前选择渠道、严重程度、critical、摘要默认设置和工作流模板framework-integration/— 使用@novu/framework在代码中编写相同的工作流trigger-notification/— 编写工作流后触发一次
评论
支持 Markdown