Building Wizmo — Video Downloader Bot

Wizmo is a fast and easy-to-use bot that allows users to download videos or audio from YouTube, TikTok, and Twitter. Wizmo is available on Telegram and Viber.

#The Inception

One of my friends introduced me to the bots on Viber. And he suggested we build an educational bot. I started working on it curiously because I haven't worked on bots before.

I quickly found that the Viber bot development resources are very limited. Maybe it's because Viber is not that popular compared to other messaging apps in the market. To be honest, Viber's official documentation was the only resource for the developers. Fortunately their documenation was very elaborate.

After working on the bot for quite some time, I realized that the work left to do was monumental and unimaginable. We both didn't have the bandwidth to finish the work. We dropped the idea.

However I wanted to try developing a bot just to get the feel. And I wanted to build something small and fun. I knew there were many YouTube video downloader bots on Telegram. I thought maybe I can build the same on Viber. To download videos, I planned to use youtube-dl, an open-sourced command-line program.

#The Initial Version

Wizmo was "YouTube Video Downloader" at the start. Viber was its only platform. I set it up on Heroku's free tier.

Around this time Heroku decided to ditch their free plan. Wizmo is not something that can be put on a serverless environment; required a VPS to be deployed because it requires youtube-dl and filesystem access. I had no money to pay for a VPS.

I had to shut it down.

#Reanimation of Wizmo

For my next project (with the same friend), we had to invest in a VPS. After deploying the project on the VPS, I noticed that we had some free resources in the VPS. I thought maybe I can resurrect my bot.

Now, I planned to expand it to Telegram so that it can be more useful. I also wanted to have a name for the service. It took some time to land on the name "Wizmo".

#Tech Stack

At the core of Wizmo is an Node.js Express server. This server exposes endpoints to hook to the platforms (Telegram and Viber). The landing website of Wizmo is also part of the Express server.

The Express server interfaces with yt-dlp and FFmpeg command-line tools to download and convert media. I had to switch to yt-dlp, an improved fork of youtube-dl, for better stability.

Wizmo collects usage data for the internal analytics. The collected data is stored on Supabase.

The service (everything excluding Supabase) is run on a $6 VPS bought from DigitalOcean.

#Future Plans

#Wizmo on WhatsApp

The usage of Wizmo could increase as WhatsApp is far more popular than Telegram and Viber. We have to use WhatsApp's Business Platform to create a bot. As the name suggests, it is designed for businesses and comes with a limitied free tier + a pay-as-you-go pricing scheme. You can refer WhatsaApp Business Platform's Pricing page for more information.

Long story short, I have to pay Meta a huge amount of money ($$$) compared to Wizmo's revenue (0.000 USD). Because of this, the progress is very slow.

#Support for Instagram

I had planned to provide support for Instagram along with YouTube, TikTok, and Twitter. However, there is no progress on this.

Let's see how it goes.