send-sms について
send-smsは、TwilioまたはBrevo経由でSMSやWhatsAppのマーケティングメッセージを送るスキルです。同意、配信停止、静穏時間、文字数を確認し、明示的な承認後に送信して配信状況を追跡します。
主な機能
- 01SMSとWhatsAppの送信
- 02地域別の同意・配信停止確認
- 03静穏時間と文字数の検証
- 04送信前の明示的な承認
- 05配信状況と費用の追跡
活用シーン
- 01同意済みの連絡先への販促配信
- 02受信者のタイムゾーンに合わせた送信予約
- 03コンプライアンス確認後の一括送信
MCP 対応
接続済みのTwilioまたはBrevo MCPを通じてSMSやWhatsAppを送信し、プラットフォームとチャネルの対応状況を確認します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ indranilbanerjee/ digital-marketing-pro --skill send-smsインストール後、Claude Code で/send-smsを入力して読み込まれたか確認します。
詳細
/digital-marketing-pro:send-sms
スクリプトの場所。 ホストで
${CLAUDE_PLUGIN_ROOT}が設定されていない場合、スクリプトはこのプラグインのskills/と同じ階層にあるscripts/フォルダーにあります。Python 3.10 以降で実行してください。pythonが見つからない場合(macOS、多くの Linux システム)はpython3を使ってください。
目的
必須のコンプライアンスチェック、同意の確認、配信時間帯の制限、配信状況の追跡を行いながら、Twilio または Brevo 経由で SMS または WhatsApp のマーケティングメッセージを送信します。SMS と WhatsApp は影響が大きく、リスクの高いチャネルです。メッセージはほぼ 100%の開封率で個人のデバイスに即座に届くため、コンプライアンス違反は重大な法的・評判上の影響をもたらす可能性があります。このコマンドは、メッセージがシステムから送信される前に、必要なすべての安全策を適用します。米国の受信者に対する TCPA の同意、EU の GDPR に基づく同意、カナダの CASL、オプトアウト方法の記載、配信時間帯の遵守、メッセージの文字数制限を確認します。すべてのチェックを通過し、ユーザーから明示的な承認を得るまで、メッセージは送信されません。
実行ゲート(必須 — 省略不可)
- 稼働中のシステムに触れる前に、受信者/費用/変更内容/コンプライアンスを含む全プレビューを 実行サマリー として提示します。
- ユーザーは
yes(または同等の明示的な承認)を入力する必要があります。それ以外の入力(曖昧な承認、暗示的な承認、部分的な承認、承認なし)はすべて実行をキャンセルします。 - 曖昧な入力に基づいて処理を進めてはいけません。失敗した実行を自動で再試行してはいけません。再実行の前に、人による確認が必要です。
- ユーザーが
yesと入力した後に限り、次のコマンドを実行して記録します:python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"type":"send-sms","platform":"<platform>","content_summary":"<実行サマリーの一行>","risk_level":"<tier>"}'、続いてpython "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action approve --id {approval_id}。いずれかのコマンドでエラーが発生した場合は、停止してエラーを報告してください。別のツールで回避してはいけません。この記録は、このアクションに対する承認手順が実行されたことを証明しますが、誰がyesと入力したかは証明できません。 - 実行します。
connector_executor.py経由で送信する書き込みには--approval-idが必要で、一致する未使用かつ有効期限内の記録がある場合にのみ実行されます(/digital-marketing-pro:execute-actionを参照)。接続済みの MCP サーバーツール経由の書き込みは、このコードによるチェックの対象外です。この場合は、ここでのyesの入力と、ホスト側の権限確認プロンプトに依存します。実行後、python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id} --data '{"execution_result":"success"}'(またはfailure)を実行します。
必須入力
ユーザーは以下を指定する必要があります(指定がない場合は入力を求められます)。
- メッセージ内容:SMS または WhatsApp メッセージの本文です。規制遵守のため、明確な配信停止方法(例:「配信を停止するには STOP と返信してください」)を含める必要があります。WhatsApp メッセージにはリッチメディア(画像、ドキュメント、動画、位置情報)を含められます。また、Meta のポリシーに従い、事業者から開始する会話では事前承認済みのメッセージテンプレートを使用する必要があります
- 受信者:E.164 形式の電話番号(+1XXXXXXXXXX)、ブランドのオーディエンスデータに登録された名前付き連絡先リスト、またはセグメント参照です。一括送信の場合は、CSV ファイルのパスまたはリスト識別子を指定してください。すべての受信者について、同意を得た記録を保管している必要があります
- チャネル:
smsまたはwhatsappです。メッセージの文字数制限(SMS は 160 文字、WhatsApp はテンプレート本文で 1,024 文字、自由形式のセッションメッセージで 4,096 文字)、メディアのサポート(SMS はテキストのみ、WhatsApp はリッチメディア対応)、テンプレート要件、プラットフォーム固有のコンプライアンス規則が決まります - 送信者 ID(任意):使用する送信者の電話番号、ショートコード、または英数字の送信者 ID です。プラットフォームに登録され、認証済みである必要があります。省略した場合は、messaging MCP に設定されているブランドのデフォルト送信者が使用されます。英数字の送信者 ID は、すべての国でサポートされているわけではありません
- 送信時刻:即時配信の場合は
immediate、またはタイムゾーンを含むスケジュール日時(ISO 8601 形式)です。スケジュール設定では配信停止時間を守る必要があります。受信者の現地時間で午後 9 時から午前 8 時までの間は送信できません - キャンペーン名(任意):追跡とアトリビューションに使用します。この送信を、ブランドの分析およびパフォーマンスレポートにおけるキャンペーンに関連付けます。省略した場合は、メッセージ内容と日付から自動生成されます
- パーソナライズ項目(任意):メッセージに差し込む動的項目です。名、注文番号、予約時刻、ロイヤルティポイント、カスタム変数などを指定できます。データが不足している受信者に備え、各項目に代替値を設定する必要があります(例:名が不明な場合は「大切なお客様」)
- WhatsApp テンプレート ID(任意):WhatsApp で事業者から開始するメッセージの場合に使用する、変数のマッピングを含む事前承認済みテンプレート識別子です。24 時間のカスタマーサービス対応時間外に送信するメッセージでは、Meta により必須とされています
- 優先度(任意):
normal(標準の配信キュー)またはurgent(予約リマインダーやセキュリティアラートなど、時間的制約のあるメッセージ向けの優先配信)です。urgentの送信ではスケジュール最適化を省略しますが、すべてのコンプライアンスチェックは引き続き適用されます
処理
- ブランドコンテキストを読み込む:
~/.claude-marketing/brands/_active-brand.jsonを読み込んで有効なスラッグを確認し、次に~/.claude-marketing/brands/{slug}/profile.jsonを読み込みます。ブランドのトーン、対象市場向けのコンプライアンスルール(skills/context-engine/compliance-rules.md)、業界コンテキストを適用します。~/.claude-marketing/brands/{slug}/guidelines/_manifest.jsonにガイドラインがあるかも確認し、存在する場合は制限事項を読み込みます。~/.claude-marketing/sops/で代理店の標準業務手順(SOP)も確認します。ブランドが存在しない場合は、「まずブランドを設定しますか(/digital-marketing-pro:brand-setup)?」と尋ねるか、デフォルト設定で進めます。 - 同意に関するコンプライアンスを確認する:すべての受信者が、選択したチャネルについて文書化されたオプトイン同意を行っていることを確認します。法域ごとのルールを適用します。米国の受信者にはTCPAに基づく明示的な書面での同意、EUには記録された適法な根拠を伴うGDPRに基づく明示的な同意、カナダには有効期限の追跡を含むCASLに基づく明示的または黙示的な同意が必要です。必要な同意がない受信者にはフラグを立て、送信対象から除外し、受信者ごとのコンプライアンスレポートを作成します。
- 静穏時間を徹底する:電話番号の国番号と市外局番から受信者ごとのタイムゾーンを特定します。確実に特定できない場合は、保存済みのオーディエンスプロフィールデータを使用します。受信者の現地時刻が午後9時から午前8時の間にあたる場合、即時送信をブロックします。予約送信では、すべての受信者のタイムゾーンで静穏時間を守っていることを確認します。競合があればフラグを立て、最も近い準拠送信時間帯を提案します。
- オプトアウトの仕組みを検証する:メッセージ本文を確認し、準拠したオプトアウトの案内(「STOPと返信して配信を停止」または法域に適した同等の表現)が含まれていることを確認します。WhatsAppの場合は、ビジネスアカウントの設定でオプトアウトのフローが構成されていることを確認します。案内がない、または準拠していない場合は送信を却下し、続行前にオプトアウト文言を追加するようユーザーに求めます。
- メッセージの長さを確認する:チャネルごとの上限に照らしてメッセージの長さを検証します。SMSはセグメントあたり160文字(連結メッセージは最大1,600文字。セグメント数と費用に関する警告を含む)、WhatsAppのテキストは1,024文字です。パーソナライズされたメッセージでは、最も長い変数置換を使って長さを計算し、受信者に途中で切れたメッセージが届かないようにします。文字数、セグメント数、メッセージごとの費用を報告します。
- メッセージング MCP の接続を確認する:接続されているメッセージングプラットフォーム MCP(Twilio または Brevo)を確認し、選択したチャネル(SMS、WhatsApp、または両方)に対応していることを確認します。送信者 ID が登録済みで、認可され、送信先の国の送信者 ID 規制に準拠していることを検証します。接続されていない場合は、ユーザーに連携の設定方法を案内します。
- ブランドボイスを採点する:メッセージ内容に対して
brand-voice-scorer.pyを実行し、ブランドのトーンガイドラインとの整合性を確認します。SMSには簡潔で直接的なメッセージが必要です。ブランドに合わない内容、チャネルに対して形式ばりすぎている内容、または視覚的な手がかりのない短文形式で誤解されるおそれのある内容にフラグを立てます。 - 承認レコードを作成する:
approval-manager.py --action create-approvalを使い、--dataJSON 内にリスクレベルを含めてレコードを作成します({"type":"send-sms","platform":"<platform>","content_summary":"...","risk_level":"high"})。SMSとWhatsAppのマーケティングには、規制上のリスク(未承諾メッセージ1件につき最大1,500ドルのTCPA罰金)とメッセージごとの費用が伴います。--risk-levelフラグはありません。正確なコマンドについては、上記の実行ゲートを参照してください。レビュー用に包括的な送信サマリーを作成します。 - 送信サマリーを提示する:完全なサマリーを表示します。内容には、サンプル受信者向けにパーソナライズトークンを置換したメッセージプレビュー、受信者数(合計、コンプライアンスフィルタリング後の送信対象数、理由別の除外数)、チャネル、送信者 ID、静穏時間の確認結果を含む送信時刻、コンプライアンスチェックリスト(同意、静穏時間、オプトアウト、送信者の検証)、メッセージごとの推定費用と送信総費用、該当する場合はSMSセグメント数、ブランドボイススコアを含めます。「送信」という明示的な確認を待ちます。
- MCP 経由で送信を実行する:承認後、接続済みの Twilio または Brevo MCP を通じてメッセージ送信を開始します。受信者ごとのパーソナライズトークンの置換、一括送信でのレート制限を伴うバッチ処理、WhatsAppテンプレート変数の挿入、プラットフォーム固有のAPI形式への変換を行います。即時の配信失敗とAPIエラーを監視します。
- 配信状況を追跡する:メッセージングプラットフォームのAPIをポーリングし、配信済み、失敗、未配信、キュー登録済み、または既読(WhatsAppのみ)の状況を取得します。一括送信では受信者ごとの状況を追跡します。配信失敗率が5%を超えた場合は、理由(無効な番号、キャリアによるブロック、処理済みのオプトアウト、ネットワークタイムアウト)に分類してユーザーに通知します。
- 実行を記録する:
execution-tracker.pyを実行し、タイムスタンプ、プラットフォーム、チャネル、キャンペーン名、受信者数(合計およびステータス別)、メッセージ内容のハッシュ、コンプライアンス検証結果、配信指標、発生費用、失敗を含む送信イベントを記録します。今後のSMS戦略の最適化と送信時刻の分析に役立つパフォーマンスインサイトを保存します。
出力
以下を含む、構造化された送信確認情報です。
- 送信確認:メッセージ ID またはバッチ ID、プラットフォーム(Twilio または Brevo)、チャネル(SMS または WhatsApp)、送信ステータス(送信済み、予約済み、一部送信済み、または承認待ち)、タイムゾーン付きタイムスタンプ
- 受信者の詳細:送信対象として登録された受信者の合計数、コンプライアンスフィルタリング後に送信可能な受信者数、除外された受信者と受信者ごとの理由(同意がない場合は該当する法域を明記、タイムゾーン付きの静穏時間違反、電話番号の形式が無効)、最終送信リストに含まれる受信者
- コンプライアンスレポート:各チェックの合否 — TCPA に基づく同意(米国)、GDPR に基づく同意(EU)、CASL に基づく同意(カナダ)、オプトアウト手段が存在し要件に準拠していること、すべての受信者のタイムゾーンで静穏時間が守られていること、送信者 ID が認証済みで送信先の国の要件に準拠していること、WhatsApp テンプレートが承認済みであること(該当する場合)
- メッセージの詳細:最終的なメッセージ内容と文字数、SMS のセグメント数と連結ステータス、変数の解決とフォールバックのデフォルト値を示す 2〜3 名のサンプル受信者向けのパーソナライズプレビュー、オプトアウト手段の配置確認
- コストレポート:送信先の国ごとのメッセージ単価、連結 SMS のセグメント単価、送信コストの合計、キャンペーン名が関連付けられている場合はキャンペーンのメッセージング予算との比較
- 配信レポート:リアルタイムの配信ステータス — 配信済みの件数と割合、保留中/キューに入っている件数、分類された失敗理由(電話番号が無効、通信事業者による拒否、オプトアウト処理済み、ネットワークエラー、レート制限)ごとの失敗件数、WhatsApp の既読通知
- ブランドボイススコア:ブランドのトーンガイドラインと SMS のベストプラクティスに対するメッセージの適合度。簡潔さと明確さに関する所見、および今後のモバイルメッセージングに推奨される調整事項
- 実行ログエントリ:コンプライアンス監査証跡、キャンペーンのパフォーマンス追跡、コスト計上のための、すべての送信メタデータを含むタイムスタンプ付き記録
使用されるエージェント
- execution-coordinator — 受信者ごとのコンプライアンスフィルタリングを伴う複数法域の同意確認(TCPA、GDPR、CASL)、電話番号とオーディエンスプロフィールからタイムゾーンを解決して静穏時間を適用、チャネル要件に基づくオプトアウト手段の検証、HIGH リスク分類とコストを考慮した概要を用いた承認ワークフロー、バッチ処理とレート制限による Twilio または Brevo MCP 経由の送信実行、失敗の分類としきい値アラートを伴うリアルタイムの配信ステータス追跡、メッセージとセグメントごとのコスト計算、規制関連文書のための完全なコンプライアンス監査証跡を伴う実行ログの記録