Claude Code & Gemini CLI Skills

Automate LinkedIn with AI

Two Playwright MCP skills: batch Easy Apply job automation and profile scraping by company, country, or industry. Works with Claude Code and Gemini CLI.

2 Skills
Auto-Apply & Scraper
4 Agents
Strategy Β· Auto Β· DOM Β· QA
Safe
Human-Like Delays

Three Skills, One Package

Install once, use all three

πŸ’Ό

Job Auto-Apply

Batch-apply to LinkedIn Easy Apply jobs. Set a target count, use keyboard controls (P/R/Q), and get a visual on-page progress indicator.

/linkedin-job-auto-apply

πŸ”Ž

Profile Scraper

Scrape structured profile data (name, title, company, work history) filtered by company, country, and industry. Export as JSON.

/linkedin-profile-scraper

🀝

Contact Reacher

Discover contacts via BFS/DFS traversal, generate email candidates (10 patterns per person), optionally send personalized connection requests, and save JSON + CSV locally.

/linkedin-contact-reacher

Powerful Features

Everything you need across both skills

⚑

Lightning Fast Apply

Apply to 20-50 Easy Apply jobs automatically. Batch process multiple pages with target-based stopping and cross-page deduplication.

πŸ—‚οΈ

Profile Scraping

Scrape structured profile data filtered by company, country, and industry. Returns JSON with full work history.

πŸ€–

7 Specialist Agents

Strategy scores & filters jobs. Automation handles timing & retries. Web Structure maintains DOM selectors. QA verifies results. Contact Discovery, Outreach, and Email Generator power the Contact Reacher skill.

🎯

Smart Job Scoring

Strategy Agent scores jobs by title relevance, seniority match, remote status, and company blocklist before any application is sent.

⌨️

Keyboard Controls

Press P to pause, R to resume, Q to quit. Full control during automation with real-time monitoring.

πŸ›‘οΈ

Safe & Secure

Built-in randomized delays, retry logic, session limits, and rate-limit detection. Configurable userProfile avoids detectable placeholder values.

πŸ“Š

QA Reports

Pre-flight check before each session. Per-application success verification. End-of-session PASS/WARN/FAIL report with completeness scoring.

πŸ”

Resilient Selectors

Web Structure Agent provides multi-fallback selectors prioritising stable aria-* and data-* attributes over fragile class names.

Four Specialist Agents

Modular expertise β€” invoke the right agent for the right problem

🎯

Strategy Agent

Scores and filters jobs before automation runs. Supports title matching, seniority level, remote-only filter, company blocklist/allowlist, and daily application budget planning.

linkedin-strategy-agent

βš™οΈ

Automation Agent

Advises on timing strategy, retry wrappers, session health checks, rate-limit back-off, and anti-detection best practices. Keeps automation running reliably.

linkedin-automation-agent

πŸ”¬

Web Structure Agent

LinkedIn DOM specialist. Provides resilient selectors, explains lazy loading and virtual scroll behaviour, and runs selector health checks when LinkedIn updates its UI.

linkedin-web-structure-agent

βœ…

QA Agent

Pre-flight checks before each session. Verifies each application was genuinely submitted. Validates scraped profile completeness. Generates PASS/WARN/FAIL session reports.

linkedin-qa-agent

How It Works

Simple automation in 3 steps

1

Install the Skill

Add both skills to Claude Code via marketplace

/plugin install linkedin-job-auto-apply
/plugin install linkedin-profile-scraper
2

Configure Settings

Set your target applications, search keywords, and location preferences

targetApplications: 20, keywords: "software engineer"
3

Start Applying

Watch as Easy Apply jobs are processed automatically with real-time status

βœ… 20/20 applications submitted successfully!

Quick Start

From install to first application in under 2 minutes

1

Pre-flight Check

QA Agent verifies your session is healthy before anything runs

// Paste qa-agent preFlightCheck, then:
const check = await preFlightCheck(page);
// Must show: βœ… Login Β· βœ… Network Β· βœ… No CAPTCHA
2

Configure & Filter

Set your personal profile and let the Strategy Agent score jobs before applying

const prefs = {
  targetTitles: ['software engineer'],
  seniorityLevel: 'mid',
  mustBeRemote: false,
  blockedCompanies: ['Staffing Co']
};
const { toApply } = filterJobs(jobs, prefs);
3

Run & Verify

Automation applies to scored jobs; QA Agent confirms each submission

await autoApplyLinkedInJobs(page, {
  targetApplications: 20,
  userProfile: {
    phone: '+1-555-000-0000',
    linkedinUrl: 'https://linkedin.com/in/you',
    yearsExp: 5
  }
});
4

Review Report

QA Agent generates a structured PASS/WARN/FAIL session summary

// Example output:
// βœ… PASS β€” 18/20 successful (90%)
// ⚠️ 2 low-confidence verifications
// ⏱ Session: 312s

Ready to Get Started?

Install in under 30 seconds and start automating your LinkedIn job applications today.

No signup required
Free and open source
Works with Claude Code
Terminal
$ claude
> /plugin marketplace add yennanliu/linkedin-skill
> /plugin install linkedin-job-auto-apply
> /plugin install linkedin-profile-scraper
βœ… Both skills installed!
> /linkedin-job-auto-apply
> /linkedin-profile-scraper

Documentation

Comprehensive guides and references

Frequently Asked Questions

Is this safe to use with my LinkedIn account?

Yes, the automation includes safety features like human-like delays (2-4 seconds), rate limiting, and error handling. However, use responsibly and avoid excessive automation. LinkedIn may flag suspicious activity.

What is Easy Apply?

Easy Apply is LinkedIn's one-click application feature. This skill focuses on Easy Apply jobs because they're simple and fast. Complex applications requiring cover letters or assessments are automatically skipped.

How many jobs should I apply to per session?

We recommend 20-50 applications per session. Quality matters more than quantity. Take breaks between sessions (several hours) to avoid rate limiting.

Can I pause or stop the automation?

Yes! Use keyboard controls: Press P to pause, R to resume, and Q to quit gracefully. The on-page status indicator shows your current progress.

Will it skip jobs I've already applied to?

Yes, the automation automatically detects and skips jobs you've already applied to, saving time and avoiding duplicate applications.

What if I encounter a CAPTCHA?

If LinkedIn shows a CAPTCHA, you'll need to solve it manually. This usually happens if LinkedIn detects unusual activity. Wait several hours before trying again.

What data does the Profile Scraper extract?

The scraper extracts: full name, headline, location, current company, current title, industry, and full work history (title, company, date range, location per role). Results are returned as a JSON array.

Can I filter profiles by company and country at the same time?

Yes β€” all filters (company, country, industry, keywords) can be combined. Only profiles matching all specified filters will be returned.

Does the Profile Scraper work with free LinkedIn accounts?

Yes, but free accounts have limited search results (usually up to 100 people search results per month). LinkedIn Premium or Sales Navigator increases limits significantly.

What are the specialist agents and when should I use them?

Four agents support both skills: Strategy Agent scores and filters jobs before applying; Automation Agent advises on timing, retries, and anti-detection; Web Structure Agent provides updated LinkedIn selectors when the UI changes; QA Agent runs pre-flight checks and verifies results. Invoke whichever agent matches the problem you're debugging.

What is userProfile and why should I set it?

userProfile is a config object you pass to autoApplyLinkedInJobs. It contains your real phone, LinkedIn URL, city, ZIP, and years of experience. Without it, the automation fills forms with obvious placeholders like 0000000000, which may be flagged by LinkedIn's fraud detection. Setting real values makes applications look genuine.

How does the Strategy Agent decide which jobs to apply to?

It scores each job 0–100 based on: title keyword match (0–40 pts), seniority level match (0–30 pts), and remote status (0–20 pts). Jobs with a score below minScore (default 50) are skipped. You can also set a blockedCompanies list for hard skips or an allowedCompanies list to restrict to specific employers.

What does the QA pre-flight check verify?

It checks four things before any session starts: (1) LinkedIn session is active β€” not on a login or checkpoint page; (2) network is stable; (3) no CAPTCHA is visible; (4) no rate-limit message is showing. If any check fails, the session should not proceed.

Ready to Supercharge Your LinkedIn?

Auto-apply to jobs and scrape profiles β€” all from your AI assistant with one command.