Toot toooooooot (Bluesky-Mastodon cross-poster)
A simple Bluesky-to-Mastodon cross-posting service
Tootify allows you to do a selective one-way sync of Bluesky posts to your Mastodon account.
The way it works lets you easily pick which skeets you want to turn into toots: it scans your recent posts and checks which of them you have liked yourself, and only those posts are reposted. The self-like is automatically removed afterwards.
Currently handles:
At the moment:
git clone https://github.com/mackuba/tootify.git
cd tootify
bundle install
First, log in to the two accounts:
./tootify login johnmastodon@example.com
./tootify login @alf.bsky.team
Press like on the post(s) on Bluesky that you want to be synced to Mastodon.
Then, you can either run the sync once:
./tootify check
Or run it continuously in a loop:
./tootify watch
By default it checks for new skeets every 60 seconds – use the interval
parameter to customize the interval:
./tootify watch --interval=15
Tootify stores configs and data in the config
folder:
bluesky.yml
– created when you log in, stores Bluesky user ID/password and access tokensmastodon.yml
– created when you log in, stores Mastodon user ID/password and access tokenshistory.csv
– stores a mapping between Bluesky and Mastodon post IDs; used for reply references in threadstootify.yml
- optional additional configurationThe config in tootify.yml
currently supports one option:
extract_link_from_quotes: true
– if enabled, posts which are quotes of someone else's post which includes a link will be "collapsed" into a normal post that just includes that link directly without the quote (so the link card on Mastodon will show info about the link and not the quoted bsky.app post)Copyright © 2025 Kuba Suder (@mackuba.eu).
The code is available under the terms of the zlib license (permissive, similar to MIT).
A simple Ruby server using Sinatra that serves Bluesky custom feeds
A library for handling DID identifiers used in Bluesky AT Protocol
A minimal Ruby client of Bluesky/ATProto API
A Ruby gem for streaming data from the Bluesky/ATProto firehose
Template of a custom feed generator service for the Bluesky network in Ruby
An omniauth strategy for atproto
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky