cold-email-outreach について
cold-email-outreachは、リードリストを確認済みのメールシーケンスとアウトバウンドキャンペーンに変換するマーケティングスキルです。選択したツールに合わせ、Smartlead MCPツールで設定を自動化するか、他のツール向けにCSVを作成します。
主な機能
- 01リードデータの取り込みと検証
- 02メールアドレスによる重複排除
- 03複数回のメールシーケンス作成
- 04ツール別CSVの作成
- 05Smartleadキャンペーンの設定と開始
活用シーン
- 01リードリストから営業キャンペーンを作成
- 02個別化したフォローアップを準備
- 03メール営業ツールにリードを取り込む
MCP 対応
SmartleadのMCPツールを使い、キャンペーンやシーケンス、リードの登録、メールボックスの割り当て、送信設定を行い、明示的な承認後に開始します。他のツールにはCSVを出力します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ gooseworks-ai/ goose-skills --skill cold-email-outreachインストール後、Claude Code で/cold-email-outreachを入力して読み込まれたか確認します。
同梱ファイルskill.meta.json
詳細
コールドメール営業
アウトバウンドの最終段階です。ユーザーがリードを保管している場所からリードを取得し、メールシーケンスを作成して、ユーザーが選んだ営業ツールにキャンペーンを読み込み、配信を開始します。
ツール非依存: まず、ユーザーが使用している営業プラットフォームを尋ねます。MCP ツールが設定されている場合は、Smartlead をデフォルトで使用します。それ以外のツールや手動のワークフローでは、CSV エクスポートに切り替えます。
使用するタイミング
次の場合にこのスキルを使用します。
- ユーザーが「キャンペーンを開始」「営業メールを送信」「このリードにメール」「コールドメールを設定」と言った場合
- ユーザーがリードのリストを持っていて、アウトバウンドメールキャンペーンを実施したい場合
- ユーザーが Smartlead や別の営業ツールでキャンペーンを作成、設定したい場合
対応する営業ツール
このスキルでは、特定のツールを前提としません。まずユーザーに確認し、その後に対応します。
| ツール | 統合方法 | 仕組み |
|---|---|---|
| Smartlead(デフォルト) | MCP ツール(mcp__smartlead__*) | 全自動:キャンペーンの作成、シーケンスの追加、リードのインポート、メールボックスの割り当て、スケジュールの設定、配信開始 |
| Instantly | CSV インポート | Instantly のインポート形式に合った CSV を生成し、ユーザーが手動でアップロード |
| Lemlist | CSV インポート | Lemlist 対応の列を含む CSV を生成 |
| Apollo | CSV インポート | Apollo のシーケンスインポート形式に合った CSV を生成 |
| 手動/その他 | CSV + 手順 | リードとメールを汎用 CSV としてエクスポートし、設定手順を提示 |
ツール選択の手順:
- フェーズ 0 でユーザーに尋ねます:「どの営業ツールを使っていますか?」
- Smartlead の場合 → MCP ツールを使って全自動で実行
- Instantly/Lemlist/Apollo の場合 → 各ツール専用のインポート CSV を生成
- その他または不明の場合 → 汎用 CSV(
email、first_name、last_name、company、title、各タッチのsubject、body)を生成し、使用ツールのインポート要件をユーザーに確認
前提条件
環境変数
Smartlead の場合(全自動):
SMARTLEAD_API_KEY=your_api_key_here
すべての Smartlead API 呼び出しは https://server.smartlead.ai/api/v1 に送信し、?api_key=$SMARTLEAD_API_KEY を追加します。レート制限:2 秒あたり 10 リクエスト。
CSV ベースのツールの場合: 環境変数は不要です。
フェーズ 0:ヒアリング
質問はまとめて一度に行います。カテゴリ別に整理し、すでに回答されている項目は省略します。
キャンペーンの目的
- 目的は何ですか?(面談の予約、デモの申し込み促進、返信の獲得、ナーチャリング)
- 営業の切り口やフックは何ですか?(採用の兆候、競合からの切り替え、イベントに基づくもの、課題に基づくもの、コールドデータベース)
- このキャンペーンの名前は何にしますか?
営業ツール
- どの営業ツールを使っていますか?(Smartlead/Instantly/Lemlist/Apollo/その他/CSV だけを希望)
リードの取得元
- リードはどこにありますか?以下のいずれでも受け付けます。
- CSV ファイル — ファイルを読み込み、列を必須フィールドに対応付けます
- 貼り付けられたリスト — 氏名、メールアドレス、会社名を直接貼り付け
- CRM エクスポート — Salesforce、HubSpot、その他の CRM データ
- データベースクエリ — ユーザーがデータベースを持っている場合、クエリを支援
- 前段の処理結果 — この会話内の前のタスクから得たデータ
- 除外条件はありますか?(特定の会社、最近連絡したリード、特定の役職)
- キャンペーンの最大規模はどのくらいですか?(デフォルト:200)
リードごとに必須の最小情報: メールアドレス。あると望ましい情報:first_name、last_name、company、title。
シーケンスの設計
- タッチ数はいくつですか?(デフォルト:3)
- タッチ間の間隔はどうしますか?(デフォルト:1 日目/5 日目/12 日目)
- パーソナライズのレベルはどれにしますか?(レベル 1:差し込みフィールドのみ/レベル 2:セグメントごと/レベル 3:リードごとに個別)
送信設定(CSV エクスポートの場合は省略)
- どのメールアカウントから送信しますか?(アカウントの一覧、または「利用可能なものをすべて使う」)
- 送信スケジュールはどうしますか?(デフォルト:受信者のタイムゾーンで月曜~金曜の午前 8 時~午後 5 時)
- アカウントごとの 1 日あたりの送信上限は?(デフォルト:1 日 30 通)
- 開封とクリックを追跡しますか?(デフォルト:開封は追跡、クリックは追跡しない)
フェーズ 1:リードの取り込み
リードの解析
ユーザーが提供するあらゆるソースからリードを受け付けます。
- CSV ファイル: ファイルを読み込みます。列名を柔軟に照合します。
email(必須)—Email、email_addressにも対応しますfirst_name—firstname、first、First Nameにも対応しますlast_name—lastname、last、Last Nameにも対応しますcompany_name—company、organization、Companyにも対応します- 追加の列はカスタムフィールドになります
- 貼り付けられたデータ: ユーザーが提供するあらゆる形式を解析します。メールアドレス、名前、会社を抽出します。
- CRM/データベース: ユーザーのクエリやエクスポートを支援し、その結果を解析します。
検証と重複排除
- 有効なメールアドレスがない行を削除します
- メールアドレスで重複を排除します(最初の出現を残します)
- 合計行数、有効件数、無効件数、削除した重複件数を報告します
提示と確認
サンプル表(リード10〜15件)を次の項目とともに表示します。
- 名前、役職、会社、メールアドレス
ユーザーに、対象となるリードの合計数と、無効または削除された件数を伝えます。
続行する前に、確認または調整を依頼します。
フェーズ2:シーケンスの設計
コピーを作成する前に、シーケンスの計画を表で提示します。
| タッチ | 日 | メールの種類 | フレームワーク | CTA |
|---|---|---|---|---|
| 1 | 1 | コールドイントロ | Signal-Proof-Ask | 15分の通話 |
| 2 | 5 | 新しい切り口/資料 | PAS | リソースの案内 |
| 3 | 12 | ソーシャルプルーフ | BAB | お話ししませんか? |
フェーズ3でコピーを生成する前に、構成についてユーザーの承認を得ます。
フェーズ3:メールの生成
以下のガイドラインに従って、メールのコピーを直接作成します。
メールの構成式
すべてのコールドメールは、次の骨組みに従います。
Hook (1 sentence) → Evidence (1-2 sentences) → Offer (1 sentence)
目標の単語数:
- コールドイントロ(タッチ1):50〜90語
- フォローアップ(タッチ2〜3):30〜50語
- 最終メール(最後のタッチ):20〜40語
パーソナライズの段階別
ティア1(一般向け): 各タッチにつき、差し込みフィールド({first_name}、{company}、{title})を使ったテンプレートを1つ生成します。すべてのリードに同じテンプレートを使用します。
ティア2(セグメント別): セグメントごと、タッチごとにテンプレートを1つ生成します。セグメントは、役職、業界、シグナルの種類によって定義します。セグメント間で、課題と実績を差し替えます。
ティア3(詳細): リードごと、タッチごとに固有のメールを生成します。上限は50件です。それを超える場合は、ティア2を推奨します。
厳守事項
- 中身のない書き出しは禁止。 「お元気でお過ごしのことと思います」は使いません
- 「様子をうかがうだけ」のフォローアップは禁止。 どのタッチでも、新たに返信する理由を加えます
- メールは150語未満にします。 ほとんどは80〜120語にします。
- メールごとにCTAは1つだけにします。 常に、相手の負担が少ないものにします。
- 最初の一文で売り込みません。 自分ではなく、相手を中心に書きます。
- 件名は50文字未満にします。 大文字、感嘆符、絵文字は使いません。
- 署名は名前だけにします。 「敬具」は使いません。
レビューループ
- まず3〜5件のリード向けにサンプルメールを生成します
- ユーザーに提示してレビューを受けます
- 承認されるまで修正します(最大3ラウンド)
- 承認後に残りのメールを生成します
フェーズ4:キャンペーンの設定
Smartlead の場合(MCP 自動化)
MCP ツールで完全に自動化します。次の順序で実行します。
ステップ 1:メールボックスを検索して割り当てる
mcp__smartlead__get_email_accounts
id、from_email、from_name、daily_sent_count、is_smtp_success、is_imap_success を含むすべてのメールアカウントを返します。
空きメールボックス(有効なキャンペーンにすでに割り当てられていないもの)を見つけるには:
- すべてのキャンペーンを取得します:
mcp__smartlead__get_campaigns - ステータスが
ACTIVEまたはSTARTEDの各キャンペーンについて、メールアカウントを取得します:mcp__smartlead__get_campaign_email_accounts - 有効なキャンペーンに現在割り当てられているすべての
email_account_idのセットを作成します idが有効なアカウントのセットに含まれておらず、かつis_smtp_success= true かつis_imap_success= true のメールボックスを「空き」とします- 空きメールボックスを
daily_sent_countの昇順で並べ替えます(使用頻度が最も低いものを優先) - 必要な数の空きメールボックスを選択します
空きメールボックスが要求数に満たない場合は、ユーザーに伝えて次の進め方を尋ねます。
利用可能なアカウント/選択したアカウントを提示し、ユーザーに確認してもらいます。
ステップ 2:キャンペーンを作成する
mcp__smartlead__create_campaign
name: {campaign_name}
返された campaign_id を保存します。
ステップ 3:シーケンスのステップを追加する
mcp__smartlead__save_campaign_sequences
campaign_id: {campaign_id}
sequences: [
{ seq_number: 1, subject: "...", email_body: "...", seq_delay_details: { delay_in_days: 0 } },
{ seq_number: 2, subject: "...", email_body: "...", seq_delay_details: { delay_in_days: 4 } },
{ seq_number: 3, subject: "...", email_body: "...", seq_delay_details: { delay_in_days: 7 } }
]
マージ変数のマッピング: {first_name} → {{first_name}}、{company} → {{company}} に変換します(Smartlead では二重波括弧の構文を使用します)。
注: 2 通目以降のメールで subject を空欄にすると、同じスレッドへの返信として送信されます。
ステップ 4:リードをインポートする(100 件ずつ)
mcp__smartlead__add_leads_to_campaign
campaign_id: {campaign_id}
lead_list: [{ email: "...", first_name: "...", last_name: "...", company_name: "...", ... }]
Smartlead では、1 回の呼び出しにつき最大 100 件のリードを受け付けます。リストを分割し、各バッチについて呼び出します。追加の列は custom_fields になります。
ステップ 5:送信アカウントを割り当てる
mcp__smartlead__add_email_accounts_to_campaign
campaign_id: {campaign_id}
email_account_ids: [...]
ステップ 6:スケジュールを設定する
mcp__smartlead__update_campaign_schedule
campaign_id: {campaign_id}
schedule: {
timezone: "America/New_York",
days_of_the_week: [1, 2, 3, 4, 5],
start_hour: "08:00",
end_hour: "18:00",
min_time_btw_emails: 10,
max_new_leads_per_day: 20
}
days_of_the_week:0=日曜日、1=月曜日、…、6=土曜日。
ステップ 7:設定を行う
mcp__smartlead__update_campaign_settings
campaign_id: {campaign_id}
settings: {
track_settings: [],
stop_lead_settings: "REPLY_TO_AN_EMAIL",
send_as_plain_text: false,
follow_up_percentage: 100
}
track_settings で指定できる値:DONT_TRACK_EMAIL_OPEN、DONT_TRACK_LINK_CLICK、DONT_TRACK_REPLY_TO_AN_EMAIL
stop_lead_settings で指定できる値:REPLY_TO_AN_EMAIL、CLICK_ON_A_LINK、OPEN_AN_EMAIL
CSV ベースのツール(Instantly、Lemlist、Apollo、その他)の場合
ステップ 1:CSV を生成する
パーソナライズの段階によって列が異なります。
段階 1(全員に同じテンプレートを使用):
- CSV の列:
email、first_name、last_name、company、title、custom_field_1(シグナル/フック) - シーケンスのテンプレート(マージフィールドを含む件名と本文)を別ファイルに保存します
段階 2/3(セグメントごと、またはリードごとにメールを作成):
- CSV の列:
email、first_name、last_name、company、title、touch_1_subject、touch_1_body、touch_2_subject、touch_2_body、touch_3_subject、touch_3_body
ステップ 2:ファイルを保存する
現在の作業ディレクトリに保存します:
{campaign-name}-{YYYY-MM-DD}.csv
ステップ 3:ツールごとのインポート手順を提示する
Instantly:
- CSV をアップロード → Sequences → Create new sequence
- 列をマッピングします:Email → email、First Name → first_name など
- 各ステップにシーケンスのテンプレートを貼り付けます
- ステップ間の遅延を設定します
Lemlist:
- People → Import → Upload CSV
- カスタム変数を列にマッピングします
- キャンペーンを作成 → メールのステップを追加 → 変数を挿入します
Apollo:
- Sequences → Create Sequence → メールのステップを追加
- Contacts → Import → Upload CSV
- インポートした連絡先をシーケンスに追加します
その他/手動:
- CSV のパスを提示し、列の構成を説明します
- ユーザーにツールが想定する形式を尋ね、必要に応じて調整します
フェーズ 5:レビューと開始
キャンペーンの概要を提示します:
Campaign: {name}
Leads: {count}
Sequence: {touches} touches over {days} days
Sending: {accounts} accounts × {daily_limit}/day = {daily_volume} emails/day
Estimated completion: {date}
Tool: {smartlead/instantly/etc.}
最終承認ゲート
ユーザーから明示的な確認を得る前に、キャンペーンを有効化してはいけません。 概要を提示した後、「開始する準備はできていますか? 有効化するには「yes」と入力してください。」と尋ねます。
- Smartlead:
mcp__smartlead__update_campaign_status→ ステータスをSTARTに設定します - CSV ツール: ファイルをインポートできる状態であることを伝え、ファイルのパスを提示します
Smartlead API リファレンス
すべてのエンドポイントでは、ベース URL https://server.smartlead.ai/api/v1 と ?api_key= クエリパラメーターを使用します。
| エンドポイント | メソッド | 目的 |
|---|---|---|
/campaigns/create | POST | 新しいキャンペーンを作成 |
/campaigns | GET | すべてのキャンペーンを一覧表示 |
/campaigns/{id} | GET | ID でキャンペーンを取得 |
/campaigns/{id}/schedule | POST | キャンペーンのスケジュールを設定 |
/campaigns/{id}/settings | POST | トラッキング/停止の設定を更新 |
/campaigns/{id}/sequences | POST | メールシーケンスを保存 |
/campaigns/{id}/leads | POST | リードを追加(1 回の呼び出しにつき最大 100 件) |
/campaigns/{id}/email-accounts | GET | キャンペーンに登録されているメールボックスを一覧表示 |
/campaigns/{id}/email-accounts | POST | キャンペーンにメールボックスを割り当て |
/campaigns/{id}/status | POST | キャンペーンのステータスを変更(START/PAUSED/STOPPED) |
/campaigns/{id}/analytics | GET | キャンペーンの概要分析データ |
/email-accounts/ | GET | すべてのメールアカウントを一覧表示(offset/limit) |
費用
| 項目 | 費用 |
|---|---|
| Smartlead キャンペーンの設定 | 無料(API は Smartlead プランに含まれます) |
| CSV エクスポート | 無料 |
| メール文面の生成 | 無料(LLM の推論) |
エラー処理
| エラー | 対処方法 |
|---|---|
SMARTLEAD_API_KEY が設定されていない | .env に追加するか、エクスポートするようユーザーに依頼します |
| Smartlead のレート制限(429) | 2 秒待ってから再試行します |
| リードのアップロードに失敗 | メール形式を確認し、バッチを再試行します |
| 利用可能なメールボックスがない | すべてのアカウントを表示し、どれを使用するかユーザーに確認します |
| キャンペーンの作成に失敗 | API キーが有効か確認します |