Go to file
itqop cb7202d142 Fix readme 2025-06-27 11:06:50 +03:00
hh_bot Main commit v1 2025-06-27 10:57:34 +03:00
.gitignore Main commit v1 2025-06-27 10:57:34 +03:00
LICENSE Main commit v1 2025-06-27 10:57:34 +03:00
README.md Fix readme 2025-06-27 11:06:50 +03:00
config.example Main commit v1 2025-06-27 10:57:34 +03:00
main.py Main commit v1 2025-06-27 10:57:34 +03:00
requirements.txt Main commit v1 2025-06-27 10:57:34 +03:00
test_basic.py Main commit v1 2025-06-27 10:57:34 +03:00

README.md

🤖 HH.ru Bot - Автоматизация поиска работы

Современный бот для автоматического поиска и отклика на вакансии с поддержкой ИИ-анализа

Python 3.10+ License: CC BY-NC-SA 4.0 Code style: black

🎯 Что умеет бот

  • 🔍 Умный поиск - Находит релевантные вакансии по ключевым словам
  • 🤖 ИИ-анализ - Gemini AI оценивает соответствие резюме требованиям
  • 📝 Автоматические отклики - Отправляет заявки на подходящие вакансии
  • ⚙️ Гибкая настройка - Настраиваемые критерии поиска и фильтрации
  • 📊 Детальная статистика - Отчёты о проделанной работе
  • 🛡️ Безопасность - Имитация человеческого поведения, паузы между действиями

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

1. Установка

# Клонируем репозиторий
git clone https://github.com/itqop/hh-bot.git
cd hh-bot

# Устанавливаем зависимости
pip install -r requirements.txt

2. Настройка

Создайте файл .env в корне проекта:

GEMINI_API_KEY=your_gemini_api_key_here

3. Подготовка резюме

Создайте файлы с информацией о себе в папке data/:

  • experience.txt - Опыт работы
  • about_me.txt - О себе
  • skills.txt - Навыки и технологии

💡 При первом запуске бот автоматически создаст примеры этих файлов

4. Запуск

# Рекомендуемый способ
python -m hh_bot

# Альтернативный способ
python main.py

📋 Пример использования

  1. Запустите бота одной из команд выше
  2. Настройте поиск - введите ключевые слова (например: "Python junior")
  3. Выберите параметры - максимальное количество откликов, использование ИИ
  4. Подтвердите запуск - бот начнёт работу автоматически
  5. Дождитесь результатов - получите подробный отчёт о проделанной работе
🚀 HH.ru АВТОМАТИЗАЦИЯ v2.0
==================================================
🏗️ Архитектурно правильная версия
🤖 С поддержкой Gemini AI
📄 Загрузка резюме из файлов
==================================================

⚙️ ТЕКУЩИЕ НАСТРОЙКИ:
🔍 Ключевые слова: python junior
📊 Максимум заявок: 40
🤖 Gemini AI: ✅ Доступен
🌐 Режим браузера: Видимый

🎯 НАСТРОЙКА ПОИСКА:
Ключевые слова [python junior]: python разработчик
Использовать AI фильтрацию? [y/n]: y
Максимум заявок [40]: 25

Начать автоматизацию? [y/n]: y

🏗️ Архитектура проекта

hh-bot/
├── 📁 hh_bot/                    # Основной пакет
│   ├── 📁 cli/                   # Интерфейс командной строки
│   │   └── interface.py          # CLI логика
│   ├── 📁 config/                # Конфигурация
│   │   ├── settings.py           # Настройки и константы
│   │   └── logging_config.py     # Логирование
│   ├── 📁 core/                  # Бизнес-логика
│   │   └── job_application_manager.py  # Главный менеджер
│   ├── 📁 models/                # Модели данных
│   │   └── vacancy.py            # Структуры вакансий
│   └── 📁 services/              # Сервисы
│       ├── hh_api_service.py     # API HH.ru
│       ├── gemini_service.py     # Gemini AI
│       └── browser_service.py    # Автоматизация браузера
├── 📁 data/                      # Файлы резюме
├── 📁 logs/                      # Логи работы
├── main.py                       # Точка входа
├── requirements.txt              # Зависимости
└── README.md                     # Документация

⚙️ Конфигурация

Переменные окружения

Переменная Описание Значение по умолчанию
GEMINI_API_KEY API ключ для Gemini AI -

Настройки в коде

# В hh_bot/config/settings.py
class AppConstants:
    # Параметры поиска
    MAX_VACANCIES_PER_PAGE = 50
    MAX_SEARCH_PAGES = 5
    DEFAULT_MAX_APPLICATIONS = 40
    
    # ИИ анализ
    DEFAULT_AI_THRESHOLD = 0.7
    
    # Таймауты
    DEFAULT_TIMEOUT = 30
    API_PAUSE_SECONDS = 0.5

🤖 ИИ-функциональность

Как работает Gemini AI

  1. Анализ вакансии - Извлекает требования из описания
  2. Сопоставление с резюме - Сравнивает навыки и опыт
  3. Оценка соответствия - Выставляет балл от 0.0 до 1.0
  4. Принятие решения - Рекомендует откликаться или нет

Пример анализа

🤖 ЭТАП 2: AI анализ вакансий
Анализ 1/15: Python разработчик...
✅ Добавлено в список для отклика

🎯 AI фильтрация завершена:
   🤖 Проанализировано: 15
   ✅ Рекомендовано: 8
   📈 % одобрения: 53.3%

📊 Статистика работы

После завершения работы бот предоставляет подробную статистику:

📊 ИТОГОВАЯ СТАТИСТИКА:
============================================================
📝 Всего заявок: 25
✅ Успешных: 18
❌ Неудачных: 2
⚠️ Уже откликались ранее: 5
📈 Успешность: 72.0%
============================================================

🎉 Отлично! Отправлено 18 новых заявок!
💡 Рекомендуется запускать автоматизацию 2-3 раза в день

🔧 Разработка

Установка для разработки

# Клонируем и устанавливаем в dev режиме
git clone https://github.com/itqop/hh-bot.git
cd hh-bot
pip install -e .

# Устанавливаем dev зависимости
pip install pytest black flake8

Запуск тестов

# Базовые тесты
python test_basic.py

# Или через pytest
python -m pytest test_basic.py -v

Проверка качества кода

# Форматирование
python -m black hh_bot/ main.py

# Линтер
python -m flake8 hh_bot/ main.py --max-line-length=100

🛡️ Безопасность

  • Случайные паузы между действиями (3-6 секунд)
  • Имитация человеческого поведения в браузере
  • Respect robots.txt и ограничения API
  • Graceful degradation при ошибках
  • Подробное логирование для мониторинга

📝 Получение Gemini API ключа

  1. Перейдите на Google AI Studio
  2. Войдите в свой Google аккаунт
  3. Создайте новый API ключ
  4. Добавьте его в файл .env

FAQ

Q: Бот не находит вакансии
A: Проверьте ключевые слова поиска и настройки фильтрации

Q: Gemini AI не работает
A: Убедитесь что API ключ указан правильно в .env файле

Q: Браузер не открывается
A: Установите Chrome браузер, драйвер установится автоматически

Q: Много ошибок в логах
A: Проверьте подключение к интернету и доступность HH.ru

📄 Лицензия

CC BY-NC-SA 4.0 - Некоммерческая лицензия с указанием авторства

⚠️ ВАЖНО: Проект запрещено использовать в коммерческих целях!

  • Разрешено: Личное использование, обучение, исследования
  • Запрещено: Продажа, коммерческие сервисы, монетизация

Подробности в файле LICENSE

🤝 Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для новой функции
  3. Внесите изменения
  4. Добавьте тесты
  5. Создайте Pull Request

📞 Поддержка


Поставьте звезду, если проект был полезен!