Зачем это нужно
Поиск работы на hh — это игра в числа. Отклик открывают в среднем на треть резюме, приглашают ещё реже, и чтобы дойти до нормального оффера, откликнуться надо на десятки, а то и сотни вакансий. Руками это выматывает: открыл, прочитал, вставил сопроводительное, нажал, повторил. Час в день на механику, которая не требует головы.
Я выкатил в открытый доступ бота на GitHub, который снимает с тебя эту рутину: сам ищет свежие вакансии по твоим критериям, отсекает мусор, шлёт отклик с сопроводительным и присылает ответы рекрутёров прямо в Telegram. Ты занимаешься собеседованиями, а не копипастом. Разберу, что он умеет, как поднять его у себя за вечер и как не подставить аккаунт под ограничения.
Сразу честно: hh запрещает автоматические отклики правилами. Бот ведёт себя аккуратно — через официальный API, с паузами и лимитом, — но риск для аккаунта остаётся. Это инструмент для личного пользования и на свой страх. Про то, как снизить риск, — отдельный раздел ниже.
Что умеет бот
Это не тупой кликер, который спамит по всему подряд. Логика ближе к личному ассистенту, который знает твои критерии и работает по ним.
| Функция | Что делает |
|---|---|
| Поиск каждые 5 минут | гоняет твои поисковые запросы и ловит вакансии, как только их публикуют |
| Скоринг по правилам | оценивает заголовок, зарплату, стек и опыт — откликается только на то, что подходит |
| Отклик с сопроводительным | шлёт через официальный API с рандомной задержкой и твоим письмом |
| Ответы на тесты | опционально подключает нейросеть, чтобы отвечать на вопросы работодателя |
| Сообщения рекрутёров в Telegram | пересылает ответы и приглашения тебе в бота, чтобы не сидеть на hh |
| Буст резюме и статусы | поднимает резюме в поиске и ведёт историю: кто посмотрел, пригласил, отказал |
Как выглядит решение по конкретной вакансии — каждый критерий даёт свой балл, и только сумма выше порога проходит в отклик:
Как он устроен
Под капотом ничего экзотического — обычный питоновский стек, который поднимается на любом ноутбуке или дешёвом VPS.
Python 3.12 + Playwright. Вход в аккаунт — через настоящий браузер, а не подделку заголовков. Ты один раз логинишься руками, сессия сохраняется, дальше бот использует её сам.
Официальный API hh для откликов. Сами отклики идут не кликами по кнопкам, а через API — это стабильнее и чище, чем эмуляция мыши.
SQLite. Локальная база помнит, куда ты уже откликался, какие вакансии отсеяны и в каком они статусе.
Telegram Bot API. Весь интерфейс — в Telegram: уведомления об откликах, сообщения рекрутёров, команды управления. Отдельный интерфейс не нужен.
Опциональная нейросеть. Только если хочешь автоответы на вопросы-тесты работодателя. Без неё бот работает полностью бесплатно.
Установка по шагам
Нужен Python 3.12 или новее и терминал. Дальше — пять команд. Если поднимал хоть раз что-то по инструкции, займёт минут десять.
.venv\Scripts\activate вместо source. Остальное одинаково.После этого копируешь .env.example в .env и заполняешь его — это следующий шаг. Без заполненного конфига бот не поймёт, кто ты, что ищешь и куда слать уведомления.
Настройка .env
Весь мозг бота — в одном файле. Кода трогать не нужно, только вписать свои значения. Разберу ключевые поля.
Ключевые для качества поля — NEGATIVE_KEYWORDS и SALARY_MIN. Первое режет вакансии, куда ты идти не хочешь (стажировки, чужой стек, не та роль), второе отсекает низкую вилку. Именно они превращают «спам по всему» в «отклики только на нужное».
Запуск и Telegram
Сначала — разовый вход. Запускаешь manual_login.py, откроется браузер, логинишься в hh руками (включая капчу и SMS, если есть). Сессия сохранится локально, и больше вводить пароль не придётся. После этого стартуешь основной процесс:
Дальше бот живёт сам, а ты видишь его работу в Telegram — примерно так:
Python-разработчик — 180 000 ₽
score 8.5 · ООО «Ромашка»
Стажёр Python — без зарплаты
стоп-слово «стажёр» · score 2.1
«Здравствуйте! Готовы созвониться завтра в 15:00?»
Управлять и смотреть статистику можно командами прямо в чате — не нужно лезть в консоль:
Чтобы бот работал круглосуточно, а не пока открыт ноутбук, кинь его на дешёвый VPS и заверни в systemd или tmux — процесс переживёт закрытие сессии. Логика та же, что у любого скрипта-демона.
Сопроводительное письмо: как не выглядеть спамом
Тут важный нюанс. Платные сервисы генерят письмо под каждую вакансию нейросетью — этот бот шлёт один шаблон на всех (поле COVER_LETTER в конфиге). Звучит как минус, но на деле одно хорошо написанное письмо работает не хуже пачки шаблонных AI-текстов — если написать его правильно. А hh показывает сопроводительное рекрутёру прямо в списке откликов: часто именно первые две строки решают, откроют резюме или пролистают.
Раз письмо одно на всех — в нём не должно быть ни названий компаний, ни имён. Пиши под семью ролей, а не под конкретную вакансию:
Что держать в голове, когда пишешь свой COVER_LETTER:
Первое предложение — кто ты и ключевой стек. Без «ищу работу» и «пишу по вакансии» — рекрутёр и так в откликах.
Второе — польза или сильная сторона конкретикой. «Поднимал сервисы до N RPS» бьёт «ответственный и стрессоустойчивый» в клочья.
Убери воду. «Коммуникабельный, обучаемый, в команде и сам» — это листают. Каждое слово должно нести факт.
2–4 предложения, не полотно. Длинные письма в списке откликов не читают — обрежется на второй строке.
Часть вакансий требует ответить на вопросы работодателя — без ответа отклик не уходит. Если подключить LLM-ключ (OpenAI или другой), бот отвечает на эти вопросы сам. Без ключа такие вакансии просто пропускаются, чтобы не слать пустой отклик — это нормально, их обычно немного.
Риски и как их снизить
Не буду продавать сказку. Автоматические отклики нарушают правила hh, и площадка может ограничить аккаунт. Полностью убрать риск нельзя — можно только вести себя так, чтобы поведение было неотличимо от активного, но живого соискателя.
Живое сопроводительное под нишу и аккуратный темп решают больше, чем кажется: бот экономит время на механике, но не заменяет нормальное резюме. Если резюме слабое, никакая автоматизация конверсию не вытянет — тут работает та же логика, что и во всём поиске работы.
Бесплатный бот против платных сервисов
Сервисов автооткликов на hh — десяток: hhgo, jobturbo, hh-sniper и другие. Стоят они 300–1000 ₽ в месяц, ставить ничего не надо — зашёл, нажал, погнали. Так зачем возиться со своим ботом? Разложу по-честному, где что выигрывает.
| Этот бот (open-source) | Платный сервис | |
|---|---|---|
| Цена | Бесплатно, MIT | 300–1000 ₽/мес |
| Лимит откликов | свой, в разумных рамках | часто 25/день на бесплатном тарифе |
| Где крутится | твой комп или VPS | чужое облако |
| hh-логин и пароль | остаётся у тебя на машине | отдаёшь стороннему сервису |
| Сопроводительное | один шаблон на всех | AI под каждую вакансию |
| Код | открыт, читаешь сам | закрыт |
| Настройка | терминал и .env, ~вечер | готово из коробки |
Вывод простой. Не хочешь возиться с терминалом и нужны письма под каждую вакансию — плати, готовый сервис проще. Важнее цена, контроль и то, что логин от hh не улетает на чужой сервер, — бери этот бот. И главное честно: оба варианта в серой зоне правил hh, так что «безопаснее» тут не про сервис, а про темп и лимиты — а их у своего бота ты держишь сам.
Частые вопросы
Забанят ли аккаунт на hh за автоотклики?
Автоотклик на hh бесплатный?
Нужно ли уметь программировать?
Как бот понимает, на какие вакансии откликаться?
Что с сопроводительным письмом?
Куда приходят ответы рекрутёров?
На чём работает бот технически?
Главное
Бот берёт на себя механику откликов на hh: ищет вакансии по твоим критериям, отсекает мусор скорингом, шлёт отклик с сопроводительным и присылает ответы рекрутёров в Telegram. Ставится за вечер: пять команд, один файл .env, разовый вход. Помни про правила hh — держи человеческий темп, точные стоп-слова и аккаунт, который не жалко. Автоматизация экономит время, но нормальное резюме за тебя не напишет.
Код открытый — забирай, форкай, дорабатывай под себя: github.com/YAMAKAYAMACO/hh-autoresponder. Звезда репозиторию приветствуется.