mcpField
S
setup-outreach-campaign

setup-outreach-campaign

github.com/nikiandr营销与增长194 次安装31 周前更新
代码仓库

关于 setup-outreach-campaign

用于在 Smartlead 中设置外联邮件活动,涵盖导入潜在客户、分配邮箱、编写邮件序列、安排发送及选择是否启动。流程会收集活动信息,并在保存邮件序列前征求确认。

主要功能

  1. 01创建 Smartlead 活动
  2. 02导入并验证潜在客户名单
  3. 03筛选并分配邮箱
  4. 04编写 2–3 封邮件序列
  5. 05配置发送时间表
  6. 06启动活动或保留草稿

适用场景

  1. 01将 CSV 名单转为邮件活动
  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

详细介绍

setup-outreach-campaign

在 Smartlead 中设置完整的外发邮件营销活动:创建营销活动、添加潜在客户、编写 2-3 封邮件序列、配置发送计划并分配邮箱。

输入

输入必填默认值描述
campaign_name是--营销活动的名称(例如,“Truewind - 会计事务所 - 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否20每天联系的新潜在客户上限
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 - 会计事务所 - Feb 2026”)
  • “目标是什么?”(例如,预约演示、推动试用注册、会后跟进)

受众和潜在客户:

  • “目标受众是谁?”(ICP:职位、公司类型、规模、行业)
  • “你将如何提供潜在客户名单?”——选项:CSV 文件、之前某项技能的输出(company-contact-finder、luma-event-attendees),或“我需要先寻找潜在客户”(转至 company-contact-finder)

信息传达:

  • “核心价值主张或痛点是什么?”
  • “行动号召是什么?”(例如,“预约 15 分钟演示”)
  • “希望采用哪种语气——casual、semi-formal 还是 formal?”
  • “有个性化切入点吗?”(例如,提及对方的招聘信息、参加的活动或行业新闻)

计划安排:

  • “应该在星期几发送邮件?”(默认:周一至周五)
  • “发送时间和时区是什么?”(默认:美国东部时间上午 8 点至下午 6 点)
  • “每天联系的新潜在客户上限是多少?”(默认: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。后续所有调用都使用此 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 每次调用最多接受 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 句话。理解对方的处境,指出问题,简要介绍解决方案,并给出明确的行动号召
  • 使用 {{first_name}} 和任何自定义字段进行个性化

邮件 2 — 跟进(第 3 天)

  • 主题:换个角度(指标、案例研究、具体成果)
  • 正文:2-4 句话。提供价值,重申行动号召
  • 将主题留空,可作为同一邮件线程中的回复发送

邮件 3 — 最后跟进(第 8 天)

  • 主题:简短直接(“还相关吗?”、“最后确认一下”)
  • 正文:2-3 句话。体谅对方繁忙,保持沟通渠道畅通,以温和的方式提出行动号召

将完整序列整理成格式化表格,呈现给用户。等待用户批准或提出修改意见。

用户批准后,保存:

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= 查询参数传入 API 密钥。

端点方法用途
/campaigns/createPOST创建新营销活动
/campaignsGET列出所有营销活动
/campaigns/{id}GET按 ID 获取营销活动
/campaigns/{id}/schedulePOST设置营销活动日程
/campaigns/{id}/settingsPOST更新跟踪/停止设置
/campaigns/{id}/sequencesPOST保存电子邮件序列
/campaigns/{id}/leadsPOST添加潜在客户(每次调用最多 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)"

评论

支持 Markdown