AI Social Manager — Telegram, Blog, VK, Threads, Instagram, attribution.
Social AI
Brand workspace: strategy, channels, publishing, reports, listening, inbox, and UTM attribution.
Capabilities
| Capability | Status |
|---|---|
| Brand Discovery + strategy | ✅ |
| AI content plan (7 days) → ideas + drafts + calendar | ✅ |
| Cover image upload + up to 2 URL buttons (Telegram inline) | ✅ |
| Unified Content screen: plan + edit + approve + calendar | ✅ |
| Deduped plan + fill from reports / memory; published → used | ✅ |
| Telegram Bot API | ✅ |
| CMS Blog | ✅ |
VK wall.post + OAuth | ✅ |
| Threads + Instagram (Meta) | ✅ |
| Approvals → schedule → publish + worker tick | ✅ |
| Metrics + weekly AI report | ✅ |
| Strategy memory + experiments | ✅ |
| Listening / Inbox | ✅ (ingest + UI) |
| UTM → register / payment attribution | ✅ |
| Boosty | stub |
| Autopilot | no (manual approval) |
Channels
Use + Add channel or OAuth in the channel list (VK / Threads / Instagram).
Env
| Variable | Purpose |
|---|---|
VK_APP_ID / VK_APP_SECRET | VK OAuth |
META_APP_ID / META_APP_SECRET | Threads + Instagram |
*_OAUTH_REDIRECT_URI | else {PUBLIC_API_URL}/v1/social/oauth/.../callback |
WORKER_SECRET | publish + metrics + plan refill tick |
Manual tokens also work: Telegram (bot_token, chat_id), VK (access_token, owner_id), Threads/IG (access_token + user id).
Pipeline
- Discovery → strategy (activate).
- Content (single screen): generate / fill plan → list all posts with statuses → open a card → edit, approve, schedule, or publish.
- Week calendar and published posts live on the same screen. Worker:
POST /v1/internal/social/tick.
Manual post: New post on the Content screen.
Attribution
On POST .../users/register send utm_source, utm_medium, utm_campaign (or acquisition_source).
utm_campaign = brand code. Payments inherit source from application_users.acquisition_source.
Attribution section: registers, payments, revenue by campaign.
API (excerpt)
Prefix YOUR_API_URL/v1/social (admin JWT), except OAuth callbacks.
POST /brands/:id/plan/generate(days,mode: fresh|fill),PATCH /variants/:id(body / cover / buttons)POST /brands/:id/content,/approvals/:id/decide,/variants/:id/publish|scheduleGET/POST /brands/:id/insights/weekly,/accounts/:id/metrics/pullGET/POST /brands/:id/memory|experiments|listening|inboxGET /brands/:id/attributionGET /oauth/:provider/start?account_id=
Autonomy
Default manual — publish without approval → approval_required.
assisted / autopilot / full_manager: worker refills a thin plan (mode: fill); manual/assisted still require approval before publish.