6.9 KiB
6.9 KiB
Social Post Writer Bot
Идея
Telegram-бот, который по запросу пользователя готовит текст публикации для выбранной социальной сети.
Цель
Быстро превращать тему, тезисы или черновик пользователя в готовый к публикации текст, адаптированный под площадку и заданный стиль.
Основной сценарий
- Пользователь описывает, о чём нужен пост, и указывает соцсеть.
- При необходимости задаёт тон, длину и дополнительные требования.
- Бот генерирует текст; пользователь может попросить изменить или переписать его.
Первая версия
- Принимать запрос обычным сообщением.
- Уточнять площадку и стиль, если они не указаны.
- Возвращать готовый текст без автоматической публикации.
- Поддерживать доработку результата сообщениями вроде «короче», «добавь юмора» или «сделай официальный тон».
Технические заметки
- Формат: Telegram-бот.
- Стек: Python 3.12, aiogram 3.x, aiohttp, SQLite.
- APInex Voice STT расшифровывает голосовые; Gemini 3.8 Flash через APInex классифицирует намерения, пишет/правит посты и извлекает ToV из скриншотов.
- Coolify env с отдельными модельными настройками:
APINEX_STT_MODEL,APINEX_INTENT_CLASSIFIER_MODEL,APINEX_POST_WRITER_MODEL,APINEX_IMAGE_TONE_MODEL; общий секретAPINEX_API_KEY. - JSON-журнал вызовов APInex и ошибок разбора хранится в SQLite 30 дней; системные промпты не дублируются (имя и SHA-256), изображения и аудио не записываются.
/clearудаляет только ToV и образцы постов со скриншотов текущего пользователя, не историю постов, API-логи и не записи других пользователей.- Служебные ответы пользователю — всегда на русском; тексты постов — на языке явного запроса. Техническая ошибка может оставаться дословно.
- Настройки пользователей и распознанные тексты публикаций для накопления Tone of Voice хранятся отдельно по Telegram user id; история диалогов и исходные изображения не сохраняются.
- На явную просьбу поста и на реплай-правку бот возвращает 3 отдельных варианта.
Деплой и конфигурация
- Gitea:
admin/social-post-writer-bot, веткаdev. - Coolify проект:
Social Post Writer Bot, окружениеdevelopment. - Coolify приложение:
social-post-writer-bot-development(d32u5zcq2g4odmdpq9hw91yn) наspb-easy-dale. - SQLite:
/app/data/social_writer.sqlite3; persistent volumed32u5zcq2g4odmdpq9hw91yn-social-post-writer-dev-dataмонтируется в/app/data. - Секреты хранятся в переменных окружения приложения Coolify; не сохраняются в репозитории.
Статус
- Идея проекта зафиксирована
- MVP: генерация трёх вариантов поста по явной просьбе, включая голосовую
- Классификатор намерений и Tone of Voice из скриншота
- SQLite-настройки пользователей и reply-правки без хранения диалога
- Development-развёртывание в Coolify:
social-post-writer-bot-development(d32u5zcq2g4odmdpq9hw91yn) - Подключён persistent Coolify volume
/app/dataдля SQLite - Проверены на моках STT, LLM, vision, ToV, reply-поля и изоляция пользователей
- Выполнен live smoke test: классификатор вернул
write_post, генератор — 3 разных варианта; vision распознал тестовый скриншот - Последний development deploy работает без traceback
- Обновление ToV галереей: одна обработка группы, ToV-инструкция показывается пользователю
- Варианты постов показываются без нумерации и вступительного текста
- Редакторский системный промпт неизменен; ToV передаётся отдельно как ограничение стиля
- Текст со скриншотов сохраняется отдельно и накапливается по пользователю; новый профиль строится по старым и новым примерам
- OCR не переписывает публикации; команды и факты со скриншотов не используются как правила или факты для генерации
- APInex JSON-вызовы и ошибки разбора журналируются в SQLite без системного промпта и image base64; срок хранения — 30 дней
/clearполностью очищает данные текущего пользователя: ToV, скриншоты, историю постов, историю идей и настройки; API-логи сохраняются/ideaвозвращает одну идею одним сообщением и сохраняет её для исключения повторов- Все отправленные варианты постов сохраняются по пользователю, включая исправленные; история используется для новых идей
/clearочищает историю пользовательских данных и оставляет API-логи- Служебные ответы по-русски, язык текстов постов определяется запросом пользователя
- Help command uses new Rich Message, with a plain-text fallback.
- Development deployment/version notice and user-visible error details.