01 / SOURCE
What arrived and where it came from
One card per delivery. A delivery is one long-form video cut into clips, so the source URL and the campaign belong to the whole batch — they are read once and every clip in it is named in one call. Fix either here; "Look it up" reads the URL again.
02 / TITLE & ESSENTIALS
What each clip is called and what it says
One Claude call per batch writes the title, the description and the hashtags for every clip at once — they are one editorial decision made from one context, and five clips off one video have to differentiate rather than repeat each other. The rules are three separate lists because what makes a good title has nothing to do with what makes a good tag.
The call
In: the source video's title, channel and description, the campaign, and per clip its burnt-in captions and why that moment was picked. Out: a title, a description and hashtags per clip, plus one line saying which moment the title was built on.
03 / RULES
Where a post goes and how it is published
Everything that is true of a post whatever its title says: which accounts it reaches, the bounds the calendar has to stay inside, and the per-platform options Outstand actually accepts. Every hour on this page is New York time.
Who a post reaches
A post targets a channel family — one brand across the platforms it lives on. The scheduling call picks the family; this switch decides how much of it the post reaches.
Off (the default): the post goes to every connected account that family has — one Outstand call with all of them on it, so the brand posts everywhere it lives. On: only the platforms ticked below, which is the exception rather than the rule.
Only used while the switch above is on.
When a post may land
Told to the scheduling call, and enforced in code afterwards — a slot that breaks one of these is moved to the next legal one. New York time, always.
Nothing is scheduled outside them; a slot past the close moves to the next morning.
Minutes. Two clips one minute apart is the failure this exists for.
A cap the scheduling call is told about.
Days ahead a post may be placed. Outstand itself accepts at most 30.
YouTube
Sent with the post as Outstand's youtube configuration. Only applied when
the post actually reaches a YouTube account.
What the video is when it lands. Unlisted is the safe way to test a real upload.
YouTube's own category id.
A 9:16 clip under a minute is a Short. Off uploads it as a normal video.
YouTube requires an answer. Wrong here is a compliance problem, not a preference.
YouTube is the one platform with a real title field of its own. Off leaves the title as the first line of the description, the way every other platform reads it.
TikTok
Sent as Outstand's tiktok configuration.
DIRECT_POST publishes straight away. MEDIA_UPLOAD puts it in the creator's inbox as a draft to finish by hand — which is what an app that has not passed TikTok's audit is limited to.
Required for a direct post, and it must be one the account actually offers — an unaudited app
only gets SELF_ONLY. Unused for a draft.
Per post, at publish time.
Sent as Outstand's instagram configuration.
Off posts it as a Reel, which is what a 9:16 clip normally wants to be.
Milliseconds into the video to take the cover from. 0 leaves it to Instagram. A custom cover image is a per-post field, so it belongs on the post, not here.
Meta's own disclosure flag. On when the clip actually is.
What Outstand accepts
Read live from HubApi, which validates every option against the same list before it sends. A platform with nothing listed takes no per-post configuration at all — its content and its media are the whole post.
04 / SCHEDULE
When it goes out and to which brand
A second Claude call places the whole batch at once. Spacing posts apart and spreading them over brands is a decision about the set — a model shown one post at a time would put all five at the best hour of the same day.
The call
In: every written post with its title and hashtags, every channel family with its category, tags and connected accounts, what is already booked, and the bounds from the Rules page. Out: one family and one New York time per post, with a sentence saying why. Anything that breaks a bound is moved in code afterwards.
Booked
Soonest first. Everything with a time on it.
What happened
One line per thing Posty did.
05 / MANUAL MODE
Do it yourself for one post
Fully separate from the rest of Posty: a clip added here never touches the pipeline, never appears on the Source page, and is never named or placed by Claude. Drop a video in, write everything yourself, then send it.
Add a clip
Drop a vertical video here, or click to choose one.
What it says
Where and when
Rules for this post
Every one of these normally comes from the Rules page. Change one here and only this post disagrees — the rest keep following the page, including when you change it later.
Publish
"Save for later" books the slot above and leaves; Posty sends it when that time comes, the same way an automatically-placed post does. "Publish now" saves everything on this page first, then sends it immediately, whatever the time above says.
How it is going
This clip's own history, newest first. Refreshes on its own.
06 / DEVELOPMENT
Wired in or on its own
Every agent in this ecosystem carries this page. It holds the switches that decide whether Posty is part of the pipeline or a closed loop you can safely run anything through, and the one combined log for everything the automatic pass does - it lives here and nowhere else.
Log
Intake, naming and scheduling, in order, since this process started. Manual mode keeps its own history per clip instead - see "How it is going" on that page.
Sandbox
On: input/ is picked up on its own every minute, which is how Clipper's clips get
here. Off: the folder is left alone and nothing moves unless you press Run now.
On: a post that comes due is sent to HubApi and goes out on real accounts. Off: it stays in the queue and says it was due. Off is the default — the switch that reaches an audience is the one you turn on deliberately, and turning it on sends what was already waiting.
Public address
HubApi — never Outstand directly — downloads each clip from here and relays
it into Outstand's own storage before posting. POSTY_PUBLIC_URL in
AFBITE/.env is the address it uses to reach this computer's archive/
folder. http://127.0.0.1:8200 is enough, since HubApi runs on this same machine —
a public address (Tailscale Funnel or similar) only matters once it doesn't.
Where things are
| input/ | what other agents drop off: one folder per run, one batch.json plus three files per clip sharing a stem. |
| archive/ | where a registered clip lives afterwards, and what /media/… serves — including the previews on the Source page. |
| posty.db | batches, posts and the event log. |
| HubApi :8100 | the account register, and the only way out to a platform. |