---
title: Social AI
description: 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

1. Discovery → strategy (activate).
2. **Content** (single screen): generate / fill plan → list all posts with statuses → open a card → edit, approve, schedule, or publish.
3. 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|schedule`
- `GET/POST /brands/:id/insights/weekly`, `/accounts/:id/metrics/pull`
- `GET/POST /brands/:id/memory|experiments|listening|inbox`
- `GET /brands/:id/attribution`
- `GET /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.
