Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

setup-outreach-campaign设置外展活动

Agent Skill

setup-outreach-campaign 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,497

周安装

63

GitHub Stars

1

下载量

524
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:setup-outreach-campaign(设置外展活动)
来源仓库:https://github.com/nikiandr/goose-skills
仓库路径:skills/setup-outreach-campaign
安装命令:
npx skills add https://github.com/nikiandr/goose-skills --skill setup-outreach-campaign
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

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

简介

支持外展活动相关的信息检索与策略制定辅助。

  • 适用于 Codex、Claude、Cursor、Gemini CLI 中需要市场或用户触达分析的场景。
  • 通过 npx skills add 命令从 goose-skills 仓库安装。
  • 可能涉及第三方数据接口调用,需确认授权范围和频率限制。
  • 注意隐私合规要求,避免处理未经脱敏的用户数据。

SKILL.md

setup-outreach-campaign

Set up a complete outbound email campaign in Smartlead: create the campaign, add leads, write a 2-3 email sequence, configure the schedule, and allocate mailboxes.

Inputs

InputRequiredDefaultDescription
campaign_nameYes--Name for the campaign (e.g., "Truewind - Accounting Firms - Feb 2026")
campaign_goalYes--What outcome the campaign drives (book demos, drive signups, etc.)
lead_listYes--CSV file path OR person-list JSON from upstream skill
value_propositionYes--Core pain point or benefit the emails address
ctaYes--Call to action (e.g., "Book a 15-min demo", "Reply to learn more")
toneNosemi-formalEmail tone: casual, semi-formal, formal
personalization_angleNo--Hook for personalization (event attendance, job posting, news mention)
timezoneNoAmerica/New_YorkTimezone for send schedule
send_daysNo[1,2,3,4,5]Days of week to send (0=Sun, 6=Sat)
start_hourNo08:00Start of send window
end_hourNo18:00End of send window
max_leads_per_dayNo20Max new leads contacted per day
min_time_btw_emailsNo10Minutes between emails from same mailbox
num_mailboxesNo5Number of mailboxes to allocate
mailbox_selectionNoauto"auto" (pick free ones) or "manual" (show list to user)

Setup

Requires a Smartlead account with API access.

export SMARTLEAD_API_KEY=your_api_key_here

All API calls go to https://server.smartlead.ai/api/v1 with ?api_key=$SMARTLEAD_API_KEY appended.

Rate limit: 10 requests per 2 seconds.

Procedure

Step 1: Gather Campaign Info

Ask the user the following questions. Group them conversationally — don't dump all at once.

Campaign identity:

  • "What is the name for this campaign?" (e.g., "Truewind - Accounting Firms - Feb 2026")
  • "What is the goal?" (e.g., book demos, drive trial signups, conference follow-up)

Audience & leads:

  • "Who is the target audience?" (ICP: title, company type, size, industry)
  • "How are you providing the lead list?" — options: CSV file, output from a prior skill (company-contact-finder, luma-event-attendees), or "I need to find leads first" (chain to company-contact-finder)

Messaging:

  • "What is the core value proposition or pain point?"
  • "What is the call to action?" (e.g., "Book a 15-min demo")
  • "What tone — casual, semi-formal, or formal?"
  • "Any personalization angle?" (e.g., reference their job posting, event, industry news)

Schedule:

  • "What days should emails be sent?" (default: Mon-Fri)
  • "What hours and timezone?" (default: 8am-6pm ET)
  • "Max new leads per day?" (default: 20)
  • "When should the campaign start?" (default: tomorrow)

Mailboxes:

  • "How many mailboxes to allocate?" (default: 5)
  • "Auto-select free mailboxes, or show me a list to choose from?"

After gathering answers, present a summary and confirm before proceeding.

Step 2: Create the Campaign

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

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

Response:

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

Capture campaign_id from id. All subsequent calls use this.

Step 3: Find and Allocate Mailboxes

This step determines which mailboxes are available and assigns them to the campaign.

3a: Fetch all email accounts

GET https://server.smartlead.ai/api/v1/email-accounts/?api_key=$SMARTLEAD_API_KEY&offset=0&limit=100

Returns a list of all email accounts with id, from_email, from_name, daily_sent_count, warmup_details, is_smtp_success, is_imap_success.

3b: Identify which mailboxes are currently in use

Fetch all campaigns:

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

For each campaign with status = "ACTIVE" or "STARTED", fetch its email accounts:

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

Build a set of all email_account_id values currently assigned to active campaigns.

3c: Filter for free mailboxes

A mailbox is "free" if:

  1. Its id is NOT in the active-campaign set from 3b
  2. is_smtp_success = true AND is_imap_success = true (account is functional)

Sort free mailboxes by daily_sent_count ascending (prefer coolest/least-used mailboxes).

3d: Select and assign

If mailbox_selection = "auto": select the first N free mailboxes.

If mailbox_selection = "manual": display all accounts as a table (name, email, daily_sent_count, status) and let the user pick.

If fewer than N free mailboxes are available, tell the user: "Only X free mailboxes found. Proceed with X, or pick some currently-in-use mailboxes?"

Assign selected mailboxes:

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]
}

Step 4: Ingest Leads

4a: Parse the lead list

From CSV: Read the file, map columns to Smartlead fields. Flexible column matching:

  • email (required) — also matches Email, email_address
  • first_name — also matches firstname, first, First Name
  • last_name — also matches lastname, last, Last Name
  • company_name — also matches company, organization, Company
  • Any extra columns become custom_fields

From upstream skill (person-list JSON): Map fields:

first_name  <- name.split()[0]
last_name   <- name.split()[1:]
email       <- email
company_name <- company
custom_fields <- { "title": title, "linkedin_url": linkedin_url }

4b: Validate and deduplicate

  • Remove rows without a valid email
  • Deduplicate by email (keep first occurrence)
  • Report: total rows, valid, invalid, duplicates removed

4c: Upload in batches

Smartlead accepts max 100 leads per call. Chunk the list and call for each batch:

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": "jane@example.com",
      "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
  }
}

Response:

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

Report totals across all batches to the user.

Step 5: Craft the Email Sequence

Write a 2-3 email sequence based on the user's inputs from Step 1. Default structure:

Email 1 — Cold intro (Day 0)

  • Subject: short, curiosity-driven or relevant to their pain
  • Body: 3-5 sentences. Acknowledge their world, surface the problem, introduce the solution briefly, clear CTA
  • Personalize with {{first_name}} and any custom fields

Email 2 — Follow-up (Day 3)

  • Subject: different angle (metric, case study, specific outcome)
  • Body: 2-4 sentences. Add value, restate CTA
  • Leave subject blank to send as same-thread reply

Email 3 — Breakup (Day 8)

  • Subject: brief, direct ("Still relevant?", "Closing the loop")
  • Body: 2-3 sentences. Acknowledge they're busy, keep door open, soft CTA

Present the full sequence to the user as a formatted table. Wait for approval or edits.

After user approves, save:

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"
        }
      ]
    }
  ]
}

Note: blank subject on emails 2+ makes them send as replies in the same thread.

Step 6: Set the Schedule

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=Sunday, 1=Monday,..., 6=Saturday.

Step 7: Confirm and Optionally Start

Present a full summary:

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: jane@truewind.ai, alex@truewind.ai (+3 more)
Status: DRAFTED

Ask: "Do you want to START the campaign now, or leave it as a draft?"

If start:

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

Body:
{ "status": "START" }

If draft: skip. User can start from Smartlead UI later.

Optional: Update Campaign Settings

If the user wants to configure tracking or stop conditions, use:

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
}

Allowed track_settings: DONT_TRACK_EMAIL_OPEN, DONT_TRACK_LINK_CLICK, DONT_TRACK_REPLY_TO_AN_EMAIL Allowed stop_lead_settings: REPLY_TO_AN_EMAIL, CLICK_ON_A_LINK, OPEN_AN_EMAIL

Smartlead API Reference

All endpoints use base URL https://server.smartlead.ai/api/v1 with ?api_key= query param.

EndpointMethodPurpose
/campaigns/createPOSTCreate a new campaign
/campaignsGETList all campaigns
/campaigns/{id}GETGet campaign by ID
/campaigns/{id}/schedulePOSTSet campaign schedule
/campaigns/{id}/settingsPOSTUpdate tracking/stop settings
/campaigns/{id}/sequencesPOSTSave email sequences
/campaigns/{id}/leadsPOSTAdd leads (max 100 per call)
/campaigns/{id}/email-accountsGETList mailboxes on a campaign
/campaigns/{id}/email-accountsPOSTAssign mailboxes to campaign
/campaigns/{id}/statusPOSTChange campaign status (START/PAUSED/STOPPED)
/campaigns/{id}/analyticsGETTop-level campaign analytics
/email-accounts/GETList all email accounts (offset/limit)

Example Prompts

  • "Set up a Smartlead campaign for Truewind targeting accounting firms"
  • "Create an outreach campaign — I have a CSV of leads"
  • "Launch a cold email campaign to CFOs at mid-market companies"
  • "Set up a 3-email sequence in Smartlead and allocate 5 free mailboxes"

Metadata

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

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.42%
按下载量换算191

Claude

28.15%
按下载量换算148

Cursor

17.06%
按下载量换算89

Gemini CLI

8.76%
按下载量换算46

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills