# 1 To 1 Abm Ads

> Use this skill when running 1:1 ABM ads on LinkedIn — one ad set per named target company, each audience sized and narrowed to the buyers, personalized single-image creatives, and a DRAFT-first campaign build with a script for every step.

- Skill: `swan-gtm/1-to-1-abm-ads` (Agent Skill, multi-file: 17 files)
- Install (CLI): `npx skillmds@latest add swan-gtm/1-to-1-abm-ads`
- Raw SKILL.md: https://api.skillmd.com/api/skills/swan-gtm/1-to-1-abm-ads/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: swan-gtm (https://skillmd.com/u/swan-gtm)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/swan-gtm/1-to-1-abm-ads

---


# SKILL: Run 1:1 ABM Ads on LinkedIn

**Use this when:** you need to run **1:1 ABM (Account-Based Marketing) ads on LinkedIn** -
paid ads aimed one company at a time: a named list of individual companies (one ad set per
company), each audience sized and narrowed to the buyers, with personalized single-image ads
that link to an asset built for that account. Self-contained; start here.

**Read `README.md` for the full end-to-end walkthrough.** This file is the one-screen index.

## The pipeline (each step → its doc + its script)

| # | Step | Do it with | Read |
|---|------|-----------|------|
| 0 | Understand strategy + build procedure | - | `sops/01-abm-strategy.md`, `sops/03-build-and-launch-sop.md` |
| 1 | Resolve companies → org URNs → audience size → runnable (≥300) | `scripts/resolve_and_size.py` | `sops/02-audience-sizing.md` |
| 2 | Narrow each audience to the target band (>300, ideally 300-1,000) | `scripts/narrow_audience.py` | `sops/04-audience-narrowing-sop.md` |
| 3 | Write the copy (creative / commentary / landing page) | - | `sops/03-build-and-launch-sop.md` → "Writing copy" |
| 4 | Generate personalized creatives (gpt-image-2) | `scripts/render_creatives.py` | `sops/05-ad-creative-skill.md`, `sops/06-image-generation-skill.md` |
| 5 | Build the campaign DRAFT (group + ad sets + conversions + UTMs + ads) | `scripts/build_campaign.py` | `sops/03-build-and-launch-sop.md` (Phases 1-7) |
| 6 | QA + activate (explicit go) | `scripts/build_campaign.py` (verify) | `sops/03-build-and-launch-sop.md` (Phase 7) |

## Setup
`python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt`, then
`cp scripts/env.example.txt scripts/.env` and fill `LINKEDIN_ACCESS_TOKEN` + `OPENAI_API_KEY`.

## Rules that never bend
- Create everything **DRAFT** (no spend). Activation is separate + explicit.
- **Never delete** via API without a fresh human "CONFIRM DELETE".
- **Never fabricate** ad copy/numbers - trace every word to the landing page.
- Target band: **>300**, ideal **300-1,000**, ≤~1,200 fine, trim hard if >2,000. Entry-level **≤5%**.
- Secrets live in `scripts/.env` only - share `env.example.txt`, never `.env`.

---

> By Ivan Falco - Frontal

