Skip to content
Publishing

Straight to the platforms, at the hours that work.

Harbor publishes to X, LinkedIn, Instagram and Threads through each platform’s own API, with no middleman. It knows each one’s rules, picks the right crop, and never guesses about a post it can’t confirm.

Hub · Week of Oct 19Scheduled to live, direct to each platform
ConnectedConnectedConnectedConnected
X@tryharbor3 weeks, 2 rewrites, 1 feature.Thread · 3 posts · Scheduled for Tue 9:00 AMTue 9:00 AMscheduled
LinkedInHarborMost founders with several products hit the same wall…Scheduled for Wed 8:00 AMWed 8:00 AMscheduled
Threads@tryharborEvery post, measured against your own median.Scheduled for Thu 1:00 PMThu 1:00 PMscheduled
Instagram@tidewatercoffeeThree roasts, one Sunday. Swipe for the cupping notes.Carousel · 4 images · Scheduled for Sun 7:00 PMSun 7:00 PMscheduled
01Direct publishing

Four platforms, four rulebooks.

Harbor talks to each platform directly, through your own developer apps, and checks every draft against that platform’s rules before sending: text limits, how many images, whether video works, which aspect ratios are allowed. A failed check blocks publishing on that platform. A warning is advice.

  • Your own developer apps, with tokens encrypted at rest
  • Instagram needs media: JPEG, between 4:5 and 1.91:1
  • LinkedIn posts publish now; their metrics wait on LinkedIn partner access
Toggle the image to see Instagram’s check fail
Voice check · platform rulesOne draft, four rulebooks
PlatformTextMediaThreadsCheck
X280 per postUp to 4 images, or 1 videoCrop: 16:9 wideThread: each part replies to the lastChecking…
LinkedIn3,0001 image; video not yetCrop: 1.91:1 landscapeExtra parts post as commentsChecking…
Instagram2,200 captionRequired. JPEG, 4:5 to 1.91:1, up to 10Crop: 4:5 portraitCarousel of up to 10Checking…
Threads500 per postUp to 10 images or 1 videoCrop: 4:5 portraitThread: replies, like XChecking…
A failed check blocks publishing on that platform. Warnings are advice.
02Threads and carousels

Threads and carousels, the native way.

A thread on X or Threads goes out part by part, each one a reply to the last, with a count per part. On LinkedIn, extra parts are posted as comments under the post. Instagram and Threads carousels take up to 10 images, and one video on Instagram goes out as a Reel.

  • Per-part character counts while you write
  • Each carousel image uses the platform’s preferred crop
  • Instagram and Threads posts finish once the platform has processed them
Thread · 1: 55 · 2: 71 · 3: 86 / 280
Harbor @tryharbor · 1/33 weeks, 2 rewrites, 1 feature. A thread on what I cut.
Harbor @tryharbor · 2/3Cut 1: settings. Every option I removed was one fewer thing to explain.
Harbor @tryharbor · 3/3Cut 2: the second chart. One curve against your own median says more than four totals.
Carousel · 4 images · 4:5tidewatercoffee Three roasts, one Sunday. Swipe for the cupping notes.
03Best-times calendar

A calendar shaded by what works.

The calendar shades each hour by how this brand’s posts do then, from its own history blended with platform norms. Scheduled posts drag to a new slot and save right away. Agents pick slots the same way: the best open hour on that channel, kept 3 hours clear of other posts and pending approvals.

  • One hue: darker is better
  • Scheduled posts move; published ones stay put
  • Each brand has its own best times
Drag a post to another hour
Hub · Calendar · HarborDrag a post to a better slot
better →
MonTueWedThuFriSatSun
7a
9a
11a
1p
3p
5p
7p
9p
From this brand’s own posts, blended with platform norms.
04Media library

Set the focal point once. Every crop follows.

Upload to the brand’s media library, click the part of the image that must stay in frame, and Harbor cuts each platform’s crop around it: 4:5, 1:1, 16:9, 1.91:1 and 9:16. Harbor hosts the files itself, so Instagram and Threads can fetch them from a public URL.

  • The same file uploaded twice is stored once
  • Alt text and tags, searchable
  • A file a scheduled post uses can’t be deleted
Media · launch-art.png · 1600 × 1000Set the focal point once. Every crop follows.
Click the image
4:5 Instagram · Threads
1:1 Instagram grid
16:9 X
1.91:1 LinkedIn
9:16 Stories · Reels cover
05Sandbox and safety

Safe to try. Safe to send.

Sandbox mode publishes to practice accounts: no OAuth, no network, the real platform’s length and media rules, and simulated metrics. You can run the whole loop for free.

When Harbor sends a post but can’t confirm it landed, it never retries on its own. It asks you, so you never get a double post.

  • Sandbox and simulated output are always labeled
  • Rate limits retry with a backoff, since nothing went out
  • Post now asks you to confirm before it sends
ModeSandboxPublishing to practice accountsSimulatedBuilt-in model, no API spend
Sandbox accountNo real platformX ▾@yourbrandSame length and media rules as the real X. Metrics are simulated.
X · @tryharborUnknown
3 weeks, 2 rewrites, 1 feature.
  1. 9:00:00Sent to X
  2. 9:00:20No answer from X: the request timed out
  3. 9:00:20Outcome unknown. Not retried.
Retried automatically only when the error proves nothing went out, like a rate limit.
Also in Publishing
Snapshots from the first hour →Every published post is measured at 1h, 6h, 24h, 3 days and 7 days.
Approvals first →Anything an agent drafted is scheduled only when a person approves it.
Your own apps →Self-hosters register their own platform apps. Meta needs an HTTPS redirect, so local setups use a tunnel.
Not yetVideo on LinkedIn. Reading replies and past posts on LinkedIn, which its API restricts.
Get started

Plan next week in an afternoon.

Self-host Harbor free, or get early access to Harbor Cloud. Either way, nothing posts until you say so.