Cold Outreach Skill
Meta-skill for orchestrating Apollo API, LinkedIn API, YC Cold Outreach, and MachFive Cold Email int
- Rating
- 4.4 (472 reviews)
- Downloads
- 12,819 downloads
- Version
- 1.0.0
Overview
Meta-skill for orchestrating Apollo API, LinkedIn API, YC Cold Outreach, and MachFive Cold Email into a complete.
Complete Documentation
View Source →
Purpose
Run a full B2B cold outreach workflow from ICP definition to sequence-ready output.
Primary objective:
- Identify high-fit leads.
- Enrich context for personalization.
- Produce concise, non-salesy, high-response outreach sequences.
- Return execution-ready assets for external sending/scheduling systems.
Required Installed Skills
apollo-api(inspected latest:1.0.5)linkedin-api(inspected latest:1.0.2)yc-cold-outreach(inspected latest:1.0.1)cold-email(MachFive Cold Email, inspected latest:1.0.5)
npx -y clawhub@latest install apollo-api
npx -y clawhub@latest install linkedin-api
npx -y clawhub@latest install yc-cold-outreach
npx -y clawhub@latest install cold-email
npx -y clawhub@latest update --all
Verify availability:
npx -y clawhub@latest list
If any required skill is missing, stop and report exact install commands.
Required Credentials
MATON_API_KEYforapollo-apiandlinkedin-api(Maton gateway)MACHFIVE_API_KEYforcold-email
echo "$MATON_API_KEY" | wc -c
echo "$MACHFIVE_API_KEY" | wc -c
If either key is missing or empty, stop before lead processing.
Job Context Template
Collect these inputs before execution:
offer: what is being sold (example: design service)icp_title: target role (example:CMO)icp_industry: target industry (example:SaaS)icp_location: target location (example:Berlin)lead_count_target(example:50)campaign_goal: reply, meeting, referral, audit request, etc.proof_points: case studies, metrics, social prooftone_constraints: plain-English, short, non-salesymachfive_campaign(campaign ID or campaign name to resolve)execution_mode:draft-onlyorgeneration-ready
Tool Responsibilities
Apollo API (apollo-api)
Use for lead discovery and basic enrichment.
Operationally relevant behavior from inspected skill:
- Search people:
POST /apollo/v1/mixed_people/api_search - Search filters include:
q_person_titleperson_locationsq_organization_nameq_keywords- Enrich person by email or LinkedIn URL:
POST /apollo/v1/people/match- Supports pagination via
pageandper_page. - Uses Maton gateway and optional
Maton-Connectionheader.
- initial lead list with role/company/email/linkedin_url (when available)
LinkedIn API (linkedin-api)
Use for LinkedIn-side context where accessible through provided endpoints.
Operationally relevant behavior from inspected skill:
- Authenticated profile/user info endpoints (for connected account context).
- Content/posting APIs (
ugcPosts) and organization post/stat APIs. - Requires
MATON_API_KEYand LinkedIn protocol headers.
- The inspected skill is not a generic scraper for arbitrary third-party personal profiles and recent personal posts.
- If a workflow requires deep per-lead personal-post enrichment, mark that as additional-tool-required.
YC Cold Outreach (yc-cold-outreach)
Use as writing strategy/critique framework, not as a transport API.
Core principles to enforce:
- single goal per email
- human tone
- deep personalization (not just token replacement)
- brevity/mobile readability
- credibility and proof
- reader-centric language
- clear CTA
MachFive Cold Email (cold-email)
Use for sequence generation from prepared lead records.
Operationally relevant behavior from inspected skill:
- Campaign required (
campaign_idmandatory for generate endpoints). - Single lead sync generation (
/generate) can take minutes; use long timeout. - Batch async generation (
/generate-batch) returnslist_id; poll list status; export when complete. - Lead
emailis required. - Supports structured sequence output with subject/body per step.
Canonical Workflow
Stage 1: Build lead universe (Apollo)
- Query Apollo for ICP-constrained leads (example: CMO + SaaS + Berlin).
- Page until
lead_count_targetor quality threshold is reached. - Normalize each lead record to required fields.
- Drop records without email if
generation-readymode is requested (MachFive requires email).
{
"lead_id": "apollo-or-derived-id",
"name": "Anna Example",
"title": "Chief Marketing Officer",
"company": "Startup GmbH",
"location": "Berlin",
"email": "[email protected]",
"linkedin_url": "https://linkedin.com/in/...",
"source": "apollo-api"
}
Stage 2: Enrich personalization context
- Attempt LinkedIn/API enrichment within supported endpoints.
- If direct personal-post signal is unavailable, keep the context slot explicit as
not_available. - Optionally enrich from Apollo fields (company, role, keywords, domain context) to avoid fake personalization.
{
"icebreaker": "not_available_or_verified_fact",
"pain_hypothesis": "Likely CRO bottleneck in paid landing pages",
"proof_hook": "Helped X improve conversion by Y%",
"confidence": 0.0
}
Hard rule:
- Never invent a post, interest, or quote.
Stage 3: Message strategy (YC framework)
For each lead, create a strategy brief before generating copy:
- Problem: what specific pain this role likely has
- Solution: what your offer solves
- Proof: one concrete metric/client signal
- CTA: one low-friction next step
- one ask
- short/mobile-first
- human language
- personalization grounded in verifiable context
Stage 4: Sequence generation (MachFive)
- Resolve campaign ID first (
GET /api/v1/campaigns) if not provided. - Submit leads with required email field.
- Prefer batch for many leads; poll until completion.
- Export JSON result and map sequences back to lead IDs.
- include
name,title,company,email - include
linkedin_urlandcompany_websitewhen available - set
email_countintentionally (usually 3) - use approved CTA set aligned with campaign goal
Stage 5: QA and decision gate
Before declaring output ready, validate each sequence:
- personalization factuality check
- YC rubric check (human, concise, one CTA)
- token insertion sanity (name/company/title correct)
- prohibited claims check (no fabricated proof)
needs_revision.Stage 6: Scheduling and send handoff
This meta-skill outputs send-ready recommendations, not direct send automation.
If user asks for timing optimization (for example Tuesday 10:00), return it as a scheduling recommendation field and handoff plan.
Example handoff object:
{
"lead_id": "...",
"sequence_status": "approved",
"suggested_send_time_local": "Tuesday 10:00",
"timezone": "Europe/Berlin",
"send_system": "external",
"notes": "Timing is recommendation-only; execution tool must schedule/send."
}
Causal Chain (Scenario Mapping)
For the scenario "sell design services to startup marketing leaders":
- Apollo returns target leads (example target: 50 CMOs in Berlin SaaS).
- LinkedIn/API enrichment attempts to add usable context per lead.
- YC framework converts lead context into a concise Problem → Solution → Proof → CTA angle.
- MachFive generates multi-step sequences with validated variables.
- Agent outputs:
- approved sequences
- quality score per lead
- scheduling recommendation (example: Tuesday 10:00 local)
Output Contract
Always return these sections:
LeadSummary- requested vs qualified lead count
- rejection reasons (missing email, poor fit, duplicate)
EnrichmentSummary- fields successfully enriched
- unavailable fields and why
SequencePackage- one object per lead with subjects/bodies by step
- QA status (
approvedorneeds_revision) ExecutionPlan- send-time recommendation
- required external sender/scheduler
- blockers (missing campaign, missing API key, missing email)
Guardrails
- Never fabricate personalization facts.
- Never claim a lead posted something unless sourced and verifiable.
- Do not proceed to MachFive generation without campaign ID resolution.
- Do not mark sequence
approvedwhen CTA is unclear or multiple asks exist. - Keep language non-manipulative and compliant with outreach policies.
Failure Handling
- Missing
MATON_API_KEY: stop Apollo/LinkedIn stages. - Missing
MACHFIVE_API_KEY: stop generation stage and return draft-only strategy. - Missing campaign ID: list campaigns and request explicit selection.
- Batch timeout/partial output: continue via list status + export recovery flow.
- Insufficient lead quality: return reduced high-quality set instead of forcing volume.
Known Limits from Inspected Upstream Skills
linkedin-apiinspected capability set is not equivalent to unrestricted scraping of arbitrary personal lead activity.cold-emailgenerates sequences but does not itself guarantee outbound send scheduling/execution.apollo-apiprovides search/enrichment primitives; email deliverability validation beyond provider fields may require extra tooling.
Installation
openclaw install cold-outreach-skill
💻Code Examples
npx -y clawhub@latest list
If any required skill is missing, stop and report exact install commands.
# Required Credentials
- `MATON_API_KEY` for `apollo-api` and `linkedin-api` (Maton gateway)
- `MACHFIVE_API_KEY` for `cold-email`
Preflight checks:echo "$MACHFIVE_API_KEY" | wc -c
If either key is missing or empty, stop before lead processing.
# Job Context Template
Collect these inputs before execution:
- `offer`: what is being sold (example: design service)
- `icp_title`: target role (example: `CMO`)
- `icp_industry`: target industry (example: `SaaS`)
- `icp_location`: target location (example: `Berlin`)
- `lead_count_target` (example: `50`)
- `campaign_goal`: reply, meeting, referral, audit request, etc.
- `proof_points`: case studies, metrics, social proof
- `tone_constraints`: plain-English, short, non-salesy
- `machfive_campaign` (campaign ID or campaign name to resolve)
- `execution_mode`: `draft-only` or `generation-ready`
Do not start writing copy until these are explicit.
# Tool Responsibilities
## Apollo API (`apollo-api`)
Use for lead discovery and basic enrichment.
Operationally relevant behavior from inspected skill:
- Search people: `POST /apollo/v1/mixed_people/api_search`
- Search filters include:
- `q_person_title`
- `person_locations`
- `q_organization_name`
- `q_keywords`
- Enrich person by email or LinkedIn URL:
- `POST /apollo/v1/people/match`
- Supports pagination via `page` and `per_page`.
- Uses Maton gateway and optional `Maton-Connection` header.
Primary output of this stage:
- initial lead list with role/company/email/linkedin_url (when available)
## LinkedIn API (`linkedin-api`)
Use for LinkedIn-side context where accessible through provided endpoints.
Operationally relevant behavior from inspected skill:
- Authenticated profile/user info endpoints (for connected account context).
- Content/posting APIs (`ugcPosts`) and organization post/stat APIs.
- Requires `MATON_API_KEY` and LinkedIn protocol headers.
Important boundary:
- The inspected skill is not a generic scraper for arbitrary third-party personal profiles and recent personal posts.
- If a workflow requires deep per-lead personal-post enrichment, mark that as additional-tool-required.
## YC Cold Outreach (`yc-cold-outreach`)
Use as writing strategy/critique framework, not as a transport API.
Core principles to enforce:
- single goal per email
- human tone
- deep personalization (not just token replacement)
- brevity/mobile readability
- credibility and proof
- reader-centric language
- clear CTA
## MachFive Cold Email (`cold-email`)
Use for sequence generation from prepared lead records.
Operationally relevant behavior from inspected skill:
- Campaign required (`campaign_id` mandatory for generate endpoints).
- Single lead sync generation (`/generate`) can take minutes; use long timeout.
- Batch async generation (`/generate-batch`) returns `list_id`; poll list status; export when complete.
- Lead `email` is required.
- Supports structured sequence output with subject/body per step.
# Canonical Workflow
## Stage 1: Build lead universe (Apollo)
1. Query Apollo for ICP-constrained leads (example: CMO + SaaS + Berlin).
2. Page until `lead_count_target` or quality threshold is reached.
3. Normalize each lead record to required fields.
4. Drop records without email if `generation-ready` mode is requested (MachFive requires email).
Recommended normalized lead schema:}
## Stage 2: Enrich personalization context
1. Attempt LinkedIn/API enrichment within supported endpoints.
2. If direct personal-post signal is unavailable, keep the context slot explicit as `not_available`.
3. Optionally enrich from Apollo fields (company, role, keywords, domain context) to avoid fake personalization.
Personalization object per lead:}
Hard rule:
- Never invent a post, interest, or quote.
## Stage 3: Message strategy (YC framework)
For each lead, create a strategy brief before generating copy:
- Problem: what specific pain this role likely has
- Solution: what your offer solves
- Proof: one concrete metric/client signal
- CTA: one low-friction next step
Apply YC constraints:
- one ask
- short/mobile-first
- human language
- personalization grounded in verifiable context
## Stage 4: Sequence generation (MachFive)
1. Resolve campaign ID first (`GET /api/v1/campaigns`) if not provided.
2. Submit leads with required email field.
3. Prefer batch for many leads; poll until completion.
4. Export JSON result and map sequences back to lead IDs.
Required generation payload hygiene:
- include `name`, `title`, `company`, `email`
- include `linkedin_url` and `company_website` when available
- set `email_count` intentionally (usually 3)
- use approved CTA set aligned with campaign goal
## Stage 5: QA and decision gate
Before declaring output ready, validate each sequence:
- personalization factuality check
- YC rubric check (human, concise, one CTA)
- token insertion sanity (name/company/title correct)
- prohibited claims check (no fabricated proof)
Any failed sequence must be flagged `needs_revision`.
## Stage 6: Scheduling and send handoff
This meta-skill outputs send-ready recommendations, not direct send automation.
If user asks for timing optimization (for example Tuesday 10:00), return it as a scheduling recommendation field and handoff plan.
Example handoff object:npx -y clawhub@latest install apollo-api
npx -y clawhub@latest install linkedin-api
npx -y clawhub@latest install yc-cold-outreach
npx -y clawhub@latest install cold-email
npx -y clawhub@latest update --all{
"lead_id": "apollo-or-derived-id",
"name": "Anna Example",
"title": "Chief Marketing Officer",
"company": "Startup GmbH",
"location": "Berlin",
"email": "[email protected]",
"linkedin_url": "https://linkedin.com/in/...",
"source": "apollo-api"
}{
"icebreaker": "not_available_or_verified_fact",
"pain_hypothesis": "Likely CRO bottleneck in paid landing pages",
"proof_hook": "Helped X improve conversion by Y%",
"confidence": 0.0
}{
"lead_id": "...",
"sequence_status": "approved",
"suggested_send_time_local": "Tuesday 10:00",
"timezone": "Europe/Berlin",
"send_system": "external",
"notes": "Timing is recommendation-only; execution tool must schedule/send."
}Tags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.