mcpField
P
pre-send-qa

pre-send-qa

github.com/cognyai营销与增长11147 次安装2 周前更新
代码仓库

关于 pre-send-qa

Pre-Send QA 是一项在发送前检查邮件广告系列或粘贴内容的技能。它检查个性化字段、链接、垃圾邮件信号、合规要求、渲染和无障碍性;通过 MCP 连接时还会检查发送背景,但不会自动编辑广告系列。

主要功能

  1. 01检查合并标签及备用文本
  2. 02验证链接和 UTM 一致性
  3. 03检查退订与合规要素
  4. 04标记垃圾邮件信号和渲染风险
  5. 05MCP 模式下检查受众与发送时间

适用场景

  1. 01安排发送前审查 ESP 广告系列
  2. 02未连接 ESP 时检查粘贴的邮件 HTML
  3. 03发送前发现失效链接或缺失的退订信息

MCP 相关

连接 Cogny MCP 和 ESP 后,可读取广告系列或草稿,并检查收件人数、细分受众、发送时间及重复发送。粘贴模式无需 MCP,但不检查发送背景。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cognyai/claude-code-marketing-skills --skill pre-send-qa

安装后在 Claude Code 中输入/pre-send-qa确认已加载。

详细介绍

发送前质量检查

在邮件发送给订阅者之前,先发现那些令人尴尬的问题。对邮件进行全面的发送前检查:合并标签回退值、失效链接、垃圾邮件触发词、CAN-SPAM / GDPR 页脚、移动端渲染、大小限制、无障碍性。

需要: Campaign ID 模式需要 Cogny MCP。粘贴 HTML 模式无需 MCP(但不进行发送上下文检查)。

用法

/pre-send-qa <campaign-or-draft-id> — 检查 ESP 中的指定活动(或 Get a Newsletter 中的草稿) /pre-send-qa — 然后按提示粘贴邮件 HTML/MJML/文本

步骤

1. 加载邮件

模式 A — Campaign ID(MCP)。 检测已连接的 ESP(检查两个命名空间:mcp__cogny__<svc>__* 和 mcp__<svc>__*),并使用相应工具:

ESP获取工具ID 对应的对象
Klaviyoget_campaign活动对象
Mailchimptool_get_campaign活动对象
Ruletool_get_campaign活动对象
Get a Newsletter — 发送前tool_get_draft尚未发送的草稿
Get a Newsletter — 发送后取证tool_get_sent + tool_get_report已发送项目

对于每个 ESP,提取:主题、预览文本、发件人名称、发件人邮箱、回复地址、HTML 正文、文本正文、目标细分受众/列表、计划发送时间。还要获取关联列表/受众的规模,以便第 2.8 节获得收件人数。

Get a Newsletter 没有单一的“活动”对象。 如果用户提供了 ID,先尝试 tool_get_draft(发送前质量检查是常见用途);如果返回 404,则回退到 tool_get_sent。如果他们想检查已计划的发送任务,则使用 tool_list_scheduled 查找。

模式 B — 粘贴:

  • 请用户提供主题、预览文本、发件人名称/邮箱和邮件正文 HTML。接受多行粘贴。
  • 粘贴模式跳过第 2.8 节(发送上下文)——没有收件人数、细分受众或计划发送时间。
2. 执行检查清单

逐项检查所有类别。每项标记为 [PASS]、[WARN] 或 [FAIL],并指出具体的问题内容。

2.1 邮件头与路由
  • 主题不能为空 — 不得为空
  • 主题长度 ≤ 55 个字符(移动端截断阈值)
  • 预览文本不能为空 — 不得为空,也不能与主题重复
  • 预览文本长度为 85–100 个字符(太短会浪费空间;太长则会被截断)
  • 发件人名称体现品牌 — 不能是 “noreply” 或 “info”
  • 发件人邮箱使用发送子域名 — 对批量邮件而言,标记来自 @gmail.com/@outlook.com 的地址(严重影响送达率)
  • 回复地址有人监控 — 如果是 noreply@,则发出警告
2.2 合并标签 / 个性化

扫描正文、主题和预览文本,查找:

  • {{ ... }}、{% ... %}、*|...|*、[[...]]、%%...%%、{...} — 具体取决于 ESP 语法
  • 所有合并标签格式正确 — 括号成对,代码块已闭合
  • 所有合并标签都有回退值 — 例如,{{ first_name|default:"there" }}(Klaviyo)、*|IFNOT:FNAME|*there*|ELSE:*|FNAME|**|END:IF|*(Mailchimp)。任何没有回退值的标记都标记为 FAIL。
  • “Hi ,”或“Hello ,”反模式 — 搜索问候语后直接跟标点符号的情况。这是最常见、最令人尴尬的合并标签故障。
  • 动态内容块已闭合 — 开始的 {% if %} 必须有对应的 {% endif %};循环也一样
  • 主题中没有原始标记 — 例如,主题直接显示为 “Hi {{ first_name }}”
2.3 链接

从 HTML 中提取所有 <a href="...">。对每个链接:

  • URL 为绝对 URL — 不能有不带域名的 href="/path";除非是有意设置的锚点,否则不能有 href="#"。
  • URL 可访问 — 对每个唯一 URL 执行 HEAD 检查(最多 30 个请求,去重)。标记非 200 响应。
  • 不含 localhost / 127.0.0.1 / .local — 可能泄漏开发环境信息。
  • 不含预发布/开发域名 — 标记 *.staging.*、*.dev.*、stage.、preprod.
  • 所有外链都包含 UTM 参数 — 对缺少 utm_source / utm_medium / utm_campaign 的链接发出警告。
  • UTM 一致性 — 所有链接应使用相同的 utm_campaign;标记不一致的链接。
  • 链接数量 — 报告总数。超过 20 个时发出警告(过于杂乱);少于 1 个时发出警告(没有 CTA)。
  • CTA 目标一致性 — 多个标注为“立即购买”的按钮通常应指向相同的 URL。
2.4 图片
  • 所有 <img> 都有 alt 文本 — 文本非空且有描述性。
  • 不能是纯图片邮件 — 如果文本与图片的比例中,文本占比低于 40%,则标记。仅包含主视觉图片的邮件会触发垃圾邮件过滤器。
  • 图片 URL 是绝对 URL,且使用 HTTPS
  • 图片 URL 不从可疑主机热链 — 如果图片托管在 imgur、cloudinary demo 等平台,而非品牌 CDN,则标记。
2.5 合规性
  • 包含退订链接 — 使用正则表达式匹配 unsubscribe、preferences、opt out。
  • 退订链接可见 — 不能设置为 display:none 或 font-size:1px。
  • 页脚包含实体邮寄地址 — CAN-SPAM 要求。使用正则表达式匹配街道/城市格式;若缺失则标记。
  • List-Unsubscribe 标头 — 如果 ESP 支持设置但尚未配置,则标记(Gmail/Yahoo 要求群发邮件发送者支持一键退订)。
  • 偏好设置中心链接 — 建议提供;如果只有退订链接,则发出警告。
2.6 垃圾邮件触发因素

扫描主题、预览文本和正文,查找常见触发因素并报告命中项:

  • 词语: free、winner、congratulations、guaranteed、risk-free、act now、click here、limited time、no obligation、viagra(哈哈)、make money、earn extra、$$$
  • 标点: 主题中超过一个 !、!!!、???
  • 大小写: 主题中长度超过 3 个字符的全大写单词
  • 符号: $$$、★、过多的表情符号(超过 3 个)
  • HTML: 隐藏文本(颜色与背景相同)、极小字号、嵌入式 JavaScript、<body> 上的背景图片

为每个命中项提供上下文:

🔴 Subject contains "!!!"
🟡 Body has 4 instances of ALL CAPS words: "LIMITED", "TODAY", "ACT NOW", "DON'T"
2.7 渲染与大小
  • HTML 大小 < 102 KB — Gmail 会在 102 KB 处截断。报告实际大小。
  • 采用单一根 <table> 布局(桌面邮件标准)或使用 MJML — 将 flex/grid 标记为投递风险。
  • 使用内联 CSS — 检查 style 属性,而非 <style> 块。许多客户端会移除 <head> 中的样式。
  • 包含移动端视口 meta 标签 — <meta name="viewport" content="width=device-width">
  • 字体栈包含后备字体 — font-family: "Custom Font"; 后不能没有适用于 Web 的后备字体。
  • 不含 <script>、<form>,也不通过 JS 加载外部字体 — 大多数客户端都会移除这些内容。
2.8 发送上下文(仅限 MCP 模式)
  • 目标细分群体中有收件人 — 收件人数 > 0。
  • 促销邮件不会发送给整个列表 — 存在可用的细分群体时,若目标是“所有订阅者”,则标记。
  • 计划发送时间不是收件人当地时间凌晨 3 点 — 标记不合理的发送时段。
  • 不是重复发送 — 检查过去 30 天内是否有发送给同一细分群体且主题相同的营销活动。
3. 报告
Pre-send QA: <campaign name | "pasted email">
Recipient count: <N>    Send ETA: <time or "not scheduled">

Overall: <READY TO SEND | FIX BEFORE SEND | CRITICAL ISSUES>

🔴 Critical (will break or embarrass)
  — <specific issue with offending text / URL / line>
  — ...

🟡 Warnings (fix if you have time)
  — ...

🟢 Passed
  — <count> checks passed

──
Recommended fix order:
  1. ...
  2. ...

Merge-tag fallback cheatsheet for <ESP>:
  [ESP-specific syntax examples]
4. 创建问题(可选)

如果发现严重问题,且营销活动即将发送,则创建问题:

{
  "title": "Campaign '<name>' has critical QA issues — blocked send",
  "body": "<enumerated issues>",
  "action_type": "pre_send_fix",
  "priority": "high"
}
5. 不要自动修复

切勿自动修改营销活动。始终展示差异,并让用户批准每项修复。

备注

  • ESP 专用合并标签语法:
    • Klaviyo: {{ first_name|default:"there" }}
    • Mailchimp: *|FNAME|*,并搭配 *|IFNOT:FNAME|*there*|ELSE:*|FNAME|**|END:IF|*
    • Rule / Get a Newsletter: [Firstname],并搭配平台专用的回退语法
  • 垃圾邮件触发词列表只是启发式规则;现代垃圾邮件过滤器会使用机器学习和信誉度。请将警告视为“提高警惕,检查信誉度”,而非“立即判定为垃圾邮件”。

评论

支持 Markdown