智能邮件营销管理工具

一个用于管理冷邮件营销活动、潜在客户、电子邮件账户、序列、分析、Webhooks和客户子账户的CLI和MCP服务器工具。

  • by bcharleson
  • TypeScript
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 bcharleson/smartlead-cli

使用说明

smartblead-cli

CLI和MCP服务器 Smartlead.ai API通过MCP从终端或任何AI代理管理冷电子邮件活动、潜在客户、电子邮件帐户、序列、分析、webhooks和客户端子帐户。

安装

npm install -g @bcharleson/smartlead-cli

验证

# Option 1: environment variable (recommended for agents and CI)
export SMARTLEAD_API_KEY="your_api_key_here"

# Option 2: interactive login (stores to ~/.smartlead-cli/config.json)
smartlead login

# Option 3: per-command flag
smartlead campaigns list --api-key "your_api_key_here"

从获取API密钥 智能引领→ 设置→ API密钥.

快速开始

# List all campaigns
smartlead campaigns list

# Create a campaign
smartlead campaigns create --name "Q1 Outreach"

# Add leads to a campaign
smartlead leads add-to-campaign --campaign-id 456 \
  --lead-list '[{"email":"ceo@acme.com","first_name":"John","company_name":"Acme"}]'

# Activate a campaign
smartlead campaigns update-status 456 --status ACTIVE

# Get campaign analytics
smartlead analytics campaign-stats --campaign-id 456

MCP设置(AI代理)

添加到MCP客户端配置中(例如。 ~/.claude.json 或克劳德桌面 settings.json):

{
  "mcpServers": {
    "smartlead": {
      "command": "npx",
      "args": ["-y", "@bcharleson/smartlead-cli", "mcp"],
      "env": {
        "SMARTLEAD_API_KEY": "your_api_key_here"
      }
    }
  }
}

或者,如果全局安装:

{
  "mcpServers": {
    "smartlead": {
      "command": "smartlead",
      "args": ["mcp"],
      "env": {
        "SMARTLEAD_API_KEY": "your_api_key_here"
      }
    }
  }
}

所有41个CLI命令都可以立即作为MCP工具使用。工具名称使用snake_case: campaigns_list, leads_add_to_campaign, analytics_overview等等。

输出

默认情况下,所有命令都将紧凑的JSON输出到stdout,为管道和代理解析做好准备。

# Compact JSON (default)
smartlead campaigns list
# → [{"id":123,"name":"Q1 Outreach","status":"ACTIVE",...}]

# Pretty-printed
smartlead campaigns list --pretty

# Filter fields
smartlead campaigns list --fields id,name,status

# Suppress output (exit code only)
smartlead campaigns create --name "Test" --quiet

错误以JSON格式转到stderr: {"error":"...","code":"AUTH_ERROR"}

退出代码: 0 成功· 1 错误

命令

campaigns

命令 描述
list 列出所有活动
get <id> 按ID获取活动
create 创建活动(从草稿状态开始)
update-status <id> 设置状态: ACTIVE, PAUSED, STOPPED
update-settings <id> 跟踪、停止规则、取消订阅文本、AI ESP匹配
schedule <id> 时区、天数、小时数、每日最大潜在客户数
delete <id> 删除活动(不可逆)
smartlead campaigns create --name "Cold Outreach Q2"
smartlead campaigns schedule 456 \
  --timezone "America/New_York" \
  --days-of-week "[1,2,3,4,5]" \
  --start-hour "08:00" \
  --end-hour "17:00" \
  --max-leads-per-day 50
smartlead campaigns update-status 456 --status ACTIVE

sequences

命令 描述
get <campaign_id> 获取所有包含变量和延迟的步骤
save <campaign_id> 替换整个序列(一次替换所有步骤)
smartlead sequences save 456 --sequences '[
  {
    "seq_number": 1,
    "seq_delay_details": {"delay_in_days": 0},
    "variant_distribution_type": "MANUAL_EQUAL",
    "variants": [{
      "subject": "Quick question, {{first_name}}",
      "email_body": "<p>Hi {{first_name}},</p><p>...</p>",
      "variant_label": "A"
    }]
  },
  {
    "seq_number": 2,
    "seq_delay_details": {"delay_in_days": 3},
    "variant_distribution_type": "MANUAL_EQUAL",
    "variants": [{
      "subject": "Following up",
      "email_body": "<p>Just checking in...</p>",
      "variant_label": "A"
    }]
  }
]'

注: save 替换整个序列。始终发送所有步骤。

email-accounts

命令 描述
list 列出所有电子邮件帐户
get <id> 通过ID获取帐户
create 添加SMTP/IMAP帐户
update <id> 更新帐户设置
update-warmup <id> 配置预热(启用、每日音量、加速)
warmup-stats <id> 过去7天的热身统计数据
list-campaign 列出活动的帐户
add-to-campaign 为活动分配帐户
remove-from-campaign 从活动中删除帐户
smartlead email-accounts create \
  --from-name "John Smith" \
  --from-email "john@yourdomain.com" \
  --username "john@yourdomain.com" \
  --password "app_password" \
  --smtp-host "smtp.gmail.com" \
  --smtp-port 587 \
  --imap-host "imap.gmail.com" \
  --imap-port 993

smartlead email-accounts add-to-campaign --campaign-id 456 --account-id 789
smartlead email-accounts update-warmup 789 --warmup-enabled --total-warmup-per-day 20 --daily-rampup 2

leads

命令 描述
get-by-email 通过电子邮件在所有营销活动中查找潜在客户
list-campaign 列出活动中的潜在客户(分页)
add-to-campaign 将潜在客户JSON数组添加到活动中
update 更新潜在客户字段
pause 暂停发送给潜在客户
resume 恢复暂停的潜在客户
unsubscribe-campaign 取消订阅一个活动
unsubscribe-global 全球取消订阅(所有活动)
delete 从活动中删除潜在客户
get-campaigns 获取潜在客户参与的所有活动
add-domain-block 阻止整个域
export 将潜在客户导出为CSV
# Add multiple leads at once
smartlead leads add-to-campaign --campaign-id 456 --lead-list '[
  {"email":"ceo@acme.com","first_name":"John","last_name":"Smith","company_name":"Acme Corp"},
  {"email":"vp@globex.com","first_name":"Jane","company_name":"Globex"}
]'

# Pause a lead
smartlead leads pause --campaign-id 456 --lead-id 789

# Block a domain
smartlead leads add-domain-block --domain "competitor.com"

序列中的模板变量: {{first_name}}, {{last_name}}, {{company_name}}, {{email}}, {{custom_field_name}}

inbox

命令 描述
message-history 活动中潜在客户的完整电子邮件线索
reply 通过主收件箱回复潜在客户
smartlead inbox message-history --campaign-id 456 --lead-id 789
smartlead inbox reply \
  --campaign-id 456 \
  --lead-id 789 \
  --email-body "<p>Thanks for your reply! Let's connect.</p>" \
  --email-stats-id 111 \
  --reply-message-id "abc123@mail.gmail.com"

analytics

命令 描述
campaign-stats 打开、点击、回复、跳出摘要
campaign-analytics 顶级性能指标
campaign-analytics-by-date 按日期范围列出的时间序列数据
lead-stats 铅漏斗:感兴趣、正在进行、已完成等。
smartlead analytics campaign-stats --campaign-id 456
smartlead analytics campaign-analytics-by-date \
  --campaign-id 456 \
  --start-date "2024-01-01" \
  --end-date "2024-01-31"

webhooks

命令 描述
list --campaign-id <id> 列出活动中的webhooks
create 创建webhook
update <id> 更新webhook
delete <id> 删除webhook
smartlead webhooks create \
  --name "Reply Notifications" \
  --url "https://your-server.com/hook" \
  --events "EMAIL_REPLIED,EMAIL_BOUNCED,LEAD_UNSUBSCRIBED"

可用事件: EMAIL_OPENED, EMAIL_CLICKED, EMAIL_REPLIED, EMAIL_BOUNCED, LEAD_UNSUBSCRIBED, LEAD_CATEGORY_UPDATED, SEQUENCE_COMPLETED

clients (代理/白标)

命令 描述
list 列出所有客户子账户
save 创建或更新客户端
list-api-keys 列出客户端API密钥
create-api-key 生成新的API密钥
delete-api-key <id> 删除API密钥
reset-api-key <id> 重新生成API密钥
smartlead clients save \
  --name "Acme Corp" \
  --email "admin@acme.com" \
  --password "securepass123"

smartlead clients create-api-key --client-id 123 --key-name "Production"

完整的活动启动工作流程

# 1. Create campaign
CAMPAIGN=$(smartlead campaigns create --name "Q2 Outreach" | jq -r '.id')

# 2. Schedule
smartlead campaigns schedule $CAMPAIGN \
  --timezone "America/Chicago" \
  --days-of-week "[1,2,3,4,5]" \
  --start-hour "09:00" \
  --end-hour "17:00" \
  --max-leads-per-day 40 \
  --min-time-between-emails 15

# 3. Configure settings
smartlead campaigns update-settings $CAMPAIGN \
  --track-settings '["DONT_LINK_CLICK"]' \
  --unsubscribe-text "Unsubscribe"

# 4. Assign email account
smartlead email-accounts add-to-campaign \
  --campaign-id $CAMPAIGN --account-id 789

# 5. Save sequence
smartlead sequences save $CAMPAIGN --sequences '[
  {"seq_number":1,"seq_delay_details":{"delay_in_days":0},"variant_distribution_type":"MANUAL_EQUAL","variants":[{"subject":"{{first_name}}, quick thought on {{company_name}}","email_body":"<p>Hi {{first_name}},</p><p>Noticed {{company_name}} is...</p>","variant_label":"A"}]},
  {"seq_number":2,"seq_delay_details":{"delay_in_days":3},"variant_distribution_type":"MANUAL_EQUAL","variants":[{"subject":"Re: {{first_name}}, quick thought on {{company_name}}","email_body":"<p>Wanted to follow up...</p>","variant_label":"A"}]},
  {"seq_number":3,"seq_delay_details":{"delay_in_days":5},"variant_distribution_type":"MANUAL_EQUAL","variants":[{"subject":"Last touch","email_body":"<p>I'll leave you alone after this...</p>","variant_label":"A"}]}
]'

# 6. Import leads
smartlead leads add-to-campaign --campaign-id $CAMPAIGN \
  --lead-list '[{"email":"ceo@target.com","first_name":"Sarah","company_name":"Target Co"}]'

# 7. Launch
smartlead campaigns update-status $CAMPAIGN --status ACTIVE

# 8. Monitor
smartlead analytics campaign-stats --campaign-id $CAMPAIGN --pretty

API 参考

  • 基本URL: https://server.smartlead.ai/api/v1
  • 认证: ?api_key=<key> 查询参数(自动注入)
  • 速率限制:10个请求/2秒(通过回退自动重试)
  • 完整文档: api.smartlead.ai

许可证

麻省理工学院