mcpField
C
CRM Lifecycle Ops

CRM Lifecycle Ops

本地服务
github.com商业与营销04 天前更新

关于 CRM Lifecycle Ops

CRM Lifecycle Ops 是面向使用 Braze、Klaviyo 或 Iterable 的生命周期与营销运营团队的只读 Claude Code 插件和命令行工具。它用代码检查多渠道营销消息,实时账户规划和影响分析功能仍处于早期 Alpha 阶段。

主要功能

  1. 01检查邮件、短信、推送和应用内内容
  2. 02按不同客户数据渲染个性化内容
  3. 03应用内置规则和团队规则
  4. 04在 CI 中运行邮件检查
  5. 05预览账户变更及其影响

适用场景

  1. 01在邮件发布前发现失效链接
  2. 02检查短信长度和退订措辞
  3. 03修改账户前审查营销活动变更
  4. 04在 CI 流水线中阻止未通过的邮件检查

MCP 相关

引擎以本地 MCP 服务形式供 Cursor、Claude Desktop 等 MCP 客户端使用。它可使用演示数据或只读的平台访问权限,不会发送消息或修改账户。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"har5h98-crm-lifecycle-ops": {
"command": "npx",
"args": [
"-y",
"crm-lifecycle-ops"
],
"env": {
"CLO_BRAZE_API_KEY": "<CLO_BRAZE_API_KEY>",
"CLO_BRAZE_REST_ENDPOINT": "<CLO_BRAZE_REST_ENDPOINT>",
"CLO_BRAZE_WORKSPACE": "<CLO_BRAZE_WORKSPACE>",
"CLO_KLAVIYO_API_KEY": "<CLO_KLAVIYO_API_KEY>",
"CLO_KLAVIYO_ACCOUNT": "<CLO_KLAVIYO_ACCOUNT>",
"CLO_ITERABLE_API_KEY": "<CLO_ITERABLE_API_KEY>",
"CLO_ITERABLE_REGION": "<CLO_ITERABLE_REGION>",
"CLO_ITERABLE_PROJECT": "<CLO_ITERABLE_PROJECT>",
"CLO_RULES": "<CLO_RULES>",
"CLO_TEAM_DIR": "<CLO_TEAM_DIR>"
}
}
}
}
启动命令npx -y crm-lifecycle-ops
需要配置的环境变量
CLO_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.com
CLO_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcrm-lifecycle-ops0.5.6

工具

20

收录的工具列表 · 更新于 3 天前

参数类型必填说明
filestring否本地 .html 文件的绝对路径;未提供 html 时使用。
fromstring否发件人电子邮件地址。
htmlstring否电子邮件 HTML,包括模板标签。
namestring否
subjectstring否
personasarray否合成测试用户画像。留空则使用团队的用户画像或自动生成的用户画像。
platformenum是电子邮件使用的模板语言对应的平台。braze | klaviyo | iterable
preheaderstring否
transactionalboolean否收据、密码重置和其他事务性邮件:跳过退订要求。
check_links_liveboolean否还要通过网络检查每个链接(仅发送 HEAD 请求;不会请求退订和点击跟踪链接)。

详细介绍

crm-lifecycle-ops

Braze、Klaviyo 和 Iterable 的发送前 QA。 每封邮件、每条短信、每条推送通知和每条应用内消息都会经过代码检查, 并模拟每一种客户,确保消息发出前没有问题。然后,在你的实时账户中查看:一项更改会造成哪些问题,以及如何构建。

CI Release Status: early alpha License: MIT

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 --demo:一封示例邮件已就绪,一封链接到暂存网站、不得发送,一封向没有姓名的人问候时显示为“Hi ,”,还有一封存在无障碍问题,并在收件箱预览中显示“在浏览器中查看”

然后,将它指向你自己的模板: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

然后在内置演示账号上试用。无需访问平台:

  1. /refresh demo 加载一个虚构品牌的 Braze 工作区。
  2. /check-campaign Price Drop Alert 检查整个营销活动。
  3. /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 标记了一个预发布环境链接和空白的名字字段,/what-breaks 列出了使用 loyalty_tier 的线上项目,而 /edit-plan 则警告某个页脚区块被另外三个线上项目共用,随后提供 Braze 操作步骤

演示账号的真实输出:

/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报告错误结果;问题会转化为测试用例并得到修复✅

详情

按渠道查看“检查”涵盖的内容
渠道检查内容
EmailOutlook 区块损坏、表格未闭合、缺少替代文本、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 和 隐私政策。

了解更多

  • 操作指南:一页式流程,介绍设置、构建的每个步骤以及每周审查。
  • 工作原理:用通俗语言介绍架构、数据流和设计决策。

它如何持续改进

  1. 你提交报告: /report-problem 会将错误结果整理成脱敏的 GitHub issue(发布前会征求你的同意)。
  2. 报告变成测试: 每条经确认的报告都会加入 tests/corpus/,此后必须通过测试。
  3. 自动起草修复: Claude 会将测试和修复作为 pull request 提交,以供人工审核。
  4. 跟踪供应商变更: 每周任务会检查 Braze、Klaviyo 和 Iterable API 是否有变更;每月任务会创建清单,重新对照供应商文档验证构建内容和编辑指南。每份方案都会注明其步骤上次验证的时间,并在超过 90 天时发出警告。

错误结果是最有价值的贡献。请参阅 CONTRIBUTING.md。

许可证

MIT。与 Braze、Klaviyo 或 Iterable 均无关联,也未获其认可;产品名称均为其所有者的商标。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。