Automatically posts achievement notifications to Bluesky and/or Discord when users earn achievements in your feeds.
-
Clone and setup:
git clone https://github.com/femavibes/feedmaster-bluesky-bot cd feedmaster-bluesky-bot -
Start the bot (uses pre-built images):
docker compose up -d
Or for development (builds locally):
docker compose -f docker-compose.dev.yml up -d
-
Configure via web interface:
- Local deployment: Open http://localhost:8080
- VPS deployment: Open http://YOUR_VPS_IP:8080 (e.g., http://123.45.67.89:8080)
- Default login: Username:
admin, Password:changeme - Fill in your Feedmaster API URL and Feed IDs
- Add your Bluesky credentials
- Adjust bot settings as needed
- Click "Save Configuration" then "Restart Bot"
- Copy
.env.exampleto.env - Change
CONFIG_USERNAMEandCONFIG_PASSWORD(required for security) - Start containers:
docker compose up -d - Access configuration page:
- Local: http://localhost:8080
- VPS: http://YOUR_VPS_IP:8080
- Fill out all bot settings via web form
- Save & restart bot
- Copy
.env.exampleto.env - Fill out all settings in the
.envfile - Start containers:
docker compose up -d - Bot runs immediately with your settings
- Change default password: Set CONFIG_USERNAME and CONFIG_PASSWORD in .env
- SSH Tunnel:
ssh -L 8080:localhost:8080 user@your-vpsthen use http://localhost:8080 - Firewall: Restrict port 8080 to your IP only
FEED_IDS: Which feeds to monitor for achievements- Either Bluesky OR Discord (or both):
BLUESKY_USERNAME: Bot account username (e.g.,musicfeed.bsky.social) ORBLUESKY_DID: Account DID as fallbackBLUESKY_APP_PASSWORD: Generate this in Bluesky Settings → App PasswordsDISCORD_WEBHOOK_URL: Discord webhook URL for posting achievements
MIN_RARITY_TIER: Only post achievements of this rarity or higher (default:Diamond)POLL_INTERVAL_MINUTES: How often to check for new achievements (default:5)MAX_POSTS_PER_HOUR: Rate limit to avoid spam (default:10)MESSAGE_TEMPLATE: Custom message format (see below)
{username}: User's handle (e.g., alice.bsky.social){display_name}: User's display name (e.g., Alice Smith){achievement}: Achievement name{rarity}: Rarity tier (Diamond, Legendary, etc.){percentage}: Rarity percentage
- Go to your feed on Feedmaster
- Look at the URL:
https://feedmaster.fema.monster/feed/3654 - The number (
3654) is your feed ID
- Go to Bluesky Settings → Privacy and Security → App Passwords
- Click "Add App Password"
- Name it "Feedmaster Bot"
- Copy the generated password to your
.envfile
Bluesky posts:
🎉 Congratulations Alice Smith on earning "Power Poster II"!
Only 0.06% of users have achieved this Mythic rarity!
[Achievement card with user avatar and rarity badge]
Discord posts:
- Rich embed with achievement title
- User avatar thumbnail
- Color-coded by rarity (Mythic = magenta, Diamond = light blue, etc.)
- Direct link to achievement page
- User handle and rarity percentage in fields
Check bot logs:
docker compose logs -f bluesky-bot- "Authentication failed": Check your username and app password
- "No achievements found": Verify your feed IDs are correct
- "Rate limited": Bot automatically handles this, just wait
For issues or questions, visit: https://github.com/femavibes/feedmaster-bluesky-bot
- Go to your Discord server settings
- Navigate to Integrations → Webhooks
- Click "New Webhook" or "Create Webhook"
- Choose the channel where achievements should be posted
- Copy the webhook URL to your
.envfile
The bot supports three modes:
- Bluesky only: Set
BLUESKY_USERNAMEandBLUESKY_APP_PASSWORD - Discord only: Set
DISCORD_WEBHOOK_URL - Both platforms: Set all three variables above
For Discord-only deployment:
- Get Discord webhook URL (see above)
- Configure via web interface:
docker compose up -d # Open http://localhost:8080 # Leave Bluesky fields empty # Fill in Discord Webhook URL # Configure other settings
- Or configure via .env file:
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL FEED_IDS=3654,5555 MIN_RARITY_TIER=Diamond # Leave Bluesky fields empty
Discord Features:
- Rich embeds with achievement cards
- Color-coded by rarity tier
- User avatar thumbnails
- Direct links to achievement pages
- Same rate limiting and filtering as Bluesky