TravelFeed Curation Post Helper

JPPhotography @jpphotographyApril 2019 · 2 min read · #utopian-io

A few months ago, we at the @travelfeed curation team were forced to temporarily stop publishing daily curation posts. While the template was always the same and the posts were already ranked in the curation process, creating a post every day took more time than our small team can afford while working on our dApp. This is why I wrote this script that generates TravelFeed curation posts automatically from our Hivemind. Since the ranking of the posts is still done manually by our team, this saves a ton of time without impacting the quality.

Screenshot 20190428 at 23.20.48.png

A screenshot of an automatically generated curation-post. The screenshot is from the upcoming Beta of our dApp!


Project description

This script is executed every day from Monday to Saturday (the Sunday weekly round-up is published manually) as a cronjob. The current day (UTC) is determined, then posts from the past 7 days for the appropriate daily topic are queried from Hivemind.

For most round-ups, a list of country-codes is queried:


For the Wednesday- and Saturday round-up, a tag (#foodoftheworld or #traveladvice) is queried:

hive_posts_cache.columns.post_id.in_([hive_post_tags.columns.post_id]).where(hive_post_tags.columns.tag == tag))

Apart from these, posts are selected only if they meet certain criteria. They have to be valid travelfeed posts (250 words and tagged with #travelfeed) and can't be comments. Posts without a @travelfeed upvote of at least 30% are not eligible, neither are posts by @travelfeed.

where(db.and_(hive_posts_cache.columns.is_travelfeed == True, != "travelfeed", hive_posts_cache.columns.depth == 0, hive_posts_cache.columns.curation_score >= 3000))

The posts are sorted primarily by the curation score given by our curation team (=upvote by @travelfeed), secondarily by the TravelFeed miles score given by the community and curation trails (total vote percentages):

order_by(hive_posts_cache.columns.curation_score.desc(), hive_posts_cache.columns.total_votes.desc())

Each curation post features up to three eligible posts, the featured authors are set as 13% beneficiary each. The retrieved posts are processed to retrieve a sanitised excerpt and are then combined with several template snippets to the final post which is then posted to Steem with beem.

The text templates and criteria can be specified in the curation file post_templates.example.json, an example configuration can be found in the repository.

GitHub Account


Share this post