TKBK Studio
TKBK Studio
Контент-план на месяц, посты для Telegram и VK от нейросети и публикация по расписанию
Инструмент для тех, кто ведёт соцсети сам или с небольшой командой. Описываете нишу и аудиторию, выбираете дни и время публикаций — нейросеть Claude через TKBK API составляет контент-план на месяц с рубриками и темами, а затем пишет посты под каждую дату.
Все посты собираются в очередь в веб-панели: можно поправить текст, перенести время, выбрать площадки и одобрить. Одобренные посты сами выходят в Telegram-канал по расписанию через Bot API, а при желании — и на стену сообщества ВКонтакте. Ничего не публикуется без вашего одобрения.
Очередь хранится в SQLite, временные сбои публикации повторяются автоматически, а ошибки видны прямо в карточке поста. Панель закрыта паролем, всё работает на одном небольшом сервере.
Для кого: Малый бизнес, эксперты, SMM-специалисты, локальные сервисы
Ключи и токены не вводятся на сайте — их кладут в файл .env на своём сервере.
TKBK_API_KEYКлюч TKBK API — Получите ключ на https://tkbk.onlineADMIN_PASSWORDПароль панели — Не короче 8 символов; логин — любойTELEGRAM_BOT_TOKENТокен бота — @BotFather → /newbot; добавьте бота админом канала с правом публикацииTELEGRAM_CHANNEL_IDКанал — @username канала или его id вида -100…VK_ACCESS_TOKENКлюч доступа VK — Необязательно: ключ администратора сообщества с правами wall и offlineVK_GROUP_IDID сообщества VK — Необязательно: число без минуса, например 123456789# SMM-генератор — {{BRAND}}
Веб-панель, где нейросеть Claude (через TKBK API) составляет контент-план на месяц, пишет посты
для Telegram и ВКонтакте, а сервер публикует одобренные посты по расписанию.
## Что умеет
- **Контент-план:** ниша, аудитория, цели, дни недели и время → рубрики и темы на месяц вперёд.
- **Посты:** текст под каждую тему с хэштегами; можно переписать или поправить руками.
- **Очередь:** все посты в одной ленте со статусами «идея → черновик → одобрен → опубликован».
- **Автопостинг:** одобренные посты выходят в Telegram-канал в назначенное время; ВКонтакте — по желанию.
- **Надёжность:** временные сбои повторяются (до 3 попыток), ошибки видны в карточке, на одну площадку пост
дважды не уходит.
- Панель закрыта паролем (`ADMIN_PASSWORD`).
## Как устроено
```
public/ панель: index.html, app.js, styles.css (без сборщика)
src/config.js бренд, ниша, аудитория, тон, часовой пояс — меняйте здесь
src/ai.js промпты и запросы к TKBK API (план и посты)
src/schedule.js даты плана и часовые пояса (покрыто тестами)
src/db.js очередь постов в SQLite (data/smm.db)
src/publisher.js публикация в Telegram и VK, воркер расписания
src/server.js API панели
```
## Запуск за 5 минут (Docker)
1. Получите ключ TKBK API на [tkbk.online](https://tkbk.online).
2. Создайте бота у [@BotFather](https://t.me/BotFather) (`/newbot`) и добавьте его в администраторы
канала с правом «Публикация сообщений».
3. Скопируйте `.env.example` в `.env` и заполните `TKBK_API_KEY`, `ADMIN_PASSWORD`, `TELEGRAM_BOT_TOKEN`,
`TELEGRAM_CHANNEL_ID` (`@имя_канала` или числовой id `-100…`).
4. Запустите:
```bash
docker compose up -d --build
```
5. Откройте http://localhost:3000 (логин — любой, пароль — `ADMIN_PASSWORD`), составьте план,
нажмите «Написать тексты», проверьте и одобрите посты.
## Запуск без Docker
Нужен Node.js 20.16 или новее (рекомендуем 22 LTS). Пакет `better-sqlite3` ставит готовую сборку;
если её нет для вашей системы, понадобятся Python и компилятор C++.
```bash
npm install
cp .env.example .env
npm start
```
Тесты: `npm test`. Сервер должен работать постоянно — иначе посты не выйдут вовремя.
## ВКонтакте (необязательно)
Нужны `VK_GROUP_ID` (число без минуса) и `VK_ACCESS_TOKEN` — ключ **пользователя-администратора**
сообщества с правами `wall` и `offline` (метод `wall.post` не работает с ключом сообщества).
Получите его через своё приложение на [dev.vk.com](https://dev.vk.com) (раздел про ключи доступа пользователя)
и проверьте актуальные правила VK — они меняются. Если переменные пустые, галочка VK в панели скрыта.
## Где взять ключи
- **TKBK_API_KEY** — личный кабинет на [tkbk.online](https://tkbk.online). По умолчанию `claude-sonnet-5`
(лучше пишет), для экономии — `TKBK_MODEL=claude-haiku-4-5`.
- **TELEGRAM_BOT_TOKEN** — @BotFather → `/newbot`.
- **TELEGRAM_CHANNEL_ID** — `@имя` публичного канала; для закрытого — перешлите пост из канала боту
[@userinfobot](https://t.me/userinfobot) или посмотрите id в веб-версии Telegram.
## FAQ
**Пост не вышел.** Откройте карточку — там текст ошибки. Частые причины: бот не админ канала
(«not enough rights»), неверный `TELEGRAM_CHANNEL_ID`, сервер был выключен в момент публикации
(пост выйдет при следующей проверке, раз в минуту).
**Можно публиковать без одобрения?** Нет, и это сделано специально: нейросеть может ошибиться,
финальное слово — за человеком. Кнопка «Одобрить все черновики» ускоряет процесс.
**Почему в посте нет жирного текста?** Посты отправляются простым текстом — так они одинаково
выглядят в Telegram и VK и не ломаются из-за спецсимволов.
**Где хранятся посты?** В `data/smm.db` (в Docker — том `smm-data`).
Услуги, мастера, свободные окна на 14 дней, напоминания за сутки и за 2 часа, предоплата и отзывы
Оценка 0–10 после заказа: довольных — на Яндекс Карты, 2ГИС и WB, недовольных — сразу к менеджеру
Оплата звёздами или картой, одноразовые ссылки, напоминания о продлении и автоисключение по окончании