{"id":2570,"date":"2017-10-19T23:10:36","date_gmt":"2017-10-19T21:10:36","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=2570"},"modified":"2017-10-19T23:10:36","modified_gmt":"2017-10-19T21:10:36","slug":"how-to-host-a-twitter-bot-online-in-no-time","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/","title":{"rendered":"How to host a Twitter bot online in no time"},"content":{"rendered":"<p>In the <a href=\"http:\/\/mariusbancila.ro\/blog\/2017\/10\/17\/how-to-write-a-twitter-bot-in-no-time\/\">previous post<\/a>, I have shown how you could write a simple Twitter bot using JavaScript and Node.js very quickly. However, I ran the bot on my local machine, which is probably not something that you want to do for a real application. Instead, you&#8217;d probably want to host it on a cloud platform. In this article, I will show how you can do that also in no time using <a href=\"https:\/\/www.heroku.com\/\">Heroku<\/a>. Heroku is a cloud platform for building and running applications that takes away the complexity of setting up an entire infrastructure. This makes it well suited for simple things like the bot we previously created.<\/p>\n<h3>A word on Azure<\/h3>\n<p>Since I have an Azure account and MSDN subscription my first choice for hosting the bot was Azure. However, I learned something important.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/nodeazure.jpg\" alt=\"\" width=\"568\" height=\"335\" class=\"alignnone size-full wp-image-2571\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/nodeazure.jpg 568w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/nodeazure-300x177.jpg 300w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/p>\n<p>After wasting too much time looking into both web apps and Azure Cloud Services, installing Azure Power Shell, learning to use it, setting up worker roles, deploying, etc. and still not getting the bot to work (unless accessed through a URL) I decided to move on and find something that even someone unfamiliar with can quickly grasp in minutes.<\/p>\n<h3>Starting with Heroku<\/h3>\n<p>Heroku is a platform that you can use for free for experimenting if you don&#8217;t require too many resources. Of course, there are <a href=\"https:\/\/www.heroku.com\/pricing\">paid plans<\/a>, depending on your needs. However, for the simple bot I was building there would be no incurring costs.<\/p>\n<p>Pricing is based on dyno hours. <a href=\"https:\/\/devcenter.heroku.com\/articles\/dynos\">Dynos<\/a> are lightweight Linux containers in which an application runs. A dyno can belong to one of the three possible configurations: <em>web<\/em> (that receive HTTP traffic from routers), <em>worker<\/em> (typically background jobs, queueing systems, and timed jobs), and <em>one-off<\/em> (temporary dynos that can run detached, or with their input\/output attached to your local terminal, typically used for administrative tasks, such as database migrations and console sessions). You can get up to 1000 dyno hours per month for free, which is enough to run an application with no costs. Should you need to host more, then you&#8217;d have to pay for it.<\/p>\n<p>After creating the account, you should download and install the <a href=\"https:\/\/devcenter.heroku.com\/articles\/heroku-cli\">Heroku CLI<\/a> (previously known as Heroku Toolbelt). This allows you to create and manage Heroku apps from the command line on Window, MacOS and Debian\/Ubuntu.<\/p>\n<h3>Creating a Heroku app<\/h3>\n<p>After creating an account and signing in you can create applications from the dashboard. You must specify a unique name and a data center where it should be hosted.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku1.png\" alt=\"\" width=\"945\" height=\"494\" class=\"alignnone size-full wp-image-2573\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku1.png 945w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku1-300x157.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku1-768x401.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/p>\n<p>Heroku has its own git to store your project sources. You can find instructions under the <em>Deploy<\/em> page for how to create the project locally and commit it to Heroku&#8217;s git repository.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku2.png\" alt=\"\" width=\"854\" height=\"493\" class=\"alignnone size-full wp-image-2574\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku2.png 854w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku2-300x173.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku2-768x443.png 768w\" sizes=\"auto, (max-width: 854px) 100vw, 854px\" \/><\/p>\n<h3>Defining a Procfile<\/h3>\n<p>Apart from the bot source files that we created in the previous article (<tt>package.json<\/tt>, <tt>bot.js<\/tt>, and others that might be necessary), we need to declare a <a href=\"https:\/\/devcenter.heroku.com\/articles\/procfile\">Procfile<\/a> in the root directory of the app. This is a text file that defines what command should be executed to start the application. The content of this file should be the following (assuming that the entry point of the bot is called <tt>bot.js<\/tt>).<\/p>\n<pre class=\"lang:default decode:true \" >worker: node bot.js<\/pre>\n<p>This is necessary because the Twitter bot is not a web app, but a worker app that runs on the server and does something periodically in the background, not based on HTTP requests. <\/p>\n<p>After uploading the source files including the <tt>Procfile<\/tt> to the heroku git repository, go to the application and under the <em>Resources<\/em> tab, stop the web dyno and start the worker dyno.<\/p>\n<p><strong>Note<\/strong>: a web dyno is created by default for every application.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku3.png\" alt=\"\" width=\"828\" height=\"351\" class=\"alignnone size-full wp-image-2577\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku3.png 828w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku3-300x127.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/heroku3-768x326.png 768w\" sizes=\"auto, (max-width: 828px) 100vw, 828px\" \/><\/p>\n<p>And that&#8217;s it, the Node app now runs successfuly on the platform in the background.<\/p>\n<h3>See more<\/h3>\n<p><a href=\"https:\/\/devcenter.heroku.com\/articles\/deploying-nodejs\">Deploying Node.js Apps on Heroku<\/a><br \/>\n<a href=\"https:\/\/devcenter.heroku.com\/articles\/getting-started-with-nodejs\">Getting Started on Heroku with Node.js<\/a><br \/>\n<a href=\"https:\/\/devcenter.heroku.com\/articles\/dynos\">Dynos and the Dyno Manager<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous post, I have shown how you could write a simple Twitter bot using JavaScript and Node.js very quickly. However, I ran the bot on my local machine, which is probably not something that you want to do for a real application. Instead, you&#8217;d probably want to host it on a cloud platform. &#8230; <a title=\"How to host a Twitter bot online in no time\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/\" aria-label=\"Read more about How to host a Twitter bot online in no time\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[519,19],"tags":[522,521,526,199,525,293,523,520],"class_list":["post-2570","post","type-post","status-publish","format-standard","hentry","category-javascript","category-web","tag-app","tag-bot","tag-cloud","tag-deployment","tag-heroku","tag-javascript","tag-node","tag-twitter"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"twitter,bot,app,node,javascript,heroku,cloud,deployment\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How to host a Twitter bot online in no time\" \/>\n\t\t<meta property=\"og:description\" content=\"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2017-10-19T21:10:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2017-10-19T21:10:36+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How to host a Twitter bot online in no time\" \/>\n\t\t<meta name=\"twitter:description\" content=\"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#article\",\"name\":\"How to host a Twitter bot online in no time\",\"headline\":\"How to host a Twitter bot online in no time\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/10\\\/nodeazure.jpg\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#articleImage\",\"width\":568,\"height\":335},\"datePublished\":\"2017-10-19T23:10:36+02:00\",\"dateModified\":\"2017-10-19T23:10:36+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#webpage\"},\"articleSection\":\"JavaScript, Web, app, bot, cloud, deployment, heroku, javascript, node, twitter\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/#listItem\",\"name\":\"Web\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/#listItem\",\"position\":3,\"name\":\"Web\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/javascript\\\/#listItem\",\"name\":\"JavaScript\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/javascript\\\/#listItem\",\"position\":4,\"name\":\"JavaScript\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/javascript\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#listItem\",\"name\":\"How to host a Twitter bot online in no time\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/#listItem\",\"name\":\"Web\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#listItem\",\"position\":5,\"name\":\"How to host a Twitter bot online in no time\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/web\\\/javascript\\\/#listItem\",\"name\":\"JavaScript\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/\",\"name\":\"How to host a Twitter bot online in no time\",\"description\":\"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2017\\\/10\\\/19\\\/how-to-host-a-twitter-bot-online-in-no-time\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2017-10-19T23:10:36+02:00\",\"dateModified\":\"2017-10-19T23:10:36+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How to host a Twitter bot online in no time","description":"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/","robots":"max-image-preview:large","keywords":"twitter,bot,app,node,javascript,heroku,cloud,deployment","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#article","name":"How to host a Twitter bot online in no time","headline":"How to host a Twitter bot online in no time","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2017\/10\/nodeazure.jpg","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#articleImage","width":568,"height":335},"datePublished":"2017-10-19T23:10:36+02:00","dateModified":"2017-10-19T23:10:36+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#webpage"},"articleSection":"JavaScript, Web, app, bot, cloud, deployment, heroku, javascript, node, twitter"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/#listItem","name":"Web"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/#listItem","position":3,"name":"Web","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/javascript\/#listItem","name":"JavaScript"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/javascript\/#listItem","position":4,"name":"JavaScript","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/javascript\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#listItem","name":"How to host a Twitter bot online in no time"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/#listItem","name":"Web"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#listItem","position":5,"name":"How to host a Twitter bot online in no time","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/javascript\/#listItem","name":"JavaScript"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/","name":"How to host a Twitter bot online in no time","description":"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2017-10-19T23:10:36+02:00","dateModified":"2017-10-19T23:10:36+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"How to host a Twitter bot online in no time","og:description":"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.","og:url":"https:\/\/mariusbancila.ro\/blog\/2017\/10\/19\/how-to-host-a-twitter-bot-online-in-no-time\/","article:published_time":"2017-10-19T21:10:36+00:00","article:modified_time":"2017-10-19T21:10:36+00:00","twitter:card":"summary","twitter:title":"How to host a Twitter bot online in no time","twitter:description":"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort."},"aioseo_meta_data":{"post_id":"2570","title":null,"description":"This article shows how we can host a Twitter bot written in JavaScript for Node.js on Heroku, for free, and with a little effort.","keywords":[{"label":"twitter","value":"twitter"},{"label":"bot","value":"bot"},{"label":"app","value":"app"},{"label":"node","value":"node"},{"label":"javascript","value":"javascript"},{"label":"heroku","value":"heroku"},{"label":"cloud","value":"cloud"},{"label":"deployment","value":"deployment"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:06:01","updated":"2025-12-12 07:46:59","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"In the previous post, I have shown how you could write a simple Twitter bot using JavaScript and Node.js very quickly. However, I ran the bot on my local machine, which is probably not something that you want to do for a real application. Instead, you&#8217;d probably want to host it on a cloud platform.&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/javascript\/\" class=\"advgb-post-tax-term\">JavaScript<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">Web<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">JavaScript<\/span>","<span class=\"advgb-post-tax-term\">Web<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">app<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">bot<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">cloud<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">deployment<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">heroku<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">javascript<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">node<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/\" class=\"advgb-post-tax-term\">twitter<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">app<\/span>","<span class=\"advgb-post-tax-term\">bot<\/span>","<span class=\"advgb-post-tax-term\">cloud<\/span>","<span class=\"advgb-post-tax-term\">deployment<\/span>","<span class=\"advgb-post-tax-term\">heroku<\/span>","<span class=\"advgb-post-tax-term\">javascript<\/span>","<span class=\"advgb-post-tax-term\">node<\/span>","<span class=\"advgb-post-tax-term\">twitter<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 9 years ago","modified":"Updated 9 years ago"},"absolute_dates":{"created":"Posted on October 19, 2017","modified":"Updated on October 19, 2017"},"absolute_dates_time":{"created":"Posted on October 19, 2017 11:10 pm","modified":"Updated on October 19, 2017 11:10 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-Fs","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/2570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=2570"}],"version-history":[{"count":12,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/2570\/revisions"}],"predecessor-version":[{"id":2586,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/2570\/revisions\/2586"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=2570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=2570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=2570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}