Linkedin Custom
БесплатноНе проверенAnalyzes LinkedIn saved jobs with EROI scoring and writes analysis back to a knowledge base for automated reporting.
Описание
Analyzes LinkedIn saved jobs with EROI scoring and writes analysis back to a knowledge base for automated reporting.
README
LinkedIn saved jobs → EROI scoring → structured reports → git-committed market intelligence
Automated pipeline that scrapes your LinkedIn saved jobs, scores them against your profile using a 6-dimension EROI model, and writes actionable reports. Built as an MCP server — use it from Claude, VS Code, Cursor, opencode, or any MCP client.
Python 3.12+ MCP PRs Welcome License: MIT
🔍 What problem does this solve?
LinkedIn's job recommendations are noisy. Of 49 saved jobs analyzed, only 12% were relevant (SLEDOVAT/follow). The rest are noise — AI hype roles, fake-engineer titles, distant locations, non-strategic employers.
This tool replaces manual scrolling and gut-feel decisions with a repeatable, transparent scoring pipeline:
📌 Your LinkedIn saved jobs
↓
🕷️ Patchright browser scraper ← 4-layer resilience (CSS + text + JSON + full DOM)
↓
📊 EROI scoring engine ← 6 dimensions, content-aware matching
↓
📝 Structured reports ← agregovany_report.md + metadata_stacku.json
↓
📈 Synthetic market analysis ← Frequency matrix + SNR + gap detection
↓
📦 Auto-committed to KB ← git commit with full history
✨ Features
| Feature | What it does |
|---|---|
| Smart scraping | 4-layer job ID extraction (href, attributes, JSON blobs, full DOM) — catches 100% of IDs |
| 6-dimension EROI scoring | Domain (35%), Tech (25%), Role (20%), Growth (10%), Formal (5%), Location (5%) |
| Fake-engineer detection | Identifies roles with "Engineer" in title but service/sales content |
| Skill gap analysis | Direct match / partial match / no-match per job, aggregated into market-wide SNR |
| Report generation | Human-readable .md + machine-readable .json + synthetic market analysis |
| Git commit | Every pipeline run auto-commits to your knowledge base |
| Session resilience | Cookie lifecycle detection, checkpoint/challenge page handling, 60s TTL cache |
| MCP-native | Works with any MCP client — Claude Desktop, VS Code, Cursor, opencode |
🚀 Quick Start
Prerequisites
- Python 3.12+
- uv (faster pip alternative —
pip install uv)
Install
git clone https://github.com/outpost2026/linkedin-mcp-custom.git
cd linkedin-mcp-custom
uv sync
Authenticate (one-time)
.\linkedin-mcp.bat --login
# Opens a browser window — log into LinkedIn, then press Enter
Verify session
.\linkedin-mcp.bat --status
# ✅ Session valid | page.url = https://www.linkedin.com/feed/
Run the pipeline
# Via MCP client (recommended)
.\linkedin-mcp.bat
# Then in your MCP client: call analyze_saved_jobs
# Or standalone CLI (bypasses MCP transport ~ 2-3 min for 49 jobs)
.venv\Scripts\python scripts\run_pipeline.py
Output: agregovany_report.md + metadata_stacku.json in your KB directory, plus synthetic report.
📊 Example output (from 49 real jobs)
📊 49 saved jobs analyzed
🟢 SLEDOVAT 6 (12%) — apply now
🟡 MEDIUM 27 (55%) — consider
🟡 HRANIČNÍ 12 (24%) — borderline
🔴 NESLEDOVAT 4 (8%) — skip
🏆 Top leads:
1. #003 Thermo Fisher — System Integration Engineer 76.5% 🟢
2. #019 Siemens — RAM/LCC Engineer 69.4% 🟢
3. #013 Siemens — Test Automation Engineer 67.6% 🟢
4. #015 Siemens — Embedded Tools Developer 65.9% 🟢
5. #031 Renesas — Digital Design Engineer 65.5% 🟢
6. #001 Desoutter — Light Automation Specialist 65.7% 🟢
🔬 Market intelligence:
IoT (56% SNR), scripting (50%) = strongest relevance predictors
AI appears in 49/49 jobs but only 12% SNR → noise signal
Biggest skill gaps: C++ (16×), Azure (12×), AWS (9×)
Full report: synteticky_report_analyza.md
🧠 EROI Scoring Model
6 dimensions
| Dimension | Weight | What it measures |
|---|---|---|
| Domain | 35% | Industrial automation (core) vs adjacent vs noise |
| Tech | 25% | Skill overlap — content-aware match ratio × coverage |
| Role | 20% | Engineering role vs "fake engineer" (service/sales) |
| Growth | 10% | Strategic employer (Siemens, ABB, Thermo Fisher…) |
| Formal | 5% | Degree requirements with flexibility detection |
| Location | 5% | Remote/hybrid/CZ vs distant/office-only |
Thresholds
| Score | Verdict |
|---|---|
| ≥65% | 🟢 SLEDOVAT (follow — apply now) |
| 50–64% | 🟡 MEDIUM (consider — mitigate gaps) |
| 40–49% | 🟡 HRANIČNÍ (borderline — only if time permits) |
| <40% | 🔴 NESLEDOVAT (skip — no time allocation) |
Special patterns detected
- Fake engineer: title says "Engineer" but content is service/sales → penalizes
role - Electronics manufacturing SMT/PCBA: caps
domainscore (adjacent, not core) - Degree flexibility: "equivalent practical experience" found → adds ~5% to
formal - Positioning match: strong
rolematch compensates for weakdomain - No-match penalty:
techscore drops sharply when key skills missing
🛠️ MCP Tools
| Tool | Description |
|---|---|
analyze_saved_jobs |
Full pipeline: scrape → EROI score → KB write → git commit |
get_saved_jobs |
List all saved job IDs from LinkedIn tracker |
get_job_details <id> |
Full posting text for a single job ID |
analyze_job <id> |
EROI score a single job (avoids timeout) |
check_session |
Verify LinkedIn auth status with diagnostics |
Timeout strategy:
analyze_saved_jobsuses time-budgeted batch processing (default 45s). For full analysis, use the CLI pipeline or callanalyze_jobper job.
📁 Output structure
B2B-Knowledge-Base/
└── 02_ANALÝZY/
└── 00_linkedin/
├── agregovany_report.md # Human-readable EROI entries
├── metadata_stacku.json # Machine-readable (schema v1.1)
└── synteticky_report_analyza.md # Market intelligence report
🧪 Development
# Tests
.venv\Scripts\python -m pytest tests/ -v
# Lint
.venv\Scripts\python -m ruff check src/
# Type check
.venv\Scripts\python -m mypy src/
Debugging known issues
See the pitevni_kniha (autopsy book) for 14 documented bugs, root causes, fixes, and 16 cross-repo engineering rules.
| Known issue | Status |
|---|---|
| MCP transport timeout for batch ops | ✅ Fixed (time-budget + per-job tool) |
| Cookie lifecycle — silent expiry | ✅ Fixed (session cache + checkpoint detection) |
| KB dedup fallback (industry=None) | ✅ Fixed |
| Summary table non-idempotent | ✅ Fixed |
| Pagination missing pages | ✅ Fixed |
| CSS selector fragility | ✅ Fixed |
🤝 Contributing
PRs welcome! This project especially needs:
- CI/CD pipeline — GitHub Actions for weekly scraping
- Docker deployment — containerize the MCP server
- More scorers — add dimensions (salary, benefits, team size)
- UI — simple dashboard for browsing scored jobs
- Translations — localize EROI labels for your market
Please read CONTRIBUTING.md first (coming soon).
📄 License
MIT — see LICENSE.
🧭 Why this exists
Built by a systems integration engineer who got tired of LinkedIn's noise-to-signal problem. The name "EROI" comes from energy-return-on-investment — a concept borrowed from off-grid solar (which the author also builds). The same principle applies to job hunting: don't spend energy where the return is negative.
"LinkedIn recommends everything. This tool tells you what matters."
🔗 Links
Установить Linkedin Custom в Claude Desktop, Claude Code, Cursor
unyly install linkedin-mcp-customСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add linkedin-mcp-custom -- uvx --from git+https://github.com/outpost2026/linkedin-mcp-analyzer linkedin-mcp-customFAQ
Linkedin Custom MCP бесплатный?
Да, Linkedin Custom MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Linkedin Custom?
Нет, Linkedin Custom работает без API-ключей и переменных окружения.
Linkedin Custom — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Linkedin Custom в Claude Desktop, Claude Code или Cursor?
Открой Linkedin Custom на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Linkedin Custom with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
