New Trending Algorithm - Attempt Number 5
A brief note in advance: For those who have not yet noticed: I have been among the Top20 witnesses of this blockchain for a few days now. Many thanks to Steemchiller and to the many voters who believe in me. I hope we can breathe more life back into Steem together. So, now back to work and to the actual topic.
My last attempt at establishing a new trending algorithm ran for some time on my test domain (https://steemit.steemnet.org/trending).
However, I had to realise that this was not yet the big hit, as the posts that appeared there were not really of any particular significance.
New approach
So a new approach was needed. To do this, I asked myself the question: What qualities must a post have to be 'trending' or 'hot'?
- Payout level (but with less influence than before),
- Number of resteems (higher = better),
- Number of comments (higher = better),
- Number of commenters (higher = better),
I asked DeepSeek about this and received the following suggestions:
- resteems are typically given the highest weight as they signal strong agreement
- unique commenters are weighted higher than comment counts alone
- logarithmic scaling prevents individual metrics from dominating
- combination of old and new system (retains the proven base score, but supplements it with interaction signals).
- temporal decay function (older content receives a decreasing score).
DeepSeek had also provided an implementation, but it was unusable because it did not respect Hivemind's database structure at all. Although I had sent DeepSeek the link to the repo, it could not produce any usable results.
From this, I have created a few premises for the new algorithm:
- For reasons of efficiency, there should only be a few additional database queries. Unfortunately, the database structure of Hivemind is such that it is not possible to query all comments on a post with reasonable effort. This requires a recursive call. I currently want to avoid this. Proposal no. 2 is therefore not applicable.
- The order of magnitude of the old score should not be changed significantly so that no replay of the database is necessary. I first have to find an appropriate calculation. I also had to analyse the previous algorithm.
- Older posts should continue to fade into the background after a while. This also required an analysis of the previous algorithm, as this already causes older posts to slide to the back.
Analysis of the current calculation
Up to now, the (official) score has been calculated using the following function:
def _score(rshares, created_timestamp, timescale=480000):
"""Calculate trending/hot score.
Source: calculate_score - https://github.com/steemit/steem/blob/8cd5f688d75092298bcffaa48a543ed9b01447a6/libraries/plugins/tags/tags_plugin.cpp#L239
"""
mod_score = rshares / 10000000.0
order = math.log10(max((abs(mod_score), 1)))
sign = 1 if mod_score > 0 else -1
return sign * order + created_timestamp / timescale
The calculation corresponds to that from the steemd
tags plugin.
The lines
mod_score = rshares / 10000000.0
order = math.log10(max((abs(mod_score), 1)))
have the effect that rshares <= 1e7
are not taken into account (mod_score <= 1
and log10(1)=0
) and high rshares no longer lead to a significant increase in the score.
Finally, the absolute value order
is assigned with the sign of the votes. This value is then added to the result from the division of timestamp and timescale.
For a long time, I didn't realise how the division worked and what it meant. It was only when I thought about suggestion no. 5 for a while that I realised this. At this point, I would like to mention that I also asked DeepSeek about this. He'd been throwing wild differences between timescale and decay at me that made no sense from my point of view.
This is because created_timestamp / timescale
already cause a decay function. As timestamp
increases continuously with every second, the final score also increases. The value for timescale
causes the final score to change per second simply by the passage of time. Sounds simple, doesn't it? For DeepSeek, it was probably too simple.
For the new algorithm, this means that the quality component of the score must be dimensioned in such a way that the passage of time still has an effect.
New implementation
Based on the above premises, I have now implemented the following solution:
- There is a combination with the previous score and the new interactions score.
- The interactions score takes into account the number of reblogs and the number of comments.
- Votes weight = 0.2 (only very little influence),
- Interactions weight = 0.9 (higher influence),
- Reblog weight = 1.0 (higher influence compared to comments),
- Comment weight = 0.7.
Several days ago, I used an early version of the new approach to record the essential data for 5 days so that I could easily understand the effect of further adjustments. Here you can see the diagram of the rank changes for selected posts:

You can see very clearly that the inclusion of reblogs and comments alone would have led to numerous ranking changes over time.
About a week ago, I put the new algorithm online at https://steemit.steemnet.org/trending. It took a few days for the new posts to overtake the posts with the old score, but now you can see - I think - much better results in the trending posts (but it's a coincidence that a post about me was created just today and - obviously because of the many congratulators - it lands quite high up).
What do you think? Do you have any suggestions for improvement?
Let me know what you think about the new attempt.
08.06.2025

Steem Search on https://moecki.online/ | ![]() |
---|
Erstmal herzlichen Glückwunsch zum Einzug in die Top20! Wobei, wie du weißt, du für mich schon lange zu den Top20 gehörst, ist quasi nur ein Bug im Ranking der behoben wurde ;-)
Dein Trending gefällt mir um einiges, um Längen, besser als das bisherige. Ich denke, der Grund warum es von vielen nicht genutzt wird, ist einfach weil nichts interessantes vorkommt. Das könnte sich jetzt ändern.
Und ich denke dabei auch an Leute die nicht auf steemit sind und bei trending landen. Überbewerte Posts ohne Mehrwert, von außen gesehen.
Allein aus dem Grund wäre es schon gut, wenn da halbwegs "vernünftige" Posts erscheinen.
Finde du hast es schon gut getroffen!
0.00 SBD,
4.96 STEEM,
4.96 SP
Ich danke dir für die Glückwünsche.
Mit meinem Hang zum Perfektionismuss kann man vielleicht nachvollziehen, dass ich noch nicht so richtig zufrieden bin. Ich muss mal über die Zeit schauen, an welchen Stellschrauben ich noch drehen kann...
Wenn der aktuelle Post von @realrobinhood rauskommt, schaue ich immer, ob die dort ausgewählten Beiträge auch im neuen Trending erscheinen. Das war mal mehr mal weniger der Fall. Einen Tag hatte ich das Gefühl, dass es fast übereinstimmt. Am nächsten dann wieder nicht so. Ich denke, Steemchiller hat einen "stärkeren" Abklingfaktor eingebaut, damit die Post schneller wieder von den Top75 verschwinden.
0.00 SBD,
1.02 STEEM,
1.02 SP
Ei ja, Perfektionismus... viel Spaß beim Schraubendrehen ;-)
Hab gerade wieder die 2000 aktuellen Posts (von https://steemit.com/created) durch meine Spracherkennung laufen und von DeepSeek die Erkennungsrate bestimmen lassen: 99.51% - eigentlich sollte ich schon längst zufrieden damit sein, aber es gibt halt noch ein paar Schrauben...
Aber jetzt geht's erstmal ins Bettchen, da wollte ich schon vor ner Stunde sein ;-)
0.00 SBD,
0.41 STEEM,
0.41 SP
Hört sich gut an! Aber auch nach viel Arbeit...
Die hohen Votes werden also nicht mehr so sehr berücksichtigt? Bin mir nicht sicher, ob ich das so erkennen kann. Gibt es eine Möglichkeit, sämtliche Selfvotes (also auch jene, die durch sämtliche (auch die "nicht offiziell anerkannten" wie abb-curation, steem-seven etc.) HRI-Services gegeben werden) aus der Berechnung herauszunehmen?
Ein Glückwunschpost ganz oben?! DAS wird doch wohl hoffentlich niemand in Frage stellen... 😉
0.00 SBD,
4.28 STEEM,
4.28 SP
Ich glaube, das war Inhalt von Versuch Nummer 1,2 oder 3... und im gewissen Maße auch von Nummer 4.
Dadurch, dass solche Beiträge auch von "Trailern" gevotet werden, erhalten sie tendentiell mehr Votes auch von anderen Usern.
Vielleicht wäre aber doch eine Mischung ganz sinnvoll. Wenn in den Vote-Bestandteil der Median statt der Gesamt-Rshares einfließt. Das klingt gar nicht schlecht. :-)
Nach dem Kommentar von lifetrail und remlaps erscheint mir der ganze Aufwand doch irgendwie unverhältnismäßig. Vielleicht sollte der Gorilla einfach die "new"-Seite als Einstiegsseite einstellen. Dann ist das Problem schneller gelöst. Ich nutze ja selbst die "Trending"-Seite auch nicht....
0.00 SBD,
4.34 STEEM,
4.34 SP
Stimmt - wenn man gaaanz genau hinschaut... 😂
Diese Trails sind echt lästig. Naja, wir machen mit den sc-Reports ja auch nichts anderes... Wohldem im seeehr moderaten Rahmen... 😉
Denke auch, dass deine Bemühungen den ganzen Aufwand nicht wert sind (ich gucke da auch nie drauf...). "Trendings" abschaffen! Basta... 😇
Hey @moecki,
thank you for using our automatic payout bot 'DUBby' to share your post rewards with your commentators.
You have not yet issued any payout instructions.
Just write a comment to the users who should receive a share. It should contain the instruction in the form
!dubby x %
.If you need help with this, feel free to ask or check this manual (german).
Greetings from the 'DU-Finanzbot' (by Witness @moecki).
In the end I think AI's are very useful in terms of writing code, I have days developing a trading program for binance and I have been using microsoft copilot, it does not make the codes perfectly but generates a large volume of useful code and then what I do is correct some things to make it work as I want but it is less work than writing the code from scratch (although in this case despite giving more work the code is cleaner and customized).
You know I've never understood the Rshares thing, besides I could never connect to the steem API from windows, but I see you put a lot of heart into what you do and of course you deserve to be in the top 20!
0.00 SBD,
1.84 STEEM,
1.84 SP
Very good attempt. I understand how difficult it is to come up with an automatic system for evaluating the quality of content. But your approach is promising.
I agree with @chriddi. It would be great to eliminate the influence of automatic voting services, as they distort the trending page. But this is probably only possible with the help of a blacklist, which will also constantly require manual moderation. Manual moderation will always be subject to speculation and criticism. Who will decide which service is considered "bad"?
As an option, you can ignore votes that were cast within 6-7 minutes after the post was published. We know that most bots vote 5 minutes after publishing a post.
0.00 SBD,
1.68 STEEM,
1.68 SP
I don’t believe it constitutes a form of criticism to exclude the automatic votes. They are simply meant to be removed from the calculation. That is not a judgement in the sense of “bad”. Such posts can, of course, still appear in the trendings, provided they receive enough other votes.
I would even take it a step further and exclude entire communities. Specifically those where votes are cast by Steemcurator 01 and 02, or by HungryGriffin, etc. This concerns, for example, the POD-Community. And I think we can all agree that this content is heavily upvoted, but would not necessarily encourage outsiders to consider it high-quality.
0.00 SBD,
3.77 STEEM,
3.77 SP
Yes, that is also possible. But as I had already chriddi replied, the corrections to particular votes don't have much impact.
Thanks for your opinion anyway. I don't know yet what priority I will give the project in the future.
0.00 SBD,
3.11 STEEM,
3.11 SP
I'll have to break myself of the habit of ignoring the trending page now. First impression is that I like it a lot, and it's a huge improvement, but it feels even more abrasive than the default trending page does when valueless posts make their way into the list.
0.00 SBD,
1.39 STEEM,
1.39 SP
I usually ignore the page too :-)
Does that mean you still don't like it overall?
The key question is surely how we would define ‘trending’. I think you're more likely to see Thoth as a way of identifying valuable posts. Unfortunately, that's not readily feasible with Hivemind...
But now that I think about it, it seems theoretically feasible in Hivemind to have an AI evaluate the posts and interactions... if there is an appropriate interface and resources for this. Of course, it has to happen very quickly so that the blocks can still be processed promptly...
Since several users (including myself) have already written that they don't use the site at all, I wonder whether it's worth the effort at all. Perhaps simply changing the start page will help. :-)
0.00 SBD,
9.19 STEEM,
9.19 SP
No, it definitely doesn't mean that.
I think this is an important change because it gives people a way to find new authors to follow. Also, I just noticed, today, that there was something funny going on with my browser, so I wasn't seeing the right set of posts. Somehow, it was set to use "api2.steemnet.org" instead of "api.steemnet.org". Now that I switched, it looks much better.
Yeah, I don't think an LLM solution would be suited for the trending page - because of the speed issue that you mention (and also cost). Using machine learning to adjust weights based on webserver log data might be a good use of AI, but obviously that work effort is a different order of magnitude. Not suited for a first effort, I don't think.
I think it's worth the effort.
0.00 SBD,
7.60 STEEM,
7.60 SP
You have been supported by the team:
Curated by: @kafio
You have been supported by the team:
Curated by: @kafio
Well done and congrats to getting into that golden top 20. Fully and absolutely deserved!
Since you asked, I really can't get my mind behind "Trending". Why do we need to copy features from Web2 social networks that suck. I would completely scratch that.
What I really need to see when I type the main site url are the posts of my friends and those who I take interest in.
I think there always will be ways to trick and cheat the "trending" algorithm.
Number of resteems/votes/comments?
Theoretically someone with plenty of SP can create tens of free accounts each day and program them to do that - resteem and vote and comment.
Usually on entering the site, I switch form "trending" to "new".
So why not focus on more interesting features to add, something that would potentially attract new investors and make existing keep more tokens on the chain?
Perhaps a poll could be held to check out how many find "trending" useful at all?
Another question, what is "hot" in that regards. Must be a different algorithm. I never used that as this feels like the newest posts above certain threshold of rewards. Once again - plenty of paid votes posts, not quite interesting.
0.00 SBD,
1.32 STEEM,
1.32 SP
Yes, I don't usually use the site either.
I usually go straight into my feed. The disadvantage is that you always stay in your bubble unless someone resteems a post.
Absolutely! It's really not that easy to prevent. I've already thought about that. Even if we rate unique commentators, they can be created with multiple accounts.
That's another topic. We are constantly thinking about this in the witness channel. For example, have you seen the sidechain proposal? There are encouraging developments there.
You are very well informed about the crypto market. If you have a specific suggestion for an improvement, let us know.
The difference between "Hot" and "Trending" is merely a shorter time factor. The passage of time has a greater influence here. Otherwise, the calculation is the same.
0.00 SBD,
1.98 STEEM,
1.98 SP
I've been thinking about that bubble issue you mention. Perhaps when time is of essence, this isn't so bad but if I got more time, I'd then try to discover some interesting content. Not everyday though. That's quite user specific too, but frankly I haven't heard someone saying "trending" is an exciting feature.
I am so looking forward for the sidechain. I've placed my vote on that proposal long time ago, today found a couple of new ones that I think deserve my support, especially the proposal about the improved wallet.
I am just a small crypto fish in the vast ocean of info, Thank you, though!
STEEM and SBD only got delisted from some exchanges and I have not heard of it being listed on new ones. I think the whole community should put efforts into that direction, otherwise we will only see increasing inflation and price drops. Apart from the pumps, of course.
Thanks so much for your time and all your efforts here on the chain!
0.00 SBD,
0.38 STEEM,
0.38 SP
I think your new trending algorithm looks so much better than the current one. Unfortunately I lost interest in trending page a long time ago because it was too boring. Hopefully revision of trending algorithm may change that.
0.00 SBD,
1.25 STEEM,
1.25 SP
Congratulations on getting to the top 20, I noticed it few days ago but due to much busy activities...I didn't drop any Congratulatory message.
You deserve that spot for real.
0.00 SBD,
1.20 STEEM,
1.20 SP
Thank you :-)
0.00 SBD,
0.45 STEEM,
0.45 SP
Ich glaube ja immer noch, dass ein (noch dazu sehr fähiger) Idealist wie du seine Energie besser einer ganz neuen Fork als dem zentralisierten und von Bidbots gekaperten STEEM widmen sollte, aber dennoch Glückwunsch zur Umsetzung solch interessanter Ideen und dem vorteilhaften Witness-Rang! :-)