Skip to content

Latest commit

 

History

History
750 lines (608 loc) · 29.4 KB

File metadata and controls

750 lines (608 loc) · 29.4 KB

🤖 Threads Bot - Автоматизация для Threads.net

Современный сервис для автоматизации взаимодействий с социальной сетью Threads, включающий умное взаимодействие с постами, ИИ-комментирование и детальную аналитику.

Threads Bot Dashboard

✨ Основные возможности

🎯 Умная автоматизация

  • Поиск по ключевым словам - находит релевантные посты
  • Автоматические лайки - ставит лайки на подходящие посты
  • ИИ-комментарии - генерирует осмысленные комментарии
  • Sentiment анализ - анализирует эмоциональную окраску постов
  • Фильтрация контента - избегает неподходящего контента

🤖 ИИ интеграция

  • OpenAI GPT (GPT-3.5, GPT-4)
  • Anthropic Claude (все модели)
  • OpenRouter (100+ моделей)
  • Настраиваемые промпты для каждого провайдера
  • Система плохих примеров для обучения ИИ

📊 Аналитика и мониторинг

  • Детальная статистика с графиками
  • Категоризация постов автоматическая
  • Экспорт данных в CSV формате
  • Real-time мониторинг выполнения заданий
  • Система логирования всех действий

🔐 Безопасность

  • Тестовый режим - генерация без отправки комментариев
  • Управление аккаунтами с проверкой валидности
  • Контроль лимитов времени и количества
  • Паузы между действиями для имитации человеческого поведения

🛠 Технологический стек

Категория Технологии
Backend Node.js, Express.js, Puppeteer
База данных MySQL 8.0+
Frontend Bootstrap 5, Chart.js, Vanilla JS
ИИ API OpenAI, Anthropic, OpenRouter
Автоматизация Puppeteer, Chrome/Chromium

📋 Системные требования

Минимальные требования

  • ОС: Windows 10+ или Linux (Ubuntu 18.04+, CentOS 7+)
  • RAM: 4 GB
  • CPU: 2 ядра
  • Место на диске: 2 GB
  • Интернет: Стабильное подключение

Рекомендуемые требования

  • ОС: Windows 11 или Ubuntu 20.04+
  • RAM: 8 GB
  • CPU: 4 ядра
  • Место на диске: 5 GB
  • Интернет: Высокоскоростное подключение

🚀 Установка

📦 Шаг 1: Установка Node.js

Windows

  1. Скачайте Node.js с официального сайта
  2. Выберите LTS версию (18.x или новее)
  3. Запустите установщик и следуйте инструкциям
  4. Проверьте установку:
node --version
npm --version

Linux (Ubuntu/Debian)

# Обновление пакетов
sudo apt update

# Установка Node.js 18.x
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# Проверка установки
node --version
npm --version

Linux (CentOS/RHEL)

# Установка Node.js 18.x
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs

# Или для новых версий
sudo dnf install -y nodejs npm

🗄️ Шаг 2: Установка MySQL

Windows

  1. Скачайте MySQL с официального сайта
  2. Запустите MySQL Installer
  3. Выберите "Server only" или "Full" установку
  4. Установите пароль для root пользователя
  5. Проверьте установку через MySQL Workbench или командную строку

Linux (Ubuntu/Debian)

# Установка MySQL Server
sudo apt update
sudo apt install mysql-server

# Безопасная настройка MySQL
sudo mysql_secure_installation

# Создание пользователя для приложения
sudo mysql -u root -p

Linux (CentOS/RHEL)

# Установка MySQL
sudo yum install mysql-server
# Или для новых версий
sudo dnf install mysql-server

# Запуск и автозапуск
sudo systemctl start mysqld
sudo systemctl enable mysqld

# Получение временного пароля
sudo grep 'temporary password' /var/log/mysqld.log

🗃️ Шаг 3: Настройка базы данных

-- Подключение к MySQL
mysql -u root -p

-- Создание базы данных
CREATE DATABASE threads_automation CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Создание пользователя (рекомендуется)
CREATE USER 'threads_user'@'localhost' IDENTIFIED BY 'secure_password_here';
GRANT ALL PRIVILEGES ON threads_automation.* TO 'threads_user'@'localhost';
FLUSH PRIVILEGES;

-- Выход
EXIT;

📂 Шаг 4: Скачивание и настройка проекта

# Клонирование репозитория
git clone https://github.com/djeknet/threads-bot.git
cd threads-bot

# Установка зависимостей
npm install

# Создание папки для cookies (если не существует)
mkdir -p cookies

# Создание файла переменных окружения
cp .env.example .env

⚙️ Шаг 5: Настройка переменных окружения

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

# === Конфигурация базы данных ===
DB_HOST=localhost
DB_PORT=3306
DB_USER=threads_user
DB_PASSWORD=secure_password_here
DB_NAME=threads_automation

# === Конфигурация сервера ===
PORT=3000
NODE_ENV=production

# === Конфигурация ИИ провайдеров (опционально) ===
# OpenAI
OPENAI_API_KEY=sk-your-openai-key-here

# Anthropic
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key-here

# OpenRouter
OPENROUTER_API_KEY=sk-or-your-openrouter-key-here

# === Конфигурация Puppeteer ===
PUPPETEER_HEADLESS=true
PUPPETEER_ARGS=--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage

# === Пути к файлам ===
COOKIES_DIR=./cookies
LOGS_DIR=./logs

🖥️ Шаг 6: Установка зависимостей для Puppeteer

Windows

Puppeteer автоматически скачает Chromium при установке. Если возникают проблемы:

# Установка дополнительных компонентов
npm install --global windows-build-tools

Linux (Ubuntu/Debian)

# Установка зависимостей для Chromium
sudo apt-get update
sudo apt-get install -y \
    ca-certificates \
    fonts-liberation \
    libasound2 \
    libatk-bridge2.0-0 \
    libatk1.0-0 \
    libatspi2.0-0 \
    libcups2 \
    libdbus-1-3 \
    libdrm2 \
    libgbm1 \
    libgtk-3-0 \
    libnspr4 \
    libnss3 \
    libwayland-client0 \
    libx11-6 \
    libx11-xcb1 \
    libxcb1 \
    libxcomposite1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxrandr2 \
    libxss1 \
    libxtst6 \
    lsb-release \
    wget \
    xdg-utils

Linux (CentOS/RHEL)

# Установка зависимостей
sudo yum install -y \
    alsa-lib \
    atk \
    cups-libs \
    gtk3 \
    liberation-fonts \
    libXcomposite \
    libXcursor \
    libXdamage \
    libXext \
    libXi \
    libXrandr \
    libXScrnSaver \
    libXtst \
    pango \
    xorg-x11-fonts-100dpi \
    xorg-x11-fonts-75dpi \
    xorg-x11-fonts-cyrillic \
    xorg-x11-fonts-misc \
    xorg-x11-fonts-Type1

🎮 Запуск

Первый запуск

# Создание таблиц базы данных (автоматически при первом запуске)
npm start

Режимы запуска

Режим разработки

# С автоперезагрузкой при изменениях
npm run dev

Продакшн режим

# Оптимизированный запуск
npm start

Фоновый запуск (Linux)

# Использование PM2
npm install -g pm2
pm2 start server/index.js --name "threads-bot"
pm2 startup
pm2 save

Фоновый запуск (Windows)

# Использование PM2
npm install -g pm2
pm2 start server/index.js --name "threads-bot"
pm2-windows-startup
pm2 save

🔧 Настройка и использование

1️⃣ Первоначальная настройка

  1. Создайте файл .env: copy .env.example .env
  2. Настройте переменные окружения (опционально):
    # Настройки базы данных (обязательно)
    DB_HOST=localhost
    DB_USER=root
    DB_PASSWORD=your_password
    DB_NAME=threads_automation
    
    # API ключи ИИ (опционально - резервные значения)
    OPENAI_API_KEY=sk-your-openai-key-here
    ANTHROPIC_API_KEY=sk-ant-your-anthropic-key-here
    OPENROUTER_API_KEY=sk-or-your-openrouter-key-here
  3. Откройте веб-интерфейс: http://localhost:3000
  4. Добавьте аккаунт Threads:
    • Перейдите в раздел "Аккаунты"
    • Добавьте новый аккаунт
    • Введите cookies из браузера (см. инструкцию ниже)

2️⃣ Получение cookies для Threads

Способ 1: Через DevTools (рекомендуется)

  1. Войдите в свой аккаунт на threads.net
  2. Откройте DevTools (F12)
  3. Перейдите в Network (вкладка Сеть)
  4. Обновите страницу (F5)
  5. Найдите любой запрос к threads.net
  6. Кликните правой кнопкойCopyCopy as cURL
  7. Найдите часть с Cookie и скопируйте всю строку после Cookie:

Пример правильного формата:

sessionid=1234567890abcdef; csrftoken=abc123def456; ds_user_id=12345678; ig_did=AAAABBBB-CCCC-DDDD-EEEE-FFFFFFFFFFFF; mid=ZabCdE; datr=AbCdEfGhIjKlMnOp

Способ 2: Через расширение браузера

  1. Установите расширение "Cookie Editor" или "EditThisCookie"
  2. Перейдите на threads.net (будучи авторизованным)
  3. Откройте расширение и найдите cookies для threads.net
  4. Экспортируйте в текстовом формате (не JSON!)
  5. Скопируйте строку в формате name1=value1; name2=value2; ...

Способ 3: Через Document.cookie (Chrome Console)

  1. Откройте threads.net (будучи авторизованным)
  2. Откройте Console (F12 → Console)
  3. Введите команду: document.cookie
  4. Скопируйте результат - это готовая строка cookies

⚠️ Важные cookies для Threads:

  • sessionid - основной cookie авторизации (обязательно!)
  • csrftoken - токен защиты от CSRF атак
  • ds_user_id - ID пользователя Instagram/Threads
  • ig_did - идентификатор устройства

3️⃣ Настройка ИИ провайдеров

🔑 Два способа настройки API ключей:

Способ 1: Через веб-интерфейс (основной)

  1. Перейдите в раздел "Настройки"
  2. Выберите провайдера (OpenAI/Anthropic/OpenRouter)
  3. Введите API ключ
  4. Протестируйте подключение
  5. Выберите модель
  6. Настройте системный промт

Способ 2: Через .env файл (резервный)

  1. Добавьте API ключи в .env:
    OPENAI_API_KEY=sk-your-actual-openai-key-here
    ANTHROPIC_API_KEY=sk-ant-your-actual-anthropic-key-here
    OPENROUTER_API_KEY=sk-or-your-actual-openrouter-key-here
  2. Перезапустите сервер: npm start
  3. Проверьте статус в "Настройки" - появится секция с резервными ключами
  4. Протестируйте ключи из .env

💡 Как работает приоритет:

  1. Первый приоритет: API ключ из базы данных (веб-интерфейс)
  2. Второй приоритет: API ключ из .env файла (резервный)
  3. Ошибка: Если ни один не найден

Рекомендуемые модели:

  • OpenAI: gpt-4
  • Anthropic: claude-3-sonnet
  • OpenRouter: Google: Gemini 2.5 Flash

4️⃣ Создание задания

  1. Перейдите в "Задания"
  2. Нажмите "Создать задание"
  3. Заполните параметры:
    • URL страницы: Ссылка на профиль, поиск или тег Threads
    • Аккаунт: Выберите настроенный аккаунт
    • Ключевые слова: Список через запятую для поиска
    • Действия: Лайки и/или комментарии
    • Лимиты: Количество постов и время выполнения

Примеры URL:

  • Профиль: https://www.threads.net/@username
  • Поиск: https://www.threads.net/search?q=artificial+intelligence
  • Тег: https://www.threads.net/search?q=%23ai

🔍 Особенности работы

🧠 Тестовый режим

  • По умолчанию включен для безопасности
  • Генерирует комментарии, но не отправляет их
  • Сохраняет в логи для анализа качества
  • Отключается только в коде (защита от случайной активации)

🎭 Имитация человеческого поведения

  • Случайные паузы между действиями (30-120 сек)
  • Прокрутка страницы как настоящий пользователь
  • Различные паттерны взаимодействия
  • Избегание подозрительной активности

🔍 Фильтрация контента

  • Исключение рекламы и спама
  • Проверка качества постов
  • Минимальные лимиты лайков/комментариев
  • Sentiment анализ для избежания негатива

📊 Система аналитики

  • Автоматическая категоризация постов
  • Детальная статистика по дням
  • Графики активности в дашборде
  • Экспорт данных для внешнего анализа

🚨 Troubleshooting

Частые проблемы и решения

❌ Puppeteer не запускается

# Linux: Установка недостающих зависимостей
sudo apt-get install -y chromium-browser

# Альтернативная установка Chromium
npx puppeteer browsers install chrome

❌ MySQL подключение отклонено

  1. Проверьте статус MySQL:
# Linux
sudo systemctl status mysql

# Windows (в Services.msc)
# Найдите "MySQL80" и убедитесь что запущен
  1. Проверьте настройки в .env
  2. Убедитесь что пользователь имеет права доступа

❌ Cookies устарели или неправильные

  1. Симптомы: ошибки авторизации, бот не может зайти в аккаунт
  2. Причины:
    • Cookies истекли по времени
    • Сменился пароль аккаунта
    • Неправильный формат cookies (JSON вместо текстового)
  3. Решение:
    • Перелогиньтесь в Threads в браузере
    • Получите новые cookies в текстовом формате (см. инструкцию выше)
    • Убедитесь что формат правильный: name1=value1; name2=value2; ...
    • Обновите cookies в разделе "Аккаунты"
    • Протестируйте подключение
  4. Проверка: в логах должно быть ✅ Cookies загружены из базы данных

❌ ИИ API ошибки

  1. Проверьте баланс на аккаунте ИИ провайдера
  2. Убедитесь в валидности API ключа
  3. Проверьте лимиты запросов
  4. Попробуйте другую модель

❌ Порт 3000 занят

# Найти процесс на порту 3000
# Linux
sudo lsof -i :3000

# Windows
netstat -ano | findstr :3000

# Убить процесс или изменить PORT в .env

📋 Логи и диагностика

Просмотр логов

# Логи сервера
tail -f logs/server.log

# Логи ошибок
tail -f logs/error.log

# Логи PM2 (если используется)
pm2 logs threads-bot

Включение детального логирования

В .env добавьте:

DEBUG=true
LOG_LEVEL=debug
PUPPETEER_HEADLESS=false  # Для визуального контроля

🔐 Управление API ключами

💡 Преимущества использования .env файла:

✅ Безопасность:

  • API ключи не хранятся в базе данных
  • Легко исключить из git через .gitignore
  • Единое место для всех секретных данных

✅ Удобство разработки:

  • Быстрая настройка для новых инсталляций
  • Резервные значения для тестирования
  • Легкая смена ключей без веб-интерфейса

✅ DevOps дружелюбность:

  • Поддержка docker secrets
  • Интеграция с CI/CD пайплайнами
  • Переменные окружения для продакшн

⚖️ Когда использовать каждый способ:

Ситуация Рекомендация
Разработка/тестирование .env файл для быстрой настройки
Продакшн с одним ключом .env файл для безопасности
Несколько команд/аккаунтов Веб-интерфейс для гибкости
Частая смена ключей Веб-интерфейс для удобства

🔒 Безопасность и рекомендации

⚡ Рекомендуемые настройки

{
  "pauseBetweenActions": "60-120 секунд",
  "postLimit": "20-50 постов за сессию",
  "timeLimit": "2-4 часа максимум",
  "dailyLimit": "1-2 сессии в день",
  "weeklyRest": "1-2 дня без активности"
}

🛡️ Меры предосторожности

  • Используйте тестовый режим для проверки качества
  • Мониторьте результаты в логах
  • Избегайте агрессивной автоматизации
  • Соблюдайте условия использования Threads
  • Регулярно обновляйте cookies (каждые 1-2 недели)
  • Проверяйте формат cookies - только текстовый, не JSON!
  • Не делитесь cookies с третьими лицами

📝 Лучшие практики ИИ комментариев

  1. Настройте качественный промт
  2. Добавляйте плохие примеры в настройках
  3. Проверяйте генерируемые комментарии
  4. Используйте разные стили для естественности
  5. Избегайте повторений и шаблонности

🔗 API Documentation

Основные эндпоинты

Аккаунты

GET    /api/accounts           # Список аккаунтов
POST   /api/accounts           # Создать аккаунт
PUT    /api/accounts/:id       # Обновить аккаунт
DELETE /api/accounts/:id       # Удалить аккаунт
POST   /api/accounts/:id/test  # Тест подключения

Задания

GET    /api/tasks              # Список заданий
POST   /api/tasks              # Создать задание
PUT    /api/tasks/:id          # Обновить задание
DELETE /api/tasks/:id          # Удалить задание
POST   /api/tasks/:id/start    # Запустить задание
POST   /api/tasks/:id/stop     # Остановить задание
GET    /api/tasks/service/status # Статус сервиса

Логи и статистика

GET    /api/logs               # Список логов (пагинация)
GET    /api/logs/search        # Поиск по логам
GET    /api/logs/stats         # Статистика
POST   /api/logs/export        # Экспорт в CSV

Настройки ИИ

GET    /api/settings           # Список настроек
POST   /api/settings           # Создать настройку
PUT    /api/settings/:id       # Обновить настройку
DELETE /api/settings/:id       # Удалить настройку
POST   /api/settings/:id/test  # Тест API ключа

📁 Структура проекта

threads-bot/
├── 🗂️ server/                    # Backend сервер
│   ├── 📁 config/
│   │   └── 📄 database.js         # Настройки БД
│   ├── 📁 middleware/
│   │   └── 📄 apiLogger.js        # Логирование API
│   ├── 📁 routes/                 # API маршруты
│   │   ├── 📄 accounts.js         # Управление аккаунтами
│   │   ├── 📄 tasks.js            # Управление заданиями
│   │   ├── 📄 logs.js             # Логи и статистика
│   │   ├── 📄 settings.js         # Настройки ИИ
│   │   └── 📄 bad-examples.js     # Плохие примеры
│   ├── 📁 services/               # Бизнес-логика
│   │   ├── 📄 aiService.js        # Сервис ИИ
│   │   └── 📄 threadsService.js   # Автоматизация Threads
│   ├── 📁 utils/
│   │   └── 📄 logger.js           # Система логирования
│   └── 📄 index.js                # Главный файл сервера
├── 🗂️ public/                    # Frontend ресурсы
│   ├── 📁 js/                     # JavaScript
│   │   ├── 📄 app.js              # Основные функции
│   │   ├── 📄 dashboard.js        # Дашборд
│   │   ├── 📄 tasks.js            # Управление заданиями
│   │   ├── 📄 logs.js             # Просмотр логов
│   │   ├── 📄 accounts.js         # Управление аккаунтами
│   │   └── 📄 settings.js         # Настройки ИИ
│   └── 📁 css/
│       └── 📄 style.css           # Стили
├── 🗂️ views/                     # EJS шаблоны
│   ├── 📄 layout.ejs              # Основной шаблон
│   ├── 📄 dashboard.ejs           # Дашборд
│   ├── 📄 tasks.ejs               # Задания
│   ├── 📄 logs.ejs                # Логи
│   ├── 📄 accounts.ejs            # Аккаунты
│   └── 📄 settings.ejs            # Настройки
├── 📁 cookies/                    # Cookies для авторизации
├── 📁 images/                     # Изображения и скриншоты
│   └── 📄 dash.png                # Скриншот дашборда
├── 📁 logs/                       # Файлы логов
├── 📄 package.json                # Зависимости
├── 📄 .env.example                # Пример настроек
├── 📄 .gitignore                  # Игнорируемые файлы
└── 📄 README.md                   # Документация

🤝 Участие в разработке

Внесение изменений

  1. Форкните репозиторий
  2. Создайте ветку для фичи: git checkout -b feature/new-feature
  3. Внесите изменения
  4. Создайте pull request

Отчеты об ошибках

При создании issue укажите:

  • Версию Node.js и ОС
  • Шаги для воспроизведения
  • Ожидаемое поведение
  • Логи ошибок

📜 Лицензия

MIT License - см. файл LICENSE

👨‍💻 Автор проекта

🚀 Evgeniy Orel

Full-Stack Developer & AI Automation Specialist

Создатель инновационных решений для автоматизации социальных сетей и AI-интеграций

Телеграм канал Для связи со мной Threads YouTube

🔗 Связаться со мной:

  • 📢 Telegram канал: @digitalbizpro - Автоматизация бизнеса с помощью ИИ
  • 💬 Личный чат: @Evgenfalcon - Вопросы и предложения
  • 🧵 Threads: @evgeniiorel - Обсуждения и анонсы
  • 📺 YouTube: AI Sphere - Обучающие видео

💡 Если проект оказался полезным, поставьте ⭐ звездочку на GitHub!

⚠️ Дисклеймер

Этот сервис предназначен только для образовательных целей.

  • Автоматизация может нарушать условия использования Threads
  • Используйте на свой страх и риск
  • Соблюдайте правила платформы и местные законы
  • Мы не несем ответственности за блокировку аккаунтов

🆘 Поддержка

Получение помощи

  1. Проверьте FAQ в документации
  2. Просмотрите логи на наличие ошибок
  3. Создайте issue с детальным описанием проблемы

Полезные ссылки


🚀 Готовы автоматизировать Threads? Начните прямо сейчас!

GitHub Stars License: MIT Node.js Version