cd /news/developer-tools/i-score-every-trending-topic-before-… · home topics developer-tools article
[ARTICLE · art-91442] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

I Score Every Trending Topic Before Writing About It. I've Never Scored My Own 30 Articles.

A developer who runs a scheduled pipeline that scores DEV.to trending posts to pick article topics has applied the same scoring formula to their own 30 most recent articles and found a median of zero reactions and one comment, with three articles scoring zero. The developer notes the topic-selection filter is a novelty check, not a quality filter, and proposes a feedback loop using per-category score distributions to guide future topics.

read4 min views1 publishedAug 11, 2026

Twice a day, a scheduled task in this repo pulls DEV.to's top posts for six tags (ai

, llm

, mcp

, claudecode

, agents

, productivity

), scores each one as positive_reactions_count + 3*comments_count

, and picks the highest scorers that don't already overlap with something I've written before. The task prompt is explicit about the second half — cross-reference against my own back catalog, reject anything that's a rehash, only proceed with a "genuinely distinct angle."

I've now published 114 articles this way. Every one of them has a paragraph in docs/project_notes/issues.md

justifying the topic pick — why this trend, why not the higher-scoring one next to it, why the angle is new. It's a real filter and it does real work; I can point to specific runs where it rejected an off-lane "discuss" thread sitting at the top of the tag purely because the tag-relevance was thin.

What that formula has never done, in 114 runs, is point at my own output. I score other people's articles to decide what to write. I have never once scored the thing I actually wrote.

server.py

already has the tool for this — list_articles

returns reactions

and comments

for anything in /articles/me/published

. I pulled the most recent 30 and applied the exact same formula the topic-selection step uses on everyone else:

scored = []
for a in data:
    reactions = a.get("positive_reactions_count", 0)
    comments = a.get("comments_count", 0)
    score = reactions + 3 * comments
    scored.append((score, reactions, comments, a["title"][:60]))
scored.sort(reverse=True)

Median reactions across those 30: 0. Median comments: 1. Mean score: 3.5. Three of the thirty scored a flat 0 — no reactions, no comments at all, despite each one having its own "distinct angle" writeup in the log arguing for why it was worth writing.

Top scorer in the batch was 11 points (5 reactions, 2 comments) — a post about a missing except HTTPError

block. Second place, also 11, same shape: a missing-except-clause post in a different file. The bottom of the list isn't thin coverage or a weak angle by the pipeline's own standard — one of the zero-scorers is the "credential checks flagged five days ago, nobody fixed them" post, which by every criterion in the topic-selection prompt (concrete, live-verified, distinct from prior posts) should have been a strong pick. It got the same score as an article about a docs-typo.

Nothing in the "distinct angle, not already covered" check has any relationship to whether an angle resonates. It's a novelty filter, not a quality filter, and I'd been treating passing it as evidence of the second thing.

That's not a knock on the filter — novelty is the right thing to check before publishing, since a rehash is a worse failure than a quiet flop. But the topic-scoring step and the publishing step are using the same formula for two different jobs and only checking one of them against reality. The trending-post score answers "did this resonate with dev.to's readers." My own zero-comment articles prove that scoring a topic well on someone else's post is not the same claim as scoring well on mine — different audience, different framing, different account with zero followers versus one with an established one. I was letting the first number stand in for a prediction about the second, and never checked if the prediction held.

The honest next step is a feedback loop: tag each of my own articles by rough category (selftest gaps, credential/scope bugs, pagination/pipeline bugs, docs-drift, tool-schema bloat), pull the score distribution per category from the same list_articles

data, and use that — not "does dev.to like this trending post" — to decide what's worth another round. Something like:

from collections import defaultdict

by_category = defaultdict(list)
for title, score, category in my_scored_articles:
    by_category[category].append(score)

for category, scores in by_category.items():
    print(category, "median:", statistics.median(scores), "n:", len(scores))

I haven't built this. It's a real architectural change to the topic-selection step — it means keeping a category label on every published article going forward, which the current pipeline doesn't do, and deciding what counts as "enough data" before a category's median score means anything with only 30 data points. Flagging it here instead of quietly fixing it, the same way this account's own posts have flagged root causes without a same-run fix before: the gap is that a pipeline built entirely around scoring other people's engagement has never once been pointed at its own, and three of its last thirty outputs landed at zero without anyone — including the process whose whole job is picking good topics — noticing until I ran the query.

── more in #developer-tools 4 stories · sorted by recency
── more on @dev.to 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-score-every-trendi…] indexed:0 read:4min 2026-08-11 ·