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. 02ESP未接続での貼り付け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を入力して読み込まれたか確認します。

詳細

送信前 QA

リストに配信する前に、恥ずかしいミスを見つけましょう。メールを事前に徹底チェックします。差し込みタグのフォールバック、リンク切れ、スパム判定につながる表現、CAN-SPAM/GDPR のフッター、モバイルでの表示、サイズ制限、アクセシビリティを確認します。

必要条件: キャンペーン ID モードには Cogny MCP が必要です。HTML 貼り付けモードは MCP なしでも動作します(ただし、送信コンテキストのチェックは行いません)。

使い方

/pre-send-qa <campaign-or-draft-id> — ESP 内の特定のキャンペーン(または Get a Newsletter の場合は下書き)を QA します /pre-send-qa — 続けて、求められたらメールの HTML/MJML/テキストを貼り付けます

手順

1. メールを読み込む

モード A — キャンペーン 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 本文、テキスト本文、対象セグメント/リスト、送信予定時刻を取得します。また、Section 2.8 で受信者数を確認できるよう、関連するリスト/オーディエンスの規模も取得します。

Get a Newsletter には単一の「キャンペーン」オブジェクトがありません。 ユーザーから ID を受け取った場合は、まず tool_get_draft を試し(送信前 QA で使われることが多いため)、404 が返されたら tool_get_sent にフォールバックします。予約済みの配信を QA したい場合は、tool_list_scheduled を使って探します。

モード B — 貼り付け:

  • 件名、プリヘッダー、差出人名/メールアドレス、本文の HTML を尋ねます。複数行の貼り付けを受け付けます。
  • 貼り付けモードでは Section 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 のリンク先に一貫性がある — 「Shop now」と表示された複数のボタンは、通常、同じ URL を指す必要があります
2.4 画像
  • すべての <img> に alt テキストがある — 空でなく、内容を説明していること
  • 画像だけのメールではない — テキストと画像の比率がテキスト 40% 未満の場合に報告します。ヒーロー画像だけのメールはスパムフィルターに検出されます。
  • 画像の URL が絶対 URL で、HTTPS を使用している
  • 問題のあるホストから画像をホットリンクしていない — ブランドの CDN ではなく、imgur、cloudinary demo などに画像がある場合に報告します
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、$$$
  • 句読点: 件名に ! が 2 つ以上、!!!、???
  • 大文字・小文字: 件名に 3 文字を超える ALL CAPS の単語
  • 記号: $$$、★、過剰な絵文字(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> のスタイルを削除します。
  • モバイル viewport の meta タグがある — <meta name="viewport" content="width=device-width">
  • フォントスタックにフォールバックがある — Web セーフなフォールバックなしで font-family: "Custom Font"; を指定しないこと
  • <script>、<form>、JavaScript 経由で読み込む外部フォントがない — これらはほとんどのクライアントで削除されます
2.8 送信コンテキスト(MCP モードのみ)
  • 対象セグメントに受信者がいる — 受信者数が 0 より多いこと
  • 販促メールの送信対象がリスト全体ではない — セグメントを指定できるのに「All Subscribers」を指定している場合に報告します
  • 受信者の現地時間で午前 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] とプラットフォーム固有のフォールバック構文
  • スパム判定のトリガーリストは経験則です。最新のスパムフィルターは機械学習とレピュテーションを利用しています。警告は「少し注意して、レピュテーションを確認する」という意味で捉え、「即座にスパム扱いされる」という意味ではありません。

コメント