Automate RSS to BlueSky with n8n
Every new piece of content you publish is an opportunity to connect, grow, and build momentum. Yet, manually sharing each article or update to every platform can feel like a never-ending chore. What if that repetition could disappear, and your content could quietly, reliably, and automatically reach your audience on BlueSky while you focus on the work that truly matters?
This guide walks you through an n8n workflow template that does exactly that. It reads your RSS feed, downloads and uploads images, creates a BlueSky session, and publishes posts with link previews and images using BlueSky’s XRPC endpoints. Think of it as a small but powerful step toward a more automated, focused, and scalable workflow.
The problem: Manual posting slows you down
If you publish regularly, you know the pattern:
- New article goes live in your CMS.
- You copy the link, write a short caption, grab an image, and post it to BlueSky.
- You repeat this again and again, often at odd hours, just to keep up.
Over time, this repetition chips away at your energy and attention. Important tasks get delayed, and your creative focus is split between making things and promoting them.
Automation changes that dynamic. Instead of reacting to every new piece of content, you can design a system once and let it work for you every day.
The possibility: Let automation amplify your work
Automating RSS to BlueSky with n8n is more than a technical trick. It is a mindset shift. You are moving from “I have to remember to post this” to “I have designed a system that takes care of it.”
With a simple workflow you can:
- Ensure every new RSS item reaches BlueSky consistently.
- Save time on manual posting and reduce context switching.
- Keep a steady presence on BlueSky even when you are busy, offline, or focused on deep work.
- Lay the foundation for more advanced automations later, like translation, content transformation, or multi-channel posting.
n8n gives you a visual, extensible canvas to design this system. You can start small with this template, then gradually add filters, schedules, or creative refinements as your automation skills and needs grow.
The tool: An n8n workflow that connects RSS to BlueSky
The workflow template you will use is built around a clear, reliable sequence of steps. At a high level, it:
- Watches your RSS or Atom feed for new items.
- Creates a BlueSky session using an app password and retrieves an access token.
- Captures the current datetime for accurate post metadata.
- Downloads the enclosure image from the feed, then uploads it to BlueSky.
- Creates a BlueSky post that includes your link, text, and an external embed with an optional thumbnail.
- Uses sticky notes inside the workflow to remind you of configuration details.
Each node is a building block. Together, they create a repeatable publishing pipeline that you can adapt to your own style and strategy.
Node-by-node journey through the workflow
RSS Feed Trigger – where your automation begins
The journey starts with the RSS Feed Trigger node. This node watches the RSS or Atom feed you care about and wakes up the workflow whenever a new item appears.
In this node:
- Set the
feedUrlto the RSS or Atom feed you want to monitor. - Use a poll interval that fits your needs. The example checks every minute, but you can adjust this based on how often your feed updates and any API rate limits you want to respect.
Once this is configured, n8n quietly keeps an eye on your feed so you do not have to.
Create Session – securely connecting to BlueSky
Next, you need a safe way for n8n to talk to BlueSky on your behalf. This happens in the Create Session node.
- Create an app password in your BlueSky settings. Do not use your primary password.
- In the Create Session node, send your BlueSky username and app password to:
https://bsky.social/xrpc/com.atproto.server.createSession - The response includes an
accessJwt. This token is used in theAuthorizationheader for later requests:Authorization: Bearer <token>.
This step is what empowers the rest of the workflow to act securely and reliably on your account.
Get current datetime – keeping your posts in sync
The Get current datetime node might look simple, but it keeps your data clean and consistent.
It produces an ISO timestamp that the Create Post node uses for the createdAt field of the BlueSky post. This ensures your post metadata accurately reflects when n8n published the item.
Download image – capturing visuals from your feed
Visuals matter, and your automation can handle them for you.
The Download image node:
- Fetches the feed’s enclosure image URL.
- Uses
responseFormat=fileso that the image is treated as binary data inside n8n.
This step transforms the image from a simple URL in your RSS feed into a file that can be uploaded to BlueSky.
Upload image – sending media to BlueSky
Once the image is in n8n as binary data, the Upload image node sends it to BlueSky using the com.atproto.repo.uploadBlob endpoint.
Key details for this node:
- Use
contentType: binaryDataso n8n knows you are sending file data. - Provide the binary field name, for example
data. - Forward the original MIME type from the feed, such as
image/jpeg, using the feed’senclosure.typeso BlueSky receives the correctContent-Type.
The response includes a blob reference. This reference is later used as the thumbnail in the external embed, giving your BlueSky posts a richer visual presence.
Create Post – publishing to BlueSky automatically
Finally, the Create Post node brings everything together and publishes your content to BlueSky.
It calls com.atproto.repo.createRecord with a JSON payload similar to this:
{ "repo": "{your-did}", "collection": "app.bsky.feed.post", "record": { "text": "(post text or excerpt)", "$type": "app.bsky.feed.post", "embed": { "$type": "app.bsky.embed.external", "external": { "uri": "(link)", "title": "(feed title)", "description": "(content snippet)", "thumb": { /* blob reference from uploadBlob */ } } }, "createdAt": "(ISO timestamp)", "langs": [ "es-ES" ] }
}
You can:
- Adjust
textto be a teaser, a full excerpt, or a custom caption. - Change
langsto match your target language or audience. - Map feed fields into these values with n8n expressions, such as:
{{ $node['RSS Feed Trigger'].json['link'] }}.
At this point, a new item in your RSS feed automatically becomes a well-formatted BlueSky post, complete with a link preview and optional thumbnail image.
Critical configuration details to get right
To keep your automation reliable, pay attention to these settings:
- Authorization Header
Use the access token from the Create Session node in both the upload and create post steps:
Authorization: Bearer {{ $item("0").$node["Create Session"].json["accessJwt"] }} - Binary data handling
In the Upload image node:- Set
contentTypetobinaryData. - Specify the correct binary field name, such as
data.
- Set
- Content length limits
BlueSky may limit text length. The template often trims the RSS excerpt to around 200 characters. If your content is longer, validate and truncate as needed so posts do not fail. - MIME type for upload
Forward the originalenclosure.typefrom the feed to the upload request. This ensures that BlueSky receives the right MIME type and can handle the image correctly.
Customization ideas to grow your automation
Once the basic workflow is running, you can start shaping it to fit your unique goals. Here are some ways to expand and refine it:
- Filter by relevance
Only post items that match certain keywords, categories, or authors. This keeps your BlueSky feed focused and on-brand. - Summarize multiple items
Aggregate several feed items into a single summary post, for example a daily or weekly roundup. - Work in multiple languages
Automatically translate the post text or adjust thelangsfield to match your audience. - Simplify visuals
If your feed does not include images, remove the image upload step and post only the external embed with title, description, and link. - Post to multiple accounts
Add more Create Session nodes and branch the flow so the same RSS item can be posted to several BlueSky accounts.
Each customization is another step toward a tailored, personal automation system that reflects your style and strategy.
Troubleshooting: turning obstacles into learning
As you experiment and refine, you may encounter some common issues. Treat them as part of the learning curve that strengthens your automation skills.
Authentication errors
If you see 401 responses or similar authentication issues:
- Confirm you are using an app password, not your primary password.
- Verify that the Create Session node returns an
accessJwt. - Check that the
Authorizationheader includes:Bearer <token-from-accessJwt>.
Image upload fails
If images do not appear as expected:
- Check the file size and confirm it is within acceptable limits.
- Verify that the MIME type is supported and correctly forwarded from
enclosure.type. - Use n8n’s binary preview to confirm the Download image node is actually returning a file.
Duplicate posts
If you notice repeated posts:
- Remember that the RSS Feed Trigger node usually handles deduplication.
- If you modify items downstream, make sure you are not accidentally re-triggering on previously processed items.
- Consider saving processed GUIDs in a persistent data store or rely on n8n’s built-in item history to avoid re-posting.
Security best practices for peace of mind
As your automation grows in importance, so does the need to protect it.
- Store BlueSky credentials and sensitive values in n8n credentials or environment variables, not hardcoded in the workflow JSON.
- Rotate app passwords regularly and revoke any that might be compromised.
- Where possible, limit the permission scope of app passwords so that any single token has only the access it truly needs.
Quick setup checklist: your first win
Ready to turn this into a working automation? Use this checklist to get your first success quickly:
- Create an app password in your BlueSky settings.
- Import or recreate the n8n workflow template.
- Fill in the Create Session node with your BlueSky username and app password.
- Set your RSS feed URL in the RSS Feed Trigger node.
- Run a test with a single item and check BlueSky for the published post with link preview and image.
Once that first automated post appears, you will see how much potential there is to build on top of this foundation.
From one workflow to a more automated life
This n8n template is more than a one-off tool. It is a starting point for a broader shift in how you handle repetitive tasks. By automating RSS to BlueSky, you reclaim time, reduce friction, and create space for deeper, more meaningful work.
From here, you can:
- Tweak content mapping to match your voice and brand.
- Add filters, transforms, or schedules to shape when and how posts appear.
- Monitor n8n logs and refine the workflow as you learn what works best.
If you would like support, you can:
- Ask for help customizing the workflow for a specific feed or content format.
- Request filtering rules based on keywords, categories, or authors.
- Create variants that post only text, only images, or different styles depending on the content.
You do not need to automate everything at once. Start with this single workflow, get it running, and then iterate. Each improvement is a step toward a smoother, more intentional way of working.
Call to action: Import this template into n8n, test it with one RSS item, and see your content appear on BlueSky automatically. Then keep exploring new automation templates and tutorials to expand what you can delegate to your systems.
