Brevo Automation 通过 Composio 的 Brevo 工具包和 Rube MCP,实现 Brevo(原 Sendinblue)邮件营销操作的自动化。
前提条件
- 需要已连接 Rube MCP(RUBE_SEARCH_TOOLS 可用)
- 通过 RUBE_MANAGE_CONNECTIONS 并指定工具包 brevo,建立有效的 Brevo 连接
- 始终先调用 RUBE_SEARCH_TOOLS 以获取最新的工具 schema
设置步骤
- 获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务器。无需 API 密钥,添加端点即可工作。
- 确认 RUBE_SEARCH_TOOLS 有响应,以验证 Rube MCP 可用。
- 调用 RUBE_MANAGE_CONNECTIONS 并指定工具包 brevo。
- 如果连接不是 ACTIVE 状态,按返回的授权链接完成 Brevo 认证。
- 确认连接状态显示为 ACTIVE 后再运行任何工作流。
核心工作流
1. 管理邮件活动
适用场景:用户想要列出、查看或更新邮件活动。
工具序列:
- BREVO_LIST_EMAIL_CAMPAIGNS:列出所有活动并带过滤条件 [必需]
- BREVO_UPDATE_EMAIL_CAMPAIGN:更新活动内容或设置 [可选]
列表关键参数:
- type:活动类型('classic' 或 'trigger')
- status:活动状态('suspended'、'archive'、'sent'、'queued'、'draft'、'inProcess'、'inReview')
- startDate/endDate:日期范围过滤(YYYY-MM-DDTHH:mm:ss.SSSZ 格式)
- statistics:要包含的统计类型('globalStats'、'linksStats'、'statsByDomain')
- limit:每页结果数(最大 100,默认 50)
- offset:分页偏移
- sort:排序方式('asc' 或 'desc')
- excludeHtmlContent:设为 true 可减小响应体积
更新关键参数:
- campaign_id:数字活动 ID(必需)
- name:活动名称
- subject:邮件主题行
- htmlContent:HTML 邮件正文(与 htmlUrl 互斥)
- htmlUrl:HTML 内容 URL
- sender:包含 name、email 或 id 的发件人对象
- recipients:包含 listIds 和 exclusionListIds 的对象
- scheduledAt:计划发送时间(YYYY-MM-DDTHH:mm:ss.SSSZ)
注意事项:
- startDate 和 endDate 必须同时提供,或都不提供
- 日期过滤仅在未传 status 或 status 为 'sent' 时生效
- htmlContent 和 htmlUrl 互斥
- 活动发件人邮箱必须是 Brevo 中已验证的发件人
- A/B 测试字段(subjectA、subjectB、splitRule、winnerCriteria)需要 abTesting: true
- scheduledAt 使用带时区的完整 ISO 8601 格式
2. 创建和管理邮件模板
适用场景:用户想要创建、编辑、列出或删除邮件模板。
工具序列:
- BREVO_GET_ALL_EMAIL_TEMPLATES:列出所有模板 [必需]
- BREVO_CREATE_OR_UPDATE_EMAIL_TEMPLATE:创建新模板或更新现有模板 [必需]
- BREVO_DELETE_EMAIL_TEMPLATE:删除非活动模板 [可选]
列表关键参数:
- templateStatus:过滤活动(true)或非活动(false)模板
- limit:每页结果数(最大 1000,默认 50)
- offset:分页偏移
- sort:排序方式('asc' 或 'desc')
创建/更新关键参数:
- templateId:包含则更新;省略则创建新模板
- templateName:模板显示名称(创建时必需)
- subject:邮件主题行(创建时必需)
- htmlContent:HTML 模板正文(最少 10 个字符;与此或 htmlUrl 二选一)
- sender:包含 name 和 email 或 id 的发件人对象(创建时必需)
- replyTo:回复邮箱地址
- isActive:激活或停用模板
- tag:模板分类标签
注意事项:
- 提供 templateId 时工具执行更新;省略时执行创建
- 创建时,templateName、subject、sender 为必需项
- htmlContent 至少需要 10 个字符
- 模板个性化使用 {{contact.ATTRIBUTE}} 语法
- 只有非活动模板才能删除
- htmlContent 和 htmlUrl 互斥
3. 管理发件人
适用场景:用户想要查看已授权的发件人身份。
工具序列:
- BREVO_GET_ALL_SENDERS:列出所有已验证发件人 [必需]
关键参数:(无必需项)
注意事项:
- 发件人必须先验证,才能用于活动或模板
- 发件人验证通过 Brevo 网页界面完成,而非通过 API
- 发件人 ID 可用于活动和模板的 sender.id 字段
4. 配置 A/B 测试活动
适用场景:用户想要对活动设置或修改 A/B 测试配置。
工具序列:
- BREVO_LIST_EMAIL_CAMPAIGNS:找到目标活动 [前置条件]
- BREVO_UPDATE_EMAIL_CAMPAIGN:配置 A/B 测试设置 [必需]
关键参数:
- campaign_id:要配置的活动
- abTesting:设为 true 以启用 A/B 测试
- subjectA:变体 A 的主题行
- subjectB:变体 B 的主题行
- splitRule:测试的百分比拆分(1-99)
- winnerCriteria:'open' 或 'click',用于确定获胜者
- winnerDelay:选择获胜者前等待的小时数(1-168)
注意事项:
- 必须先启用 A/B 测试(abTesting: true)才能设置变体字段
- splitRule 是接收变体 A 的联系人百分比
- winnerDelay 定义在向剩余联系人发送获胜版本前测试多久
- 仅适用于 'classic' 活动类型
常见模式
活动生命周期:
- 创建活动(status: draft)
- 设置收件人(listIds)
- 配置内容(htmlContent 或 htmlUrl)
- 可选地计划发送(scheduledAt)
- 通过 Brevo UI 发送或计划(API 更新可设置 scheduledAt)
分页:
- 使用 limit(页大小)和 offset(起始索引)
- 默认 limit 为 50;最大值因端点而异(活动为 100,模板为 1000)
- 每页将 offset 增加 limit
- 检查响应中的 count 以确定总数
模板个性化:
- 名字:{{contact.FIRSTNAME}}
- 姓氏:{{contact.LASTNAME}}
- 自定义属性:{{contact.CUSTOM_ATTRIBUTE}}
- 镜像链接:{{mirror}}
- 退订链接:{{unsubscribe}}
已知注意事项
日期格式:
- 所有日期使用带毫秒的 ISO 8601:YYYY-MM-DDTHH:mm:ss.SSSZ
- 在日期时间格式中传入时区以获得准确结果
- startDate 和 endDate 必须一起使用
发件人验证:
- 所有发件人邮箱必须先在 Brevo 中验证后才能使用
- 未验证的发件人会导致活动创建/更新失败
- 使用 GET_ALL_SENDERS 检查可用的已验证发件人
速率限制:
- Brevo API 按账户套餐设有速率限制
- 遇到 429 响应时实施退避
- 模板操作的限额低于读取操作
响应解析:
- 响应数据可能嵌套在 data 或 data.data 下
- 使用回退模式防御性解析
- 活动和模板 ID 为数字整数
快速参考
任务 | 工具标识 | 关键参数 列出活动 | BREVO_LIST_EMAIL_CAMPAIGNS | type, status, limit, offset 更新活动 | BREVO_UPDATE_EMAIL_CAMPAIGN | campaign_id, subject, htmlContent 列出模板 | BREVO_GET_ALL_EMAIL_TEMPLATES | templateStatus, limit, offset 创建模板 | BREVO_CREATE_OR_UPDATE_EMAIL_TEMPLATE | templateName, subject, htmlContent, sender 更新模板 | BREVO_CREATE_OR_UPDATE_EMAIL_TEMPLATE | templateId, htmlContent 删除模板 | BREVO_DELETE_EMAIL_TEMPLATE | templateId 列出发件人 | BREVO_GET_ALL_SENDERS | (无)