Skip to content
Projects

Riper21/hh-sniper has 36 GitHub stars and 4 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 20:09 UTC. Last push 2026-10-19.

How these counts are measured

Снайпер вакансий hh.ru: LLM-скоринг под ваш профиль, автопилот откликов в первые 10 минут после публикации (обгоняем ботов), статические письма с гвардом от галлюцинаций. Всё локально на вашем ПК, официальный API, Python.

Measured star growth

in 24h
0
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

hh-snpr

CI

Windows / Linux / macOS / Docker (VPS, 24/7) — один конвейер, четыре способа тикать: джоба Task Scheduler (Windows), systemd user-timer (Linux), launchd (macOS), контейнер с рестартом (Docker/VPS). Общий тикер — python -m snpr daemon.

Автоматический снпрер вакансий с hh.ru: каждую минуту ищет свежие вакансии по вашим запросам, оценивает их LLM на соответствие вашему профилю, прикладывает сопроводительное письмо и откликается — вручную или автопилотом (только по вакансиям младше 10 минут: на ходовые вакансии боты откликаются каждые ~4 секунды, и чем раньше отклик — тем выше вы в очереди).

поиск hh ──► дедуп ──► жёсткий гейт (пол зарплаты) ──► LLM-скоринг 0-100
                                                       │
                    ┌──────────────────────────────────┤
                    ▼                                  ▼
            скор 45-54 ИЛИ старше 10 мин        скор >= 55 И свежее 10 мин
                    │                                  │
               ПАРКОВКА                         АВТОПУСК
        (окно "approve" + звук:                 (письмо + отклик
         y = откликнуть,                        уходит сразу)
         n = пропустить,
         e = поправить письмо)
  • LLM используется только для скоринга — письмо статическое, текст не подгоняется под вакансию (промпт-инъекция физически не может его изменить).
  • Гвард письма перед каждым автопилотом: числа в письме разрешены только из вашего профиля фактов, ссылки — только из вашего белого списка.
  • Тикер на любой ОС: Windows — скрытая джоба каждую минуту (адаптивное окно поиска: ноут спал — первый такт доберёт пропущенное, лок на повторный запуск); Linux/macOS — scripts/unix/install.sh (systemd/launchd-юнит) или python -m snpr daemon; Docker на VPS — docker compose up -d --build, контейнер тикает 24/7. Когда есть что решить — окно approve + сигнал (на Linux/macOS/Docker — BEL в логах).
  • Жизнь отклика: автоподнятие резюме каждые 4 ч в рабочие часы (буст видимости), «няня» — отчёт о реакциях работодателей, автоответы на вопросы ИИ-скринеров в чатах, уборка неактивных откликов, локальный блэклист работодателей.

Быстрый старт

Подробно — в ИНСТРУКЦИЯ_ПОЛЬЗОВАТЕЛЯ.md. Коротко:

# 1. Окружение
python -m venv .venv
.venv\Scripts\pip.exe install -e .\hh-applicant-tool

# 2. Ключи: скопируйте .env.example в .env, заполните (см. файл)
Copy-Item .env.example .env

# 3. Токен hh (один раз, браузер + капча)
.venv\Scripts\python.exe -m snpr.hh_tool ваш@email.ru

# 4. Настройте под себя snpr\config.toml:
#    [scoring].profile — кто вы (грейд/стек/деньги/гео)
#    [letter].static_text — текст письма работодателю
#    [search].queries — слова поиска

# 5. Первый прогон всухую (без реальных откликов)
.venv\Scripts\python.exe -m snpr sne --dry-run

# 6. Боевой режим — джоба каждую минуту
.venv\Scripts\python.exe -m snpr job on
.venv\Scripts\python.exe -m snpr job status   # проверка

Linux/macOS: те же команды (python вместо .venv\Scripts\python.exe), job on подскажет установку юнита (scripts/unix/install.sh) или tmux. VPS без ноутбука: docker compose up -d --build (токен переносится с машины, где есть браузер — см. ИНСТРУКЦИЯ, «Постоянный режим — VPS»).

Настройка под себя

Вся персонализация — в одном файле snpr\config.toml, правится без перезапуска (следующий такт подхватит):

Ключ Что это
[scoring].profile Профиль кандидата → системный промпт скорера: от этого зависит, что получит высокий скор
[search].queries Слова полнотекстового поиска hh
[letter].static_text Текст письма, уходящего с откликом
[letter].profile Факты с цифрами: числа из письма гвард проверяет по ним
[letter_guard].allowed_url_prefixes Ваши github/статьи, разрешённые в письме
[scoring].auto_approve_min Порог автопилота (55; 0 = всё на ручное решение)
[send].max_age_minutes Максимальный возраст вакансии для автопилота (10)

Код модулей содержит те же значения как ПРИМЕР-дефолты (пустой конфиг — работаем на примере). Пороги, гейты и механика описаны в комментариях конфига.

После отклика

Отклик ушёл — дальнейший жизненный цикл тоже автоматизирован:

  • Автоподнятие (само, в каждый такт): POST /resumes/{id}/publish каждые 4 ч в окне 9–19 МСК — hh ранжирует по свежести поднятия, это бесплатный буст видимости. Вручную: python -m snpr raise [--force].
  • Няня (python -m snpr nanny): отчёт о движении по откликам — ответы работодателей, просмотры резюме, смены статусов; снапшоты data\nanny.jsonl, между прогонами показывается только разница.
  • Автоответы в чатах (python -m snpr reply [--dry-run]): после отклика ИИ-скринеры присылают в чат анкету («релокация? график? зарплата?»). Кнопки нажимаются только при точном совпадении с вариантом, текст ботам — из фактов профиля с гвардом (чужие контакты и числа не уйдут), люди-рекрутеры по умолчанию остаются вам. Автохук раз в 15 мин включается [reply] enabled = true, дубли исключены (data\replied.jsonl).
  • Уборка (python -m snpr cleanup): снять неактивные отклики — отказы и тишину дольше 14 дней (созвоны/приглашения/офферы не трогает). По умолчанию сухой прогон, боевой запуск — --apply.
  • Блэклист (python -m snpr blacklist add <vacancy_id>): локальный файл data\blacklist.txt, вакансии чёрного списка отклоняются до скоринга.

Подробности и параметры — в ИНСТРУКЦИЯ_ПОЛЬЗОВАТЕЛЯ.md, п. 8.

Структура

snpr\            конвейер: фильтры, скоринг, письмо, гвард, пуск, джоба,
                    няня, поднятие, ответы в чатах, уборка, блэклист
  config.toml      ЕДИНЫЙ файл персонализации и порогов
  sne.py         прогон: поиск → дедуп → скоринг → решение → пуск
  daemon.py        кроссплатформенный тикер (Linux/macOS/Docker/tmux)
  job.py           job status|on|off|run|log — управление планировщиком
  nanny.py         няня: снапшоты откликов и отчёт о движении
  resume_raise.py  автоподнятие резюме (хук в такт + ручная команда)
  chat_reply.py    автоответы на вопросы в чатах (кнопки + текст с гвардом)
  cleanup.py       снятие неактивных откликов (dry-run по умолчанию)
scripts\           Windows: регистрация задачи, скрытый тик, approve-окно
  unix\            Linux/macOS: install.sh (systemd-таймер + launchd)
  docker\          healthcheck контейнера
Dockerfile,
docker-compose.yml  VPS-режим 24/7: контейнер с рестартом, тома data/ + токен
tests\             321 тест (pytest, CI на ubuntu+windows)
hh-applicant-tool\ база для API hh (вендор-снапшот, см. ниже)
ИНСТРУКЦИЯ_ПОЛЬЗОВАТЕЛЯ.md  подробная инструкция
CHANGELOG.md      история изменений (релизы по датам)

Благодарности и лицензия

  • API-слой и авторизация hh — hh-applicant-tool (вендорен снапшотом в hh-applicant-tool\, лицензия Non-Commercial — коммерческое использование базы запрещено её лицензией).
  • Остальной код — под MIT.
  • hh-snpr — неофициальный клиент, использует публичное API hh.ru от имени вашей учётки; соблюдайте условия hh и не превышайте лимиты откликов (скоринг и гейт свежести берегут их автоматически).

Ключевые слова

hh.ru, hh, автопликатор, автоотклик, отклики на вакансии, поиск работы, автоматизация поиска работы, скоринг вакансий, LLM, GPT, ИИ, сопроводительное письмо, Python, планировщик задач, job search, job hunting, auto apply, job applications, automation, bot, headhunter

Explore related projects