TBI Social

Sign in to manage social automation.

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.

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: Drop Ed's Market here once (saves in this browser)

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
Feed posts allow 4:5 (tallest) through 1.91:1 (widest); every photo in a carousel shares the ratio. 9:16 is a Stories size — use Download and post it as a Story by hand (the feed Post/Schedule buttons only take 4:5–1.91:1).

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

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.

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).

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