Tweem 0.2.5, crossposting, tag propagation, better templating and more !

in utopian-io •  6 months ago

Click here to get redirected to the GitHub repository of Tweem.

It's been a while since the last update post for Tweem. Due to my work on the @checky bot and on another unannounced project, I had to stop bringing updates to Tweem. Now that @checky is a few changes away from its final state I can bring some of my attention back to Tweem. A month ago, @bitcoinparadise suggested to implement a tweet frequency feature which made me start working on this bot again. This suggestion was made in the comment section of his wonderful tutorial on how to install Tweem on Linux which you can read by clicking here. Once again @bitcoinparadise, thank you for this great tutorial ! Now let's talk about Tweem's new features and improvements.

Templating your tweets is less confusing !

The old templating system was too complex compared to what it was capable of and hard to read for users trying to modify it. The new templating system tries to tackle those problems by making everything seem more natural. There are now three different templates, one for resteems, one for posts and one for tweet-like posts (more on that later), this will allow you to have more freedom in the way you want your tweets to appear without having to fit all your logic in one complicated template. Forget about the old template mechanisms, now variables are written between single curly brackets ({variable} instead of {{variable}}) and parts of text can be set as optional by putting them inside square brackets ([optional text]). The importance indicator has also changed a little, you now have to put it outside the brackets instead of inside ({variable}::1 instead of {variable::1}, the same applies to square brackets). While we are on the topic of variables, three modifiers have been added to the templating system: "uppercase", "lowercase" and "capitalize". Those modifiers will modify the value of a variable they are assigned to. In order to assign a modifier to a variable just write your variable name followed by the modifier's name like so : {variable,modifier}. An example of the new templating system can be found by clicking here. (commit)

Crosspost your tweet-like posts !

As promised on the last update post, crossposting has been added to Tweem's use cases. Since the bot only posts on Twitter for the moment, posts need to have a tweet-like appearance in order to be crossposted. A tweet-like post is a post that has its status in the title and a body that is either empty, contains only images (in the Markdown format) or a YouTube video link. Zappl's posts are also considered as tweet-like posts. When Tweem has to crosspost a tweet-like post to Twitter, it looks at your template for tweet-like posts and tweets following this template, it also uploads images if there are any attached to your post. Allowing crossposting for users works just like for posts and resteems via the steem_accounts property of the configuration file, in this case you will have to put those user's usernames in the tweet_like array. (pull request - commit 1 - commit 2 - commit 3 - commit 4)

Set the frequency of your tweets !

Thanks to @bitcoinparadise for this suggestion. Some of you may have a lot of users in their steem_accounts arrays and may not want to spam their Twitter followers too much. Tweem's new frequency setting should help you with that. By setting the frequency to 5 minutes for example, two tweets that should have been sent less than 5 minutes apart will be forced to be sent 5 minutes apart from each other. The tweet frequency can be found in the settings under the name post_frequency_minutes, it is at 0 by default which means that tweets get sent as soon as possible by default. (commit)

Remove useless tags

While they may appear useful on your Steem posts, some of the tags you use may make less sense on Twitter. It would be nice to have a way to remove those tags before tweeting. This is now possible thanks to two new sub-settings added to the tags setting. The first one is called remove_app_tags and, as you may have already guessed from its name, it is used to choose whether or not you want app tags ('utopian-io' for Utopian, 'dsound' for DSound, ...) to be removed from your tweets. The other introduced sub-setting is filtered_out, it is an array that you can fill with all the tags you don't want to see in your tweets. (commit 1 - commit 2 - commit 3)

Propagate tags

When you post on the Steem blockchain most apps restrict you to 4 or 5 tags. This restriction doesn't exist on Twitter though so you should be able to have more than 5 tags on the tweets made with Tweem. This has been made possible thanks to tag propagation. It is pretty easy to understand but may be hard to set for people who don't know JSON, for this reason I've added an explained example after this paragraph. What is referred to as tag propagation in this project is the adding of new tags to a tweet based on the original post's tags. If your post contains a #gaming tag for example, you can set Tweem to automatically add the #games tag on your tweet if it doesn't already exist on your post. Tag propagation happens before tag deletion, this means that you can use those two settings together to replace tags by others. Tag propagation can be set via the propagate sub-setting of the tags setting, here is an example of how to use it. (commit)
"tags": {                 <-- The tags setting
    "propagate": {        <-- The propagate sub-setting
        "gaming": [       <-- The tag to be propagated
            "video",      <-- ┐
            "games",      <-- The tags to be added
            "indie"       <-- ┘
        "life": [         <-- The tag to be propagated
            "vlog"        <-- The tag to be added

Other improvements

  • The default app is now strictly checked, meaning if the default app specified in the settings can't read posts from any other app Tweem will use Steemit as the default app. (commit)
  • Hyphens in tags are now replaced by underscores to create valid hashtags. (commit)
  • Any mention of Twitter in the code has been removed to prepare it for other social networks. This doesn't apply to the use of the term "tweet-like" and to the twitter.js file. (commit)
  • The post's link can be accessed in templates as a variable but putting it anywhere else than at the end of a template is not recommended as it hasn't been tested in other positions.

Supported applications (changes)

It had been a while since I hadn't refreshed the applications list so today's list is quite big. Since the last post, 16 applications have been added to this list and 3 have been removed. You can see the exact changes made to that list in the table below.

+BlockPressblockpressBlockchain based content management system.
+CooggercooggerAn information sharing network that works with multiple applications.
+dlikedlikeShare What You Like.
-DLivedliveThe first decentralized live streaming and video platform for you to share original content, and earn feeless rewards directly from your viewers.
+dManiadmaniaMake money with memes, funny pictures and videos.
+dPolldpollDecentralized poll app on top of the STEEM blockchain.
+eSteemesteemBlog, vote, share pictures and get paid.
+Głodni WiedzyglodniwiedzyDedicated Polish Steem user interface for displaying content of selected users.
+KnacksteemknacksteemRewarding Talent.
-OnePlaceoneplaceWeb-application based on Steem and Golos blockchains.
+PartikopartikoFast and beautiful Steem on the go.
+Share2Steemshare2steemCross-post your public social publications to a Steemit account.
+SteemGigssteemgigA Revolutionary Decentralized Freelance Marketplace With Its Own Knowledge-Bank.
+SteemPeaksteempeakA new way to experience the Steem platform.
-SteemThinksteemthinkYou Ask - We Answer - Share Knowledge.
+StrimistrimiAn interface for the STEEM blockchain that acts like Reddit.
+Ulogsulogs"True celebrity-hood" once and for all, for "everyone".
+UneeversouneeversoGestión de automatización STEEM.
+Vimm.TVvimm.tvLive Streaming Made Easy - Monetization Simplified

If you are working on an application that you feel should be in this list, let me know through a comment on this post ! I'll add it as soon as possible.

What's coming next ?

  • Sharing and crossposting on more websites: Tumblr, Facebook, Instagram, Reddit...
  • A GitHub Pages hosted website to generate config.json files that fit your need.
  • Better processing of resteems containing a comment when they will be made available on Steem.
  • Frequent updates to support more Steem applications.
You can find a live version of this list on the Projects page of Tweem.


If you want to contribute to this project or talk about an issue it has, feel free to visit its GitHub page. You can also clone it and follow the instructions written there to get it running. My social medias are listed at the end of the README file. If you add me on Steam, tell me the reason why on my wall, otherwise I won't accept your friend request.

Proof of Work Done

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Thank you for your contribution. A very well written post and also a lot of work done in this post. I really like that it has a lot of website support, but wouldn't it be better if the user decides which app they want to see rather than hardcoding it in the application.

Your contribution has been evaluated according to Utopian policies and guidelines, as well as a predefined set of questions pertaining to the category.

To view those questions and the relevant answers related to your post, click here.

Need help? Write a ticket on
Chat with us on Discord.


Thanks for the quick evaluation and for the kind words !

It would indeed be better but I fail to see how I could achieve such a result, if you have any idea I'm all ears. The problem I see is that while most apps use a predictable link pattern, some don't (for example Vimm.TV only requires the author's username). Besides, the allowed_apps sub-setting in the config.json file already lets users decide which app they want to see. If the value of an app is set to 0 its posts will not be shared. If it's set to 1 they will be shared with a link to the default app. If it's set to 2 they will be shared with a link to the original app. The website I announced in the "What's comming next ?" section of this post should also ease the app selection (and all other settings for that matter) for users.


Thank you for your review, @codingdefined!

So far this week you've reviewed 3 contributions. Keep up the good work!

This post has been just added as new item to timeline of Tweem on Steem Projects.

If you want to be notified about new updates from this project, register on Steem Projects and add Tweem to your favorite projects.

Hi @ragepeanut!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.439 which ranks you at #6529 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 726 contributions, your post is ranked at #599.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

Hey, @ragepeanut!

Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Get higher incentives and support!
Simply set as a 5% (or higher) payout beneficiary on your contribution post (via SteemPlus or Steeditor).

Want to chat? Join us on Discord

Vote for Utopian Witness!