Cold Outreach Skill
/install cold-outreach-skill
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.
This is an orchestration skill. It coordinates upstream skills; it does not replace them.
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)
Install/update with ClawHub:
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
Preflight checks:
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
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_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.
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_KEYand 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_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).
Recommended normalized lead schema:
{
"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.
Personalization object per lead:
{
"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
Apply YC constraints:
- 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.
Required generation payload hygiene:
- 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)
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:
{
"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.
Treat these as explicit constraints in planning and reporting.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install cold-outreach-skill - 安装完成后,直接呼叫该 Skill 的名称或使用
/cold-outreach-skill触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Cold Outreach Skill 是什么?
Orchestrates Apollo, LinkedIn, YC Cold Outreach, and MachFive APIs to source leads, enrich profiles, create personalized B2B outreach sequences ready for sen... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 722 次。
如何安装 Cold Outreach Skill?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install cold-outreach-skill」即可一键安装,无需额外配置。
Cold Outreach Skill 是免费的吗?
是的,Cold Outreach Skill 完全免费(开源免费),可自由下载、安装和使用。
Cold Outreach Skill 支持哪些平台?
Cold Outreach Skill 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Cold Outreach Skill?
由 Hagen Hoferichter(@h4gen)开发并维护,当前版本 v1.0.0。