follow-cleaner#
A CLI tool that analyzes your Bluesky follow list and scores accounts based on how much you interact with them. Useful for identifying accounts you might want to unfollow.
How it works#
The tool fetches your follows and posts, then calculates an engagement score for each account you follow based on:
- Direct replies (+10 points): When you reply directly to someone's post
- Thread replies (+3 points): When you reply in a thread started by someone you follow
- Freshness bonus (up to +50 points): Recent follows get bonus points that decay over 25 days
- Recency penalty (-1 point per day): Accounts you haven't engaged with recently lose points. Accounts with zero engagement are penalized based on how long ago you followed them.
Accounts at the bottom of the list are ones you followed long ago but have never interacted with.
Note#
It does NOT weigh likes. If you only like posts, you might see a zero.
Installation#
bun install
Usage#
bun index.ts <handle> [target]
For example:
# Analyze all your follows
bun index.ts user.bsky.social > results.txt
# Check score for a specific account
bun index.ts user.bsky.social someone.bsky.social
The tool outputs:
- stdout: Space-separated scores (pipe to a file or other tools)
- stderr: Progress logs as it fetches data
Caching#
On the first run, data is saved to cache.json for faster subsequent runs. Delete the file to refresh the data.
Output format#
The output is space-separated with a header row:
handle score engagement freshness recency
handle.bsky.social 63 30 33 0
another.user -20 10 0 -30
old.follow -365 0 0 -365
- score: Total score (engagement + freshness + recency)
- engagement: Points from direct replies and thread participation
- freshness: Bonus points for recent follows (decays over 25 days)
- recency: Penalty for stale or missing engagement (negative values)
Requirements#
- Bun runtime
- No authentication required (uses public Bluesky API)
Code and most of README slopped out, sorry if that hurts your feelings. Not burning energy on tiny little tools like this that are not logically complex but are a time sink.