ABM campaign skill for Claude Code: run a full Account-Based Marketing campaign end-to-end — from ICP definition to live LinkedIn Ads. Builds targeted account lists with Vibe Prospecting, enriches and scores companies with real-time B2B data, generates personalized ad creatives with Claude Code and Figma, pushes matched audiences to LinkedIn Ads, and monitors campaigns daily at scale. The complete GTM skill for AI-driven account-based marketing in Claude Code, Codex, Hermes-Agent, and OpenClaw. No agency needed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/explorium-public-skills:abm-campaignThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill walks you through a full ABM campaign end-to-end, using Claude Code as the orchestration layer. You bring your ICP definition and credentials; Claude handles the rest.
This skill walks you through a full ABM campaign end-to-end, using Claude Code as the orchestration layer. You bring your ICP definition and credentials; Claude handles the rest.
What you'll build:
No personal keys are stored in this skill. You provide credentials at runtime via environment variables or interactive prompts. See setup.md before starting.
Complete setup.md first. It covers:
npx @vibeprospecting/vpai@latest)Goal: Translate your ICP into a concrete list of target companies.
Read 01-account-list.md before running any Vibe Prospecting commands.
Quick steps:
autocomplete to normalize filter valuesfetch-entities (sample 5 first, then full export)abm-accounts-raw.csv# Example: US SaaS companies, 100-1000 employees, using Salesforce
npx @vibeprospecting/vpai@latest autocomplete \
--args '{"field":"linkedin_category","query":"software"}' \
--tool-reasoning 'Building ABM account list for SaaS ICP'
npx @vibeprospecting/vpai@latest fetch-entities \
--args '{
"entity_type": "business",
"filters": {
"linkedin_category": {"values": ["Software Development"]},
"company_headcount_range": {"values": ["101-250","251-500","501-1000"]},
"company_country_code": {"values": ["US"]},
"company_tech_stack_tech": {"values": ["Salesforce"]}
},
"page_size": 5
}' \
--tool-reasoning 'Sample fetch for ABM account list'
Output: abm-accounts-raw.csv
Goal: Add firmographic and technographic data, then score and filter to your best-fit accounts.
Read 02-enrich-score.md for scoring model details.
Quick steps:
firmographics, technographics, funding-and-acquisitionsabm-accounts-scored.csv and abm-accounts-final.csv# Match company names to IDs
npx @vibeprospecting/vpai@latest match-business \
--args '{"businesses_to_match": [{"name":"Acme Corp","domain":"acme.com"}]}' \
--tool-reasoning 'Matching accounts for enrichment'
# Enrich firmographics + technographics
npx @vibeprospecting/vpai@latest enrich-business \
--args '{
"business_ids": ["biz_xxx"],
"enrichments": ["firmographics","technographics","funding-and-acquisitions"]
}' \
--tool-reasoning 'Enriching accounts for ABM scoring'
Output: abm-accounts-final.csv (scored, filtered list)
Goal: Generate reusable, segment-specific ad templates using Claude Code.
Read 03-ad-templates.md for template structure and design system integration.
Quick steps:
{{company_name}}, {{company_logo}}, {{headline}}, {{body_copy}}creative/templates/Tell Claude:
"Create LinkedIn ad templates for these segments: [list]. Use these brand colors: [hex]. Use this value prop: [text]."
Output: creative/templates/<segment>-single.html, creative/templates/<segment>-carousel.html
Goal: Dynamically update creative elements per account using Figma MCP (or a code-based approach).
Read 04-personalize-figma.md for the Figma MCP workflow and code-based fallback.
Option A — Figma MCP (recommended for polished output):
Option B — Code-based (no Figma):
puppeteer or playwrightcreative/personalized/<company_domain>/# Install rendering dependencies (Option B)
npm install -g playwright
playwright install chromium
Output: creative/personalized/<company_domain>/<format>.png
Goal: Create a LinkedIn matched audience from your account list and upload company data.
Read 05-linkedin-audiences.md for the full API workflow.
Quick steps:
setup.md)# Step 1: Create matched audience
curl -s -X POST "https://api.linkedin.com/v2/dmpSegments" \
-H "Authorization: Bearer $LINKEDIN_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ABM Target Accounts — Q3 2025",
"accessPolicy": "PRIVATE",
"destinations": [{"destination": "urn:li:sponsoredAccount:'$LINKEDIN_AD_ACCOUNT_ID'"}],
"type": "COMPANY"
}'
# Note the returned segment ID, then upload company list (see 05-linkedin-audiences.md)
Output: LinkedIn DMP Segment ID saved to linkedin-audience-id.txt
Goal: Create campaign groups, campaigns, and ad creatives in LinkedIn Campaign Manager.
Read 06-campaign-management.md for full campaign creation and monitoring.
Quick steps:
Monitoring loop (ongoing):
[ ] setup.md — credentials configured
[ ] 01-account-list.md — account list built and exported
[ ] 02-enrich-score.md — accounts enriched, scored, filtered
[ ] 03-ad-templates.md — ad templates created per segment
[ ] 04-personalize-figma.md — creatives personalized per account
[ ] 05-linkedin-audiences.md — matched audience created and populated
[ ] 06-campaign-management.md — campaigns live and monitored
| File | Phase | Description |
|---|---|---|
abm-accounts-raw.csv | 1 | Raw account list from Vibe Prospecting |
abm-accounts-scored.csv | 2 | Accounts with enrichment + fit scores |
abm-accounts-final.csv | 2 | Filtered best-fit accounts (score ≥ threshold) |
creative/templates/ | 3 | HTML/CSS ad templates per segment |
creative/personalized/ | 4 | Per-account rendered ad images |
linkedin-audience-id.txt | 5 | LinkedIn DMP segment ID |
campaign-ids.json | 6 | Campaign group, campaign, creative IDs |
campaign-report.csv | 6 | Daily analytics export |
| Problem | Solution |
|---|---|
| Vibe Prospecting auth fails | Run setup from setup.md → Vibe section |
| LinkedIn 401 Unauthorized | Access token expired — re-run OAuth flow in setup.md |
| Audience too small (<300) | Broaden ICP filters in Phase 1; LinkedIn needs 300+ matched companies to serve ads |
| Low audience match rate | Use company domains (not just names) in Phase 5 upload for better matching |
| Figma MCP not available | Use Option B (code-based) in Phase 4 |
| Creatives rejected by LinkedIn | Check LinkedIn ad specs in 03-ad-templates.md |
npx claudepluginhub explorium-ai/gtm-skillsCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.