What it does: Has Claude Code build a script that sends a few no-pitch connection requests a day through Unipile, with a hard cap of 20, a dry run and a log.
Use it when: You're building your own LinkedIn tool and want it to grow your network without risking your account.
You get: The script, a 3 day dry run to approve, and a log of every request. It runs live only after your yes.
This one runs in Unipile: paste it there.
You are my developer, a senior engineer with 10 years of building outreach tools that stay well inside LinkedIn's limits. Goal: build a small script in Claude Code that sends a few LinkedIn connection requests a day through Unipile from a list I give it, with no pitch, a dry run first and a log of every request, so I can build my network a little every day without risking my account. Context: I sell [what you sell] to [who you sell to]. Being a familiar name helps people answer me later. Only a steady, small number of real requests each day does that, because a big burst looks like a robot and gets my account restricted. First, check that you can open the Unipile API with my key. The key and my Unipile address (the DSN) live in a .env file in this project as UNIPILE_API_KEY and UNIPILE_DSN. Never print the key. Tell me which LinkedIn account is connected. If you can't reach it, stop and follow the steps at simpleai.community/connect/. Then check that you can read the list file I gave you (a CSV with name, company and profile link). Tell me how many rows it has. If it's missing, stop and ask me for it. Then check that you can open my CRM's API with the key in the same .env file, to read who is marked do not contact. If you can't, follow the CRM steps at simpleai.community/connect/#crm. Ask me these, then run. Skip any I already answered. 1. How many requests a day? (Default: 15, Monday to Friday. The script never allows more than 20.) 2. Note or no note? (Default: no note. If I want one, it is under 200 characters with no pitch and no link.) 3. What hours? (Default: spread over 9am to 5pm my time, with a random wait of several minutes between requests.) Do this: 1. Read the project first. Tell me in 3 lines what is already there, so you don't break or repeat anything. 2. Clean the list: drop rows with no profile link, doubles, and anyone on my do not contact file or marked do not contact in my CRM. If I gave neither, stop and ask for one. List what you dropped and why. 3. Before each request, check through Unipile if we are already connected or a request is already waiting. If so, skip them and log the reason. 4. Write the script with a hard cap in the code: never more than 20 requests in a day, even if I set a higher number by mistake. Keep a log file with date, name, profile link, sent or skipped, and the reason. Read the log first each day so no one gets a second request. 5. If Unipile returns a limit or warning error, stop for the day at once and tell me. Don't retry. 6. Run a dry run first: run the same connected and pending check, write my daily number into the config, then list the next 3 days of requests with their times and change nothing. Show me. 7. Only after my yes, run it live for one day and show me the log. I decide each day after that if it keeps running. Example note if I want one, match this tone: "Hi Sam, your posts on training new techs are useful. Glad to connect." Give me: a 3 line read of the project, the script, the cleaned list counts, and the 3 day dry run table (date, time, name, note or blank). Before you show me, check: - The daily cap of 20 is in the code and the dry run never goes past my daily number. - No one on the dry run is already connected, already asked, or on my do not contact file. - Every note is under 200 characters with no pitch, link or price, and the key never shows in the code or logs. Rules: - Ask me before you send, post, launch, change or delete anything. The live run waits for my yes. - This script only sends connection requests. No messages, no InMail. - Never make up a name, number, date, price, link or promise. - If something is missing, write [check: what is missing] in that spot and keep going. Last, save these steps as a skill called 'Safe LinkedIn Invites' so you do it this way each time I give you a new list. To run it again, just say: "Run my Safe LinkedIn Invites skill."
You need![]()
Your CRM![]()
Your files
UnipileClaude CodeTested on sample data
Connect first: your CRM and your files. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.
Built on Fanatical Prospecting's Law of Familiarity: more touches, more answers.
Copilot version
There is no separate Copilot version of this one yet. Paste the prompt above into Microsoft 365 Copilot Chat.
See a real example
Tested on sample data Sample data run (simulated tool).
Watch: no video for this one yet.
AuthorCorey Leon