Prism #
Prism uses the Leiden algorithm to discover community clusters within your Bluesky follows, then creates curation lists for each.
Communities are discovered by weighing follows (one-way and mutual), plus the last 90 days of replies, quotes, and reposts. It's a good way to keep track of subsets of the accounts you follow when algorithmic feeds drown them out.
Get started #
You need Python 3.11 or newer and uv. On NixOS, run nix develop first.
uv sync --locked
uv run prism run --actor YOUR_HANDLE --dry-run
Open the report path that Prism prints. Add --lists 12 if you want to aim for a different number of lists.
Publish #
Do a dry run first, then set BSKY_APP_PASSWORD in your environment or .env and run:
uv run prism run --actor YOUR_HANDLE
If a run stops, pick it back up with uv run prism resume. Saved pages and publication progress are reused.
Recluster saved data #
uv run prism recluster SNAPSHOT --lists 12
uv run prism recluster reports/SNAPSHOT/snapshot.json.gz --settings experiment.json
This stays offline and writes a new report.
Each online run writes a readable result.json with the 50 strongest connections in each group
and a compressed snapshot.json.gz with the full reclustering input. Completed SQLite run records
keep collection data but discard the copied clustering result and publication plan.
Check the code #
uv run ruff check src
uv run ruff format --check src
uv run ty check src
uv build
Run uv run prism --help for the rest of the options.