Toot toooooooot (Bluesky-Mastodon cross-poster)
Ruby 100.0%
36 1 0

Clone this repository

https://tangled.org/mackuba.eu/tootify
git@tangled.org:mackuba.eu/tootify

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Tootify 🦋→🐘#

A simple Bluesky-to-Mastodon cross-posting service

What does it do#

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:

  • post with link embeds
  • quotes – posted as "RE: bsky.app/..."
  • images (with alt text)
  • videos
  • threads of multiple chained posts from you

Installation#

At the moment:

git clone https://github.com/mackuba/tootify.git
cd tootify
bundle install

Usage#

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

Configs#

Tootify stores configs and data in the config folder:

  • bluesky.yml – created when you log in, stores Bluesky user ID/password and access tokens
  • mastodon.yml – created when you log in, stores Mastodon user ID/password and access tokens
  • history.csv – stores a mapping between Bluesky and Mastodon post IDs; used for reply references in threads
  • tootify.yml - optional additional configuration

The 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)

Credits#

Copyright © 2025 Kuba Suder (@mackuba.eu).

The code is available under the terms of the zlib license (permissive, similar to MIT).