Docs / Architecture
The publishing engine
Slots, retries, the never-twice rule, platform quotas and human-like cadence: how posts reach nine platforms safely.
Publishing is where a mistake is public: a post sent twice, sent late, sent past a platform's limit or in a burst that looks like a bot can cost a channel its standing. ChannelForge's publishing engine is built around those risks. This page explains how a slot becomes posts, how a post is made once and only once, and how each platform's limits and rules are kept.
Slots#
A channel's schedule is a list of posting times in its own time zone, and the platforms it posts to (every connected platform when none is chosen). The scheduler visits every channel whose schedule is on:
- Each slot is decided once per platform. Every decision is recorded with its reason — posted, nothing ready, waiting for approval, refused by a limit, missed — so a slot can never be handled twice, even if two schedulers ran.
- From the slot to ten minutes after it, it queues one posting job per chosen, connected platform, each for the oldest ready episode that platform has not had yet. Where the channel asks for approval, only approved episodes count.
- Never late. A slot found more than ten minutes after its time (the service was down) is recorded as missed, not posted late: the episode simply goes out on the next slot.
- One at a time per platform. While a channel's post to a platform is still on its way, the next slot for that platform waits.
- In order. A slot's platforms are queued in a fixed order: YouTube, Facebook, Instagram and LinkedIn first, then Threads, Bluesky and X.
Short episodes are posted on slots, and your own-footage clips where you keep them on the schedule. Translations and compilations are posted by hand with their ready-to-post texts; films have a cadence of their own. TikTok and Pinterest are never posted on a slot (below).
Once, and only once#
Every episode has one post record per platform, and each post goes through the same guards:
- Already there? A post that is already published is never sent again: asking returns the existing link.
- On its way? A post that is being sent is never picked up by a later slot.
- An answer lost. When the connection drops after a platform may already have published, the post is marked may be live and is not retried blindly. On X, Threads and Bluesky the next try — a member's Look for it, then retry, or the next slot after a quarter of an hour — first looks on the account for that very attempt, and posts only if it is not there. On TikTok, every next try asks TikTok about the last attempt first. Elsewhere a person checks the account and confirms.
- A limit on tries. A post that failed three times is left for a person; the slot does not keep trying it.
- After a restore. If the database is ever restored from a backup, the recovery procedure holds posting until someone has checked what the platforms already have, so a restore cannot post the same episodes a second time.
Retries#
A posting job that fails for a passing reason — the platform timing out, a server error on either side — is retried by itself, a little later each time, up to its attempts. A refusal that needs a person — a token the platform revoked, a permission missing, an account to reconnect — is not retried: the post says why in plain words, and the member who connected the account is asked to reconnect it. When several posts fail within two hours, an incident opens for the operators.
Each platform's rules#
| Platform | How ChannelForge keeps its rules |
|---|---|
| YouTube | YouTube limits how many videos an application may upload a day, for all its users together. Every upload is counted against that allowance before YouTube is called; once the day's uploads are used, YouTube posts wait for the next Pacific day — the slot says so, the episode keeps its tries, and the slot's other platforms post as usual. Uploads are made only on schedules a person set up in the app, or from an episode's page. |
| Facebook and Instagram | Their Reels stop at 90 seconds, so they get each episode's own Facebook edit, which has to tell the story on its own; an episode without a passing edit is not posted there, and no try is used. |
| Posted as the member who connected it, with the episode's own words. | |
| X | X charges for every post: an X post's credits are reserved when it is queued and charged only once it is live. There are daily caps for the whole service and for each workspace by plan; when X's prepaid credits run out, X posting pauses for everyone for two hours instead of failing post after post. The text never carries a link. |
| Threads | Threads fetches the video from a short-lived signed link, deleted when the attempt is over; at most 25 posts a profile a day, well under Threads' own limit. |
| Bluesky | Each post goes out at a moment of its own, a few minutes after the slot (below), at most 10 a day per account. |
| TikTok | TikTok's rules require each post to be made by a person on its own posting screen — who sees it, comments, Duet and Stitch, the commercial-content disclosure, with nothing preselected — so a TikTok post is never on a slot and never made through the API. Until TikTok's audit of ChannelForge's app passes, posts are private ("Only me"). TikTok's own limits make an account wait without using a try. |
| Each Pin is chosen by a member on the episode's Pinterest screen: its board, its words, its link — never on a slot, as Pinterest's guidelines ask. Pinterest opens once Pinterest has approved ChannelForge's app. |
A human pace#
Every automated write is made to look like a person's: no bursts, varied moments, never the same minute every day.
- Bluesky posts are queued for a random moment between a few minutes and under an hour after the slot, never within a few minutes of the account's posting minute the day before, and at least 25 minutes from the account's other posts.
- Post now in the app goes out between 20 seconds and 2 minutes after the click, not on the second.
- Language twins that share a slot time with their family post 7 to 29 minutes off its minute.
- Carousels are planned at a minute of their own, and the Studio inbox assistant answers in sessions, with a pause after each reply, as a person would.
- Background reads — measuring posts, collecting comments — run at a minute of the hour of each workspace's own, so thousands of workspaces never call a platform at the same moment.
Your posting times on YouTube, Facebook, Instagram, LinkedIn, Threads and X are kept as you set them; choosing times that are not on the hour is a good habit.
Accounts and tokens#
- Each workspace connects its own accounts through the platform's own sign-in. The tokens are sealed with AES-256-GCM the moment they arrive and opened only by the job that posts or reads for that account.
- Tokens are refreshed shortly before they expire, under a lock on the account, so two jobs never refresh one token at once. Platforms that hand out a new refresh token each time (X, TikTok) have it saved before the lock is released.
- An account the platform refuses for good is marked to be reconnected; nothing is sent from it until it is.
- Disconnecting an account in the app deletes ChannelForge's copy of its tokens. To remove ChannelForge's access at the platform itself, use the platform's own settings.
Approval and consent#
- A channel that asks for approval posts only what a member (or a reviewer through a review link) approved; holding an episode withdraws its approval.
- Nothing is posted to YouTube except by a schedule or an action a person set up in the app; the API and MCP cannot upload to YouTube.
- Writes that change something already on YouTube, such as titles in other languages, need the member's explicit consent ("Allow edits") when connecting.
Films#
Approved films are posted on the channel's film cadence, each upload made and published at its scheduled time, with the same once-only guards. Direct publishing of films is being switched on: until then a film's post is a dry run that records what would be sent, and the film itself is ready to download from its page.
Related#
- Schedules and autopilot — setting slots and platforms.
- YouTube, TikTok and X — each platform's page.
- Reliability and recovery — what happens when the service or a platform fails.
- Platform policies we follow — the rules behind these limits.
Something missing or unclear? Tell us and we will improve this page.