jobfinder
Job Finder
Находит вакансии для любой профессии, в любой стране — по одному предложению или по вашему резюме — и ранжирует их по реальному шансу попасть в шорт-лист.
jobfinder daily --query "electrician jobs in Dubai"Вы получаете таблицу на рабочем столе, от лучших к худшим. Она откроется, когда завершится выполнение.
Всё выполняется на вашей машине. Ваше резюме не покидает её, кроме как в виде текста, отправляемого в API Anthropic по вашему собственному ключу, а ваши поисковые запросы уходят на подключённые доски вакансий — ровно так же, как если бы вы вводили их на этих сайтах.
Быстрый старт
Четыре шага. Займёт около пяти минут.
1. Установите
git clone https://github.com/MajidAli2006/jobfinder.git
cd jobfinder
python3 -m venv .venv
.venv/bin/pip install -e ".[all]"2. Получите один API-ключ
Перейдите на console.anthropic.com/settings/keys,
войдите, нажмите Create Key и скопируйте его. Он начинается с sk-ant-.
Это единственный ключ, который действительно нужен инструменту.
3. Поместите ключ в файл .env
cp .env.example .envОткройте .env в любом текстовом редакторе и вставьте ключ после =, без кавычек
и пробелов:
ANTHROPIC_API_KEY=sk-ant-your-key-hereСохраните файл. .env находится в git-ignore, так что ваш ключ никогда не попадёт в коммит.
4. Проверьте, что всё работает, затем ищите
.venv/bin/jobfinder setup
.venv/bin/jobfinder daily --query "warehouse jobs in Leeds"Совет: выполните
source .venv/bin/activateодин раз, и вы сможете не вводить префикс.venv/bin/до конца текущего сеанса терминала.
Related MCP server: JobSpy MCP Server
Использование из Claude (MCP)
Этот инструмент также является MCP-сервером, так что вы можете просто попросить Claude поискать за вас.
Claude Code — одна команда:
claude mcp add --scope user jobfinder -- /full/path/to/jobFinder/.venv/bin/jobfinder-mcpЗамените /full/path/to/jobFinder на путь, куда вы его клонировали. Выполните pwd внутри
папки, чтобы получить его.
Claude Desktop — откройте claude_desktop_config.json и добавьте:
{
"mcpServers": {
"jobfinder": {
"command": "/full/path/to/jobFinder/.venv/bin/jobfinder-mcp"
}
}
}Файл конфигурации находится по адресу:
Платформа | Путь |
macOS |
|
Windows |
|
После этого перезапустите Claude Desktop. Cursor и Windsurf используют тот же
формат command в своих настройках MCP.
Затем просто спросите:
"Найди мне удалённую контрактную работу React в Европе"
Доступны четыре инструмента: check_setup (проверить, что ключи работают),
preview_search (посмотреть, как был понят запрос, до того как тратить средства),
find_jobs (полный запуск — занимает несколько минут и создаёт таблицу) и
list_platforms (какие сайты вакансий обслуживают страну).
API-ключи — что нужно, а что нет
Без каких-либо ключей инструмент по-прежнему ищет в публичных объявлениях LinkedIn, на карьерных страницах работодателей (Greenhouse, Lever, Ashby, Workable и других), на десяти сайтах удалённой работы, в разделе Hacker News "Who is hiring" и на любых региональных площадках, публикующих стандартную разметку вакансий.
С ключом Anthropic (шаг 2 выше) он также понимает свободные текстовые запросы,
читает ваше резюме и оценивает соответствие и пригодность. Без него вы по-прежнему можете
искать, но вам придётся указать, что искать, в candidate.local.json, а не в предложении — см. раздел «Устранение неполадок».
Всё ниже — необязательно. Каждый пункт добавляет больше сайтов с вакансиями. Если какой-то пропустить, инструмент просто сообщит, что этот источник не использовался — он никогда не завершится ошибкой.
Бесплатные ключи, самостоятельное получение
Зарегистрируйтесь, скопируйте ключ, вставьте его в .env.
Добавьте в | Сайт | Где получить |
| Adzuna (по всему миру) | |
| Reed (Великобритания) | |
| Jooble (по всему миру) | |
| Careerjet (по всему миру) |
Как получить доступ к Indeed, Glassdoor, Bayt, Naukri и другим
Эти сайты — а также Rozee и foundit — блокируют прямые запросы с помощью CAPTCHA, но все они намеренно публикуются в индексе вакансий Google. Поэтому путь лежит через индекс Google, и несколько поставщиков продают лицензированный доступ к нему.
Все они возвращают одни и те же объявления, потому что это данные Google. Разница
заключается в цене и бесплатном лимите, а не в охвате. Выберите любой и поместите его ключ
в .env точно так же, как и остальные — инструмент использует тот, который найдёт:
Добавьте в | Поставщик | Где получить | Примечания |
| SerpApi | Бесплатная месячная квота, далее платно | |
| SearchApi.io | Те же данные, бесплатный лимит, затем платно |
Используйте переменную, соответствующую сайту, где вы зарегистрировались. Они не
взаимозаменяемы: ключ SearchApi.io в SERPAPI_KEY будет отклонён с ошибкой
401 Invalid API key. Ключи SerpApi состоят из 64 шестнадцатеричных символов; у SearchApi.io
они короче. Если вы получили отказ, проверьте, каким сайтом был выдан ключ. Выполните
jobfinder sources, и он сообщит, какого поставщика использует.
SERPAPI_KEY=your-key-hereУстановите только один. Если указаны оба, используется первый настроенный поставщик, и ни один не является обязательным — без них инструмент по-прежнему работает, просто пропускает эти сайты и сообщает об этом в сводке выполнения.
Если основная доска вакансий вашей страны не входит в бесплатный список выше, этот ключ стоит того, чтобы его получить: он обеспечивает доступ к этим сайтам в любой стране. Охват зависит от страны и формулировки запроса — в индексе Google много вакансий для "software engineer" в Пакистане и "full stack developer" в ОАЭ, а для некоторых других сочетаний нет вообще. Пустой результат отображается как таковой, а не как неработающий ключ.
Требуется одобрение
INDEED_PUBLISHER_ID, ZIPRECRUITER_API_KEY, SEEK_API_KEY,
STEPSTONE_API_KEY, BAYT_API_KEY, NAUKRI_API_KEY, ROZEE_API_KEY — это
партнёрские программы, которые должны сначала вас одобрить. Большинству людей они не нужны;
ключ SerpApi даёт доступ к тем же объявлениям.
Чтобы узнать, какие платформы обслуживают вашу страну и какие ключи им нужны:
jobfinder setup --region NigeriaКуда помещать ключи
Любой из вариантов, какой вам удобнее:
Файл с произвольным именем через
JOBFINDER_ENV=/path/to/your.env.envв папке, из которой вы запускаете команду~/.jobfinder/.env— хороший выбор, если нужен один набор ключей для всех проектов.envв папке проекта
Все они читаются и объединяются. Если ключ задан в нескольких местах, приоритет
у того, что выше по списку; ключ, который есть только в нижнем файле, тоже подхватывается.
Таким образом, общие ключи можно хранить в ~/.jobfinder/.env, а специфичные для проекта — в .env проекта.
Настоящие переменные окружения имеют приоритет над любым файлом, поэтому export ADZUNA_APP_ID=... побеждает.
Обратите внимание, что обратное неверно: сброс переменной в оболочке не скрывает
ключ, который также определён в файле .env. Формат — одна KEY=value в строке, без кавычек:
ANTHROPIC_API_KEY=sk-ant-...
ADZUNA_APP_ID=12345678
ADZUNA_APP_KEY=abcdef...Повседневное использование
Скажите, что вы хотите, простыми словами. Никаких фильтров настраивать не нужно:
jobfinder daily --query "plumber jobs in Lagos"
jobfinder daily --query "remote React contract, Europe"
jobfinder daily --query "part time warehouse work near Leeds"
jobfinder daily --query "graduate marketing internship, London"Или передайте ему своё резюме, и он сам разберётся, чем вы занимаетесь:
jobfinder daily --cv ~/cv.pdf
jobfinder daily --cv ~/cv.pdf --query "only remote, minimum £45k"Резюме читается на вашей машине. В Anthropic отправляется только текст, чтобы составить ваш поисковый профиль и оценить, насколько каждое объявление вам подходит.
Полезные флаги:
Флаг | Что делает |
| Только объявления, опубликованные за последние 7 дней (по умолчанию 30) |
| Отбросить всё, где указанная зарплата ниже этого значения |
| Также отбрасывать объявления, где зарплата не указана |
| Более быстрое и поверхностное сканирование — меньше запросов деталей и вызовов API |
| Только правила. Без вызовов API, без затрат |
| Запуск на встроенных примерах данных — удобно для тестирования |
| Не открывать таблицу по завершении |
| Сохранять отчёты в другое место |
| Где вы хотите работать. Берётся из резюме, если не указано |
| Более медленное и тщательное сканирование |
| Не перепроверять, что каждое объявление ещё открыто |
| Тот же выбор, что и |
| Ограничить запуск указанными коннекторами — см. |
| Только стартапы, быстрорастущие компании и средний бизнес |
| Оставлять вакансии на рынках, где обычно платят ниже вашего минимума |
| Никогда не запрашивать недостающий ключ; пропускать эти платформы |
| Показывать каждый шаг или только предупреждения и ошибки. Доступно для любой команды |
Каждый флаг выше работает для любой страны. --region принимает страну, город,
название на родном языке или список — "uae", "Deutschland", "Lagos", "USA, UK" —
все они распознаются.
О --min-salary: объявление, в котором зарплата не указана, сохраняется с пометкой
«Зарплата не указана», потому что нельзя доказать, что она ниже вашего минимума. Добавьте
--require-salary, если предпочитаете вообще не видеть такие объявления. Если в самом запросе
указана цифра — --query "electrician jobs, minimum $60k" — объявления без указанной зарплаты
будут перемещены на лист Prospects.
Что вы получаете
Электронную таблицу в ~/Desktop/job finder/ с тринадцатью листами: Quick Apply
(только самое необходимое), Hot Leads, All Qualified Jobs, затем разбивка по
Full Time, Part Time, Contract, Freelance, Startups и Partnerships, а также
Prospects (соответствие неясно — стоит спросить), Long Shots (соответствует, но
вероятность ответа низкая), Companies & Contacts и Search Summary
с указанием того, что было отфильтровано и почему.
Те же данные сохраняются рядом в виде .csv, .json и удобной для просмотра .html-страницы.
Процент совпадения — это оценка попадания в шорт-лист, а не совпадение по ключевым словам. Соответствие вашему резюме задаёт потолок; от него оценка зависит от того, что объявление раскрывает о конкурсе. Каждая строка показывает свою арифметику в столбце «Почему такой ранг»:
fit 87 × 1.05 = 91 — applicant count not published (-4%) · posted in the
last 24 hours (+3%) · scoped to United Kingdom, smaller pool (+6%) ·
applying straight into the employer's own system (+5%)Таким образом, идеальное совпадение при 200 претендентах будет ниже, чем хорошее совпадение, которое ещё никто не нашёл, — честный ответ на вопрос, на что уходит ваше время.
Другие команды
jobfinder setup # which keys are set, which are missing
jobfinder setup --region India # what serves a particular country
jobfinder sources # every connector and its status
jobfinder sources --test # live-check every configured key
jobfinder status # what previous runs found
jobfinder platforms --region Kenya
jobfinder platforms --region Kenya --trade "solar installer"
jobfinder check --title "..." --description "..." # why one advert passed or failedcheck также принимает --company, --location и --url, что позволяет оценить
работодателя, соответствие и способ подачи заявки, а не только формулировку.
Чтобы сделать один поиск используемым по умолчанию, чтобы простой jobfinder daily запускал
его, создайте candidate.local.json в папке проекта:
{
"home_country": "Nigeria",
"default_search": {
"label": "Electrical",
"query": "electrician jobs in Lagos",
"core_terms": ["electrician", "electrical"]
}
}Он находится в git-ignore. Без него простой jobfinder daily спросит, что искать,
а не будет угадывать.
Устранение неполадок
«Я не знаю, какую работу искать» — укажите --query или --cv. Он не будет
придумывать поиск за вас.
«Для пользовательского поиска требуется уровень оценки Claude» — свободный текстовый
--query должен быть прочитан моделью, прежде чем по нему можно будет искать, поэтому
требуется ANTHROPIC_API_KEY. Выполнение завершается с кодом 1 и не создаёт отчёт. Либо
задайте ключ, либо укажите поиск самостоятельно в candidate.local.json, как показано ниже.
No jobs found — расширьте окно с помощью --days 30, проверьте, что название вашей страны написано полностью, и выполните jobfinder setup --region <your country>, чтобы узнать, не требуют ли сайты, которые вы используете, ключ, который вы не задали.
"ANTHROPIC_API_KEY is not set" — файл .env находится не там, где его ищет инструмент, или ключ заключён в кавычки. Выполните jobfinder setup, чтобы увидеть, что он нашёл. Помните, что файл должен называться .env, а не env или .env.txt.
Ничего не происходит в Windows — установите с помощью pip install -e ".[all]", а не запускайте напрямую из исходного кода; Windows требуется встроенный пакет tzdata.
Хотите увидеть, как это работает, прежде чем настраивать ключи? Для свободного текстового --query требуется ключ Anthropic, потому что кто-то должен прочитать ваше предложение и превратить его в поисковый запрос. Чтобы запустить без каких-либо ключей, передайте поисковый запрос напрямую — поместите это в candidate.local.json в папке проекта:
{
"default_search": {
"label": "Warehouse",
"query": "warehouse operative",
"core_terms": ["warehouse", "forklift"]
}
}затем запустите его на прилагаемых образцах объявлений:
jobfinder daily --offline --no-llmЭто создаст полную электронную таблицу, не обращаясь ни к чему.
Разработка
.venv/bin/pip install -e ".[all,dev]"
.venv/bin/python -m pytest tests/ -q # 661 tests, fully offline
.venv/bin/ruff check job_agent/ tests/Для тестов не нужны ключи и доступ в сеть.
Конфиденциальность
Ваш файл с резюме остаётся на вашем компьютере — он считывается локально, и только извлечённый текст отправляется в API Anthropic, с вашего собственного ключа, для создания вашего профиля поиска и оценки соответствия. Текст объявлений отправляется в тот же API для той же цели и больше никуда.
Ваши поисковые запросы отправляются на те сайты вакансий, которые вы включили, потому что так работает поиск — это те же слова, которые вы бы ввели на этих сайтах. Если ключи не заданы, это означает публичный поиск LinkedIn и открытые доски вакансий. Выполните jobfinder sources, чтобы увидеть, какие именно активны.
Ничего не отправляется автору этого инструмента, и никакой телеметрии нет. Ключи API считываются из .env, который игнорируется git, и удаляются из журналов и сообщений об ошибках — неудачный запрос, содержащий ключ в URL-адресе, редактируется перед выводом.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI resume triage for recruiters. Query your candidate pool from Claude or ChatGPT.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Job search tracker for Claude and ChatGPT: applications, interviews, follow-ups, company watch.
1Analyze job listings against your resume, track applications, and generate cover letters.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables users to search for jobs, prefill applications using AI, and automate submissions across major platforms like Lever and Ashby directly from Claude or Cursor. It provides a full suite of tools for managing job queues, profile data, and resumes within a chat interface.37MIT
- AlicenseNot gradedqualityAmaintenanceEnables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.6MIT
- FlicenseAqualityDmaintenanceTransforms Claude into an AI job-hunting assistant that searches remote job boards, scores roles against your CV, generates tailored cover letters, and logs everything to a Notion tracker.11-
- FlicenseNot gradedqualityCmaintenanceEnables Claude to parse CVs, search job boards (Remotive, Arbeitnow, Adzuna, Greenhouse/Lever), tailor resumes and cover letters, and prepare application packages with direct apply links—without ever auto-submitting. It runs 100% locally and free, storing jobs and applications as JSON files.-