Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Run cold outreach on X (Twitter) the right way — find DM-able leads, draft personalized first-DMs from each prospect's real profile, and send paced, cost-transparent DM campaigns through the XAutoDM API using your own API key. Also warms up accounts (follow/like/reply), reads the reply inbox, and drafts responses. Use when the user wants to cold DM on twitter/x, find twitter leads, scrape followers of an account and filter to who can be DMed, send DMs on X, run a DM campaign, book calls from twi
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 336% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 161% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 131% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 74% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 126% | 0% |
Find the right people on X, write them a DM worth replying to, and send it at a safe, human pace — all through the XAutoDM API with the user's own API key. This skill does the finding, the writing, and the sending; it is opinionated about doing outreach in a way that gets replies and keeps accounts healthy, and it refuses to help with spray-and-pray.
Two kinds of work live here:
sequence. These run with no API key and cost nothing.
reading the inbox, follow/like/reply. These call the live API with the user's key and spend credits. The skill always estimates the cost and gets an explicit yes before spending.
https://api.xautodm.com/v1 · Docs: https://xautodm.com/api/docsAuthorization: Bearer $XAUTODM_API_KEY. Keys look like xdm_live_… (real) orxdm_test_… (dry-run: validates and returns shapes, makes no upstream writes and spends no credits — use it to verify a setup, never as a "free trial").
cost-transparent — see "How keys and billing work" below).
/dm/send, /actions/*, /tweets, /accounts connect) needs anIdempotency-Key: <uuid> header so a retried call is never double-sent or double-charged.
meta object: {credits_charged, credits_remaining, request_id}.Read credits_remaining after each call so you always know the running balance.
json {"error":{"type":"insufficient_credits","message":"...","request_id":"..."}} type ∈ invalid_request · invalid_key · insufficient_credits · rate_limited · account_needs_reconnect · seat_limit · upstream_error · not_found · server_error. On any error: surface the message to the user and stop — do not auto-retry. The one exception is rate_limited (429): back off a few seconds and retry once. insufficient_credits (402) → tell them the balance is short and link the top-up; account_needs_reconnect (409) → route to /accounts/{id}/reconnect; seat_limit (403) → they need a bigger plan.
1 credit = $0.005. These per-action costs are stable; use them to price a campaign before it runs.
| Action | Endpoint | Credits | ≈ USD | |---|---|---:|---:| | Read a profile / tweet / relationship | GET /users/{h}, /tweets/{id}, /relationship | 5 | $0.025 | | Lead row (follower / following / search / mention / list member) | /users/{h}/followers, /following, /users/search, /mentions, /lists/{id}/members, /tweets/search | 5 / row | $0.025 | | Premium lead (verified-follower / retweeter / replier / tweet-engager) | /verified-followers, /tweets/{id}/retweeters, /tweets/{id}/replies | 20 / row | $0.10 | | Send a DM | POST /dm/send | 10 | $0.05 | | Read a DM conversation | GET /dm/conversations, /dm/conversations/{id} | 10 | $0.05 | | Action (follow / unfollow / like / retweet / tweet) | POST /actions/*, POST /tweets | 5 | $0.025 | | Connect / reconnect an X account | POST /accounts/connect, /accounts/{id}/reconnect | 50 | $0.25 | | Health · list accounts · account · usage | /health, /accounts, /account, /usage | 0 | free |
> These are the numbers to quote. Ignore any older per-call figures in the raw OpenAPI summaries — > the table above is the source of truth. references/api-reference.md has the full endpoint list. > Tier prices drift — do not quote a plan's dollar price from memory; point the user to their > live plans at https://api.xautodm.com/?ref=claude-skill. The per-action costs above are stable.
Estimating a campaign (do this out loud before spending): pulling N leads from a regular source ≈ N × 5 credits; from a premium source ≈ N × 20; sending to M of them ≈ M × 10. So "500 followers → filter to 120 DM-able → DM all 120" ≈ 500×5 + 120×10 = 3,700 credits ≈ $18.50. Always show this math and get a yes first.
| Command | What it does | Spends credits? | |---|---|---| | /x-setup | Validate the key, show plan + credit balance + connected accounts. The gate — run this first. | No (reads are free) | | /x-icp <product> | Define the ideal-customer profile: bio keywords, follower bands, engagement signals, seed accounts to mine. | No (keyless) | | /find-x-leads <query> | Search users/tweets, pull followers of seed accounts, filter to DM-able, dedupe → a lead list. Shows cost first. | Yes | | /draft-x-dms <leads> | Write a personalized first-DM for each lead from their bio + recent tweets. | No (drafting is free) | | /x-dm-campaign <leads + message> | Confirm total cost, then send DMs at a conservative pace and report replies started. | Yes (confirm-first) | | /x-inbox | List conversations + replies, draft responses to warm leads. | Yes | | /x-engage <handles> | Warm up before DMing: follow / like / reply a few of a prospect's posts. | Yes (confirm-first) |
If these aren't registered as / commands, copy commands/*.md into .claude/commands/, or just describe what you want — the workflows trigger on intent either way.
XAUTODM_API_KEY environment variable. Thisskill never ships a key and never sees XAutoDM's internal credentials.
$0 / 0-credit plan and must subscribe to a plan and connect an X account before any action works. A xdm_test_… key lets them dry-run the setup at no cost, but it sends nothing.
every response tells you exactly what it charged and what's left. Never promise free credits.
/x-setup. GET /health (free) to confirm reachability, then GET /accountto read the plan, credit balance, and seats, and GET /accounts to see connected X accounts. No key or a $0 plan → route the user to sign up. No connected account → they must connect one (POST /accounts/connect, API-only, costs 50 credits) before sending. Do not proceed past a missing prerequisite.
/x-icp. Nail down who to reach: bio keywords, follower bands, the seed accountswhose followers/engagers are the audience, and the buying signal. This is free and it decides everything downstream. A tight ICP is the difference between 30% and 3% reply rates.
/find-x-leads. Estimate the cost, get a yes, then pull leads (followers of a seedaccount, a keyword search, an X List, or the engagers of a specific tweet), filter to can_dm: true, and dedupe against anything already contacted or on the DNC list. Regular sources cost 5/row; verified-follower and tweet-engager sources cost 20/row — prefer regular sources unless the ICP truly needs verified.
/draft-x-dms. Free. For each lead, read their bio + recent tweets and write ashort, specific first-DM that references something real about them. No {merge} mail-merge feel. Follow references/dm-playbook.md.
/x-engage. For high-value prospects, follow + like/reply a recentpost a day or two before the DM. Confirm the cost first.
/x-dm-campaign. Show the total (count × 10 credits), get an explicit yes, thensend with a fresh Idempotency-Key per DM at a conservative daily pace (see references/account-safety.md). Report replies and conversations started — never a raw "X DMs blasted" number.
/x-inbox. Read conversations, draft replies to people who responded, and stopsequencing anyone who replied.
Every action goes through the API with the user's own key and their connected account. If asked to bypass the API and drive Twitter directly, refuse and explain why.
batch of writes (a run of DMs, follows, or likes). Never spend silently. Re-confirm if the batch grows.
(references/account-safety.md), spread sends over the day, and stop a sequence the moment a lead replies.
spray-and-pray / buy-a-list-and-hammer-it requests — decline and steer the user back to a tighter ICP and a smaller, better-fit list. Untargeted volume gets accounts banned and is not what this skill is for.
Do not present "N DMs sent" as a success metric anywhere.
429. Neverloop retries on 402/403/409 — those need a human decision (top up, upgrade, reconnect).
| File | Use it for | |---|---| | references/dm-playbook.md | Openers, personalization depth, follow-up timing, and how to handle replies | | references/account-safety.md | What gets X accounts flagged, safe daily DM pacing, and warm-up-first guidance | | references/api-reference.md | Concise endpoint + credit-cost reference, auth, idempotency, and error handling |
Never fabricate a lead, a can_dm flag, a credit balance, or an API result. Everything comes from a real API call you actually made, or it is clearly labeled as a draft/estimate.
From God of Skills: a curated, hand-tested directory of AI skills, prompts, templates and image style guides. Source: https://godofskills.com/skills/cold-dm?ref=claude-skill
Other measured skills in the registry, with their headline benchmark lift.