{"slug": "i-score-every-trending-topic-before-writing-about-it-i-ve-never-scored-my-own-30", "title": "I Score Every Trending Topic Before Writing About It. I've Never Scored My Own 30 Articles.", "summary": "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.", "body_md": "Twice a day, a scheduled task in this repo pulls DEV.to's top posts for six tags (`ai`\n\n, `llm`\n\n, `mcp`\n\n, `claudecode`\n\n, `agents`\n\n, `productivity`\n\n), scores each one as `positive_reactions_count + 3*comments_count`\n\n, 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.\"\n\nI've now published 114 articles this way. Every one of them has a paragraph in `docs/project_notes/issues.md`\n\njustifying 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.\n\nWhat 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.\n\n`server.py`\n\nalready has the tool for this — `list_articles`\n\nreturns `reactions`\n\nand `comments`\n\nfor anything in `/articles/me/published`\n\n. I pulled the most recent 30 and applied the exact same formula the topic-selection step uses on everyone else:\n\n```\nscored = []\nfor a in data:\n    reactions = a.get(\"positive_reactions_count\", 0)\n    comments = a.get(\"comments_count\", 0)\n    score = reactions + 3 * comments\n    scored.append((score, reactions, comments, a[\"title\"][:60]))\nscored.sort(reverse=True)\n```\n\nMedian 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.\n\nTop scorer in the batch was 11 points (5 reactions, 2 comments) — a post about a missing `except HTTPError`\n\nblock. 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.\n\nNothing 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.\n\nThat'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.\n\nThe 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`\n\ndata, and use *that* — not \"does dev.to like this trending post\" — to decide what's worth another round. Something like:\n\n``` python\nfrom collections import defaultdict\n\nby_category = defaultdict(list)\nfor title, score, category in my_scored_articles:\n    by_category[category].append(score)\n\nfor category, scores in by_category.items():\n    print(category, \"median:\", statistics.median(scores), \"n:\", len(scores))\n```\n\nI 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.", "url": "https://wpnews.pro/news/i-score-every-trending-topic-before-writing-about-it-i-ve-never-scored-my-own-30", "canonical_source": "https://dev.to/enjoy_kumawat/i-score-every-trending-topic-before-writing-about-it-ive-never-scored-my-own-30-articles-1340", "published_at": "2026-08-11 03:38:09+00:00", "updated_at": "2026-08-11 04:19:28.905848+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["DEV.to"], "alternates": {"html": "https://wpnews.pro/news/i-score-every-trending-topic-before-writing-about-it-i-ve-never-scored-my-own-30", "markdown": "https://wpnews.pro/news/i-score-every-trending-topic-before-writing-about-it-i-ve-never-scored-my-own-30.md", "text": "https://wpnews.pro/news/i-score-every-trending-topic-before-writing-about-it-i-ve-never-scored-my-own-30.txt", "jsonld": "https://wpnews.pro/news/i-score-every-trending-topic-before-writing-about-it-i-ve-never-scored-my-own-30.jsonld"}}