{
  "schemaVersion": "1.0",
  "item": {
    "slug": "abm-outbound",
    "name": "ABM Outbound",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/dru-ca/abm-outbound",
    "canonicalUrl": "https://clawhub.ai/dru-ca/abm-outbound",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/abm-outbound",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=abm-outbound",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/enrichment.md",
      "references/scribeless-api.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/abm-outbound"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/abm-outbound",
    "agentPageUrl": "https://openagent3.xyz/skills/abm-outbound/agent",
    "manifestUrl": "https://openagent3.xyz/skills/abm-outbound/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/abm-outbound/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "ABM Outbound",
        "body": "Turn LinkedIn prospect lists into multi-channel outbound: email sequences, LinkedIn touches, and handwritten letters."
      },
      {
        "title": "Prerequisites",
        "body": "ServicePurposeSign UpApifyLinkedIn scraping, Skip Traceapify.comApolloEmail & phone enrichmentapollo.ioScribelessHandwritten lettersplatform.scribeless.coInstantly (optional)Dedicated cold emailinstantly.ai\n\nexport APIFY_API_KEY=\"your_key\"\nexport APOLLO_API_KEY=\"your_key\"\nexport SCRIBELESS_API_KEY=\"your_key\""
      },
      {
        "title": "Pipeline",
        "body": "┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐\n│  1. INPUT   │───▶│  2. SCRAPE  │───▶│  3. ENRICH  │───▶│  4. ADDRESS │───▶│ 5. OUTREACH │\n│  LinkedIn   │    │  Profiles   │    │ Email/Phone │    │ Skip Trace  │    │             │\n│    URLs     │    │             │    │             │    │             │    │             │\n└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘\n   Your list          Apify             Apollo            Apify PFI        Email +\n                                                                          LinkedIn +\n                                                                          Scribeless"
      },
      {
        "title": "Step 1: Gather LinkedIn URLs",
        "body": "Provide a list of LinkedIn profile URLs from:\n\nLinkedIn Sales Navigator exports\nLinkedIn search scrapers\nCRM exports\nManual prospecting\n\nlinkedin_url\nhttps://linkedin.com/in/johndoe\nhttps://linkedin.com/in/janesmith"
      },
      {
        "title": "Step 2: Scrape LinkedIn Profiles",
        "body": "curl -X POST \"https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/run-sync-get-dataset-items\" \\\n  -H \"Authorization: Bearer $APIFY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"profileUrls\": [\n      \"https://linkedin.com/in/johndoe\",\n      \"https://linkedin.com/in/janesmith\"\n    ]\n  }'\n\nReturns: First name, last name, company, title, location."
      },
      {
        "title": "Step 3: Enrich with Apollo (Email & Phone)",
        "body": "curl -X POST \"https://api.apollo.io/api/v1/people/bulk_match\" \\\n  -H \"X-Api-Key: $APOLLO_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"reveal_personal_emails\": true,\n    \"reveal_phone_number\": true,\n    \"details\": [{\n      \"first_name\": \"John\",\n      \"last_name\": \"Doe\",\n      \"organization_name\": \"Acme Corp\",\n      \"linkedin_url\": \"https://linkedin.com/in/johndoe\"\n    }]\n  }'\n\nReturns: Work email, phone numbers."
      },
      {
        "title": "Step 4: Get Mailing Address (Skip Trace)",
        "body": "curl -X POST \"https://api.apify.com/v2/acts/one-api~skip-trace/run-sync-get-dataset-items\" \\\n  -H \"Authorization: Bearer $APIFY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": [\"John Doe\"]}'\n\nReturns: Street address, city, state, postal code.\n\nImportant: Verify Skip Trace state matches LinkedIn location."
      },
      {
        "title": "5a: Email Sequence",
        "body": "Option 1: Apollo Sequences (Recommended)\n\ncurl -X POST \"https://api.apollo.io/api/v1/emailer_campaigns/add_contact_ids\" \\\n  -H \"X-Api-Key: $APOLLO_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"emailer_campaign_id\": \"YOUR_SEQUENCE_ID\",\n    \"contact_ids\": [\"CONTACT_ID_1\", \"CONTACT_ID_2\"],\n    \"send_email_from_email_account_id\": \"YOUR_EMAIL_ACCOUNT_ID\"\n  }'\n\nOption 2: Instantly.ai\n\ncurl -X POST \"https://api.instantly.ai/api/v1/lead/add\" \\\n  -H \"Authorization: Bearer $INSTANTLY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"campaign_id\": \"YOUR_CAMPAIGN_ID\",\n    \"email\": \"john@acme.com\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"company_name\": \"Acme Corp\",\n    \"personalization\": \"Saw Acme just expanded to UK\"\n  }'\n\nOption 3: CSV Upload\n\nemail,first_name,last_name,company,title,phone,personalization\njohn@acme.com,John,Doe,Acme Corp,VP Marketing,555-1234,Saw Acme just expanded to UK"
      },
      {
        "title": "5b: LinkedIn Sequence",
        "body": "Day 1: View profile\nDay 2: Connection request with personalized note\nDay 4: Follow-up message if connected\nDay 7: Engage with their content"
      },
      {
        "title": "5c: Handwritten Letter (Scribeless)",
        "body": "Create campaign at platform.scribeless.co, then add recipients:\n\ncurl -X POST \"https://platform.scribeless.co/api/recipients\" \\\n  -H \"X-API-Key: $SCRIBELESS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"campaignId\": \"YOUR_CAMPAIGN_ID\",\n    \"data\": {\n      \"firstName\": \"John\",\n      \"lastName\": \"Doe\",\n      \"company\": \"Acme Corp\",\n      \"address\": {\n        \"address1\": \"123 Main St\",\n        \"city\": \"San Francisco\",\n        \"state\": \"CA\",\n        \"postalCode\": \"94102\",\n        \"country\": \"US\"\n      },\n      \"variables\": {\n        \"custom1\": \"Saw Acme just expanded to the UK — congrats!\"\n      }\n    }\n  }'\n\nSee references/scribeless-api.md for full API details."
      },
      {
        "title": "Coordinated Timing",
        "body": "DayEmailLinkedInLetter1—View profileLetter sent3—Connection request—5\"Got my note?\"—Letter arrives7Value emailMessage if connected—10Case study——14Break-upEngage content—\n\nThe play: Letter lands → Email references it → LinkedIn reinforces."
      },
      {
        "title": "Complete Workflow",
        "body": "# 1. Start with LinkedIn URLs\nlinkedin_urls = load_csv(\"prospects.csv\")\n\n# 2. Scrape profiles\nprofiles = apify_linkedin_scrape(linkedin_urls)\n\n# 3. Enrich with Apollo\nfor profile in profiles:\n    enriched = apollo_bulk_match(profile)\n    profile['email'] = enriched['email']\n    profile['phone'] = enriched['phone']\n\n# 4. Get mailing addresses\nfor profile in profiles:\n    address = skip_trace(profile['name'])\n    if address['state'] == profile['linkedin_state']:\n        profile['address'] = address\n        profile['mailable'] = True\n\n# 5. Push to channels\npush_to_email_tool(profiles)\npush_to_scribeless(profiles, campaign_id)\nexport_for_linkedin(profiles)"
      },
      {
        "title": "Output Format",
        "body": "first_name,last_name,email,phone,company,title,address1,city,state,postal,country,linkedin,mailable\nJohn,Doe,john@acme.com,555-1234,Acme Corp,VP Marketing,123 Main St,San Francisco,CA,94102,US,linkedin.com/in/johndoe,TRUE"
      },
      {
        "title": "Best Practices",
        "body": "Verify addresses — Skip Trace state should match LinkedIn location\nPersonalize everything — Company news, job changes, shared connections\nCoordinate timing — Letter lands before \"did you get my note?\" email\nStart small — Test with 20-50 prospects before scaling\nTrack by channel — Know which channel drives replies"
      }
    ],
    "body": "ABM Outbound\n\nTurn LinkedIn prospect lists into multi-channel outbound: email sequences, LinkedIn touches, and handwritten letters.\n\nPrerequisites\nService\tPurpose\tSign Up\nApify\tLinkedIn scraping, Skip Trace\tapify.com\nApollo\tEmail & phone enrichment\tapollo.io\nScribeless\tHandwritten letters\tplatform.scribeless.co\nInstantly (optional)\tDedicated cold email\tinstantly.ai\nexport APIFY_API_KEY=\"your_key\"\nexport APOLLO_API_KEY=\"your_key\"\nexport SCRIBELESS_API_KEY=\"your_key\"\n\nPipeline\n┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐\n│  1. INPUT   │───▶│  2. SCRAPE  │───▶│  3. ENRICH  │───▶│  4. ADDRESS │───▶│ 5. OUTREACH │\n│  LinkedIn   │    │  Profiles   │    │ Email/Phone │    │ Skip Trace  │    │             │\n│    URLs     │    │             │    │             │    │             │    │             │\n└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘\n   Your list          Apify             Apollo            Apify PFI        Email +\n                                                                          LinkedIn +\n                                                                          Scribeless\n\nStep 1: Gather LinkedIn URLs\n\nProvide a list of LinkedIn profile URLs from:\n\nLinkedIn Sales Navigator exports\nLinkedIn search scrapers\nCRM exports\nManual prospecting\nlinkedin_url\nhttps://linkedin.com/in/johndoe\nhttps://linkedin.com/in/janesmith\n\nStep 2: Scrape LinkedIn Profiles\ncurl -X POST \"https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/run-sync-get-dataset-items\" \\\n  -H \"Authorization: Bearer $APIFY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"profileUrls\": [\n      \"https://linkedin.com/in/johndoe\",\n      \"https://linkedin.com/in/janesmith\"\n    ]\n  }'\n\n\nReturns: First name, last name, company, title, location.\n\nStep 3: Enrich with Apollo (Email & Phone)\ncurl -X POST \"https://api.apollo.io/api/v1/people/bulk_match\" \\\n  -H \"X-Api-Key: $APOLLO_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"reveal_personal_emails\": true,\n    \"reveal_phone_number\": true,\n    \"details\": [{\n      \"first_name\": \"John\",\n      \"last_name\": \"Doe\",\n      \"organization_name\": \"Acme Corp\",\n      \"linkedin_url\": \"https://linkedin.com/in/johndoe\"\n    }]\n  }'\n\n\nReturns: Work email, phone numbers.\n\nStep 4: Get Mailing Address (Skip Trace)\ncurl -X POST \"https://api.apify.com/v2/acts/one-api~skip-trace/run-sync-get-dataset-items\" \\\n  -H \"Authorization: Bearer $APIFY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": [\"John Doe\"]}'\n\n\nReturns: Street address, city, state, postal code.\n\nImportant: Verify Skip Trace state matches LinkedIn location.\n\nStep 5: Multi-Channel Outreach\n5a: Email Sequence\n\nOption 1: Apollo Sequences (Recommended)\n\ncurl -X POST \"https://api.apollo.io/api/v1/emailer_campaigns/add_contact_ids\" \\\n  -H \"X-Api-Key: $APOLLO_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"emailer_campaign_id\": \"YOUR_SEQUENCE_ID\",\n    \"contact_ids\": [\"CONTACT_ID_1\", \"CONTACT_ID_2\"],\n    \"send_email_from_email_account_id\": \"YOUR_EMAIL_ACCOUNT_ID\"\n  }'\n\n\nOption 2: Instantly.ai\n\ncurl -X POST \"https://api.instantly.ai/api/v1/lead/add\" \\\n  -H \"Authorization: Bearer $INSTANTLY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"campaign_id\": \"YOUR_CAMPAIGN_ID\",\n    \"email\": \"john@acme.com\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"company_name\": \"Acme Corp\",\n    \"personalization\": \"Saw Acme just expanded to UK\"\n  }'\n\n\nOption 3: CSV Upload\n\nemail,first_name,last_name,company,title,phone,personalization\njohn@acme.com,John,Doe,Acme Corp,VP Marketing,555-1234,Saw Acme just expanded to UK\n\n5b: LinkedIn Sequence\nDay 1: View profile\nDay 2: Connection request with personalized note\nDay 4: Follow-up message if connected\nDay 7: Engage with their content\n5c: Handwritten Letter (Scribeless)\n\nCreate campaign at platform.scribeless.co, then add recipients:\n\ncurl -X POST \"https://platform.scribeless.co/api/recipients\" \\\n  -H \"X-API-Key: $SCRIBELESS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"campaignId\": \"YOUR_CAMPAIGN_ID\",\n    \"data\": {\n      \"firstName\": \"John\",\n      \"lastName\": \"Doe\",\n      \"company\": \"Acme Corp\",\n      \"address\": {\n        \"address1\": \"123 Main St\",\n        \"city\": \"San Francisco\",\n        \"state\": \"CA\",\n        \"postalCode\": \"94102\",\n        \"country\": \"US\"\n      },\n      \"variables\": {\n        \"custom1\": \"Saw Acme just expanded to the UK — congrats!\"\n      }\n    }\n  }'\n\n\nSee references/scribeless-api.md for full API details.\n\nCoordinated Timing\nDay\tEmail\tLinkedIn\tLetter\n1\t—\tView profile\tLetter sent\n3\t—\tConnection request\t—\n5\t\"Got my note?\"\t—\tLetter arrives\n7\tValue email\tMessage if connected\t—\n10\tCase study\t—\t—\n14\tBreak-up\tEngage content\t—\n\nThe play: Letter lands → Email references it → LinkedIn reinforces.\n\nComplete Workflow\n# 1. Start with LinkedIn URLs\nlinkedin_urls = load_csv(\"prospects.csv\")\n\n# 2. Scrape profiles\nprofiles = apify_linkedin_scrape(linkedin_urls)\n\n# 3. Enrich with Apollo\nfor profile in profiles:\n    enriched = apollo_bulk_match(profile)\n    profile['email'] = enriched['email']\n    profile['phone'] = enriched['phone']\n\n# 4. Get mailing addresses\nfor profile in profiles:\n    address = skip_trace(profile['name'])\n    if address['state'] == profile['linkedin_state']:\n        profile['address'] = address\n        profile['mailable'] = True\n\n# 5. Push to channels\npush_to_email_tool(profiles)\npush_to_scribeless(profiles, campaign_id)\nexport_for_linkedin(profiles)\n\nOutput Format\nfirst_name,last_name,email,phone,company,title,address1,city,state,postal,country,linkedin,mailable\nJohn,Doe,john@acme.com,555-1234,Acme Corp,VP Marketing,123 Main St,San Francisco,CA,94102,US,linkedin.com/in/johndoe,TRUE\n\nBest Practices\nVerify addresses — Skip Trace state should match LinkedIn location\nPersonalize everything — Company news, job changes, shared connections\nCoordinate timing — Letter lands before \"did you get my note?\" email\nStart small — Test with 20-50 prospects before scaling\nTrack by channel — Know which channel drives replies"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dru-ca/abm-outbound",
    "publisherUrl": "https://clawhub.ai/dru-ca/abm-outbound",
    "owner": "dru-ca",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/abm-outbound",
    "downloadUrl": "https://openagent3.xyz/downloads/abm-outbound",
    "agentUrl": "https://openagent3.xyz/skills/abm-outbound/agent",
    "manifestUrl": "https://openagent3.xyz/skills/abm-outbound/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/abm-outbound/agent.md"
  }
}