likeclusters · who likes which topic

Paste a Bluesky handle. likeclusters reads that account's entire post history, pulls each post's public likers, works out a rough topic for the post (keywords + hashtags, no AI), and groups the likers by which topic they actually show up for — the moot who only ever likes your #catposting, never anything else. Click any topic tag in the results to mark it annoying — saved on this device, so it flags the moots who only show up for the stuff that grinds your gears.

reads Bluesky's public AppView, all in your browser — no login.

every liker

# who posts liked top topic focus
how this works
There's no anonymous "who likes this account" endpoint, so likeclusters samples every one of the target's original posts — paging getAuthorFeed until it runs out, not just a recent slice — and reads each one's public getLikes, paging that too until every liker's read, not a capped slice. Accounts with a big archive (or a few very popular posts) will take a while and make a lot of requests; that's expected. Each post's topic comes from its own text: strip URLs/mentions, drop a stoplist of filler words, keep hashtags as a stronger signal (3× weight), then score every remaining word by tf-idf across the whole sampled set — so a word that shows up in nearly every post (a recurring signoff, a common turn of phrase) scores near zero, and words that actually distinguish one post from another rise to the top. Each post keeps its top 3 scored terms as its topic tags. For each liker, their liked posts' topic tags are summed into a per-tag weight; their top topic is the heaviest one, and focus is that weight's share of their total — 100% means every single liked post scored the same topic tag highest, near 0% means their likes are spread across unrelated topics. A liker needs at least 2 sampled-post likes before a topic verdict is shown at all — one like isn't a pattern. Click any topic tag anywhere on the page to mark it annoying — that's a purely local preference, stored in this browser's localStorage, never sent anywhere. Once a tag's marked, any moot whose likes are mostly concentrated on it shows up in the "only shows up for the stuff that annoys you" section up top. This is keyword statistics, not language understanding — a post about two different things, or one that leans on words the stoplist doesn't catch, can land a slightly odd tag. No account data is stored; everything happens in your browser against Bluesky's public AppView, no login required.