↓ Skip to main content

Content Ranking Metrics SEO

Content Ranking Algorithms: Signals Beyond Views and Likes

What a content ranking algorithm does, why ranking on views and likes alone makes the popular more popular, and the quieter signals worth blending into one score.

Content Ranking Algorithms: Signals Beyond Views and Likes

A content ranking algorithm decides the order a feed, a search page or a “top posts” list shows things in. It gives every item a score built from several signals (how people engage with it, what the content itself is like, how fresh and relevant it is) and sorts by that score. Rank on views and likes alone, though, and you get a rich-get-richer loop: whatever sits at the top gets seen, so it collects more views and likes, so it stays at the top.

That’s the obvious flaw in views and upvotes: they reward whatever’s already popular. Fresh content starves at the bottom of the feed, and the platform slowly turns into a rerun channel. Ranking a feed well is one of the quietly hard problems where I work, so I’ve spent a fair bit of time thinking about which other signals are worth trusting.

Watch what people do, not what they tap
#

Explicit feedback is scarce and biased; behaviour is plentiful. Time on page and scroll depth tell you whether someone actually read the thing or bailed after the first paragraph. Revisits are even better — coming back to a piece is a stronger endorsement than any upvote. And a fast exit is a useful negative signal: the content promised something the reader didn’t get.

Signals baked into the content itself
#

Good content doesn’t always collect early likes, but it usually shows its quality in other ways. Novelty is one — does the piece cover ground the platform hasn’t seen? Structure is another; clean formatting, decent grammar and clarity correlate with quality more than we’d like to admit. An author’s track record is a fair prior too, judged on how their past work held readers rather than on raw like counts. Early comments help as well: three genuinely positive comments beat thirty reflexive upvotes, and a bit of semantic analysis can flag content that fills a gap the platform has been missing.

Borrow signals from outside
#

The wider internet tells you what’s resonating right now. Content that lines up with trending search keywords has built-in relevance, and quick publishing on a rising topic deserves a boost. What’s buzzing on Twitter or Reddit is often a preview of what your own users will want next — with a little prediction you can promote matching fresh content before the wave instead of after it. Your own search box is underrated too: if users keep searching for a topic, or a piece pulls steady traffic in from search engines, that’s relevance you didn’t have to guess at.

Blending the signals into one score
#

Here’s the idea in a few lines of Python. It’s an illustration, not a production system. Each signal is normalised to a 0 to 1 range so that one with big raw numbers can’t drown the rest, a weighted sum turns them into a single score, and a time decay gives a new post a fair shot against last month’s hit.

WEIGHTS = {"read_depth": 0.3, "revisits": 0.25, "quality": 0.25, "early_comments": 0.2}
HALF_LIFE_HOURS = 48  # a post loses half its score every two days

def normalise(values):
    lo, hi = min(values), max(values)
    return [(v - lo) / (hi - lo) if hi > lo else 0.0 for v in values]

def rank(items):
    """items: dicts holding raw signal values plus "age_hours"."""
    norm = {name: normalise([item[name] for item in items]) for name in WEIGHTS}
    scores = []
    for i, item in enumerate(items):
        base = sum(weight * norm[name][i] for name, weight in WEIGHTS.items())
        scores.append(base * 0.5 ** (item["age_hours"] / HALF_LIFE_HOURS))
    order = sorted(range(len(items)), key=lambda i: scores[i], reverse=True)
    return [items[i] for i in order]

The weights are guesses until the tests below say otherwise. Views and likes can still go in; they just become one input among several instead of the whole score. The half-life decides how quickly old posts sink, which is a topic of its own: I went into it in how feed ranking algorithms decide when to bury old posts. Real systems usually learn the weights with a model rather than picking them by hand, but the shape is the same: many signals in, one number out, sort.

Then test it honestly
#

However clever the signals, A/B test them — show new content to a slice of users and compare its engagement against the incumbents. And watch how things spread: shares, mentions and embeds, on and off the platform, say more about value than a view counter ever will.

No single metric survives contact with reality. The rankings that actually work blend behaviour, intrinsic quality, timeliness and honest experiments, and no one signal gets the final word.