Automatic submission of RSS feed posts to Bluesky.
- Rust 97.2%
- Dockerfile 2.8%
| .github/workflows | docs: bump version and docs | |
| .sqlx | feat: add export-posts command | |
| migrations | refactor: Rust Rewrite ( #5 ) | |
| src | refactor: do some small cleanup | |
| .gitignore | refactor: Rust Rewrite ( #5 ) | |
| build.rs | refactor: prefix env vars | |
| Cargo.lock | refactor: do some small cleanup | |
| Cargo.toml | chore: bump deps | |
| Dockerfile | build: fix builds | |
| LICENSE | docs: license and readme basics | |
| README.md | docs: cleanup readme | |
Skywrite
Important
This project will break release-to-release until stablised! There is no promise of stability or compatibility between versions until v1. You have been warned.
Automatic submission of RSS feed posts to Bluesky.
Features
- Post multiple feeds to a single account.
- Automatically backdated posts fetched X hours from before bot startup.
- Duplicate post detection via URL stored in persistent database.
- Link embedding with image support.
Setup
Docker
- Copy the following to a local file named
docker-compose.ymlor add the service to your existing stack and fill in the environment variables. Information about configuration options can be found in the configuration section.
services:skywrite:image:ghcr.io/blooym/skywriterestart:unless-stoppedenvironment:- SKYWRITE_APP_SERVICE=- SKYWRITE_APP_IDENTIFIER=- SKYWRITE_APP_PASSWORD=- SKYWRITE_RSS_FEED_URLS=- SKYWRITE_RERUN_INTERVAL_SECONDS=- SKYWRITE_RSS_FEED_BACKDATE_HOURS=- SKYWRITE_POST_LANGUAGES=- SKYWRITE_DISABLE_POST_COMMENTS=volumes:- skywrite-data:/opt/skywrite/datavolumes:skywrite-data:- Start the stack
docker compose up -d
Manual
- Ensure you have Rust installed and
in your
$PATH. - Install the project binary
cargo install --git https://github.com/Blooym/skywrite.git
-
Create a
.envfile and fill in the values as necessary using the information found in the configuration section. -
Run the project from the same directory as
.env
skywrite start
Configuration
Configuration is handled entirely through environment variables or command-line flags. The available configuration options for the 'start' command are:
| Environment Variable | Description |
|---|---|
SKYWRITE_APP_SERVICE |
The full URL to the service to communicate with. Defaults to https://bsky.social |
SKYWRITE_APP_IDENTIFIER |
The username or email of the application's account. |
SKYWRITE_APP_PASSWORD |
The app password to use for authentication. |
SKYWRITE_DATA_PATH |
The base directory to store things like configuration files and other persistent data. |
DATABASE_URL |
The connection string to use when connecting to the sqlite database. Supports some connection parameters. |
SKYWRITE_RERUN_INTERVAL_SECONDS |
The interval of time in seconds between checking for new posts. |
SKYWRITE_RSS_FEED_BACKDATE_HOURS |
The number of hours in the past the bot should check for posts that haven't been posted at startup. Useful for backdating an account or when an outage occurs. |
SKYWRITE_RSS_FEED_URLS |
A comma-separated list of URLs pointing directly to RSS feeds. |
SKYWRITE_DISABLE_POST_COMMENTS |
Whether Bluesky posts should have comments disabled. |
SKYWRITE_POST_LANGUAGES |
A comma-separated list of languages in ISO-639-1 to classify posts under. This should correlate to the language of the posts the feed is linking to. |