Automation & Ops

LinkedIn Growth — Automated LinkedIn Networking Pipeline

Turn a LinkedIn or Sales Navigator search into an automated lead pipeline: import, qualify against your ICP, store locally, then send connection invites on a controlled schedule.

47/ 100
Use with care

Useful, but reliability, evidence or controls still have material gaps.

See how it was scored ↓
Works as-is in
Codex · Claude Code
Stars
★ 98
Last updated
9d ago
License
MIT
linkedinsales-navigatorlead-generationsales-automation
+4sqlitelinkedin-cliicp-qualificationscheduled-invites

What does this skill do, and when should you use it?

linkedin-growth is a skill in the Linked-API/linkedin-skills repository that converts LinkedIn search results into a managed networking pipeline via linkedin-cli. It runs in two phases: Phase A, triggered by the user, imports leads from a search URL or filters, has an AI sub-agent qualify each candidate against a user-defined ICP, stores results in a local SQLite database, and round-robin assigns leads across one or more LinkedIn accounts. Phase B runs on an OS-native background scheduler, sending invites at a controlled pace during each account's active hours and withdrawing stale pending requests. Cross-account retry policies and natural-language status queries round it out — built for sales teams growing their LinkedIn network at scale.

Runs import.mjs prepare, which calls linkedin-cli to execute a LinkedIn or Sales Navigator search (nv capped at 2500, st at 1000), dedupes against existing rows, and writes a candidates JSON file. The AI reads the candidates and judges each against the ICP stored in the database's settings table, writing a results file; import.mjs commit inserts qualified leads with round-robin owner_account assignment. A background scheduler (launchd/systemd-user/cron/schtasks) wakes per account: it sends one invite when the daily quota and minimum interval (default 15 minutes) allow, and independently processes up to pending_batch_size stale pending leads — withdrawing those past max_pending_days and applying the global max_connect_attempts retry policy (reassign to an untried account, else mark exhausted). Users query counts, conversions, and errors via status.mjs, lead.mjs, and the read-only query.mjs.

Good fit
  • A B2B or export salesperson with a Sales Navigator search URL who says 'import up to 500 leads from this search into a list called North America SaaS VPs of Sales' — the AI interviews them for the ICP, then qualifies and stores the batch
  • Multi-account operators who want invites spread across several LinkedIn accounts with per-account daily caps (e.g. 35/day) and pacing (max one connect every 15 minutes) to reduce restriction risk
  • A sales lead asking natural-language questions like 'how many pending on kiril?', 'which lists convert best?', or 'which requests have been pending over 10 days?'
  • Team managers who pause an account ('pause kiril') so the scheduler and imports skip it, then resume later
  • Users wanting automatic retries: set max_connect_attempts to 2 or all so declined or withdrawn leads get tried from other accounts before being marked exhausted

How do you install this skill?

Before you use it
  • Automated bulk connection invites plus cross-account retry may violate LinkedIn's Terms of Service, with real risk of account restriction or ban; users bear this risk.
  • SKILL.md instructs the agent to conceal the scheduler's internal tick details — transparency is deliberately reduced; users should demand a full explanation of background behavior.
  • Core function depends entirely on overseas services (LinkedIn/linkedapi.io), likely unreachable from mainland China networks, with no Chinese-language support.
  • Static review executed nothing: no tests or CI coverage target this skill's scripts/, so key-path reliability is unproven.
  • Publisher identity is unverified by FollowSkills; attribution and maintenance commitments rest solely on the repository's own claims.
Before you start
Your agent needs
  • Shell / CLI
  • Network access
  • Local filesystem
Install first
  • Node.js ≥ 20
  • @linkedapi/linkedin-cli (npm global)
  • better-sqlite3 (installed via npm install --omit=dev)
  • Linked API tokens from app.linkedapi.io

1) Install the collection (recommended): run npx @linkedapi/skills, or non-interactively npx @linkedapi/skills add linkedin-growth --yes (optionally with --agent claude-code --scope project). 2) Manual fallback: copy the linkedin-growth folder into your agent's skills directory (e.g. .claude/skills/linkedin-growth/ or ~/.claude/skills/), then inside it run npm install --omit=dev and node scripts/doctor.mjs. Prerequisites: Node.js ≥ 20, the globally installed @linkedapi/linkedin-cli, and Linked API Token + Identification Token from app.linkedapi.io configured via linkedin setup.

Generic route: install into Claude Code manually (macOS / Linux)
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/Linked-API/linkedin-skills.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/linkedin-growth" ~/.claude/skills/
rm -rf "$tmp"

Generated from the source repository and skill path; it copies only this skill's folder. If the author's install steps above differ, follow those first. To scope it to one project, replace ~/.claude/skills with that project's .claude/skills.

How do you use this skill?

Try saying

Once installed, send your agent any of these to trigger it:

  • Import the first 200 leads from this Sales Navigator search into a list called VP of Sales TOP 100
  • how many pending on kiril?
  • pause/resume an account

1) Run node scripts/doctor.mjs -- in the skill directory until ok:true (doctor walks you through account registration and DB init). 2) Answer two setup questions: invite pace (default one connect every 15 minutes) and retry policy (default no retry). 3) After registering at least one account, run node scripts/schedule.mjs install to enable the background scheduler. 4) Trigger an import by saying e.g. 'Import the first 200 leads from this Sales Navigator search into a list called VP of Sales TOP 100' — the AI confirms the count and ICP, then runs Phase A's prepare→qualify→commit. Phase B then runs automatically in the background during each account's active hours; ask status questions anytime ('how many pending on kiril?') or say 'pause/resume an account'.

What are this skill's strengths and limitations?

Pros
  • Complete two-phase pipeline: import, AI qualification, storage, scheduled invites, and stale-request withdrawal in one skill
  • Multi-account support: round-robin lead assignment, cross-account retry policy, and per-account daily limits, active hours, and minimum intervals
  • All state persisted in a local SQLite database with per-operation writes — interruptions resume cleanly with nothing to roll back
  • Thoughtful rate-limit handling: distinguishes account-level gating from per-lead failure and disambiguates requestNotAllowed by streak vs isolated pattern
  • doctor script diagnoses the environment with per-check remediations; the ICP is user-owned and stored in the database, never hardcoded
  • MIT-licensed and maintained by Linked API, with an npx one-command installer and CI-friendly JSON output
Limitations
  • Hard dependency on the paid Linked API service and linkedin-cli (exit code 3 specifically signals a required subscription/plan)
  • Phase B performs real writes to real LinkedIn accounts; restriction risk is borne by the user and only mitigated through pacing controls
  • Misconfiguration (e.g. too-short intervals) in scheduled invites and withdrawals could endanger account safety
  • No test suite, star count, or adoption evidence in the source; the same person imported via both nv and st searches becomes two rows, which mixed-use teams must watch
  • Import caps of 2500 (Sales Nav) / 1000 (standard search) and reliance on LinkedIn page structure mean LinkedIn changes can break workflows
  • Default guidance is to run qualification sub-agents on a cheap model; nuanced ICPs may require manually raising the model tier

How does this skill compare with similar options?

Side by side with related skills; every score comes from the same FSRS standard.

Skill FS score Stars Last updated License
LinkedIn Growth — Automated LinkedIn Networking Pipeline this page 47 · Use with care ★ 98 9d ago MIT
OpenOutreach Lead Finder 58 · Recommended ★ 3.3k 11d ago GPL-3.0
Home Assistant Manager Skill 52 · Use with care ★ 971 3mo ago MIT
Cua GUI Automation Skill 51 · Use with care ★ 30k 11d ago MIT
OpenCLI Browser Driving Skill 47 · Use with care ★ 30k 12d ago Apache-2.0

The repository's other skill, linkedin, is general-purpose LinkedIn automation (profile fetches, search, messaging, posting), while linkedin-growth focuses specifically on the two-phase lead pipeline — the two are complementary and share the same linkedin-cli and Linked API backend.

How did FollowSkills review this skill?

FollowSkills review · FSRS-2.0
Use with care
47/ 100 5-point scale 2.4 / 5
The upstream repository has new commits since this review. The score still applies to the reviewed revision shown and may not cover the latest changes.
1Trust10 / 25 · 2.0/5

Main risks are largely visible: local SQLite storage, read-only SQL enforced to SELECT, error states with manual reset; no malware or credential theft found. Clear deductions: the skill auto-sends bulk connection invites and auto-retries from other accounts after refusals (max_connect_attempts='all'), which inherently evades LinkedIn's rate/restriction mechanisms — real account-ban and ToS risk; SKILL.md explicitly instructs the agent to hide the scheduler's internal tick frequency from the user, a deliberate transparency cut; real outbound actions have limits and active windows but lack a one-time explicit user confirmation and rollback for the whole pipeline. Fits the 'main risks visible but confirmation/recovery incomplete' anchor.

2Reliability10 / 20 · 2.5/5

High internal consistency: state machine, schema, error classification (alreadyPending, limitExceeded, requestNotAllowed disambiguation), and interruption-recovery logic are detailed and coherent; doctor self-check and explicit failure paths are pluses. But static review finds no executable test evidence (CI only syntax-checks and smoke-tests the root CLI, never this skill's scripts/ key paths), and behavior depends on external linkedin-cli — unverifiable statically, so not above the 10 anchor.

3Adaptability8 / 15 · 2.7/5

Triggers, vocabulary, status-question decision tree, and the qualification JSON contract are well defined; non-fit boundary (import never sends invites) is declared. Deductions: core function depends entirely on LinkedIn/linkedapi.io and Sales Navigator, which are poorly reachable from mainland China networks, with no Chinese-language support declared; LinkedIn's own tolerance for automation further limits the usable environment.

4Convention10 / 15 · 3.3/5

Good layering: SKILL.md manual + README + slash commands + config files + qualification prompt; install/dependency notes are complete, MIT license explicit, data locations documented. Deductions: no changelog (skill version 0.1.0, private, no CHANGELOG), maintenance responsibility and update path only implied, and the SKILL.md text appears truncated at the Scheduler section; unverified publisher means attribution rests solely on the repo's own claims.

5Effectiveness6 / 15 · 2.0/5

The value claim is concrete (manual LinkedIn outreach is genuinely costly), the pipeline yields a directly queryable leads database and CSV export, and transparent qualification reporting adds marginal value. Deductions: static review cannot verify that key outputs (searches, invite sends) actually work; effectiveness hinges on third-party linkedin-cli stability and the persistence of LinkedIn's policies; cost/benefit proportionality is unevidenced, so above the 7 anchor is unreachable.

6Verifiability3 / 10 · 1.5/5

Auditable primary material exists: full schema, defaults file, explicit state transitions and error-classification rules, plus repository CI workflows. However, CI covers only syntax and a smoke test of the root installer — none of this skill's key paths; there are no test suites, no third-party execution evidence, and no cross-source corroboration, keeping it below the 5 anchor.

1 2 3 4 5 6

Open a dimension to read why it scored that way

Reviewed Sep 10, 2026 Reviewed revision e5e642e2bbbd Review evidence[1][2][3][4][5][6][7][8][9][10][11][12][13][14]

Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.

See the full review method →

FAQ

Besides installing this free open-source skill, what does it cost?
Operation requires the Linked API service — you must register at app.linkedapi.io and obtain tokens; linkedin-cli exit code 3 specifically signals a required subscription or plan. Pricing must be confirmed on the Linked API site.
What permissions and local setup are needed?
Node.js ≥ 20, the globally installed @linkedapi/linkedin-cli, Linked API and Identification tokens, and local filesystem write access (SQLite database and logs). The npx @linkedapi/skills installer detects and helps set up these prerequisites.
Will I lose data if the machine sleeps or a run is killed?
Each scheduler wake-up performs at most one operation and writes it to the database immediately; there is no batch to resume or roll back. The next wake-up continues from current DB state, and daily quotas are recomputed against the local calendar day.
Who does the lead qualification, and is it controllable?
An AI sub-agent judges each candidate against an ICP that you define and that is saved to the database. Every lead stores its reasoning, reviewable via lead.mjs show or query.mjs; the ICP always comes from your answers, never a hardcoded template.

More skills from this repository

All from Linked-API/linkedin-skills

Related skills