← Back to Skills Marketplace
dru-ca

ABM Outbound

by dru-ca · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
3285
Downloads
2
Stars
6
Active Installs
1
Versions
Install in OpenClaw
/install abm-outbound
Description
Multi-channel ABM automation that turns LinkedIn URLs into coordinated outbound campaigns. Scrapes profiles, enriches with Apollo (email + phone), gets mailing addresses via Skip Trace, then orchestrates email sequences, LinkedIn touches, and handwritten letters via Scribeless. The secret weapon for standing out in crowded inboxes.
README (SKILL.md)

ABM Outbound

Turn LinkedIn prospect lists into multi-channel outbound: email sequences, LinkedIn touches, and handwritten letters.

Prerequisites

Service Purpose Sign Up
Apify LinkedIn scraping, Skip Trace apify.com
Apollo Email & phone enrichment apollo.io
Scribeless Handwritten letters platform.scribeless.co
Instantly (optional) Dedicated cold email instantly.ai
export APIFY_API_KEY="your_key"
export APOLLO_API_KEY="your_key"
export SCRIBELESS_API_KEY="your_key"

Pipeline

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  1. INPUT   │───▶│  2. SCRAPE  │───▶│  3. ENRICH  │───▶│  4. ADDRESS │───▶│ 5. OUTREACH │
│  LinkedIn   │    │  Profiles   │    │ Email/Phone │    │ Skip Trace  │    │             │
│    URLs     │    │             │    │             │    │             │    │             │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
   Your list          Apify             Apollo            Apify PFI        Email +
                                                                          LinkedIn +
                                                                          Scribeless

Step 1: Gather LinkedIn URLs

Provide a list of LinkedIn profile URLs from:

  • LinkedIn Sales Navigator exports
  • LinkedIn search scrapers
  • CRM exports
  • Manual prospecting
linkedin_url
https://linkedin.com/in/johndoe
https://linkedin.com/in/janesmith

Step 2: Scrape LinkedIn Profiles

curl -X POST "https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "profileUrls": [
      "https://linkedin.com/in/johndoe",
      "https://linkedin.com/in/janesmith"
    ]
  }'

Returns: First name, last name, company, title, location.

Step 3: Enrich with Apollo (Email & Phone)

curl -X POST "https://api.apollo.io/api/v1/people/bulk_match" \
  -H "X-Api-Key: $APOLLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reveal_personal_emails": true,
    "reveal_phone_number": true,
    "details": [{
      "first_name": "John",
      "last_name": "Doe",
      "organization_name": "Acme Corp",
      "linkedin_url": "https://linkedin.com/in/johndoe"
    }]
  }'

Returns: Work email, phone numbers.

Step 4: Get Mailing Address (Skip Trace)

curl -X POST "https://api.apify.com/v2/acts/one-api~skip-trace/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": ["John Doe"]}'

Returns: Street address, city, state, postal code.

Important: Verify Skip Trace state matches LinkedIn location.

Step 5: Multi-Channel Outreach

5a: Email Sequence

Option 1: Apollo Sequences (Recommended)

curl -X POST "https://api.apollo.io/api/v1/emailer_campaigns/add_contact_ids" \
  -H "X-Api-Key: $APOLLO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emailer_campaign_id": "YOUR_SEQUENCE_ID",
    "contact_ids": ["CONTACT_ID_1", "CONTACT_ID_2"],
    "send_email_from_email_account_id": "YOUR_EMAIL_ACCOUNT_ID"
  }'

Option 2: Instantly.ai

curl -X POST "https://api.instantly.ai/api/v1/lead/add" \
  -H "Authorization: Bearer $INSTANTLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "YOUR_CAMPAIGN_ID",
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Doe",
    "company_name": "Acme Corp",
    "personalization": "Saw Acme just expanded to UK"
  }'

Option 3: CSV Upload

email,first_name,last_name,company,title,phone,personalization
[email protected],John,Doe,Acme Corp,VP Marketing,555-1234,Saw Acme just expanded to UK

5b: LinkedIn Sequence

  • Day 1: View profile
  • Day 2: Connection request with personalized note
  • Day 4: Follow-up message if connected
  • Day 7: Engage with their content

5c: Handwritten Letter (Scribeless)

Create campaign at platform.scribeless.co, then add recipients:

curl -X POST "https://platform.scribeless.co/api/recipients" \
  -H "X-API-Key: $SCRIBELESS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "campaignId": "YOUR_CAMPAIGN_ID",
    "data": {
      "firstName": "John",
      "lastName": "Doe",
      "company": "Acme Corp",
      "address": {
        "address1": "123 Main St",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94102",
        "country": "US"
      },
      "variables": {
        "custom1": "Saw Acme just expanded to the UK — congrats!"
      }
    }
  }'

See references/scribeless-api.md for full API details.

Coordinated Timing

Day Email LinkedIn Letter
1 View profile Letter sent
3 Connection request
5 "Got my note?" Letter arrives
7 Value email Message if connected
10 Case study
14 Break-up Engage content

The play: Letter lands → Email references it → LinkedIn reinforces.

Complete Workflow

# 1. Start with LinkedIn URLs
linkedin_urls = load_csv("prospects.csv")

# 2. Scrape profiles
profiles = apify_linkedin_scrape(linkedin_urls)

# 3. Enrich with Apollo
for profile in profiles:
    enriched = apollo_bulk_match(profile)
    profile['email'] = enriched['email']
    profile['phone'] = enriched['phone']

# 4. Get mailing addresses
for profile in profiles:
    address = skip_trace(profile['name'])
    if address['state'] == profile['linkedin_state']:
        profile['address'] = address
        profile['mailable'] = True

# 5. Push to channels
push_to_email_tool(profiles)
push_to_scribeless(profiles, campaign_id)
export_for_linkedin(profiles)

Output Format

first_name,last_name,email,phone,company,title,address1,city,state,postal,country,linkedin,mailable
John,Doe,[email protected],555-1234,Acme Corp,VP Marketing,123 Main St,San Francisco,CA,94102,US,linkedin.com/in/johndoe,TRUE

Best Practices

  1. Verify addresses — Skip Trace state should match LinkedIn location
  2. Personalize everything — Company news, job changes, shared connections
  3. Coordinate timing — Letter lands before "did you get my note?" email
  4. Start small — Test with 20-50 prospects before scaling
  5. Track by channel — Know which channel drives replies
Usage Guidance
This skill describes a legitimate multi-service ABM pipeline, but it contains several red flags you should address before use: (1) the SKILL.md requires multiple API keys (Apify, Apollo, Scribeless, optional Instantly) but the skill metadata does not declare those env vars — confirm what credentials the skill will actually use and store. (2) The workflow collects sensitive PII (personal emails and home mailing addresses via Skip Trace). Verify legal/regulatory compliance (GDPR, CCPA), LinkedIn terms of service, and your organization's privacy policy before using these lookups. (3) Because the skill source and homepage are unknown, prefer not to provide high-privilege or long-lived API keys; instead use limited-scope or test keys and monitor activity. (4) Consider requesting the author/publisher or source code (or a homepage) and check for an audit/logging policy so you can review what the agent does before letting it run autonomously. If you must test, run only with a small, consented sample and with manual approval at each step.
Capability Analysis
Type: OpenClaw Skill Name: abm-outbound Version: 1.0.0 The skill is classified as suspicious due to its inherent high-risk capabilities involving the collection and transmission of sensitive Personally Identifiable Information (PII), including names, emails, phone numbers, and home addresses, to multiple external third-party services. While this behavior is aligned with the stated purpose of multi-channel ABM automation, the extensive handling of PII and reliance on external APIs (apify.com, apollo.io, instantly.ai, scribeless.co) represents a meaningful high-risk activity from a data privacy and security perspective. There is no evidence of intentional malicious behavior, prompt injection, or unauthorized data exfiltration beyond the stated purpose.
Capability Assessment
Purpose & Capability
The skill's steps (Apify scraping, Apollo enrichment, Skip Trace for mailing addresses, Scribeless for letters) align with the ABM description — these services are appropriate for the stated purpose. However, the registry metadata declares no required environment variables or primary credential even though SKILL.md explicitly instructs the user/agent to export APIFY_API_KEY, APOLLO_API_KEY, SCRIBELESS_API_KEY (and optional INSTANTLY_API_KEY). That metadata/instruction mismatch is an incoherence: the skill will need several third-party API keys but does not declare them.
Instruction Scope
The runtime instructions are precise and stay within the stated workflow: scrape LinkedIn via Apify, call Apollo to reveal emails/phones, call a Skip Trace to obtain home mailing addresses, and add recipients to Scribeless. All network calls target the services named in the prerequisites. Important behavioral notes: the skill encourages retrieving personal emails (reveal_personal_emails: true) and home addresses from public records — this collects highly sensitive PII beyond business contact data and may raise ToS, privacy, and regulatory issues (e.g., LinkedIn terms, GDPR/CCPA). The instructions do not instruct the agent to read unrelated local files or secrets, nor to exfiltrate data to unknown endpoints.
Install Mechanism
Instruction-only skill with no install spec or code files. This is low risk from an install/execution perspective because nothing is downloaded or written by automatic install.
Credentials
The SKILL.md requires multiple sensitive API keys (APIFY_API_KEY, APOLLO_API_KEY, SCRIBELESS_API_KEY, optional INSTANTLY_API_KEY) but the skill metadata lists no required env vars or primary credential. Asking for multiple service API keys is proportionate to a multi-service ABM pipeline, but the omission in metadata is an inconsistency and increases risk because users may not realize how many credentials will be used. Also, the skill explicitly requests actions that will reveal personal emails and home addresses — the level of sensitive data requested is high and should be carefully justified and limited.
Persistence & Privilege
The skill does not request permanent/automatic presence (always:false), has no install-time config, and contains no code that modifies other skills or system-wide settings. Model invocation is allowed (default), which means an agent could call the described APIs autonomously — this is expected behavior for skills but combined with the above concerns (sensitive data + unknown author) raises practical risk if the agent is allowed to act without human review.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install abm-outbound
  3. After installation, invoke the skill by name or use /abm-outbound
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release
Metadata
Slug abm-outbound
Version 1.0.0
License
All-time Installs 6
Active Installs 6
Total Versions 1
Frequently Asked Questions

What is ABM Outbound?

Multi-channel ABM automation that turns LinkedIn URLs into coordinated outbound campaigns. Scrapes profiles, enriches with Apollo (email + phone), gets mailing addresses via Skip Trace, then orchestrates email sequences, LinkedIn touches, and handwritten letters via Scribeless. The secret weapon for standing out in crowded inboxes. It is an AI Agent Skill for Claude Code / OpenClaw, with 3285 downloads so far.

How do I install ABM Outbound?

Run "/install abm-outbound" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is ABM Outbound free?

Yes, ABM Outbound is completely free (open-source). You can download, install and use it at no cost.

Which platforms does ABM Outbound support?

ABM Outbound is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created ABM Outbound?

It is built and maintained by dru-ca (@dru-ca); the current version is v1.0.0.

💬 Comments