TBI Social

Sign in to manage social automation.

Compose

Write a post, add an optional link (rides as a clean preview card) and optional image(s), pick channels, then post now or schedule. Everything lands in the same queue.

Post to
When

Story suggestions

Drafts the engine wrote from recent stories. Edit any one in place, then Send to Scheduling to move it to the Schedule tab (Buffer wiring arrives in Phase 3). Discard the rest.

Image / Video

Build a card from a crawled story, start a custom post from your own photos, or upload a reel. Everything here can go to Instagram and/or Facebook (TikTok later) — Send to Scheduling drops it in the Schedule tab's Staged list, where you pick channels and timing.

Black text cards for jokes and questions. Send items here from the Jokes & Questions tab (one or more at a time), or type your own below. Posts a 9:16 to Instagram Stories and a 4:5 to Facebook.

Text alignment
Vertical position
Font
Size 64
Line height 1.30
Background
Text color
Branding
Branding corner

1 · Photo

Drop a photo or click to choose
use the story's image — full quality
Vertical framing center
Horizontal framing center
Zoom 100%
No photo? It uses the background color below — good for text-only series cards.

2 · Headline

Auto-fit size
Size 79
Line height 1.06
Move horizontal center
Move vertical up
Headline color

3 · Headline font

Load your font (.ttf / .otf / .woff)
Current: Ed's Market (installed)

4 · Format & layout

Aspect ratio
Black panel height 33%
White hairline at top of black box
"The Bold Italic" badge
Red "TBI" circle
Circle corner
Circle size 70%
Load TBI icon (PNG) — replaces the drawn circle

A blank slate. Upload your own image — or several for a carousel — optionally drop the red TBI circle on top, write or AI-draft the caption. No black box, no badge unless you add them.

1 · Photos

Drop photos or click to choose
1 image posts as a single, 2–10 as a carousel
No photos yet.
Vertical framing center
Horizontal framing center
Zoom 100%
Framing & zoom apply to the selected photo. Click a thumbnail to pick which one.

2 · Format

Aspect ratio
Fit
Letterbox color
4:5 (tallest) through 1.91:1 (widest) post to your grid; every photo in a carousel shares the ratio. Pick 9:16 to compose an Instagram Story — the Post and Send buttons switch to Story mode (one photo).

4 · Red TBI circle

Show red “TBI” circle
Corner
Size 70%
Uses the TBI icon you loaded on the Instagram tab if there is one, otherwise the drawn circle. Applied to every photo in a carousel.

5 · Caption

AI helper — paste notes, a blurb, or rough text and draft a caption in TBI voice.
Add up to 5 hashtags

One to four of your photos, dragged into place, sent to Facebook. Pick an SF series topic (optional), upload 1–4 photos, drag each onto a box, write the post text, then Send to Scheduling.

SF series · Topic

No topic attached.
Loading topics…
Click a topic to open its draft. Upload photos into it and they save automatically to that topic (a blue ✎ marks a draft in progress); come back any time to finish it. A green dot means a written description is stored. Done marks it covered and removes the working photos to save space (the collage you already sent to scheduling is kept). Undo puts the topic back.

1 · Photos

Drop 1–4 photos or click to choose
then drag each thumbnail onto a box in the preview
No photos yet.

2 · Post text

3 · Layout

Arrangement
Aspect ratio
Drag a thumbnail onto a box to place it. Drag one box onto another in the preview to swap them.

4 · Framing (box 1)

Zoom 100%
Vertical center
Horizontal center
Click a box in the preview to select it, then adjust its framing.

5 · Divider & frame

Divider width 3px
Divider color
Frame the outside too
Default is 3px white. The outer frame uses the same width and color.

6 · Title box (optional)

Show title box
Row 1 text
Font 1
Text 1
Row 2 text
Font 2
Text 2
Split background colors
Box color
Box width 90%
Text size 11%
Vertical position center
Two rows, each its own font + color. Split for a two-color band, like the Monthly Events cover.

7 · Red TBI circle

Show red “TBI” circle
Corner
Size 40%
Uses the TBI icon you loaded on the Image tab if there is one, otherwise the drawn red circle.

Upload a finished vertical video and send it out as a Reel on Instagram and Facebook. Best results: 9:16, up to 90 seconds (Facebook's limit; Instagram allows longer), MP4, under 50MB. Text and the TBI mark below get burned into the video before posting, so they show on both networks.

Drop a video or click to choose
MP4 or MOV, up to 50MB

1 · Caption

AI helper — describe what's in the reel (or paste notes) and draft a caption in TBI voice.
Add up to 5 hashtags

2 · Text on the video

Show text on the video
Font
Size 54
Color
Dark band behind the text
Vertical position lower third
Shows from 0.0s
Until end
Scrub the video to watch the text appear and disappear at your in and out times.

3 · Red TBI mark

Show the red TBI mark
Corner
Size 70%
Uses the TBI icon you loaded on the photo builders if it is saved in this browser, otherwise the drawn red circle. Stays on for the whole video.

4 · Cover (Instagram)

Cover image
"Pick a frame" scrubs the preview so you see exactly the frame you chose. The grid shows the middle square of the cover. Facebook picks its own thumbnail, no API control there.

5 · Instagram options

Also show on the profile grid
Off = Reels tab only, on = Reels tab plus your grid. Collaborators get an invite and appear once they accept. Location wants a Facebook place Page ID; finding IDs by name needs a Meta review we have not filed.

6 · What happens next

Send to Scheduling stages it on the Schedule tab, where you pick Instagram and/or Facebook and post now, drop it in a slot, or set a time. If text or the TBI mark is on, the video is processed in your browser first (it runs at video speed, a 60s reel takes about a minute). Publishing then takes the networks a couple of minutes — the queue handles the waiting.

Spec notes: Facebook Reels must be 3–90s and 9:16 or Facebook rejects them; Instagram takes 3s up to 15 min. The staged video file is cleaned up automatically after it posts everywhere.

Jokes & questions

Standalone engagement posts drafted from your series — recurring bits like “Being in SF means…” or a weekly question. Generate a batch, edit any in place, then Send to Scheduling to queue them in Buffer. Define the series at the bottom.

Series

Key is a short id, kind picks joke vs question, brief tells the engine what each item should be. Saved to social_config; the daily run drafts a batch per series on your cadence.

Substack Newsletter

Compose a full Substack post and hand it to Substack to publish or schedule. Email is off by default (web/app only) and only sends when you turn it on per send. For a test email or audience segments, use Open in Substack.

Recent newsletters

Loading…

Schedule

Compose once, pick channels, and post now or schedule into your posting times. Everything lands in one queue, shown once with the networks it goes to.

Settings

Every adjustable knob. Saved to social_config. The voice prompt is the stable system prompt the engine uses (prompt-cached).

Channel connections

Checking...
Green means that channel's secret is set and the account is reachable. You can post to whichever are green.

Reconnect Facebook

If Facebook posting or commenting stops working (token expired), paste a fresh Facebook user token from the Graph API Explorer here. The system extends it to a permanent Page token automatically — no expiry, nothing to paste into Supabase.

Reconnect Threads

To pull Threads views, likes and replies (account insights), paste a fresh Threads user token minted with the threads_manage_insights permission. Not the app id|secret — a long single-string user token. The system extends it to a long-lived token automatically.

Substack (Notes)

Connect Substack to schedule Notes (short updates) alongside your other channels. Substack has no official API, so this uses your logged-in session cookie. In a browser signed in to Substack, open DevTools → Application → Cookies → substack.com, copy the substack.sid value, and paste it below. It lasts months as long as you stay signed in.
checking…

Connections

Anthropic API keychecking…
Ghost content APIchecking…
Secrets live in Supabase (Edge Function secrets), never in this page. This only reports whether they're present. The engine only runs for a signed-in admin.

Spend (estimated)

This month
All time
Estimated from tokens logged per run — Sonnet 4.6 is $3/$15 per million in/out, Opus 4.8 $5/$25. The cached voice prompt makes repeat runs cheaper. Your real bill is in the Anthropic console.

Engine

Stable across calls so it stays prompt-cached. Tune the voice here, not in code.

Automation switches

Master switch / cold-start. Cron wiring arrives in Phase 2.

Story crawl

Instagram

Jokes & questions