Product · Social media publishing
Write, schedule, publish and measure content across nine social networks from one place.
Introduction
Creators and agencies make plenty of content. What eats their week is everything after: writing a caption for each platform, picking the page, choosing the date, re-uploading the same file nine times — then doing it again tomorrow. uContents turns that into a publishing system. Upload once, set the rules, and it keeps publishing across Facebook, Instagram, Threads, YouTube, TikTok, X, LinkedIn, Pinterest and Bluesky, then reads the analytics back. The version live today is a ground-up rewrite of an earlier Laravel product, rebuilt as a multi-tenant platform with workers, queues and an AI layer that looks at the media before it writes a word.
Details
The dashboard a brand works in every day, rebuilt here in code from its own screens. It opens on a workflow; pick another screen, or click the sidebar.
A visual builder of triggers, conditions, branches, actions and delays. A workflow starts on a new Facebook or Instagram comment, or on a schedule.
Recreated from the product’s interface. Labels and options are the app’s own; the brand, posts and numbers are samples.
Pieces of the app that carry the most weight, at full size.
Composer
Each network’s rules apply while the post is written, so one that cannot publish never reaches the queue.
Posts
A due post is claimed by one atomic status change, so two workers can never pick up the same one.
Campaigns
Slots in the campaign’s own timezone, a queue order, a rule for missed times, and a second lane that reposts what already went out.
Workflows
A trigger, a condition on what the comment means, and the actions that follow. Anything risky waits in the approvals panel.
Studio
The agent plans, writes and generates, then stops at anything that costs credits or changes data.
Analytics
Engagement by day and hour, so the calendar’s best times come from the brand’s own audience.
Brand voice
The Studio and the AI Writer read the same brief, kept per brand, with a memory of what it learns.
AI Writer
Tone, goal, style and length, set per post or per campaign, with the media in view before a word is written.
Integrations
An MCP server lets agents work with posts, campaigns, media and analytics. Writes are proposed first and confirmed within fifteen minutes.
Nine network integrations, scheduled and bulk publishing through BullMQ workers, with analytics read back from each platform.
Captions, titles and hashtags drafted from frames sampled across each video, paid for in credits, with automatic failover between AI providers.
A visual workflow builder that answers comments, multi-brand workspaces with roles and 2FA, plus an MCP server for Claude.
The running parts
The hard parts
Every query runs inside a transaction that names the brand, and PostgreSQL row-level security does the filtering. With no brand in context the call fails instead of returning everything, and a check script fails when a brand table has no policy.
Due posts are claimed by a single atomic status change, so two workers cannot pick up the same one. A reaper resets anything stuck in publishing for over fifteen minutes, and every campaign slot has a stable key.
Publishing gets four attempts, backing off for as long as the network asks and a little more. Failures are classified, and only account or channel failures count towards switching a channel off after three strikes.
A scan every ten minutes renews any access token that is past half of its remaining life, so a scheduled post does not fail on a login that expired overnight.
Campaign preparation shares a queue, so each brand holds a limited number of leases, taken atomically in Redis. A lease expires by itself if the worker holding it dies.
Start here
Tell us what is slow, manual or missing. You will hear back within one working day — then get a written scope and a fixed quote, or an honest no.