Free Open Source Steemit Bot - proposal and question
I think there's a need for a simple, accessible, personal curation bot for the average Steem user.
I was inspired by @stellabelle to create it in her "personal pimp bot" post, and after reading @anyx 's request that we vest their bot with our voting power, really saw the need for a free, open source bot anyone can roll out for people who do not want to consolidate power into the hands of others. People like me 😎 The trails and whale-bots are good, I also benefit from them, but a custom personal bot seems like more fun and more useful for smaller players, aka minnows. And it's not an either / or situation anyway, they're not mutually exclusive.
I thought I'd ask publicly, as it states in the white paper
The Steem community provides the following services to its members: [...] A means to get high quality answers to personalized questions. [1]
So set quality to high, and answer me this:
What would your personal bot look like?
What would like it to be able to do?
For me, I'd like something which focuses on cultural aspects, while introducing some strategy to increase my curation reward. I'd like to propose these are curation goals a bot may maximise, cultural curation and strategic curation, which are interrelated. In my case, I'd like to the cultural aspect to take precedence, and restrict strategic voting somewhat. But I'd like any bot I create to be customisable enough that this is not built in, but rather that these aspects are recognised, and most importantly, measurable.
In order to make a choice on whether or not to vote on a post, we have to have some measurable metric to judge it against. I define strategic metrics to be any aspect which effect payout directly, through the voting algorithm. I define cultural metrics to be those that effect payout indirectly, by attracting voters based on content.
Most strategic metrics are simply readable from the API. But cultural metrics are harder to quantify, and I'd suggest Natural Language Processing (NLP) for this. There are some great libraries available for this.
Here are my suggested metrics:
Strategic metrics
About the post
- Time since post
- Estimated payout
- Number of votes
- Number of flags / downvotes
The Steem Calculator already solves this, but it seems to be closed source (maybe @burnin would like to comment?)
About this user
- Number of posts today
- Time since last post (posts are rate limited [2])
Cultural metrics
Content
Using NLP
- Topic
- Keywords
- Sentiment / emotional score
- Length
- Number of video links
- Number of photo links
- Number of webpage links
Poster
Make judgements on whether or not the poster is someone you want to support
- Reputation
- Capital (either by value or by category, whale, dolphin, minnow)
- Last post payout
- Average / median post payout
Additionally you could have always vote or always don't note (white / black listing) for authors manually.
Too much data!
How can this all be used? A system of rules could be created to score posts, and then vote on the highest scored post at any time. The bot could be configured to run itself every hour or half hour, or 24 or 48 votes per day, which seems to be what's generally accepted as the voting sweet spot.
Example scoring
It could be set up to firstly only accept (i.e. whitelist) posts in a certain topic, at least 500 words, with a lot of links (good referencing) and at least one picture. You can mitigate these kinds of strict rules by allowing one random post for every N posts that you whitelist.
After these basic limits, a post with more links, up to say 10, is voted higher. Videos decrease the score, and pictures increase, but only to max of 3.
The score should go up if the author's reputation is high, and slightly higher if they are followed by the user.
Strategically, the score should only go up for newer posts, and posts which do not yet have a lot of votes (i.e. get in there early). I say "only go up" so that posts on which there will be little curation reward should not be marked lower, just not get marked higher. Don't for get, this is just an example, you don't have to do this and the bot would support negative marking if no significant curation reward. Similarly, the score should go up if they have more capital, but not too much.
Presets
So make it easier again, certain presets could be made to simplify it for users who can't code.
Additionally, if the code was well laid out, it might be a good opportunity to actually teach coding!
Usage and deployment
I think Heroku is a great platform for bots of all kinds, and they have a one-click deployment function with the Heroku Button.
I won't go into too much implementation detail, but personally I'm comfortable with Node.js and the NPM steem library to access the API looks fit for the job.
One problem to be solved is getting users keys on their Heroku account securely, but I'll look into this later, and take suggestions of course.
Closing
Thanks for reading. 😁 Even if you don't want to make any particular suggestion, I'd be interested to know if you like the idea of this at all, or even if you think has already been done well. I couldn't find it myself. 🙃
References
- [1] Steem White Paper, pg 5
- [2] Steem White Paper, pg 18
This post is submitted without an image 😭 but also as Decline Payout, as it's a discussion only, not an article I'm writing.
the potential to ignore particular users votes might be useful ?
this feature might be more useful if there were groups of users collating votes to ignore, so i might auto ignore those users you ignore and vice versa.
also to treat the votes in more complex ways,
users such as myself with only two posts and one reply, might have their votes ignored,
(i'm new to steemit, so i'm not really sure how it all works, so reputation might cover these)
Do you mean to ignore particular users' votes when calculating potential payouts and such? That'd be cool, I can add more metrics for votes. What would you suggest? I'll add them to the document.
I think reputation does interact with other metrics so it'd be good to keep that in mind. I couldn't find exactly how it's calculated though, hopefully a more experienced person comments here.
I will look at the post on a fresh head tomorrow , for now I'm just asking for some views on my second post, I've put too much time into it to go to bed on time , or not give it a strong push ,since I'm guessing if you don't break through the first hours , you'll struggle and fade and then after a week things get locked or something.
Was going to ask you why the rewards are scratched?
https://steemit.com/story/@j3dy/answer-to-life-challenge30-day2-train-and-think-or-steemit-review
I explained why the reward are scratched at the end of the post
I guess it's up to us how to use that feature ourselves but I had the idea of doing it when I haven't put a lot of original research or writing into a post. This is a question I'm fielding. It didn't do so well though, it's always hard to know why. I guess it wasn't that interesting on the day it was posted.
I rEsteemed this post. I'd like to keep this topic alive. Imma all about the BotWare ; )
![Imgur](https://steemitimages.com/640x0/http://i.imgur.com/LuNVW3H.jpg)
You're too kind! Guess what buddy ... I'm dropping a bot on Monday 😆 😆 😆 💫 🌟
DROPPED! https://github.com/Steem-FOSSbot/steem-fossbot-voter
Wow!! I've been looking for a bot lately!! So going to try this out now :)