Cross-posting

Write it once.X, Bluesky and LinkedIn each get a real post.

Tick the networks on a draft and each one is published through its own API as a native post, threads included where the network has them. Bluesky needs no API key because it issues none, LinkedIn needs one sign-in, and no password ever reaches OpenTweet.

Last updated: September 2026

7-day free trial. Cancel anytime.

Three networks, deepest on X

Everything deep in OpenTweet lives on X: analytics, evergreen recycling, connectors, DM campaigns, Articles, and an MCP server for agents. Cross-posting sends what you write there to Bluesky and to your LinkedIn profile as native posts. It is three networks done properly. If you also need Instagram, TikTok, or Facebook, a tool that covers those networks is the right call.

What you actually do

Four things, and only the first one happens more than once.

  1. Connect your networks once

    For Bluesky, type your handle and approve OpenTweet on your own server. For LinkedIn, sign in with LinkedIn and approve. Neither has a developer console step. Your X account is already connected the same way it always was.

  2. Write the post once

    One draft, one editor. Text, images, alt text, and thread parts are written a single time. Nothing is duplicated into a second composer for a second network.

  3. Pick the networks

    Every composer carries a platform choice. Tick X, Bluesky, LinkedIn, or any mix. Turn on automatic cross-posting and every connected network is ticked by default, so you only touch the control when you want a post to skip one.

  4. Each network gets its own post

    At publish time OpenTweet delivers to each target separately through that network’s own API, then records the outcome per network: published, failed, or skipped with a reason.

Why this is harder to copy than it looks

Nothing to apply for

Bluesky issues no API keys and runs no developer program, and LinkedIn posting runs on OpenTweet’s own LinkedIn app. There is no application and no approval wait before your first cross-post goes out.

No password, and no App Password

Bluesky connects over atproto OAuth and LinkedIn through its own sign-in, so OpenTweet keeps a scoped grant instead of a credential. Tools that ask you to paste a Bluesky App Password are asking for close to full account access.

Self-hosted Bluesky servers work

OAuth resolves your personal data server from your handle, so an account on a server you run yourself connects exactly like one on bsky.social. No host is hardcoded anywhere in the flow.

Native posts, not mirrors of a link

Each network gets a real post published through its own API. Threads post as real reply chains on X and Bluesky, and as one combined post on LinkedIn.

A post that does not fit is skipped, not dropped

Too long for one network and fine on the others? It publishes where it fits and is skipped where it does not, with the reason recorded against the post.

One queue and one calendar

A cross-posted draft is one record on the same calendar as everything else. Reschedule it once and every network moves with it.

The limits on each network, exactly

The three networks disagree about almost every number, so a single draft cannot always satisfy all of them. OpenTweet checks against these before publishing rather than truncating your words to make them fit.

XBlueskyLinkedIn
Text length
280 characters, or 25,000 on Premium
300 characters
3,000 characters
Images per post
Supported
Up to 4, 2MB each
Up to 4
Per-image alt text
Supported
Supported
Not carried over
Threads
Supported
Supported, as a real reply chain
Combined into one post
Hashtags and mentions
Linked
Linked
Plain text
Video
Supported
Not supported
Not supported
Analytics read back
Supported
Not supported
Not supported

Bluesky counts graphemes, so an emoji costs one character. OpenTweet counts LinkedIn strictly, so an emoji costs two there. LinkedIn sign-ins last 60 days, then you reconnect in one click.

What happens when a post does not fit every network

This is the case every cross-posting tool has to answer, and most answer it by truncating or by failing the whole post.

What OpenTweet does

  • Publishes to every network the post fits
  • Skips the network it does not fit, and says why
  • Records the outcome per network on the post itself
  • Leaves your text exactly as you wrote it

What it does not do

  • Truncate the text to fit the smallest limit
  • Fail the whole post because one network refused it
  • Split a single post into a thread without being asked
  • Quietly drop a network and report success

A 350-character post on a Premium X account publishes on X and LinkedIn and is skipped on Bluesky, which stops at 300. The same post from an agent comes back with that outcome in the response, so the agent can decide whether to rewrite it. See the API response shape.

What cross-posting does not cover

Worth stating plainly, because a tool that claims parity across networks usually has less on all of them.

Built

  • Single posts on all three networks
  • Threads on X and Bluesky, combined into one post on LinkedIn
  • Images, with per-image alt text on X and Bluesky
  • Scheduling, the queue, and the calendar
  • The platforms parameter on the REST API and MCP

Not built

  • Bluesky and LinkedIn analytics. Engagement is never read back
  • Video to Bluesky or LinkedIn
  • LinkedIn Company Pages, comments, and document carousels
  • Evergreen recycling and DM campaigns, which stay X-only

Frequently asked questions

What does cross-posting actually produce on each network?

A native post on each one. Not a link on Bluesky or LinkedIn pointing at your tweet, and not a screenshot. The text is published through each network’s own API as a post that stands on its own. A thread posts as a real reply chain on X and Bluesky, and as one combined post on LinkedIn, which has no threads.

Do I need a Bluesky API key to cross-post?

No, and neither does anything else. Bluesky issues no API keys and runs no developer program, so there is no form, no approval queue, and no rate-limit tier to negotiate. You connect by authorizing OpenTweet on the server that holds your account, through atproto OAuth.

Does OpenTweet want my Bluesky password or an App Password?

Neither. You sign in on your own server and OpenTweet stores a scoped OAuth grant instead of a credential. An App Password can do close to everything your account can do, which is why atproto OAuth is replacing it. OpenTweet never sees your password.

Do I need a LinkedIn developer app or API access?

No. OpenTweet runs its own LinkedIn app, so you connect by signing in with LinkedIn and approving it, and there is nothing to apply for. Posts go to your personal LinkedIn profile. Company Pages are not supported.

Why do I have to reconnect LinkedIn every 60 days?

LinkedIn sign-ins for apps like OpenTweet last 60 days, and LinkedIn gives these apps no way to renew them. When yours expires, scheduled LinkedIn posts are held and you get an email. Reconnecting is one click in Settings.

What happens when a post is too long for one of the networks?

It is skipped on that network with a stated reason, and it still goes out everywhere it fits. Bluesky allows 300 characters, LinkedIn 3,000, and X 280, or 25,000 on Premium, so a 400-character post publishes on LinkedIn and on a Premium X account and is skipped on Bluesky. The post record tells you which network was skipped and why, rather than failing the whole thing or silently truncating your words.

Do threads cross-post?

Yes. Write the thread once. X and Bluesky each get a real reply chain, with each part carrying its own text and images, and per-image alt text carries across. LinkedIn has no threads, so it gets the whole thread as one post, with the parts separated by a blank line and the images from every part collected, as long as the combined text fits in 3,000 characters.

Can I cross-post video to Bluesky or LinkedIn?

No. Video cross-posting to Bluesky and LinkedIn is not supported, so a post with a video goes to X and is skipped on the other two with a reason. Images are supported, up to 4 per post, at 2MB each on Bluesky.

Does OpenTweet show Bluesky or LinkedIn analytics?

No. Analytics in OpenTweet cover X only. Nothing reads your Bluesky or LinkedIn engagement back, so there are no impressions, top posts or best-time data for either network anywhere in the product.

Can I cross-post to Threads, Instagram, or TikTok?

Not today. OpenTweet publishes to X, Bluesky and LinkedIn. Threads is on the roadmap and is not shipped, so nothing posts to it yet and there is no date to give you. Instagram and TikTok are not planned. If you need one API that also posts to Instagram, Facebook, and TikTok, a tool that covers those networks is the right call.

Which plans include cross-posting?

Every paid plan, from $19.99 a month. Pro connects 1 Bluesky account and 1 LinkedIn account, Advanced 3 Bluesky and 3 LinkedIn, and Agency 10 Bluesky and 10 LinkedIn, matching the X account count on the same plan. There is no separate cross-posting fee and no per-post charge.

One draft. Three networks. No second composer.

Connect Bluesky over atproto OAuth and LinkedIn with one sign-in, tick the networks on your next post, and each one gets a native post of its own. Included on every plan from $19.99 a month.