Build email campaigns - find emails, verify them
Email Campaign - Build Verified Email Lists

Build email campaigns - find emails, verify them, and prepare outreach
---
name: email-campaign
description: Build email campaigns - find emails, verify them, and prepare outreach
source: orthogonal
---
# Email Campaign - Build Verified Email Lists
## Setup
Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```
If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`Overview
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill email-campaign -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/outreach/capabilities/email-campaignNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/3c0a5f8e66b0589665ff/email-campaign.zip" -OutFile "$env:TEMP\email-campaign.zip"; Expand-Archive "$env:TEMP\email-campaign.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md5.0 KBskill.meta.json277 B
Read the files here
gooseworks-ai/
Show the full text154 lines
Email Campaign - Build Verified Email Lists
Setup
Read your credentials from ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
Build targeted email campaigns with verified email addresses and personalized outreach.
Workflow
Step 1: Find Emails by Domain
Get all emails for target companies:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/domain-search","query":{"domain":"stripe.com"}}'
Step 2: Find Specific Person's Email
Find email for specific contacts:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"stripe.com","first_name":"John","last_name":"Doe"}}'
Step 3: Verify Emails
Check deliverability before sending:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}'
Step 4: Batch Verification with Fiber
Validate multiple emails:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/validate-email/single","body":{"email":"[email protected]"}}'
Step 5: Enrich for Personalization
Get info for personalized outreach:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"sixtyfour","path":"/enrich-lead"}'
"lead_info": {
"first_name": "John",
"last_name": "Doe",
"company": "Stripe"
},
"struct": {"email": "Work email", "phone": "Phone number"}
}'
Step 6: Get Company Context
Research company for personalization:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"brand-dev","path":"/v1/brand/retrieve","query":{"domain":"stripe.com"}}'
Campaign Building Pipeline
# 1. Find target companies
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"fiber","path":"/v1/company-search"}'
"searchParams": {
"industries": ["SaaS"],
"employee_count_min": 50,
"employee_count_max": 500
}
}'
# 2. Get emails for each company
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/domain-search","query":{"domain":"company.com"}}'
# 3. Verify each email
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}'
# 4. Enrich for personalization
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"sixtyfour","path":"/enrich-lead","body":{"lead_info":{"first_name":"John","last_name":"Doe","company":"Company"},"struct":{"email":"Work email"}}}'
Tips
- Always verify emails before sending
- Personalize using enrichment data
- Segment by role, industry, or company size
- Track bounces and clean your list
Discover More
List all endpoints, or add a path for parameter details:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"brand-dev API endpoints"}' api show fiber
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"hunter API endpoints"}' api show sixtyfour
Example: curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"olostep","path":"/v1/scrapes"}' for endpoint parameters.
| 1 | |
| 2 | name email-campaign |
| 3 | description Build email campaigns - find emails, verify them, and prepare outreach |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Email Campaign - Build Verified Email Lists |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Build targeted email campaigns with verified email addresses and personalized outreach. |
| 24 | |
| 25 | ## Workflow |
| 26 | |
| 27 | ### Step 1: Find Emails by Domain |
| 28 | Get all emails for target companies: |
| 29 | |
| 30 | |
| 31 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 32 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 33 | -H "Content-Type: application/json" \ |
| 34 | -d '{"api":"hunter","path":"/v2/domain-search","query":{"domain":"stripe.com"}}' |
| 35 | |
| 36 | |
| 37 | ### Step 2: Find Specific Person's Email |
| 38 | Find email for specific contacts: |
| 39 | |
| 40 | |
| 41 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 42 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 43 | -H "Content-Type: application/json" \ |
| 44 | -d '{"api":"hunter","path":"/v2/email-finder","query":{"domain":"stripe.com","first_name":"John","last_name":"Doe"}}' |
| 45 | |
| 46 | |
| 47 | ### Step 3: Verify Emails |
| 48 | Check deliverability before sending: |
| 49 | |
| 50 | |
| 51 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 52 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 53 | -H "Content-Type: application/json" \ |
| 54 | -d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}' |
| 55 | |
| 56 | |
| 57 | ### Step 4: Batch Verification with Fiber |
| 58 | Validate multiple emails: |
| 59 | |
| 60 | |
| 61 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 62 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 63 | -H "Content-Type: application/json" \ |
| 64 | -d '{"api":"fiber","path":"/v1/validate-email/single","body":{"email":"[email protected]"}}' |
| 65 | |
| 66 | |
| 67 | ### Step 5: Enrich for Personalization |
| 68 | Get info for personalized outreach: |
| 69 | |
| 70 | |
| 71 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 72 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 73 | -H "Content-Type: application/json" \ |
| 74 | -d '{"api":"sixtyfour","path":"/enrich-lead"}' |
| 75 | "lead_info": { |
| 76 | "first_name": "John", |
| 77 | "last_name": "Doe", |
| 78 | "company": "Stripe" |
| 79 | }, |
| 80 | "struct": {"email": "Work email", "phone": "Phone number"} |
| 81 | }' |
| 82 | |
| 83 | |
| 84 | ### Step 6: Get Company Context |
| 85 | Research company for personalization: |
| 86 | |
| 87 | |
| 88 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 89 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 90 | -H "Content-Type: application/json" \ |
| 91 | -d '{"api":"brand-dev","path":"/v1/brand/retrieve","query":{"domain":"stripe.com"}}' |
| 92 | |
| 93 | |
| 94 | ## Campaign Building Pipeline |
| 95 | |
| 96 | |
| 97 | # 1. Find target companies |
| 98 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 99 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 100 | -H "Content-Type: application/json" \ |
| 101 | -d '{"api":"fiber","path":"/v1/company-search"}' |
| 102 | "searchParams": { |
| 103 | "industries": ["SaaS"], |
| 104 | "employee_count_min": 50, |
| 105 | "employee_count_max": 500 |
| 106 | } |
| 107 | }' |
| 108 | |
| 109 | # 2. Get emails for each company |
| 110 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 111 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 112 | -H "Content-Type: application/json" \ |
| 113 | -d '{"api":"hunter","path":"/v2/domain-search","query":{"domain":"company.com"}}' |
| 114 | |
| 115 | # 3. Verify each email |
| 116 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 117 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 118 | -H "Content-Type: application/json" \ |
| 119 | -d '{"api":"hunter","path":"/v2/email-verifier","query":{"email":"[email protected]"}}' |
| 120 | |
| 121 | # 4. Enrich for personalization |
| 122 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 123 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 124 | -H "Content-Type: application/json" \ |
| 125 | -d '{"api":"sixtyfour","path":"/enrich-lead","body":{"lead_info":{"first_name":"John","last_name":"Doe","company":"Company"},"struct":{"email":"Work email"}}}' |
| 126 | |
| 127 | |
| 128 | ## Tips |
| 129 | |
| 130 | Always verify emails before sending |
| 131 | Personalize using enrichment data |
| 132 | Segment by role, industry, or company size |
| 133 | Track bounces and clean your list |
| 134 | |
| 135 | ## Discover More |
| 136 | |
| 137 | List all endpoints, or add a path for parameter details: |
| 138 | |
| 139 | |
| 140 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \ |
| 141 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 142 | -H "Content-Type: application/json" \ |
| 143 | -d '{"prompt":"brand-dev API endpoints"}' api show fiber |
| 144 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \ |
| 145 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 146 | -H "Content-Type: application/json" \ |
| 147 | -d '{"prompt":"hunter API endpoints"}' api show sixtyfour |
| 148 | |
| 149 | |
| 150 | Example: `curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \ |
| 151 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 152 | -H "Content-Type: application/json" \ |
| 153 | -d '{"api":"olostep","path":"/v1/scrapes`"}' for endpoint parameters. |
| 154 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 206 listings
Made with email-campaign

Similar skills
See all →
SkillReverse engineer native, managed, Electron/JavaScriptREA
SkillBrainstorms ideas into designs before any creative workBrainstorming Ideas Into Designs
SkillRequires technical rigor and verificationCode Review Reception
SkillDiagnosis loop for hard bugs and performance regressionsDiagnosing bugs
SkillImplement the result of /to-spec and /to-tickets in codeImplement spec
SkillWriting a PR bodyMore from gooseworks-ai
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze ad campaign performance data to identify what'sAd campaign analyzer
SkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzer
SkillAnalyze the message match between your ads and landing pagesAd to landing page auditor
SkillCheck and improve your brand's visibility across AI searchAeo
SkillSearch Amazon products - find items, compare pricesAmazon Product Search