Torii is a lightweight bridge that automatically cross-posts your public Mastodon posts to Bluesky.
It preserves images, videos, alt text, and external link previews while preventing duplicate posts.
- 🚀 Cross-post public Mastodon posts to Bluesky
- 🖼️ Support up to 4 images
- 🎥 Video support
- 🔗 Clickable URLs in post text
- 🔗 External URL card support (Open Graph)
- ♿ Preserve image and video alt text
- 🔄 Automatic duplicate prevention
- ⚙️ Automatic execution with macOS
launchd
- Python 3.13 or later
- A Mastodon account
- A Bluesky account with an App Password
Clone the repository.
git clone https://github.com/daikaku/Torii.git
cd ToriiCreate a virtual environment.
python -m venv .venv
source .venv/bin/activateInstall dependencies.
pip install -r requirements.txtCopy the example environment file.
cp .env.example .envEdit .env.
MASTODON_TOKEN=...
BLUESKY_APP_PASSWORD=...
Edit config.yaml.
mastodon:
instance: https://your.instance
bluesky:
handle: yourname.bsky.social
options:
include_replies: false
include_boosts: falseRun once.
python main.pyTorii remembers previously cross-posted statuses using state.json, so duplicate posts are automatically skipped.
Torii can be executed automatically using launchd.
A sample LaunchAgent configuration is included in the documentation.
main.py Entry point
mastodon.py Mastodon API
bluesky.py Bluesky API
media.py Image / video handling
links.py URL card handling
config.py Configuration
state.py Duplicate prevention
- Image + URL card support
- Logging improvements
- Misskey support
- Thread support
MIT License