关于 CRM Lifecycle Ops
CRM Lifecycle Ops 是面向使用 Braze、Klaviyo 或 Iterable 的生命周期与营销运营团队的只读 Claude Code 插件和命令行工具。它用代码检查多渠道营销消息,实时账户规划和影响分析功能仍处于早期 Alpha 阶段。
主要功能
- 01检查邮件、短信、推送和应用内内容
- 02按不同客户数据渲染个性化内容
- 03应用内置规则和团队规则
- 04在 CI 中运行邮件检查
- 05预览账户变更及其影响
适用场景
- 01在邮件发布前发现失效链接
- 02检查短信长度和退订措辞
- 03修改账户前审查营销活动变更
- 04在 CI 流水线中阻止未通过的邮件检查
MCP 相关
引擎以本地 MCP 服务形式供 Cursor、Claude Desktop 等 MCP 客户端使用。它可使用演示数据或只读的平台访问权限,不会发送消息或修改账户。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y crm-lifecycle-opsCLO_BRAZE_API_KEY密钥Braze REST API key (read-only permissions). Leave unset to skip Braze.CLO_BRAZE_REST_ENDPOINTBraze REST endpoint for your instance, e.g. https://rest.iad-01.braze.comCLO_BRAZE_WORKSPACEA label for the Braze workspace this key belongs to.CLO_KLAVIYO_API_KEY密钥Klaviyo private API key (read-only scopes). Leave unset to skip Klaviyo.CLO_KLAVIYO_ACCOUNTA label for the Klaviyo account this key belongs to.CLO_ITERABLE_API_KEY密钥Iterable server-side API key (read-only). Leave unset to skip Iterable.CLO_ITERABLE_REGIONIterable data center: us or eu.CLO_ITERABLE_PROJECTA label for the Iterable project this key belongs to.CLO_RULESOptional path to a shared house-rules file so a whole team is checked the same way.CLO_TEAM_DIROptional shared folder for the team usage report (check counts only, no message content).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
20收录的工具列表 · 更新于 3 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | string | 否 | 本地 .html 文件的绝对路径;未提供 html 时使用。 |
| from | string | 否 | 发件人电子邮件地址。 |
| html | string | 否 | 电子邮件 HTML,包括模板标签。 |
| name | string | 否 | |
| subject | string | 否 | |
| personas | array | 否 | 合成测试用户画像。留空则使用团队的用户画像或自动生成的用户画像。 |
| platform | enum | 是 | 电子邮件使用的模板语言对应的平台。braze | klaviyo | iterable |
| preheader | string | 否 | |
| transactional | boolean | 否 | 收据、密码重置和其他事务性邮件:跳过退订要求。 |
| check_links_live | boolean | 否 | 还要通过网络检查每个链接(仅发送 HEAD 请求;不会请求退订和点击跟踪链接)。 |
详细介绍
crm-lifecycle-ops
Braze、Klaviyo 和 Iterable 的发送前 QA。 每封邮件、每条短信、每条推送通知和每条应用内消息都会经过代码检查, 并模拟每一种客户,确保消息发出前没有问题。然后,在你的实时账户中查看:一项更改会造成哪些问题,以及如何构建。
80 秒演示(打开声音):
https://github.com/user-attachments/assets/dc4e632c-f71e-43d5-8451-6e2a67b6471e
这是一个 Claude Code 插件(以及用于 CI 的 CLI),面向手动构建营销活动的生命周期、CRM 和营销运营团队。 目前,消息检查功能已完整可用;实时账户功能仍处于早期 alpha 阶段(请参阅下方的状态列)。 它是只读的:绝不会发送或编辑任何内容。
30 秒上手
无需账户,也无需 Claude Code,只需 Node.js 20+。此命令会检查随软件包附带的四封示例邮件:
npx crm-lifecycle-ops check --demo
然后,将它指向你自己的模板:npx crm-lifecycle-ops check path/to/emails。这适用于邮件。下方的插件
还提供其余功能:覆盖所有渠道、连接你的实时账户、查看更改会造成哪些问题,以及获取构建步骤。
功能
| 试用 | ||
|---|---|---|
| 更快地规划和构建 | 使用平台术语、按点击步骤提供构建指南,并采用你的命名和 UTM 参数 | /build-plan |
| 安全地进行更改 | 在修改细分受众、字段或共享内容块之前,查看这些更改会造成哪些问题 | /what-breaks |
| 放心发送 | 检查每个渠道上的每条消息,并模拟每一种客户 | /check-campaign |
| 证明影响 | 发布后的投递健康状况,以及捕获的问题和节省的时间 | /ops-report |
快速开始
需要 Claude Code 和 Node.js 20+。
/plugin marketplace add har5h98/crm-lifecycle-ops
/plugin install crm-lifecycle-ops@crm-lifecycle-ops
然后在内置演示账号上试用。无需访问平台:
/refresh demo加载一个虚构品牌的 Braze 工作区。/check-campaign Price Drop Alert检查整个营销活动。/what-breaks loyalty_tier查看更改会影响什么。
准备好使用自己的账号时:
/setup教它了解你团队的规则(大约需要五分钟,也可以粘贴一封你喜欢的邮件,让它从中学习)。/connect添加一个只读密钥。密钥存放在插件的设置和系统的安全存储中,绝不会出现在聊天中。
使用 Cursor、Claude Desktop 或其他 MCP 客户端?
引擎也发布在 npm 上,因此任何 MCP 客户端都可以运行它。斜杠命令是 Claude Code 技能,因此在其他环境中,你可以用普通语言提出请求(“检查这封邮件”“如果重命名 loyalty_tier,会有什么影响?”)。
{
"mcpServers": {
"crm-lifecycle-ops": {
"command": "npx",
"args": ["-y", "crm-lifecycle-ops"],
"env": { "CLO_BRAZE_API_KEY": "…", "CLO_BRAZE_REST_ENDPOINT": "https://rest.iad-01.braze.com" }
}
}
}
省略 env 即可使用演示账号。所有设置都列在 server.json 中。
在 CI 中检查邮件模板
相同的检查也可从终端运行,因此流水线可以在有人发送邮件前阻止有问题的邮件。遇到阻止性问题时会以状态码 1 退出(或者使用 --fail-on warn,遇到警告时也会退出)。除非你传入规则文件,否则它会使用内置规则,因此在每台机器上都会给出相同的判定;提交团队的规则文件(即 /setup 保存到 ~/.crm-lifecycle-ops/rules.json 的文件),并指定该文件:
npx crm-lifecycle-ops check emails/ --rules team-rules.json
# .github/workflows/email-qa.yml
on: pull_request
jobs:
email-qa:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx -y [email protected] check emails/ # pin a version so new checks don't change your build
--help 会列出可用选项(--platform、--subject、--transactional、--json)。系统会按文件检测模板语言;如果文件中没有足够信息来判断,输出会标注为“guessed”,此时请传入 --platform。
早期 alpha 版本。 所有功能都能在演示账号和模拟 API 响应上正常运行,但尚未在真实账号上进行实地测试。如果结果看起来不对,
/report-problem会将其转化为测试和修复。
示例

演示账号的真实输出:
/check-campaign Price Drop Alert 🔴 Don't send. 1 blocking problem
fail links.non-production-host "See items" points at staging.fernbrook.example
warn personalization.dangling-punct. Someone with no first name on file sees "Hi ,"
warn html.img-missing-alt 1 image has no alt text
warn a11y.no-lang No lang attribute, so screen readers guess the language
/check-sms Flash Sale Text 🟡 Fix before sending
warn sms.unicode "’" and "—" switch the text to Unicode: 70 characters per segment, not 160.
Swap ’ → ' and — → -
warn sms.too-many-segments Up to 3 billed segments; house limit is 2
warn sms.no-opt-out No "Reply STOP to opt out"
所有通过/失败判定都由代码完成,绝不由 AI 完成。 Claude 会在此基础上添加带有明确标注的参考审查(主题行、CTA、语气)。需要为发布工单留档?请让 /check-campaign 生成一份 QA 签署报告:这是一个 Markdown 文件,包含所有发现、无法验证的内容以及审核人签署信息,可直接粘贴到 Jira、Slack 或 Notion。
所有命令
✅ 当前已完全可用 · 🧪 可在演示账户和模拟 API 上使用,尚未在真实账户上进行实测
| 命令 | 功能 | 状态 | |
|---|---|---|---|
| 开始使用 | /start-here | 概览和最佳入门步骤 | ✅ |
/setup | 设置团队规则:语言、品牌、链接、页脚、发件人、测试客户和严格程度 | ✅ | |
/house-rules | 查看或更改这些规则;将某项发现标记为「对我们来说没问题」 | ✅ | |
/connect | 使用只读密钥连接 Braze、Klaviyo 或 Iterable | 🧪 | |
/refresh | 拉取最新的营销活动、用户旅程、细分群体、模板和内容块(或加载演示数据) | 🧪 | |
| 规划和构建 | /plan-journey | 设计用户旅程,并检查是否与当前已上线内容重叠 | 🧪 |
/build-plan | 使用你的平台自身术语提供分步构建说明 | 🧪 | |
/bulk-edit | 预览针对所有主题、正文和内容块的查找替换操作 | 🧪 | |
| 安全地更改 | /what-breaks | 更改或删除属性、细分群体、内容块、事件或链接时会影响哪些内容 | 🧪 |
/what-changed | 查看账户自上次以来的变化,优先显示已上线内容 | 🧪 | |
/edit-plan | 安全更改已上线内容的方法(副本、运行中的用户旅程、共享内容块、受众群体) | 🧪 | |
/show-journey | 将已上线的用户旅程绘制成图表,并标出结构问题 | 🧪 | |
| 放心发送 | /check-campaign | 检查整个营销活动或用户旅程:每条消息、设置和结构 | 🧪 |
/check-email | 检查单封邮件:HTML、链接、退订、UTM、个性化内容、团队规则 | ✅ | |
/check-push | 检查单条推送:确保锁屏显示的内容适配最长姓名、深层链接和空白内容 | ✅ | |
/check-sms | 检查单条短信:计费分段、Unicode 陷阱、退订措辞和发件人名称 | ✅ | |
/check-in-app | 检查单条应用内消息或内容卡片:长度、按钮和链接 | ✅ | |
| 验证效果 | /watch-launch | 根据阈值监测退信、退订、垃圾邮件和送达率 | 🧪 |
/ops-report | 查看已检查的消息、发现的问题、节省的时间;可查看个人或整个团队的数据 | ✅ | |
/report-problem | 报告错误结果;问题会转化为测试用例并得到修复 | ✅ |
详情
按渠道查看“检查”涵盖的内容
| 渠道 | 检查内容 |
|---|---|
Outlook 区块损坏、表格未闭合、缺少替代文本、Gmail 内容被截断;缺少预标题、预标题重复主题或显示“在浏览器中查看”;暂存或格式错误的链接、http://、UTM 标记不一致、页面损坏(实时检查);缺少退订选项(事务性邮件除外) | |
| 无障碍功能(Email) | 缺少 lang、“点击此处”链接、没有替代文本的纯图片链接、屏幕阅读器会将其作为数据读取的布局表格、文本小于 12px |
| Push | 标题和正文长度(按最长客户姓名计算)、会在 iOS 上隐藏标题的换行、深层链接、Android 要求的标题(Braze) |
| SMS | 按运营商计费方式计算的短信分段、会将文本切换为 Unicode 的确切字符、退订措辞、发送者名称、各平台的限制 |
| In-app | 正文长度、按钮及其链接、点击后的目标位置、HTML 结构 |
| 内容卡片 | 标题和消息长度、卡片链接和图片的目标位置 |
| Webhooks | 缺少 URL 或使用暂存 URL、将密钥写入 URL、姓名中包含引号时会出错的 JSON 正文 |
| 个性化(全部) | 为姓名信息完整、为空、值较长和带重音符号的客户(或你自己的客户)渲染每条消息;检查 Hi , 这样的空白内容、字面量 null、残留的 {{ }}、模板错误,以及会静默跳过发送的 Iterable 比较 |
| Campaigns 和 journeys | 受众和转化事件、命名约定、无后续操作的分支、不可到达的步骤、空消息步骤 |
支持 Braze Liquid、Klaviyo 模板语言和 Iterable Handlebars。无法在本地运行的平台标签(优惠码、目录查询、Connected Content)会标记为未验证,绝不会判定为通过或失败。完整清单及 ID:src/checks/catalog.ts。
遵循你的规则,而不只是我们的规则
不同团队对“错误”的定义各不相同,因此检查分为三个层级:
| 层级 | 示例 | 团队可以更改吗? |
|---|---|---|
| 锁定规则:对所有人都算错误 | 缺少退订选项、无法渲染的模板语法、损坏的链接 | 不可以 |
| 默认规则:普遍适用的合理规则 | 缺少替代文本、http:// 链接、Gmail 内容被截断、UTM 标记混用 | 重新评估或关闭 |
| 团队规范:你的约定 | 拼写、日期格式、品牌术语、禁用短语、批准的域名和发送者、UTM 命名、页脚、主题长度、姓名回退值、命名约定、测试客户 | 在 /setup 中设置 |
“这对我们来说没问题”会成为一条带有原因记录的例外(/house-rules),这与“工具有误”(/report-problem)不同。团队在插件设置中指定相同的共享规则文件,即可共用一本规则手册。
目前无法检查的内容
每项结果都会说明无法验证的内容,每项依赖项也会说明其信息来源(API 确认、从模板读取、从细分受众描述读取、屏幕上所见)。
- 本地渲染只是近似结果。 不会执行 Braze Connected Content 和目录查询,对 Klaviyo 模板语言的支持也是近似实现。这些内容会标记为未验证。
- Braze 的 API 不会说明某个 campaign 或 Canvas 的目标细分受众。
/what-breaks会将这些项目列为“无法排除”,并可在你同意后通过 Chrome 中的 Claude 从 Braze 控制面板读取。 - Iterable 的 API 不会返回 journey 步骤顺序,因此 Iterable journeys 会显示邮件,但不会显示路径。
- Braze 内容卡片通过 API 返回的字段很少;粘贴文案后,卡片检查结果最完整。
- 它绝不会在你的账户中创建或编辑内容。
/build-plan和/edit-plan会告诉你如何操作;/bulk-edit仅提供预览。
它从不发送消息,从不修改你的账户,从不读取客户档案(测试使用虚构客户),也不会向作者或任何第三方发送任何内容。
| 内容 | 时间 | 去向 |
|---|---|---|
本地 MCP 服务(node dist/mcp-server.js,可读源代码位于 src/) | Claude Code 加载插件时 | 仅在你的设备上 |
| 只读 API 调用 | /refresh、/watch-launch | 仅发送到你连接的平台:你的 Braze REST 端点、a.klaviyo.com,或 api.iterable.com / api.eu.iterable.com |
| 链接检查(不会请求取消订阅链接和跟踪链接) | 仅当你要求实时检查链接时 | 正在检查的邮件中的链接 |
| 本地文件:快照、规则、QA 审核报告、记录检查 ID 和次数的使用日志 | 正常使用时 | ~/.crm-lifecycle-ops/ |
| 使用日志副本(仅记录次数,不含消息内容) | 仅当你设置了团队报告文件夹时 | 你选择的文件夹 |
| GitHub issue | 仅通过 /report-problem,且须经你批准确切文本后 | github.com/har5h98/crm-lifecycle-ops |
API 密钥仅从插件的设置(安全存储)中读取。请参阅 SECURITY.md 和 隐私政策。
了解更多
它如何持续改进
- 你提交报告:
/report-problem会将错误结果整理成脱敏的 GitHub issue(发布前会征求你的同意)。 - 报告变成测试: 每条经确认的报告都会加入
tests/corpus/,此后必须通过测试。 - 自动起草修复: Claude 会将测试和修复作为 pull request 提交,以供人工审核。
- 跟踪供应商变更: 每周任务会检查 Braze、Klaviyo 和 Iterable API 是否有变更;每月任务会创建清单,重新对照供应商文档验证构建内容和编辑指南。每份方案都会注明其步骤上次验证的时间,并在超过 90 天时发出警告。
错误结果是最有价值的贡献。请参阅 CONTRIBUTING.md。
许可证
MIT。与 Braze、Klaviyo 或 Iterable 均无关联,也未获其认可;产品名称均为其所有者的商标。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。