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) - INLINECODE2 (inspected latest:
1.0.2) - INLINECODE4 (inspected latest:
1.0.1) - INLINECODE6 (MachFive Cold Email, inspected latest:
1.0.5)
Install/update with ClawHub:
CODEBLOCK0
Verify availability:
CODEBLOCK1
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) - INLINECODE11 for INLINECODE12
Preflight checks:
CODEBLOCK2
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) - INLINECODE14 : target role (example:
CMO) - INLINECODE16 : target industry (example:
SaaS) - INLINECODE18 : target location (example:
Berlin) - INLINECODE20 (example:
50) - INLINECODE22 : reply, meeting, referral, audit request, etc.
- INLINECODE23 : case studies, metrics, social proof
- INLINECODE24 : plain-English, short, non-salesy
- INLINECODE25 (campaign ID or campaign name to resolve)
- INLINECODE26 :
draft-only or INLINECODE28
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: INLINECODE30
- 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).
- Page until
lead_count_target or quality threshold is reached. - Normalize each lead record to required fields.
- Drop records without email if
generation-ready mode is requested (MachFive requires email).
Recommended normalized lead schema:
CODEBLOCK3
Stage 2: Enrich personalization context
- 1. 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:
CODEBLOCK4
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. - 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, INLINECODE56 - 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:
CODEBLOCK5
Causal Chain (Scenario Mapping)
For the scenario "sell design services to startup marketing leaders":
- 1. 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:
- requested vs qualified lead count
- rejection reasons (missing email, poor fit, duplicate)
- fields successfully enriched
- unavailable fields and why
- one object per lead with subjects/bodies by step
- QA status (
approved or
needs_revision)
- 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
approved when 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-api inspected capability set is not equivalent to unrestricted scraping of arbitrary personal lead activity. - INLINECODE71 generates sequences but does not itself guarantee outbound send scheduling/execution.
- INLINECODE72 provides search/enrichment primitives; email deliverability validation beyond provider fields may require extra tooling.
Treat these as explicit constraints in planning and reporting.
技能名称: cold-outreach-hunter
详细描述:
目的
运行完整的B2B冷启动外联工作流程,从ICP定义到可投入序列的输出。
主要目标:
- - 识别高匹配度的潜在客户。
- 丰富个性化背景信息。
- 生成简洁、非推销式、高回复率的外联序列。
- 返回可供外部发送/调度系统直接使用的资产。
这是一个编排技能。它协调上游技能,而非替代它们。
所需已安装技能
- - apollo-api(已检查最新版本:1.0.5)
- linkedin-api(已检查最新版本:1.0.2)
- yc-cold-outreach(已检查最新版本:1.0.1)
- cold-email(MachFive冷邮件,已检查最新版本:1.0.5)
使用ClawHub安装/更新:
bash
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
验证可用性:
bash
npx -y clawhub@latest list
如果缺少任何所需技能,请停止并报告确切的安装命令。
所需凭证
- - MATONAPIKEY 用于 apollo-api 和 linkedin-api(Maton网关)
- MACHFIVEAPIKEY 用于 cold-email
预检检查:
bash
echo $MATONAPIKEY | wc -c
echo $MACHFIVEAPIKEY | wc -c
如果任一密钥缺失或为空,请在潜在客户处理前停止。
任务上下文模板
在执行前收集以下输入:
- - offer:销售内容(示例:设计服务)
- icptitle:目标角色(示例:CMO)
- icpindustry:目标行业(示例:SaaS)
- icplocation:目标地点(示例:Berlin)
- leadcounttarget(示例:50)
- campaigngoal:回复、会议、推荐、审计请求等。
- proofpoints:案例研究、指标、社会证明
- toneconstraints:简明英语、简短、非推销式
- machfivecampaign(要解析的活动ID或活动名称)
- executionmode:draft-only 或 generation-ready
在这些内容明确之前,不要开始撰写文案。
工具职责
Apollo API (apollo-api)
用于潜在客户发现和基础信息丰富。
来自已检查技能的操作相关行为:
- - 搜索人员:POST /apollo/v1/mixedpeople/apisearch
- 搜索过滤器包括:
- q
persontitle
- person_locations
- q
organizationname
- q_keywords
- - 通过电子邮件或LinkedIn URL丰富人员信息:
- POST /apollo/v1/people/match
- - 支持通过 page 和 per_page 进行分页。
- 使用Maton网关和可选的 Maton-Connection 标头。
此阶段的主要输出:
- - 包含角色/公司/电子邮件/linkedin_url(如可用)的初始潜在客户列表
LinkedIn API (linkedin-api)
用于通过提供的端点获取LinkedIn侧上下文。
来自已检查技能的操作相关行为:
- - 已验证的个人资料/用户信息端点(用于已连接账户上下文)。
- 内容/发布API(ugcPosts)和组织发布/统计API。
- 需要 MATONAPIKEY 和LinkedIn协议标头。
重要边界:
- - 已检查的技能不是用于任意第三方个人资料和近期个人帖子的通用抓取工具。
- 如果工作流程需要对每个潜在客户进行深度个人帖子丰富,请标记为需要额外工具。
YC冷启动外联 (yc-cold-outreach)
用作写作策略/评审框架,而非传输API。
要执行的核心原则:
- - 每封邮件一个目标
- 人性化语气
- 深度个性化(不仅仅是替换令牌)
- 简洁/移动端可读性
- 可信度和证明
- 以读者为中心的语言
- 明确的行动号召
MachFive冷邮件 (cold-email)
用于根据准备好的潜在客户记录生成序列。
来自已检查技能的操作相关行为:
- - 需要活动(campaignid 对于生成端点是必需的)。
- 单个潜在客户同步生成(/generate)可能需要几分钟;使用长超时。
- 批量异步生成(/generate-batch)返回 listid;轮询列表状态;完成后导出。
- 潜在客户 email 是必需的。
- 支持每个步骤包含主题/正文的结构化序列输出。
规范工作流程
阶段1:构建潜在客户池(Apollo)
- 1. 查询Apollo以获取受ICP约束的潜在客户(示例:CMO + SaaS + Berlin)。
- 分页直到达到 leadcounttarget 或质量阈值。
- 将每个潜在客户记录规范化为所需字段。
- 如果请求 generation-ready 模式,则删除没有电子邮件的记录(MachFive需要电子邮件)。
推荐的规范化潜在客户模式:
json
{
lead_id: apollo-or-derived-id,
name: Anna Example,
title: Chief Marketing Officer,
company: Startup GmbH,
location: Berlin,
email: anna@startup.com,
linkedin_url: https://linkedin.com/in/...,
source: apollo-api
}
阶段2:丰富个性化上下文
- 1. 在支持的端点内尝试LinkedIn/API丰富。
- 如果无法获取直接的个人帖子信号,则将上下文槽位明确标记为 not_available。
- 可选地从Apollo字段(公司、角色、关键词、域名上下文)丰富,以避免虚假个性化。
每个潜在客户的个性化对象:
json
{
icebreaker: notavailableorverifiedfact,
pain_hypothesis: Likely CRO bottleneck in paid landing pages,
proof_hook: Helped X improve conversion by Y%,
confidence: 0.0
}
硬性规则:
阶段3:消息策略(YC框架)
对于每个潜在客户,在生成文案前创建策略简报:
- - 问题:该角色可能面临的具体痛点
- 解决方案:你的产品如何解决
- 证明:一个具体的指标/客户信号
- 行动号召:一个低摩擦的下一步
应用YC约束:
- - 一个请求
- 简短/移动优先
- 人性化语言
- 基于可验证上下文的个性化
阶段4:序列生成(MachFive)
- 1. 如果未提供,首先解析活动ID(GET /api/v1/campaigns)。
- 提交包含所需电子邮件字段的潜在客户。
- 对于大量潜在客户,优先使用批量方式;轮询直到完成。
- 导出JSON结果并将序列映射回潜在客户ID。
所需的生成负载卫生:
- - 包含 name、title、company、email
- 如可用,包含 linkedinurl 和 companywebsite
- 有意设置 email_count(通常为3)
- 使用与活动目标一致且经批准的行动号召集
阶段5:质量保证与决策门控
在声明输出就绪之前,验证每个序列:
- - 个性化事实性检查
- YC标准检查(人性化、简洁、一个行动号召)
- 令牌插入合理性检查(姓名/公司/标题正确)
- 禁止声明检查(无捏造的证明)
任何未通过检查的序列必须标记为 needs_revision。
阶段6:调度与发送交接
此元技能输出可发送的推荐,而非直接发送自动化。
如果用户要求时间优化(例如周二10:00),则将其作为调度推荐字段和交接计划返回。
示例交接对象:
json
{
lead_id: ...,
sequence_status: approved,
suggestedsendtime_local: Tuesday 10:00,
timezone: Europe/Berlin,
send_system: external,
notes: Timing is recommendation-only; execution tool must schedule/send.
}
因果链(场景映射)
对于“向初创公司营销负责人销售设计服务”的场景:
- 1. Apollo返回目标潜在客户(示例目标:柏林SaaS领域的50位CMO)。
- LinkedIn/API丰富尝试为每个潜在客户添加可用上下文。
- YC框架将潜在客户上下文转化为简洁的问题→解决方案→证明→行动号召角度。
- MachFive生成包含已验证变量的多步骤序列。
- 智能体输出:
- 已批准的序列
- 每个潜在客户的质量