Layla Manley

Bluesky with RSS Readers

2025-03-04

I've been looking at utilizing RSS feeds and RSS readers more to get a bit more control over my overall media diet. One of the platforms that I've found myself pulled towards regularly these days has been Bluesky, but instead of I wanted to aggregate it alongside much of the other content I read. Lucky for me, Bluesky supports RSS feeds for each person's profile. The only problem is there is not RSS feeds for the Bluesky feeds themselves.

I found that I could create an OPML file that could be hosted on a web server to dynamically update a category with a list of feeds.

Following that path, I went ahead and created a simple program in Golang that would utilize the Bluesky API. First it generates a session token from given login credentials then it simply gets a list of everyone the active user is following by using the https://bsky.social/xrpc/app.bsky.graph.getFollows endpoint. Then it just adds their profile's RSS feed to an OPML file.

The output of the program results in something looking like this:

<opml version="2.0">
    <head>
        <title>Bluesky Follows for @layla.gg</title>
    </head>
    <body>
        <outline text="Ludum Dare" type="rss" title="ludumdare.com" xmlUrl="https://bsky.app/profile/did:plc:bog7urgkzmru2akffvehygns/rss" htmlUrl="https://bsky.app/profile/did:plc:bog7urgkzmru2akffvehygns"/>
        <outline text="Brennan Lee Mulligan" type="rss" title="brennanleemulligan.bsky.social" xmlUrl="https://bsky.app/profile/did:plc:4ca5dmcguk3q2fmbp5lcx65z/rss" htmlUrl="https://bsky.app/profile/did:plc:4ca5dmcguk3q2fmbp5lcx65z"/>
    </body>
</opml>

You can find the code and additional information here: https://github.com/yeslayla/bluesky-opml

To keep the list current of feeds up-to-date, it is as simple as configuring a recurring tasks (like a cron) to execute a script to regenerate the OPML file on a regular interval.

Plugging the result into FreshRSS resulted in this final product:

Fresh RSS Screenshot

Limitations

Due to limitations of the RSS feed provided by Bluesky themselves, most posts don't contain any rich media elements. This means no images, videos, or clickable links. Perhaps this could be solved in the future with better support or perhaps a proxy service to format the content, but for now we just get the text.