Steem-FOSSbot / steem-fossbot-voter

A curation bot built for the Steemit social media platform, decides which posts to vote for and casts vote on behalf of a registered user
Other
92 stars 336 forks source link
bot heroku node node-redis nodejs steem steem-fossbot steemit vote voter

Voter

Voter logo

A Steem FOSSbot, by personz

Full documentation is available here.

Project goal

The goal of this project is to bring a high quality and fully customisable bot to anyone who is willing to put in the time to set up a simple server and make their own customisations.

For more information, see the discussion doc page.

What is this?

Voter is a bot for Steem which decides which posts to vote for and casts votes on behalf of a registered user. It is built as a Node.js server and intended for deployment on Heroku, with other installation options planned.

This means you own the server and control it completely. There are no fees or catches, the software is free to use. You create a unique API key for your own access, and for granting access to others if you wish.

You control the running of the bot, set the algorithm and view stats and logs with a simple web dashboard, which will be live at your Heroku URL. See Usage below for more details.

A plugin system has been proposed and will hopefully be implemented. Please refer to the ticket on the main Steem FOSSbot organization project-tracker for more information.

Lastly, check out our ethos. Bots can be a divisive subject and this document clearly lays out our position.

How it works

The bot works by scoring each new post using a collection of rules which are set by you. If a post scores above a threshold, it is voted for. The threshold is automatically adjusted based on a raised average of recent posts, and is also proportional to the number of votes in the last 24 hours, to keep votes per day at around a max of 40 (by default).

Rules are based on a collection of metrics which this app interprets from raw Steem data. For example, you could add 10 score points for every image, or deduct 2 points for every minute since the post was created.

These rules, called an algorithm, are editable through the server app Dashboard, and you can also view run statistics, logs and tests here.

The server is designed to be triggered periodically for a bot run iteration, for example every 30 or 60 minutes. This can be done on Heroku with an add-on, or manually on the dashboard provided, or even by a HTTP GET method to /run-bot?json=true&api_key=BOT_API_KEY endpoint, which is used internally and can be used externally by a separate app.

Please see the discussion doc page for in depth details on the curation algorithm and how to use it to create a custom bot, as well as a discussion on bots on Steem in general. For technical details see the algorithm and metrics doc page.

Usage

Open the bot dashboard using your Heroku app root URL, as above. All operations are available through the dashboard.

The operations you can perform are:

For more detail on the dashboard (and more screen shots!), see the dashboard overview doc

Dashboard with active session


Stats for post metrics breakdown

Installation

See the installation guide, but if you want to jump right in then you can deploy this server to Heroku with one click.

Deploy

Make sure to read the instructions though! Heroku has a basic free plan but if not familiar with their service you will want to read their terms, privacy policy, etc.

Update

Please see also the installation guide for instructions on how to keep your server up to date with further releases of Voter.

IMPORTANT

If you are updating from before v0.3.0 you will need to do a clean reinstall, so please back up your data before upgrading.

License and acknowledgements

All original programming is under the CC0 license and thus completely open and free to use in any capacity. It's in the spirit of the project that it is open to all.

Included in this repo are the following libraries, and all licenses are in the root folder of the project, except where stated:

The steem Node.js package by adcpm is central to the app, a big thank you to the creators. Please star it on GitHub to support their development and check out their project Busy.

Several other Node NPM libraries are used as dependencies. Their source is not included in this repo, but is downloaded when the server is built. Thanks to their creators!

Disclaimer

We are not required to supply terms because we are not running a service. However, obviously you are at your own liability if you use this software. See the license for full legal text.

Contributions via pull request are very welcome, as are issues logged via the GitHub issue tracker. You can also suggest features, such as metrics you'd like to see, UI upgrades, etc.

Also, please note that development of this project was done piece-wise, and there are many commits with very little added, as a commit was required in order to test any code change.

Finally, as mentioned in the discussion, this project is not intended as a customer ready solution, it is a kind of "hobby grade" project. As such, do not expect consumer level support.

Changelog