{"id":21904626,"url":"https://github.com/blooym/skywrite","last_synced_at":"2025-04-15T22:59:04.719Z","repository":{"id":261731880,"uuid":"885115887","full_name":"Blooym/skywrite","owner":"Blooym","description":"Automatic submission of RSS feed posts to Bluesky.","archived":false,"fork":false,"pushed_at":"2025-04-10T16:04:22.000Z","size":179,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T22:58:58.880Z","etag":null,"topics":["bluesky","bsky","rss"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Blooym.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["Blooym"],"ko_fi":"Blooym"}},"created_at":"2024-11-08T01:34:39.000Z","updated_at":"2025-04-10T16:04:26.000Z","dependencies_parsed_at":"2025-03-17T15:32:07.247Z","dependency_job_id":"a740789e-7703-46df-b237-5397a16966b1","html_url":"https://github.com/Blooym/skywrite","commit_stats":null,"previous_names":["blooym/bsky-rss-bot","blooym/skywrite"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blooym%2Fskywrite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blooym%2Fskywrite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blooym%2Fskywrite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Blooym%2Fskywrite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Blooym","download_url":"https://codeload.github.com/Blooym/skywrite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249167440,"owners_count":21223505,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluesky","bsky","rss"],"created_at":"2024-11-28T16:17:49.947Z","updated_at":"2025-04-15T22:59:04.711Z","avatar_url":"https://github.com/Blooym.png","language":"Rust","funding_links":["https://github.com/sponsors/Blooym","https://ko-fi.com/Blooym"],"categories":[],"sub_categories":[],"readme":"# Skywrite\n\n\u003e [!IMPORTANT]\n\u003e This project will break release-to-release until stablised! There is no\n\u003e promise of stability or compatibility between versions until v1. You have been\n\u003e warned.\n\nAutomatic submission RSS feed posts to Bluesky.\n\n## Features\n\n- Post multiple feeds to a single account.\n- Automatically backdated posts fetched X hours from before bot startup.\n- Duplicate post detection via URL stored in persistent database.\n- Link embedding with image support.\n\n## Setup\n\n### Docker\n\n1. Copy the following to a local file named `docker-compose.yml` or add the\n   service to your existing stack and fill in the environment variables.\n   Information about configuration options can be found in the\n   [configuration](#configuration) section.\n\n```yml\nservices:\n  skywrite:\n    image: ghcr.io/blooym/skywrite\n    restart: unless-stopped\n    environment:\n      - SKYWRITE_APP_SERVICE=\n      - SKYWRITE_APP_IDENTIFIER=\n      - SKYWRITE_APP_PASSWORD=\n      - SKYWRITE_RSS_FEED_URLS=\n      - SKYWRITE_RERUN_INTERVAL_SECONDS=\n      - SKYWRITE_RSS_FEED_BACKDATE_HOURS=\n      - SKYWRITE_POST_LANGUAGES=\n      - SKYWRITE_DISABLE_POST_COMMENTS=\n    volumes:\n      - skywrite-data:/opt/skywrite/data\n\nvolumes:\n  skywrite-data:\n```\n\n2. Start the stack\n\n```\ndocker compose up -d\n```\n\n### Manual\n\n1. Ensure you have [Rust](https://www.rust-lang.org/tools/install) installed and\n   in your `$PATH`.\n2. Install the project binary\n\n```\ncargo install --git https://github.com/Blooym/skywrite.git\n```\n\n3. Create a `.env` file and fill in the values as necessary using the information found in the\n   [configuration](#configuration) section.\n\n4. Run the project from the same directory as `.env`\n\n```\nskywrite start\n```\n\n## Configuration\n\nConfiguration is handled entirely through environment variables or command-line\nflags. The available configuration options for the 'start' command are:\n\n- `SKYWRITE_APP_SERVICE`: The full URL to the service to communicate with. Defaults to\n  `https://bsky.social`\n- `SKYWRITE_APP_IDENTIFIER`: The username or email of the application's account.\n- `SKYWRITE_APP_PASSWORD`: The app password to use for authentication.\n- `SKYWRITE_DATA_PATH`: The base directory to store things like configuration files and\n  other persistent data.\n- `DATABASE_URL`: The connection string to use when connecting to the sqlite\n  database. Supports some connection parameters.\n- `SKYWRITE_RERUN_INTERVAL_SECONDS`: The interval of time in seconds between checking for\n  new posts.\n- `SKYWRITE_RSS_FEED_BACKDATE_HOURS`: The number of hours in the past the bot should\n  check for posts that haven't been posted at startup. Useful for backdating an\n  account or when an outage occurs.\n- `SKYWRITE_RSS_FEED_URLS`: A comma-seperated list of URLs pointing directly to RSS\n  feeds.\n- `SKYWRITE_DISABLE_POST_COMMENTS`: Whether Bluesky posts should have comments disabled.\n- `SKYWRITE_POST_LANGUAGES`: A comma-seperated list of languages in **ISO-639-1** to\n  classify posts under. This should corrolate to the language of the posts the\n  feed is linking to.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblooym%2Fskywrite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblooym%2Fskywrite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblooym%2Fskywrite/lists"}