···99- **Direct replies** (+10 points): When you reply directly to someone's post
1010- **Thread replies** (+3 points): When you reply in a thread started by someone you follow
1111- **Freshness bonus** (up to +50 points): Recent follows get bonus points that decay over 25 days
1212+- **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.
12131313-Accounts with a score of 0 are ones you follow but haven't interacted with recently.
1414+Accounts at the bottom of the list are ones you followed long ago but have never interacted with.
14151516### Note
1617···2526## Usage
26272728```sh
2828-bun index.ts <handle>
2929+bun index.ts <handle> [target]
2930```
30313132For example:
32333334```sh
3434-bun index.ts user.bsky.social
3535+# Analyze all your follows
3636+bun index.ts user.bsky.social > results.txt
3737+3838+# Check score for a specific account
3939+bun index.ts user.bsky.social someone.bsky.social
3540```
36413737-The tool will output:
4242+The tool outputs:
4343+- **stdout**: Space-separated scores (pipe to a file or other tools)
4444+- **stderr**: Progress logs as it fetches data
38453939-- Progress logs as it fetches data from the Bluesky API
4040-- A summary of your top 5 highest-scored follows
4141-- A count of accounts with zero engagement
4242-- A file named `<handle>_engagement.txt` with all scores sorted from highest to lowest
4646+### Caching
4747+4848+On the first run, data is saved to `cache.json` for faster subsequent runs. Delete the file to refresh the data.
43494450## Output format
45514646-The output file contains one line per followed account:
5252+The output is space-separated with a header row:
47534854```
4949-handle.bsky.social 63 (engagement: 30, freshness: 33)
5050-another.user 10 (engagement: 10, freshness: 0)
5151-old.follow 0 (engagement: 0, freshness: 0)
5555+handle score engagement freshness recency
5656+handle.bsky.social 63 30 33 0
5757+another.user -20 10 0 -30
5858+old.follow -365 0 0 -365
5259```
6060+6161+- **score**: Total score (engagement + freshness + recency)
6262+- **engagement**: Points from direct replies and thread participation
6363+- **freshness**: Bonus points for recent follows (decays over 25 days)
6464+- **recency**: Penalty for stale or missing engagement (negative values)
53655466## Requirements
5567