I wanted my blog to show “top” posts1 first rather than recent, but ranking by hits finds boring reference articles, and ranking by LessWrong or Hacker News karma ignores anything that wasn’t shared, and is dependent on the whims of frontpage algorithms.
I figured this was a problem for AI, and was going to have Claude rank the posts with an ELO-style ranking, but it said that would require several thousand API calls and convinced me to let it rank blocks at a time instead.
Results
With some relatively basic ranking instructions (but without access to any external score signals), Claude (Opus 4.81) managed to independently rank my posts so #1 and #4 are my top two posts on LessWrong, #2 is my top post on Hacker News, and #3 is a post that I think did badly on LessWrong for technical reasons. It also correctly ranked my #1 post by hits near the very bottom, since it’s only interesting if you’re looking for the solution to a specific problem. It’s interesting that Claude hates my lifehack posts even when encouraged to rank them higher, but I think its ranking is probably right.
For low-traffic blogs that want to rank by interestingness rather than Google Search traffic, I think asking an LLM to do it works surprisingly well.
Details
The ranking prompt
You are ranking blog posts by how much this blog’s audience would ENJOY landing on them.
AUDIENCE: readers of LessWrong and curious programmers — people who like sharp thinking and are interested in AI, software, clever practical ideas, and well-argued essays on almost any topic.
RANK BY: “Would someone in that audience be glad they read this, and want to share it?” Reward posts that are rewarding to read even if you weren’t looking for them:
- A surprising idea, insight, or argument that changes how you think — about AI, software, or anything else.
- Essays with a clear point of view and genuinely good reasoning.
- Clever, broadly useful practical ideas and life hacks — the kind of thing you’d send to a friend.
- The author’s own projects and things they built and shipped, when they’d interest this audience.
RANK LOW: narrow reference or troubleshooting material that’s only useful to someone who already went looking for that exact problem — one-off config fixes, cheatsheets, setup notes. Useful, but not enjoyable to stumble onto.
IGNORE ENTIRELY: recency, popularity, SEO, and raw length. Judge the content on its own merits. Do NOT try to guess view counts or upvotes.
Produce a STRICT total order (no ties).
Claude’s description of the algorithm:
How it works:
- Blind judging. An LLM (Claude Opus) is shown the full text of a handful of posts at a time and asked to order them by how much my audience — LessWrong readers and programmers — would enjoy landing on them. It never sees any popularity data, so external signals stay usable as an independent check.
- Listwise batches, not all-pairs. Comparing all ~3,700 post-pairs directly would be wasteful. Each round instead randomly partitions the 87 posts into batches of ~12 and asks for a full ordering of each batch (one batch-ordering implies 66 pairwise results). Five rounds is ~40 LLM calls and ~55 comparisons per post.
- Bradley-Terry aggregation. The pairwise results are pooled into one global score per post via a Bradley-Terry model (the statistical model Elo approximates), with a mild prior so a post that wins or loses every comparison still gets a finite score.
I originally tried ranking with Sonnet 5, but it liked long technical articles and generally ranked the more accessible posts too low. ↩
https://www.brendanlong.com/