Two Playwright MCP skills: batch Easy Apply job automation and profile scraping by company, country, or industry. Works with Claude Code and Gemini CLI.
Install once, use all three
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
Scrape structured profile data (name, title, company, work history) filtered by company, country, and industry. Export as JSON.
/linkedin-profile-scraper
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
Everything you need across both skills
Apply to 20-50 Easy Apply jobs automatically. Batch process multiple pages with target-based stopping and cross-page deduplication.
Scrape structured profile data filtered by company, country, and industry. Returns JSON with full work history.
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.
Strategy Agent scores jobs by title relevance, seniority match, remote status, and company blocklist before any application is sent.
Press P to pause, R to resume, Q to quit. Full control during automation with real-time monitoring.
Built-in randomized delays, retry logic, session limits, and rate-limit detection. Configurable userProfile avoids detectable placeholder values.
Pre-flight check before each session. Per-application success verification. End-of-session PASS/WARN/FAIL report with completeness scoring.
Web Structure Agent provides multi-fallback selectors prioritising stable aria-* and data-* attributes over fragile class names.
Modular expertise β invoke the right agent for the right problem
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
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
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
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
Simple automation in 3 steps
Add both skills to Claude Code via marketplace
/plugin install linkedin-job-auto-apply
/plugin install linkedin-profile-scraper
Set your target applications, search keywords, and location preferences
targetApplications: 20, keywords: "software engineer"
Watch as Easy Apply jobs are processed automatically with real-time status
β
20/20 applications submitted successfully!
From install to first application in under 2 minutes
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
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);
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
}
});
QA Agent generates a structured PASS/WARN/FAIL session summary
// Example output:
// β
PASS β 18/20 successful (90%)
// β οΈ 2 low-confidence verifications
// β± Session: 312s
Install in under 30 seconds and start automating your LinkedIn job applications today.
Comprehensive guides and references
Get up and running in 5 minutes with step-by-step instructions
Read Guide βComplete technical reference for the Easy Apply automation skill
Read Docs βHow to scrape LinkedIn profiles by company, country, and industry β with output examples
Read Guide βFull skill reference including all configuration options and selectors
Read Docs βReal-world scenarios and practical workflows for both skills
View Examples βDetailed setup instructions for Claude Code, Gemini CLI, and GitHub Copilot
Read Guide βStrategy, Automation, Web Structure, and QA agent skill files β each with runnable code snippets
Browse Agents β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.
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.
We recommend 20-50 applications per session. Quality matters more than quantity. Take breaks between sessions (several hours) to avoid rate limiting.
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.
Yes, the automation automatically detects and skips jobs you've already applied to, saving time and avoiding duplicate applications.
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.
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.
Yes β all filters (company, country, industry, keywords) can be combined. Only profiles matching all specified filters will be returned.
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.
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.
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.
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.
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.
Auto-apply to jobs and scrape profiles β all from your AI assistant with one command.