mcpField
S
setup-outreach-campaign

setup-outreach-campaign

github.com/nikiandrマーケティング・グロース194 回インストール31 週間前に更新
リポジトリ

setup-outreach-campaign について

Smartleadでアウトバウンドメールキャンペーンを設定するスキルです。リードの取り込み、メールボックスの割り当て、シーケンス作成、送信日時の設定を行い、保存前にシーケンスの承認を求めます。

主な機能

  1. 01Smartleadキャンペーンの作成
  2. 02リードリストの取り込みと検証
  3. 03メールボックスの選定と割り当て
  4. 042~3通のメールシーケンス作成
  5. 05送信スケジュールの設定
  6. 06開始または下書き保存

活用シーン

  1. 01CSVのリードリストをキャンペーン化
  2. 02予約送信するコールドメールの準備
  3. 03キャンペーンへの空きメールボックス割り当て

MCP 対応

Smartlead APIを使ってキャンペーンを作成・設定します。入力にはMCPインターフェースの説明はありません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nikiandr/goose-skills --skill setup-outreach-campaign

インストール後、Claude Code で/setup-outreach-campaignを入力して読み込まれたか確認します。

同梱ファイルskill.meta.json

詳細

outreach-campaign の設定

Smartlead でアウトバウンドメールキャンペーンを一式設定します。キャンペーンを作成し、リードを追加し、2~3 通のメールシーケンスを作成して、スケジュールを設定し、メールボックスを割り当てます。

入力

入力必須デフォルト説明
campaign_nameはい--キャンペーン名(例:「Truewind - Accounting Firms - Feb 2026」)
campaign_goalはい--キャンペーンで達成する成果(デモの予約、登録の促進など)
lead_listはい--CSV ファイルのパス、または上流スキルから渡される人物リストの JSON
value_propositionはい--メールで取り上げる中核となる課題またはメリット
ctaはい--行動喚起(例:「15 分のデモを予約する」「詳細を知りたい場合は返信する」)
toneいいえsemi-formalメールのトーン:casual、semi-formal、formal
personalization_angleいいえ--パーソナライズのきっかけ(イベントへの参加、求人情報、ニュースへの言及など)
timezoneいいえAmerica/New_York送信スケジュールのタイムゾーン
send_daysいいえ[1,2,3,4,5]送信する曜日(0=日曜、6=土曜)
start_hourいいえ08:00送信時間帯の開始時刻
end_hourいいえ18:00送信時間帯の終了時刻
max_leads_per_dayいいえ201 日に連絡する新規リードの最大数
min_time_btw_emailsいいえ10同じメールボックスからメールを送信する際の最小間隔(分)
num_mailboxesいいえ5割り当てるメールボックスの数
mailbox_selectionいいえauto「auto」(空いているものを選択)または「manual」(リストを表示してユーザーが選択)

セットアップ

API アクセスが可能な Smartlead アカウントが必要です。

export SMARTLEAD_API_KEY=your_api_key_here

すべての API 呼び出しは https://server.smartlead.ai/api/v1 に送信し、末尾に ?api_key=$SMARTLEAD_API_KEY を付加します。

レート制限:2 秒あたり 10 リクエスト。

手順

ステップ 1:キャンペーン情報を収集する

次の質問をユーザーにします。一度にすべて尋ねず、会話の流れに沿ってまとめてください。

キャンペーンの基本情報:

  • 「このキャンペーンの名前は何ですか?」(例:「Truewind - Accounting Firms - Feb 2026」)
  • 「目標は何ですか?」(例:デモの予約、トライアル登録の促進、カンファレンス後のフォローアップ)

対象者とリード:

  • 「対象者は誰ですか?」(ICP:役職、企業の種類、規模、業界)
  • 「リードリストはどのように提供しますか?」— 選択肢:CSV ファイル、以前のスキル(company-contact-finder、luma-event-attendees)の出力、または「まずリードを探したい」(company-contact-finder に連携)

メッセージ:

  • 「中核となる価値提案または課題は何ですか?」
  • 「行動喚起は何ですか?」(例:「15 分のデモを予約する」)
  • 「トーンは casual、semi-formal、formal のどれですか?」
  • 「パーソナライズのきっかけはありますか?」(例:相手の求人情報、イベント、業界ニュースに言及する)

スケジュール:

  • 「メールを送信する曜日はいつですか?」(デフォルト:月曜~金曜)
  • 「送信する時間帯とタイムゾーンは?」(デフォルト:東部時間の午前 8 時~午後 6 時)
  • 「1 日あたりの新規リードの最大数は?」(デフォルト:20)
  • 「キャンペーンの開始日はいつですか?」(デフォルト:明日)

メールボックス:

  • 「割り当てるメールボックスの数はいくつですか?」(デフォルト:5)
  • 「空いているメールボックスを自動選択しますか?それとも選択用のリストを表示しますか?」

回答を収集したら、概要を提示し、続行する前に確認を取ります。

ステップ 2:キャンペーンを作成する
POST https://server.smartlead.ai/api/v1/campaigns/create?api_key=$SMARTLEAD_API_KEY

Body:
{
  "name": "<campaign_name>",
  "client_id": null
}

レスポンス:

{
  "ok": true,
  "id": 3023,
  "name": "Test email campaign",
  "created_at": "2022-11-07T16:23:24.025929+00:00"
}

id から campaign_id を取得します。以降のすべての呼び出しでこれを使用します。

ステップ 3:メールボックスを確認して割り当てる

このステップでは、利用可能なメールボックスを特定し、キャンペーンに割り当てます。

3a:すべてのメールアカウントを取得する
GET https://server.smartlead.ai/api/v1/email-accounts/?api_key=$SMARTLEAD_API_KEY&offset=0&limit=100

id、from_email、from_name、daily_sent_count、warmup_details、is_smtp_success、is_imap_success を含む、すべてのメールアカウントのリストが返されます。

3b:現在使用中のメールボックスを特定する

すべてのキャンペーンを取得します。

GET https://server.smartlead.ai/api/v1/campaigns?api_key=$SMARTLEAD_API_KEY

status = "ACTIVE" または "STARTED" の各キャンペーンについて、メールアカウントを取得します。

GET https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/email-accounts?api_key=$SMARTLEAD_API_KEY

アクティブなキャンペーンに現在割り当てられているすべての email_account_id 値の集合を作成します。

3c: フリーメールボックスをフィルタリングする

メールボックスが「フリー」である条件は、次のとおりです。

  1. その id が 3b のアクティブキャンペーンのセットに含まれていない
  2. is_smtp_success = true かつ is_imap_success = true(アカウントが機能している)

daily_sent_count の昇順でフリーメールボックスを並べ替えます(使用頻度が最も低いメールボックスを優先します)。

3d: 選択して割り当てる

mailbox_selection = "auto" の場合:最初の N 個のフリーメールボックスを選択します。

mailbox_selection = "manual" の場合:すべてのアカウントをテーブル(名前、メールアドレス、daily_sent_count、ステータス)で表示し、ユーザーに選択してもらいます。

N 個未満のフリーメールボックスしかない場合は、ユーザーに「フリーメールボックスが X 個しか見つかりませんでした。X 個で進めますか、それとも現在使用中のメールボックスを選びますか?」と伝えます。

選択したメールボックスを割り当てます。

POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/email-accounts?api_key=$SMARTLEAD_API_KEY

Body:
{
  "email_account_ids": [101, 204, 305, 412, 518]
}
ステップ 4: リードを取り込む
4a: リードリストを解析する

CSV の場合: ファイルを読み取り、列を Smartlead のフィールドにマッピングします。柔軟な列マッチングに対応します。

  • email(必須)— Email、email_address にも一致します
  • first_name — firstname、first、First Name にも一致します
  • last_name — lastname、last、Last Name にも一致します
  • company_name — company、organization、Company にも一致します
  • それ以外の列はすべて custom_fields になります

上流のスキル(person-list JSON)の場合: フィールドをマッピングします。

first_name  <- name.split()[0]
last_name   <- name.split()[1:]
email       <- email
company_name <- company
custom_fields <- { "title": title, "linkedin_url": linkedin_url }
4b: 検証して重複を除去する
  • 有効なメールアドレスがない行を削除します
  • メールアドレスで重複を除去します(最初の項目を残します)
  • 合計行数、有効数、無効数、削除した重複数を報告します
4c: バッチでアップロードする

Smartlead では、1 回の呼び出しにつき最大 100 件のリードを受け付けます。リストを分割し、各バッチについて呼び出します。

POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/leads?api_key=$SMARTLEAD_API_KEY

Body:
{
  "lead_list": [
    {
      "first_name": "Jane",
      "last_name": "Smith",
      "email": "[email protected]",
      "company_name": "Acme Corp",
      "custom_fields": {"title": "CFO"}
    }
  ],
  "settings": {
    "ignore_global_block_list": false,
    "ignore_unsubscribe_list": false,
    "ignore_duplicate_leads_in_other_campaign": false
  }
}

レスポンス:

{
  "ok": true,
  "upload_count": 95,
  "total_leads": 100,
  "already_added_to_campaign": 2,
  "duplicate_count": 1,
  "invalid_email_count": 2,
  "unsubscribed_leads": 0
}

すべてのバッチの合計をユーザーに報告します。

ステップ 5: メールシーケンスを作成する

ステップ 1 でユーザーから提供された情報を基に、2〜3 通のメールシーケンスを作成します。デフォルトの構成は次のとおりです。

メール 1 — 初回のコールドメール(0 日目)

  • 件名:短く、好奇心を引く内容、または相手の課題に関連する内容
  • 本文:3〜5 文。相手の状況に触れ、問題を提示し、解決策を簡潔に紹介して、明確な CTA を提示します
  • {{first_name}} とカスタムフィールドを使ってパーソナライズします

メール 2 — フォローアップ(3 日目)

  • 件名:異なる切り口(指標、事例、具体的な成果)
  • 本文:2〜4 文。価値を追加し、CTA を再提示します
  • 同じスレッドへの返信として送信するには、件名を空欄にします

メール 3 — 最後のメール(8 日目)

  • 件名:簡潔で直接的な内容(「まだ関心はありますか?」「こちらで一区切りにします」)
  • 本文:2〜3 文。相手が忙しいことに触れ、再び連絡できる余地を残し、控えめな CTA を提示します

シーケンス全体を、書式付きのテーブルでユーザーに提示します。承認または編集を待ちます。

ユーザーの承認後、保存します。

POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/sequences?api_key=$SMARTLEAD_API_KEY

Body:
{
  "sequences": [
    {
      "seq_number": 1,
      "seq_delay_details": { "delay_in_days": 0 },
      "seq_variants": [
        {
          "subject": "Subject line here",
          "email_body": "<p>Email body as HTML</p>",
          "variant_label": "A"
        }
      ]
    },
    {
      "seq_number": 2,
      "seq_delay_details": { "delay_in_days": 3 },
      "seq_variants": [
        {
          "subject": "",
          "email_body": "<p>Follow-up body</p>",
          "variant_label": "A"
        }
      ]
    },
    {
      "seq_number": 3,
      "seq_delay_details": { "delay_in_days": 5 },
      "seq_variants": [
        {
          "subject": "",
          "email_body": "<p>Breakup body</p>",
          "variant_label": "A"
        }
      ]
    }
  ]
}

注:2 通目以降のメールで subject を空欄にすると、同じスレッドへの返信として送信されます。

ステップ 6: スケジュールを設定する
POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/schedule?api_key=$SMARTLEAD_API_KEY

Body:
{
  "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,
  "schedule_start_time": "2026-02-25T00:00:00.000Z"
}

days_of_the_week:0=日曜日、1=月曜日、…、6=土曜日です。

ステップ 7: 確認して、必要に応じて開始する

全体の概要を提示します。

Campaign: "Truewind - Accounting Firms - Feb 2026"
Campaign ID: 12345
Leads added: 87 (3 rejected as duplicates)
Email sequence: 3 emails (Day 0, Day 3, Day 8)
Schedule: Mon-Fri, 8am-6pm ET, starting Feb 25
Mailboxes: [email protected], [email protected] (+3 more)
Status: DRAFTED

「キャンペーンを今すぐ開始しますか、それとも下書きのままにしますか?」と尋ねます。

開始する場合:

POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/status?api_key=$SMARTLEAD_API_KEY

Body:
{ "status": "START" }

下書きの場合:何もしません。ユーザーは後から Smartlead の UI で開始できます。

オプション:キャンペーン設定を更新する

トラッキングまたは停止条件を設定する場合は、次を使用します。

POST https://server.smartlead.ai/api/v1/campaigns/{campaign_id}/settings?api_key=$SMARTLEAD_API_KEY

Body:
{
  "track_settings": ["DONT_TRACK_EMAIL_OPEN"],
  "stop_lead_settings": "REPLY_TO_AN_EMAIL",
  "send_as_plain_text": false,
  "follow_up_percentage": 100,
  "enable_ai_esp_matching": true
}

使用可能な 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

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)

プロンプトの例

  • "Truewind 向けに、会計事務所をターゲットとした Smartlead キャンペーンを設定する"
  • "アウトリーチキャンペーンを作成する — リードの CSV ファイルを持っています"
  • "中堅企業の CFO 向けにコールドメールキャンペーンを開始する"
  • "Smartlead で 3 通のメールシーケンスを設定し、空いているメールボックスを 5 つ割り当てる"

メタデータ

metadata:
  requires:
    env: ["SMARTLEAD_API_KEY"]
  cost: "Free (Smartlead API included with plan that has API access)"

コメント