📊 Дашборд
Что происходит прямо сейчас
💾 Бэкап базы
Делается сам ночью в 3:00 и уходит на Яндекс.Диск. Кнопка — когда собираешься менять что-то массово.
🤖 Боты и тестеры
Кто когда ходил, что нашёл и на чём упал
Расписание
Боты ходят сами. Кнопки — когда не хочется ждать.
| Бот | Что делает | Как часто | |
|---|---|---|---|
| 📰 Сборщик новостей | обходит ленты, отсеивает дубли по заголовку | раз в час | |
| 📤 Публикатор | берёт из очереди то, у чего подошло время | раз в 10 минут | |
| 🛡 Модератор | слушает комментарии, чистит спам | постоянно | — |
| 🖼 Оптимизатор картинок | забирает обложки с чужих серверов и сжимает | через 5 мин после сбора | сам |
| ⚖️ Фильтр правовых ограничений | помечает запрещённые организации, иноагентов, темы 18+ | по кнопке | на странице темы |
| 🔥 AI-рерайт | пересказывает новости по-русски своими словами | по кнопке | на странице темы |
| 🅥 Картинки в ВК | заливает обложки заранее, чтобы пост не ушёл голым | раз в 30 минут | сам |
| 🅩 Дзен | выкладывает по одной из того, что уже вышло в ВК | каждый час в :17 | сам |
| 💾 Бэкап | дамп базы и копия на Яндекс.Диск | ночью в 3:00 |
🧪 Состояние лент
Списки RSS устаревают, а часть изданий закрывается от серверных
запросов. Полная проверка запускается из консоли:
node tools/check-feeds.js — она ходит с этого сервера,
только так узнаешь правду.
🔥 Переписывание через ИИ
Ключ тот же, что у основного проекта — PROXYAPI_KEY.
Запускается со страницы сообщества: отмечаешь статьи в архиве и жмёшь.
📜 Журнал
Сообщество
+ Добавить сообщество
Тема — само сообщество. Площадки — его витрины: группа ВК, канал Дзен
1. Тема
Заводится один раз. К ней цепляются площадки и ленты новостей.
После создания появится строкой в меню слева.
2. Площадка
У одной темы их может быть несколько: группа ВК и канал Дзен.
Заводятся по очереди, обе появятся блоками на странице сообщества.
Если ввести id уже заведённой площадки — форма обновит её, а не создаст вторую.
Ключи ВК сюда не вводятся: они лежат на сервере, в .env.
Через форму ключ шёл бы браузером и оседал в истории, а это доступ к группе целиком.
3. Ленты новостей
Если тема не указана, лента считается общей для всех.
🗄️ База данных
Прямой доступ к базе — как SQL Editor в дев-панели
Таблицы
Кликни по названию — подставится запрос к ней.
Запрос
Перед массовым UPDATE сначала сделай SELECT
с тем же условием и посмотри, сколько строк затронется. Это правило из основного
проекта — там запрос однажды задел 4387 строк вместо шести.
🔧 Настройки
Что задано в окружении и как работает сервер
🧹 Лишние картинки
Ищет картинки, на которые никто не ссылается: новость удалили,
а обложка осталась. Файлы моложе трёх суток не трогает.
Удалённое уходит в data/_trash_images — можно вернуть.
📖 Справка
Как всё устроено и где что искать
Как идёт материал
1. Раз в час боты обходят ленты и складывают найденное в новости.
Дубли отсеиваются по отпечатку заголовка — одна и та же новость приходит
из нескольких изданий.
2. Ты открываешь страницу группы, выбираешь новость и ставишь пост в очередь.
3. Раз в 10 минут публикатор отправляет то, у чего подошло время.
4. Модератор параллельно слушает комментарии и чистит спам.
Ключи ВК
Ключи лежат на сервере, в файле .env. В панель они не выносятся:
через форму ключ шёл бы браузером и оседал в истории, а это доступ
к группе целиком.
VK_TOKEN — ключ сообщества, публикация текста и работа модератора.
Группа → Управление → Работа с API → Ключи доступа. Права: управление
сообществом, стена, фотографии, сообщения.
VK_USER_TOKEN — пользовательский, только для картинок. Ключа сообщества
для них не хватает, ВК отвечает ошибкой 27. Берётся через Standalone-приложение
с правами photos, wall, groups, offline.
Пока все группы ведёшь ты, ключ общий. Появится группа с другим
администратором — у площадки есть свои поля, заполняются в разделе БД:
UPDATE channels SET access_token = '…' WHERE id = 3;
🎬 Трейлеры: как это работает
Как забирается. У каждого канала YouTube есть своя лента:
youtube.com/feeds/videos.xml?channel_id=UC… Добавляется
как обычный источник, кнопкой «🎬 Добавить каналы трейлеров» или вручную.
Из ленты берём заголовок, описание, обложку и ссылку на ролик.
Что сохраняется. Только ссылка. Файл видео к себе не качаем:
это чужие права, и у оригинала свой счётчик просмотров — студии
выкладывают трейлеры именно ради него. Места на диске тоже не тратим.
Как выкладывается. Ссылкой в тексте — ВК разворачивает её карточкой
с обложкой и кнопкой воспроизведения.
Почему не проигрывателем. Пробовали через video.save:
ВК заводит «внешнее видео» и пытается забрать ролик к себе. Для трейлеров
студий это не работает — Netflix и прочие не отдают, и запись висит
в «обрабатывается» часами. Ссылка надёжнее: выглядит скромнее,
зато работает всегда и сразу.
Если однажды понадобится вернуть прежний способ — переменная
VK_VIDEO_SAVE=1 в .env.
Команда деплоя
Основной проект при этом не трогается — другой сервер, другая база, другой репозиторий.