mirror of
https://github.com/hempyhemp/hh-auto-reply.git
synced 2026-06-08 18:04:57 +00:00
init
This commit is contained in:
111
README.md
Normal file
111
README.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# 🤖 HH Auto-Apply Bot
|
||||
|
||||
Telegram-бот для автоматизации откликов на вакансии с hh.ru. Бот логинится на hh.ru от твоего имени, парсит вакансии по запросу и с помощью LLM генерирует персонализированное сопроводительное письмо под каждую вакансию — с учётом твоего резюме и описания позиции.
|
||||
|
||||
## Стек
|
||||
|
||||
| Слой | Технология |
|
||||
|---|---|
|
||||
| Runtime | Node.js 20+ (ESM), TypeScript |
|
||||
| Telegram | node-telegram-bot-api (long polling) |
|
||||
| Браузерная автоматизация | Playwright (headless Chromium) |
|
||||
| LLM / AI | Groq API — `llama-3.3-70b-versatile` |
|
||||
| ORM | Prisma 6 + SQLite |
|
||||
| Планировщик | node-cron |
|
||||
| Пакетный менеджер | Yarn 4 |
|
||||
|
||||
## Как это работает
|
||||
|
||||
```
|
||||
Пользователь → Telegram Bot
|
||||
│
|
||||
├─ Авторизация на hh.ru (Playwright + OTP через бот)
|
||||
│ └─ Сохранение сессии (cookies) в БД
|
||||
│
|
||||
├─ Парсинг резюме с hh.ru → сохранение в БД
|
||||
│
|
||||
└─ Поиск вакансий по запросу
|
||||
│
|
||||
└─ Для каждой вакансии:
|
||||
├─ Playwright парсит описание
|
||||
└─ LLM (Llama 3.3 70B) генерирует
|
||||
сопроводительное письмо на основе
|
||||
резюме + описания вакансии
|
||||
```
|
||||
|
||||
## AI / LLM
|
||||
|
||||
Сопроводительные письма генерирует **Llama 3.3 70B** через Groq API (OpenAI-совместимый интерфейс). Модель получает:
|
||||
|
||||
- Системный промпт с инструкциями по стилю (настраивается пользователем)
|
||||
- Текст резюме пользователя (парсится с hh.ru)
|
||||
- Описание конкретной вакансии (парсится Playwright'ом в реальном времени)
|
||||
|
||||
На выходе — живое, не шаблонное письмо, адаптированное под конкретную позицию.
|
||||
|
||||
В коде также подключён **Anthropic SDK** (`@anthropic-ai/sdk`) для возможности использования Claude.
|
||||
|
||||
## Возможности
|
||||
|
||||
- **Авторизация** — вход на hh.ru через email + OTP-код, сессия сохраняется в БД и переиспользуется
|
||||
- **Парсинг резюме** — автоматически скачивает твоё резюме с hh.ru после логина
|
||||
- **Поиск вакансий** — поиск по настраиваемому запросу с лимитом откликов
|
||||
- **AI-сопроводительные письма** — уникальное письмо под каждую вакансию через LLM
|
||||
- **Авто-режим** — крон-задача (пн–пт, 10:00) для ежедневного автозапуска
|
||||
- **Настройки через бот** — поисковый запрос, макс. кол-во откликов — всё меняется прямо в чате
|
||||
|
||||
## Команды бота
|
||||
|
||||
| Кнопка / команда | Действие |
|
||||
|---|---|
|
||||
| `/start` | Регистрация, главное меню |
|
||||
| `💼 Меню` | Панель управления HH Auto-Apply |
|
||||
| `🚀 Откликнуться сейчас` | Запустить поиск и генерацию писем |
|
||||
| `🔍 Изменить запрос` | Сменить поисковый запрос |
|
||||
| `🔢 Макс откликов` | Установить лимит вакансий за сессию |
|
||||
| `⏰ Авто вкл / Авто выкл` | Включить/выключить ежедневный крон |
|
||||
| `🔑 Логин` | Авторизоваться на hh.ru |
|
||||
| `⚙️ Статус` | Текущие настройки и статус авторизации |
|
||||
|
||||
## База данных
|
||||
|
||||
```
|
||||
User — telegramId, hhEmail, session (cookies), AI-промпт
|
||||
Resume — текст резюме, привязан к пользователю
|
||||
Settings — searchQuery, maxApplies
|
||||
```
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
# 1. Установить зависимости
|
||||
yarn
|
||||
|
||||
# 2. Создать .env
|
||||
echo 'DATABASE_URL="file:./dev.db"' > .env
|
||||
|
||||
# 3. Применить миграции
|
||||
yarn db-migrate
|
||||
|
||||
# 4. Запустить в dev-режиме
|
||||
yarn dev
|
||||
```
|
||||
|
||||
## Команды разработки
|
||||
|
||||
```bash
|
||||
yarn dev # запуск с hot reload (tsx watch)
|
||||
yarn build # компиляция TypeScript → dist/
|
||||
yarn start # запуск скомпилированного кода
|
||||
yarn lint # проверка ESLint
|
||||
yarn lint:fix # автофикс ESLint
|
||||
yarn db-view # Prisma Studio (GUI для БД)
|
||||
yarn db-migrate # создать и применить миграцию
|
||||
yarn db-deploy # применить миграции на проде
|
||||
```
|
||||
|
||||
## Архитектура
|
||||
|
||||
Одиночный Node.js процесс без HTTP-сервера. Весь UI — Telegram inline-клавиатуры и сообщения. Два синглтона (`TelegramBot`, `PrismaClient`) шарятся через path-алиасы `@bot` и `@prisma`.
|
||||
|
||||
Playwright запускается headless для каждой операции с hh.ru и закрывается после — никаких persistent browser-процессов. Для имитации человеческого поведения используются случайные задержки и скроллы.
|
||||
Reference in New Issue
Block a user