Safebot и фоновые задачи
Instagram downloader на BullMQ + Redis
Safebot — модуль «Скачать Референс»: скачивает видео из Instagram, кладёт в хранилище и позволяет одним кликом превратить его в задачу.
Архитектура
UI /safebot → POST /api/safebot/items (Instagram URL)
→ BullMQ queue "safebot-items" (Redis)
→ Worker (Railway): скачивает MP4 → загружает в R2
→ POST /api/safebot/items/[id]/worker-update (SAFEBOT_WORKER_SECRET)
UI ← polling статуса → promote → создаётся Task + ReferenceОчередь: src/lib/queue/safebot-queue.ts. Статус на клиенте — Zustand-стор src/stores/safebot-status.ts.
Статусы (SafebotItemStatus)
| Статус | Значение |
|---|---|
PENDING | Создан, ждёт воркер |
DOWNLOADING | Скачивается из Instagram |
DOWNLOADED | MP4 в хранилище, готов к promote |
FAILED | Ошибка (можно retry) |
PROMOTED | Из видео создана задача |
Операции
- Retry — повторить неудачное скачивание (
POST …/retry). - Promote — полноценный flow создания задачи из видео (
POST …/promote). - Quick promote — быстрый вариант с минимальной конфигурацией (
POST …/quick-promote). - Download — скачать mp4 на компьютер (
POST …/download). - Скачанным видео можно назначать категорию референсов (
categoryId).
worker-update — internal endpoint: авторизуется не сессией, а заголовком с SAFEBOT_WORKER_SECRET. Только для воркера.
Полный список endpoints — в API Reference.