Skip to main content

// social autopilot

Six channels. One brand voice. Zero late-night replies.

Publish to IG, FB, TikTok, X, LinkedIn, and Pinterest from one brand_profile. Generate posts from your live catalog. Sync every DM into a ranked inbox where high-LTV and high-risk surface first.

6 surfaces Brand-voice locked Attention-ranked DMs
social · today

Instagram

3 posts

Facebook

2 posts

TikTok

1 reel

X

5 posts

LinkedIn

1 post

Pinterest

12 pins

inbox: 4 attention, 38 queuedbrand_voice 0.91

// six surfaces

Native APIs, not a posting tool.

Each surface has its own SDK, scope, and rate ceilings. Social Autopilot speaks the right API per surface — and writes every publish into a single content_log so cross-surface cadence stays sane.

Instagram

Feed · Reels · Stories · DMs

Native Graph API publishing, story scheduling, DM sync to the unified inbox. Reels with multi-variant audio + caption tests.

Facebook

Page posts · Reels · Messenger

Page-scope OAuth, scheduled posts, Messenger inbox sync. Cross-posts from IG when policies match, deduplicated by content hash.

TikTok

Posts · Comments · DMs

Native upload via Marketing API, scheduled drops, comment classification, DM responder. Spark Ads handoff to Campaign Specialist.

X

Posts · Replies · DMs

Tweet scheduling, thread composition from product context, DM sync. Tone holds against brand_profile voice embeddings.

LinkedIn

Company posts · DMs

Company-page publishing, employee-advocacy nudges, executive-voice drafts (separate brand_profile sub-voice).

Pinterest

Pins · Boards

Product-pin generation from Shopify catalog, board organization by lifecycle state, scheduled drops in season windows.

OAuth hub lives at /workspace/integrations/social — connect each surface independently, with scoped tokens stored in Supabase Vault. Revoke per-surface without breaking the others.

// brand_profile

The voice file every surface listens to.

brand_profile is one source of truth for tone, visual identity, and posting guidelines. Update it once, every surface inherits — and the change shows up as a row in the content audit log.

voice_embeddings

Vectorized prose samples — the centroid the drafter steers toward and the judge measures distance from.

visual_assets

Palette, typography lockup, logo + product photography rules. Image generator conditions on these every render.

posting_guidelines

Cadence per surface, do/don'ts, calendar holidays, blackout windows. Publisher refuses to push outside the rules.

compliance_list

Trademark filter list, prohibited-claim list, regional disclaimers — applied per-surface and per-region.

sub_voices

Optional: separate sub-voice for LinkedIn / Pinterest / executive posts. Same brand, different register.

brand_profile.json
{
  "brand_id":     "linen_house",
  "voice": {
    "centroid_id": "vec_2024",
    "register":    "warm, practical, lyrical",
    "do":   ["second-person", "tactile detail"],
    "dont": ["superlatives", "FOMO hooks"]
  },
  "visual": {
    "palette":     ["#0B0D12","#F8F4EC","#7C8B5C"],
    "type":        "Editorial Serif + Mono",
    "photography": "natural light, neutral set"
  },
  "cadence": {
    "instagram":   "4/wk",
    "tiktok":      "3/wk",
    "linkedin":    "1/wk"
  },
  "compliance": {
    "trademarks":  ["LinenHouse®"],
    "blocked":     ["organic","100% natural"]
  }
}

// generator pipeline

From catalog signal to posted asset.

The generator pipeline takes a moment — a new winner, a discount window, a season open — and produces the post end-to-end. Every step writes its output to Supabase, every step is observable, every asset traceable to a concept_id.
01

content_agent

Reads the brand_profile, the calendar, and the live catalog. Drafts the copy concept — angle, hook, CTA — for the surface and the moment.

// output

concept_draft

02

image_generator

gpt-image-1 for visuals, brand-locked palette and typography. Compositions tuned per surface — vertical for Reels, square for Feed, ratio per spec.

// output

image_assets

03

variation (Higgsfield)

Higgsfield API generates motion variants — Reels-grade clips, parallax stills, multi-shot composites. Stamped with concept_id for downstream tracking.

// output

video_variants

04

publisher

Composes the post — image or video + copy + tags + link — and pushes through the surface SDK. Idempotent by content hash.

// output

publish_payload

// inbox

DMs and comments, ranked by attention.

Six surfaces, one inbox. Classifier tags every message, responder drafts the easy ones in brand voice, attention ranks the rest — so the highest-stakes thread is the first one you read in the morning.

sync

Pulls DMs and comments from all six surfaces into one unified message store. Webhook + polling fallback per surface.

classifier

Tags every message — lead, complaint, support, fan mail, spam — and routes to the right specialist or queue.

responder

Drafts replies in brand voice for the most common intents. CS-class messages route to the CS Specialist with order context attached.

attention

Ranks DMs and comments by urgency — high-LTV customers, escalation risk, viral threats — surfaced to operators before the rest of the queue.

inbox · attention queue
▼ rank by attention_score (desc)

#1  IG DM   @sarah.k  attn=0.94
    intent: complaint
    LTV:    €1,840 (top decile)
    → escalate to human

#2  TikTok  reply     attn=0.88
    intent: viral_risk (37 likes)
    sentiment: angry
    → responder drafted, hold

#3  X DM    @benf     attn=0.71
    intent: lead (asks about MOQ)
    → replied (brand voice 0.93)

#4  IG cmt  @maya     attn=0.42
    intent: fan_mail
    → liked + replied

… 38 more in queue, autosorted

Operator routes live at /dashboard/social/{posts,dms,attention,analytics,settings}. Every surface respects the channel's native scope — Magistry never asks for more than it needs.

// social autopilot

Stop choreographing six tabs.

Connect once, publish from one brand_profile, reply from one inbox. The fan mail still feels like you wrote it — because the voice file says so.

Native APIs · Scoped OAuth · Voice-locked