create-image-fal
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Set up a complete outbound email campaign in Smartlead. Asks the user for campaign goal, audience, messaging, schedule, and mailbox allocation. Creates the campaign, adds leads, saves email sequences, sets schedule, and assigns available mailboxes. Use when a user wants to
$ npx -y skills add gooseworks-ai/goose-skills --skill setup-outreach-campaign-smartlead --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/setup-outreach-campaign-smartleadContext preview
The summary Claude sees to decide when to auto-load this skill.
Set up a complete outbound email campaign in Smartlead. Asks the user for campaign goal, audience, messaging, schedule, and mailbox allocation. Creates the campaign, adds leads, saves email sequences, sets schedule, and assigns available mailboxes. Use when a user wants to
name: setup-outreach-campaign-smartlead
description: >
Set up a complete outbound email campaign in Smartlead. Asks the user for
campaign goal, audience, messaging, schedule, and mailbox allocation.
Creates the campaign, adds leads, saves email sequences, sets schedule,
and assigns available mailboxes. Use when a user wants to launch email
outreach via Smartlead.
tags: [outreach]
graph:
provides:
- smartlead-campaign
- email-sequence
requires:
- lead-list
connects_to:
- skill: company-contact-finder
when: "User doesn't have a lead list and needs to find contacts first"
passes: nothing (upstream source)
- skill: contact-cache
when: "Before adding leads, deduplicate against already-contacted leads"
passes: lead-list (emails)
- skill: luma-event-attendees
when: "User wants event attendees as the lead source"
passes: person-list
- skill: conference-speaker-scraper
when: "User wants conference speakers as the lead source"
passes: person-list
capabilities: [smartlead-api]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.
| Input | Required | Default | Description | |-------|----------|---------|-------------| | campaign_name | Yes | -- | Name for the campaign (e.g., "Truewind - Accounting Firms - Feb 2026") | | campaign_goal | Yes | -- | What outcome the campaign drives (book demos, drive signups, etc.) | | lead_list | Yes | -- | CSV file path OR person-list JSON from upstream skill | | value_proposition | Yes | -- | Core pain point or benefit the emails address | | cta | Yes | -- | Call to action (e.g., "Book a 15-min demo", "Reply to learn more") | | tone | No | semi-formal | Email tone: casual, semi-formal, formal | | personalization_angle | No | -- | Hook for personalization (event attendance, job posting, news mention) | | timezone | No | America/New_York | Timezone for send schedule | | send_days | No | [1,2,3,4,5] | Days of week to send (0=Sun, 6=Sat) | | start_hour | No | 08:00 | Start of send window | | end_hour | No | 18:00 | End of send window | | max_leads_per_day | No | 20 | Max new leads contacted per day | | min_time_btw_emails | No | 10 | Minutes between emails from same mailbox | | num_mailboxes | No | 5 | Number of mailboxes to allocate | | mailbox_selection | No | auto | "auto" (pick free ones) or "manual" (show list to user) |
Requires a Smartlead account with API access. **This skill does not use the Gooseworks proxy** — the user must supply their own Smartlead API key.
export SMARTLEAD_API_KEY=your_api_key_here
You can find your API key in the Smartlead dashboard under **Settings → API Keys**. If `SMARTLEAD_API_KEY` is not set, ask the user for it before proceeding.
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.
Ask the user the following questions. Group them conversationally — don't dump all at once.
**Campaign identity:**
**Audience & leads:**
**Messaging:**
**Schedule:**
**Mailboxes:**
After gathering answers, present a summary and confirm before proceeding.
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.
This step determines which mailboxes are available and assigns them to the campaign.
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`.
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_KEYBuild a set of all `email_account_id` values currently assigned to active campaigns.
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).
If `mailbox_selecti
Put your AI agent on the growth team. Research customers and competitors, analyze what is working, create the next campaign, and learn from the result.
Repo: gooseworks-ai/goose-skills
Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent. image_urls…
Generate a single photoreal or designed image with OpenAI gpt-image via fal.ai. Supports gpt-image-1 (default, fixed sizes — the FAL fallback for Higgsfield's…
Generate an instrumental music bed via ElevenLabs Music, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Trims any sparse intro, loudnorm, fades…
Image-to-video (or text-to-video) via any FAL video model (Kling, Seedance, Veo), ROUTED THROUGH THE GooseWorks fal-proxy so the call bills the Ads agent. The…
Generate a voiceover (VO) clip via ElevenLabs text-to-speech, ROUTED THROUGH THE elevenlabs-proxy so it bills the Ads agent. Voice id + script text come from…
Scrape competitor ads from Google Ads by domain. Returns ad creatives, formats, and campaign details. Use for competitive ad research and messaging analysis.