mcpField
C
cold-email-outreach

cold-email-outreach

github.com/gooseworks-aiマーケティング・グロース1.3k58 回インストール5 日前に更新
リポジトリ

cold-email-outreach について

cold-email-outreachは、リードリストを確認済みのメールシーケンスとアウトバウンドキャンペーンに変換するマーケティングスキルです。選択したツールに合わせ、Smartlead MCPツールで設定を自動化するか、他のツール向けにCSVを作成します。

主な機能

  1. 01リードデータの取り込みと検証
  2. 02メールアドレスによる重複排除
  3. 03複数回のメールシーケンス作成
  4. 04ツール別CSVの作成
  5. 05Smartleadキャンペーンの設定と開始

活用シーン

  1. 01リードリストから営業キャンペーンを作成
  2. 02個別化したフォローアップを準備
  3. 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__*)全自動:キャンペーンの作成、シーケンスの追加、リードのインポート、メールボックスの割り当て、スケジュールの設定、配信開始
InstantlyCSV インポートInstantly のインポート形式に合った CSV を生成し、ユーザーが手動でアップロード
LemlistCSV インポートLemlist 対応の列を含む CSV を生成
ApolloCSV インポートApollo のシーケンスインポート形式に合った CSV を生成
手動/その他CSV + 手順リードとメールを汎用 CSV としてエクスポートし、設定手順を提示

ツール選択の手順:

  1. フェーズ 0 でユーザーに尋ねます:「どの営業ツールを使っていますか?」
  2. Smartlead の場合 → MCP ツールを使って全自動で実行
  3. Instantly/Lemlist/Apollo の場合 → 各ツール専用のインポート CSV を生成
  4. その他または不明の場合 → 汎用 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:ヒアリング

質問はまとめて一度に行います。カテゴリ別に整理し、すでに回答されている項目は省略します。

キャンペーンの目的
  1. 目的は何ですか?(面談の予約、デモの申し込み促進、返信の獲得、ナーチャリング)
  2. 営業の切り口やフックは何ですか?(採用の兆候、競合からの切り替え、イベントに基づくもの、課題に基づくもの、コールドデータベース)
  3. このキャンペーンの名前は何にしますか?
営業ツール
  1. どの営業ツールを使っていますか?(Smartlead/Instantly/Lemlist/Apollo/その他/CSV だけを希望)
リードの取得元
  1. リードはどこにありますか?以下のいずれでも受け付けます。
    • CSV ファイル — ファイルを読み込み、列を必須フィールドに対応付けます
    • 貼り付けられたリスト — 氏名、メールアドレス、会社名を直接貼り付け
    • CRM エクスポート — Salesforce、HubSpot、その他の CRM データ
    • データベースクエリ — ユーザーがデータベースを持っている場合、クエリを支援
    • 前段の処理結果 — この会話内の前のタスクから得たデータ
  2. 除外条件はありますか?(特定の会社、最近連絡したリード、特定の役職)
  3. キャンペーンの最大規模はどのくらいですか?(デフォルト:200)

リードごとに必須の最小情報: メールアドレス。あると望ましい情報:first_name、last_name、company、title。

シーケンスの設計
  1. タッチ数はいくつですか?(デフォルト:3)
  2. タッチ間の間隔はどうしますか?(デフォルト:1 日目/5 日目/12 日目)
  3. パーソナライズのレベルはどれにしますか?(レベル 1:差し込みフィールドのみ/レベル 2:セグメントごと/レベル 3:リードごとに個別)
送信設定(CSV エクスポートの場合は省略)
  1. どのメールアカウントから送信しますか?(アカウントの一覧、または「利用可能なものをすべて使う」)
  2. 送信スケジュールはどうしますか?(デフォルト:受信者のタイムゾーンで月曜~金曜の午前 8 時~午後 5 時)
  3. アカウントごとの 1 日あたりの送信上限は?(デフォルト:1 日 30 通)
  4. 開封とクリックを追跡しますか?(デフォルト:開封は追跡、クリックは追跡しない)

フェーズ 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
11コールドイントロSignal-Proof-Ask15分の通話
25新しい切り口/資料PASリソースの案内
312ソーシャルプルーフ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を推奨します。

厳守事項
  1. 中身のない書き出しは禁止。 「お元気でお過ごしのことと思います」は使いません
  2. 「様子をうかがうだけ」のフォローアップは禁止。 どのタッチでも、新たに返信する理由を加えます
  3. メールは150語未満にします。 ほとんどは80〜120語にします。
  4. メールごとにCTAは1つだけにします。 常に、相手の負担が少ないものにします。
  5. 最初の一文で売り込みません。 自分ではなく、相手を中心に書きます。
  6. 件名は50文字未満にします。 大文字、感嘆符、絵文字は使いません。
  7. 署名は名前だけにします。 「敬具」は使いません。
レビューループ
  1. まず3〜5件のリード向けにサンプルメールを生成します
  2. ユーザーに提示してレビューを受けます
  3. 承認されるまで修正します(最大3ラウンド)
  4. 承認後に残りのメールを生成します

フェーズ4:キャンペーンの設定

Smartlead の場合(MCP 自動化)

MCP ツールで完全に自動化します。次の順序で実行します。

ステップ 1:メールボックスを検索して割り当てる

mcp__smartlead__get_email_accounts

id、from_email、from_name、daily_sent_count、is_smtp_success、is_imap_success を含むすべてのメールアカウントを返します。

空きメールボックス(有効なキャンペーンにすでに割り当てられていないもの)を見つけるには:

  1. すべてのキャンペーンを取得します:mcp__smartlead__get_campaigns
  2. ステータスが ACTIVE または STARTED の各キャンペーンについて、メールアカウントを取得します:mcp__smartlead__get_campaign_email_accounts
  3. 有効なキャンペーンに現在割り当てられているすべての email_account_id のセットを作成します
  4. id が有効なアカウントのセットに含まれておらず、かつ is_smtp_success = true かつ is_imap_success = true のメールボックスを「空き」とします
  5. 空きメールボックスを daily_sent_count の昇順で並べ替えます(使用頻度が最も低いものを優先)
  6. 必要な数の空きメールボックスを選択します

空きメールボックスが要求数に満たない場合は、ユーザーに伝えて次の進め方を尋ねます。

利用可能なアカウント/選択したアカウントを提示し、ユーザーに確認してもらいます。

ステップ 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/createPOST新しいキャンペーンを作成
/campaignsGETすべてのキャンペーンを一覧表示
/campaigns/{id}GETID でキャンペーンを取得
/campaigns/{id}/schedulePOSTキャンペーンのスケジュールを設定
/campaigns/{id}/settingsPOSTトラッキング/停止の設定を更新
/campaigns/{id}/sequencesPOSTメールシーケンスを保存
/campaigns/{id}/leadsPOSTリードを追加(1 回の呼び出しにつき最大 100 件)
/campaigns/{id}/email-accountsGETキャンペーンに登録されているメールボックスを一覧表示
/campaigns/{id}/email-accountsPOSTキャンペーンにメールボックスを割り当て
/campaigns/{id}/statusPOSTキャンペーンのステータスを変更(START/PAUSED/STOPPED)
/campaigns/{id}/analyticsGETキャンペーンの概要分析データ
/email-accounts/GETすべてのメールアカウントを一覧表示(offset/limit)

費用

項目費用
Smartlead キャンペーンの設定無料(API は Smartlead プランに含まれます)
CSV エクスポート無料
メール文面の生成無料(LLM の推論)

エラー処理

エラー対処方法
SMARTLEAD_API_KEY が設定されていない.env に追加するか、エクスポートするようユーザーに依頼します
Smartlead のレート制限(429)2 秒待ってから再試行します
リードのアップロードに失敗メール形式を確認し、バッチを再試行します
利用可能なメールボックスがないすべてのアカウントを表示し、どれを使用するかユーザーに確認します
キャンペーンの作成に失敗API キーが有効か確認します

コメント