A Bluesky content workflow in Notion (and how to reuse your X and Threads posts)
Bluesky is text-first, counts 300 characters and has no scheduler of its own. Here's how to run it from a Notion content bank, check lengths with a formula, and reuse X and Threads posts without breaking them.
Most people who post on Bluesky arrived from somewhere else, usually X, sometimes Threads, and they kept posting there too. That's the real problem to solve. It isn't "how do I write for Bluesky" so much as "how do I keep a third text platform going without tripling the work". A Notion database handles that well, as long as you plan for the few ways Bluesky differs from the others.
Can you plan Bluesky posts in Notion?
Yes. Notion has no Bluesky integration of its own, but a Notion database makes a good Bluesky content bank: one row per post, the post text as the row's name, a date, a status, and optional images or a first reply. A simple formula on the row checks the 300-character limit before you schedule anything, which matters because Bluesky counts links at their full length. Because the same database can hold your X and Threads posts, you can see which ideas already went out where and adapt them instead of writing everything three times. Notion can't publish the posts by itself, and the Bluesky app has no built-in scheduler, so you either paste each post into Bluesky at the right time or connect a tool that publishes the rows for you. Either way, the writing happens in one calm session in Notion, not in the app between other things.
What makes Bluesky different to plan for?
Four things, and each one changes how the database should work:
- 300 characters, links included. X shortens every link to 23 characters, so a long URL costs you nothing there. Bluesky counts the link at its full length. A post that fits on X with a link can be too long on Bluesky.
- No native scheduler. There's no "post later" in the Bluesky app. Whatever you plan has to be published by you, on time, or by a tool.
- Replies do a lot of work. Bluesky conversations happen in replies, and a reply under your own post is the natural place for a long link, a source or the second half of a thought.
- Images have a size limit. Up to four images per post, as JPG, PNG or WebP, and Bluesky rejects any single image over about 1 MB. Full-resolution screenshots usually need compressing first. A video goes out on its own, as an MP4 of up to 3 minutes and 100 MB, and needs an account with a verified email.
How do you set up a Bluesky content bank in Notion?
Start with one database for all your short-form text posts, not a separate one for Bluesky. The properties:
- Name: the post text. Write the post here, so it shows in every view.
- Platform or account. Bluesky, X, Threads. A multi-select works if one idea goes to several.
- Date and status. Idea, drafted, ready, posted.
- Media. Up to four compressed images, or one video.
- First reply. The link or extra context that goes under the post.
- Length. A formula that counts the post:
length(prop("Name")). Add a second formula, or a filter, that flags anything over 300 for Bluesky rows.
The length check is the one that saves you. Notion won't warn you that a post is too long, and a post that's 20 characters over either gets cut or fails. With the formula in a table view, you can sort by length and fix the long ones in one pass before anything is scheduled.
Then add a calendar view for the week and a board view by status. If you already keep a Threads content bank in Notion, this is the same database with one more platform in it.
How do you reuse X and Threads posts on Bluesky?
Reusing is the whole point of keeping one database, but the limits differ enough that copy and paste breaks things. Go through the cases in order:
- An X post with no link. Usually fits as it is: X allows 280 characters and Bluesky 300. Reuse it word for word.
- An X post with a link. Check the length again, because the link now counts in full. If it's over 300, move the link into the first reply and keep the post itself as the hook.
- A Threads post. Threads allows 500 characters, so most of them won't fit. Cut it to its sharpest sentence or two for the post, and put the rest in a reply, or split it into a short thread.
- A thread from X. Bluesky handles threads the same way: the first post carries the hook, and the replies carry the rest. Keep the first post under 300 characters, links included.
Do the adapting in Notion, in the row, not in the Bluesky app at posting time. That's the habit that keeps three platforms manageable: the thinking happens once, and the posting is mechanical. The same idea runs through building a Twitter (X) content system in Notion and repurposing one piece of content across platforms.
What should a week of Bluesky posts look like?
Whatever you can keep up, written in one sitting. A realistic pattern for someone who also posts on X or Threads: a handful of posts a week, most of them adapted from ideas you already wrote, plus one or two written for Bluesky because something there sparked them. Schedule the planned ones, leave room for the spontaneous ones, and spend the time you saved in the replies, which is where Bluesky actually rewards attention.
Batch it with everything else. If you already batch a month of content in Notion, Bluesky is a short extra column in the same session, not a separate job.
Then publish from the same rows
With the week planned, the posts still have to reach Bluesky. You can paste each one into the app at the right time, which works but brings back the daily interruption the batch was meant to remove.
Or you can schedule Bluesky posts from Notion with NotionScheduler. You connect your Bluesky account by signing in on Bluesky itself, so your password never leaves Bluesky, and you connect the database you planned in. At each scheduled time the row publishes to Bluesky with its images or video, links already clickable, and a link preview card when the post has no media. If the row has a first reply, it goes out as a reply under the post. Bluesky is included on every plan, the free one too.
The takeaway
Bluesky is easy to write for and easy to neglect, because it's usually the third platform on the list. Keeping it in the same Notion database as your X and Threads posts fixes that. Write the post text in the row, check the 300-character limit with a formula, move long links into the first reply, and adapt what you already wrote instead of starting from zero. The posts go out on time, and your attention goes into the replies.