Pronoun Picker is a Bluesky Jetstream consumer that automatically assigns pronoun labels to users based on their interactions (likes) with specific "anchor" posts. It allows users to self-identify by liking a post corresponding to their pronouns.
- Jetstream Integration: Efficiently consumes events from the Bluesky network.
- Automated Labeling: Assigns labels via Ozone when a user likes a designated post.
- Reset Functionality: Allows users to clear their pronoun labels by liking a specific reset post.
- Docker Support: Easy deployment using Docker and Docker Compose.
- Node.js v20 or higher
- npm or pnpm
- A Bluesky account with labeling permissions (Ozone)
- Access to a Bluesky Jetstream endpoint
-
Clone the repository:
git clone https://github.com/TheRipperoni/PronounPicker.git cd pronoun-picker -
Install dependencies:
npm install # or pnpm install -
Configure environment variables: Copy the example environment file and fill in your details:
cp .env.example .env
See Environment Variables for details.
-
Build the project:
npm run build
To run the project using tsx (direct TypeScript execution):
npm startAfter building the project:
node dist/index.jsYou can also run the application using Docker:
docker-compose up -dnpm start: Runs the application usingtsx.npm run build: Compiles TypeScript to JavaScript in thedistfolder.npm run lint: Runs ESLint for code quality.npm run format: Formats code using Prettier.
The following variables should be defined in your .env file:
| Variable | Description | Example |
|---|---|---|
JETSTREAM_SUBSCRIPTION_ENDPOINT |
Jetstream WebSocket endpoint | wss://jetstream1.us-west.bsky.network/subscribe |
JETSTREAM_SUBSCRIPTION_RECONNECT_DELAY |
Reconnect delay in ms | 3000 |
AGENT_SERVICE |
Bluesky API service URL | https://bsky.social |
AGENT_IDENTIFIER |
Your bot's handle or DID | bot.bsky.social |
AGENT_PASSWORD |
Your bot's app password | your-app-password |
OZONE_SERVICE |
Ozone service URL | https://ozone.bsky.social |
DID |
The DID of the labeler | did:plc:... |
LOG_LEVEL |
Logging verbosity | info |
Note: Check src/subscription.ts for the mapping of post URIs to pronoun labels.
This project is licensed under the MIT License.