
Connect your website’s RSS or Atom feed once and every new article, product or episode posts itself to Bluesky — with a real preview card, a link back to your site, and nothing to remember after you publish.
Most platform guides open with a list of obstacles. This one does not, because Bluesky is the rare network where automated publishing is genuinely straightforward.
There is no Business account requirement. There is no app review, no verification programme and no multi-week approval process of the kind Meta requires before anything may post on your behalf. Access is granted by an app password you generate yourself, in your own account settings, in about fifteen seconds.
The content format fits too. A Bluesky post is plain text, and any URL inside it automatically produces a link preview card — the same behaviour a link post has on Facebook or X, and precisely the shape an RSS item already has. A title and a link is not a compromise on Bluesky; it is the native format.
The last piece is the feed itself. Bluesky’s default timeline is chronological. Your followers see what you post because they follow you, not because a ranking system decided they should. For a publisher, that removes the usual anxiety about whether automated posts are being quietly suppressed.
Three things are needed: an account to post to, permission to post, and a feed to read. In PostRSS the account is a Target and each automated post counts as one Task against your plan’s monthly allowance.
In Bluesky, open Settings, go to Privacy and Security, and choose App Passwords. Create one and give it a name you will recognise later — “PostRSS” is the obvious choice. Bluesky shows the password once; copy it then, because it is not retrievable afterwards.
An app password is not your account password. It is a separate credential scoped to a single application, it does not let anything change your account password or email, and you can revoke it from the same screen at any time without touching your real password or signing out anywhere else.
In PostRSS, add Bluesky and provide your handle together with the app password. Your handle is whatever appears after the @ — yourname.bsky.social by default, or your own domain if you have set one as your handle.
Paste the address of your RSS or Atom feed. On WordPress this is usually your domain followed by /feed/, and every category and tag has one of its own — /category/news/feed/, for instance. Shopify, Ghost, Substack, Blogger, PrestaShop and OpenCart all expose feeds, as does every podcast host and every YouTube channel. If you are unsure your site has one, open the homepage source and look for application/rss+xml.
Publishing on your site is then the only action required. PostRSS notices the new item, builds the post and sends it. Your feed is checked every 5 minutes on every plan, and every 1 minute on Enterprise.
This is the one genuine constraint on Bluesky, and it deserves a proper explanation rather than a footnote.
A Bluesky post holds roughly 300 characters. A URL consumes part of that budget. An article title of ninety characters plus a link of sixty leaves plenty of room; a title of two hundred and forty characters does not.
PostRSS handles this by trimming the title rather than the post. The link is preserved in full, because a truncated URL is a broken post — and the whole point of the exercise is sending people to your site. Titles are cut at a word boundary with an ellipsis rather than mid-word.
Two practical consequences follow. First, if your site publishes long, descriptive headlines, the Bluesky version will often be shortened, and that is normal rather than a fault. Second, if you care about how the shortened version reads, the lever is on your own site: a tighter headline, or a shorter value in whatever field your feed uses for the title.
It is worth remembering that the preview card carries the rest. Bluesky renders your page’s open-graph title, description and image beneath the post text, so the information that did not fit in 300 characters is still on screen.
PostRSS sends the item’s title and a link back to the original page. Bluesky then builds a preview card from that page’s open-graph tags — the image, the title and the description your site already declares for sharing.
This means the appearance of your Bluesky posts is controlled by your website, not by PostRSS. If a post arrives with no image, the article is missing an og:image, or the image is too large, or a CDN rule is blocking the fetch. Fixing it at the source fixes every network at once, because Bluesky, Telegram, Facebook, LinkedIn and X all read the same tags.
Preview cards are cached, so a corrected image may take a while to replace an old one. That is the cache rather than the automation; a changed image URL bypasses it immediately.
Bluesky does something no other network does: it lets your domain be your handle. Instead of @yourbrand.bsky.social you can post as @yourbrand.com, verified by a DNS record you control.
For a publisher running automation this is worth doing before you start. An automated feed from @yourbrand.com reads as an official channel; the same posts from a default handle read as one of the many unattributed feed bots that circulated in Bluesky’s early days. The verification takes one TXT record and costs nothing.
Changing your handle later does not break a connected Target, but it is simpler to set it up first and never think about it again.
Not every account should carry every post. A company with a technical blog and a marketing blog under one domain may want only one of them on Bluesky. A shop may want product launches but not the help-centre articles that share the same feed.
PostRSS applies filters before anything is posted. You can restrict a Target by category or tag, require a keyword in the title, or exclude one. Several Targets can run from the same feed with different rules, which is how one site feeds a main account and a niche account without publishing twice.
The alternative many people reach for first — creating a separate feed per account in the CMS — works too, and PostRSS accepts any number of feeds. Filters simply save you from maintaining them.
Bluesky’s chronological timeline changes the calculus around volume compared with algorithmic networks. Nothing is being throttled, so every post you make genuinely appears — which cuts both ways.
An editorial team publishing six articles in one morning will, without scheduling, put six consecutive posts at the top of every follower’s timeline. On an algorithmic feed some of those would simply not be shown. On Bluesky they all are, one after another, and the effect is exactly as heavy-handed as it sounds.
PostRSS’s scheduling controls constrain when a Target may publish, holding items found outside the window and releasing them inside it. The feed is still checked at the same interval; only the release moves. For a high-volume publisher this is the single most valuable setting on the page.
Blog articles are the obvious fit, and the format was built for them.
Podcast episodes work particularly well. Every podcast is already an RSS feed, so no additional setup is needed, and the preview card renders the episode artwork.
YouTube videos post cleanly too — every channel exposes a feed keyed to its channel ID.
Product feeds need a lighter touch. Bluesky’s culture is noticeably less tolerant of pure commerce than most networks, and an account posting nothing but products will be muted. Filter to launches and notable items rather than the whole catalogue.
Status and changelog feeds are an underused option. A software company posting releases from a changelog feed gives followers a reason to keep the account followed between announcements.
Worth a paragraph of honesty, because it affects results more than any setting.
Bluesky grew as a place people went to escape feeds full of unattended broadcasting. An account that only ever posts links, never replies and never appears in a conversation will be followed by few people and muted by some of them. This is not a rule the platform enforces; it is simply how the audience behaves.
The accounts that do well with automation treat it as one component rather than the whole account. The feed keeps the account current and gives followers a reason to keep it in their timeline; a human still replies, reposts and occasionally posts something that did not come from a CMS. The automation removes the chore of announcing your own work — it does not remove the need to be present.
Check the app password first. If it was revoked in Bluesky’s settings — during a security tidy-up, or when someone rotated credentials — publishing stops immediately. Generate a new one and update the Target. Also confirm the feed itself updated; a caching plugin serving a stale copy looks identical to a broken automation from the outside.
That is a filter behaving as configured. Review the category, tag and keyword rules on the Target before assuming a fault.
That is the 300-character limit. Shorten the headline on your site if the trimmed version reads poorly, or accept it and let the preview card carry the detail.
No schedule is set on the Target. Add a publishing window.
Compare timestamps. Under five minutes is the feed-check interval working as designed. Hours means the feed is cached, and PostRSS can only read what your server serves.
Open the article and inspect its open-graph tags. Bluesky renders what the page declares, and its card cache can hold an old image for a while.
Bluesky shows likes, reposts and replies on every post, which tells you whether something landed. It does not tell you whether anyone visited your site.
For that, add UTM parameters to the links your feed emits, or to the canonical URLs on your site, and read the result in your analytics. After a month you will know the two numbers that matter: how many followers the account has, and how many sessions it sends.
If the second number stays flat while the first grows, the posts are being seen but not clicked — usually a headline or preview-image problem, and both live on your website rather than in the automation.
Each Bluesky account you connect is one Target, and each automated post is one Task against your plan’s monthly allowance. Paid plans raise both numbers and add the other networks, and they are chosen on postrss.com rather than inside the mobile app.
The arithmetic is driven entirely by your publishing rate: a blog publishing five times a week costs roughly twenty-two Tasks a month per account. Filtering a Target reduces that proportionally.
Bluesky and Mastodon are commonly run together: both are open, both connect in minutes, and an audience that left a larger network tends to be on one or the other. Threads is the third of the text-first networks, and reaches a very different audience because it is built on your Instagram identity.
Two things outside PostRSS decide how these posts look and whether they earn clicks: what your pages declare for sharing, and how tight your headlines are. If your automation is driven from a WordPress site, the PostRSS plugin lets you choose the categories that reach each account without touching a feed URL.
No. Publishing uses an app password you generate yourself in Bluesky’s settings. It is a separate credential, it cannot change your account password or email, and you can revoke it at any time.
Roughly 300 characters. PostRSS trims the title at a word boundary when needed so the link is always preserved in full.
Yes, provided the destination page declares open-graph tags. Bluesky builds the card from your page’s og:image, og:title and og:description.
Yes. Connect each account as its own Target and point them at the same feed, with different filters if they cover different sections.
No. PostRSS publishes items that appear in the feed after the Target starts running, so your back catalogue is never broadcast.
Two ways: pause the Target in PostRSS, or revoke the app password in Bluesky. Either stops publishing immediately.
The useful way to begin is narrow: one feed, one account, no filters. Generate the app password, connect the Target, publish something and watch it arrive. From there decide whether you want tighter filtering, a publishing window, or a second account for a different section of your site.