Journalist - we conduct text online broadcasts through Telegram

    Text broadcasts are increasingly entering our lives. Thanks to modern technology, they are becoming an increasingly attractive way to deliver real-time information to a large audience. Even here, on Habré, text broadcasts of various events have been held more than once. These translations are implemented in different ways. Someone uses the internal functionality of the site, others use off-the-shelf services, still others edit regular text posts altogether, forcing their users to constantly refresh the page or to do this with simple scripts.

    I have long been haunted by the thought that such broadcasts are very similar to the way we share our impressions in instant messengers with friends and acquaintances. And it’s really convenient. We just tell them our story. So the idea was born to create a text translation service, the main and only interface of which is the Telegram bot. Meet - Journalist .

    All you need to do in order to create your broadcast is to add a bot to your contacts , press the corresponding button on its keyboard and enter the name of the broadcast. Just a few seconds - and you're on the air. Today it is the fastest way among similar services, and given the dynamic nature of the events monitored by such broadcasts, this is a serious competitive advantage.

    After creating the broadcast, the bot will give links to the public broadcast page and to the preview page, as well as html code to insert the broadcast on the site and a command to invite other editors to conduct the broadcast.

    Interaction with the bot is designed in such a way that it is a really convenient way of broadcasting. Of course, it will be most comfortable to do this while sitting at the computer, having fast Internet access and slowly drinking your favorite hot drink. But at the same time, for a full-fledged work, a phone or tablet is enough and, thanks to Telegram's undemanding quality of connection, at least some kind of Internet. This makes it possible to work in the field and remain productive, delighting its readers with interesting material from the scene.

    In this regard, I can proudly call JournalistBot one of the first Telegram bots designed to create professional content.


    The service already provides all the necessary functionality for conducting modern text broadcasts. Markdown markup is supported in the message text, so posts can be nicely formatted. Photos can be sent directly to the chat, as an image or as a link. In both cases, it will be correctly inserted into the broadcast. Links to embedded resources are also supported: YouTube, Vimeo, Twitter, Instagram, etc. The editor does not need to go to the website of the target service and get the code to insert, the bot takes care of this task. In addition, the editor has the ability to send a voice message to the chat, video from the camera, location or even a sticker. All this will be instantly delivered to the broadcast readers.

    Posts are collected from messages and are not visible to readers until the "Publish" button is clicked. At the same time, editors can see the post being compiled on the preview page. If the typo nevertheless went unnoticed before the publication itself or if you didn’t publish what you wanted - it doesn’t matter, you can correct the message by editing it by standard means or remove it from the broadcast by sending the “Delete” command as a reply to this message. Changes will automatically be displayed to all readers of the broadcast.

    To work in a team, it is possible to connect several editors to one broadcast. To do this, after creating the broadcast, the bot, along with the rest of the information, sends a command/join <токен>. By sending this command to the bot, another editor will join the broadcast. Messages from each editor form separate posts, therefore, working in parallel, they will not interfere with each other. For such broadcasts, it is possible to display the author of each post, which is included in the settings.

    The target audience

    As a target audience, media sites and bloggers are primarily considered. In this case, the usage scenarios are obvious, and the benefit of using the service is that you don’t have to worry about the technical component of the broadcast and you can be sure that hundreds and thousands of users will receive updates as quickly as possible. You can see here how the live broadcast built into the blog looks like .

    However, nothing prevents ordinary users who do not regularly conduct such broadcasts from taking and trying, because the broadcast has a public page ( example), a link to which is enough to distribute among its readers. Therefore, if we take an example completely opposite to the media, you can go on vacation to create a broadcast and send a link to it to your friends to keep them informed of their adventures.

    The bot allows you to simultaneously conduct several broadcasts and switch between them through the menu.

    Under the hood

    The service is fully implemented on node.js and is designed in such a way that it can be easily scaled horizontally. This allows you to impose a model on it: there is an audience → there is money → we add the server. As practice has shown, this approach is very convenient due to the fact that there is no need to start on expensive equipment and never have to wait for its high load, while with an increase in load, you can quickly respond to this without the need to “rewrite everything from scratch”. The whole system is deployed in Docker containers, which are automatically assembled in GitLab CI, this greatly simplifies the deployment of the system and makes its updating and expansion an even more trivial process. The file storage is also implemented in such a way that at any time you can easily migrate to services like Amazon S3 and implement CDN.

    Great emphasis is placed on performance. When loading a page, the user does not notice a separate download of the broadcast, the page looks monolithic. While this does not work in 100% of cases, but after expanding the network of servers and geo-distributing requests, everything should become much better. However, the delay is already minimal. This in turn affects SEO optimization. Broadcasts inserted on the site will be indexed by all modern search engines, as only the necessary minimum of manipulations with the DOM is made and search engines are ready to wait for them when indexing the page.

    Known Issues

    Because Telegram bot keyboards appeared relatively recently, not everything is smooth with them yet. For example, there is a problem in the client for Android - when responding to a message (Reply), the bot’s keyboard disappears and there is no way to call it. This makes it difficult to change the type of post and delete it. So far, as a workaround, you can send this command with a button to the chat, and then copy it in response to the message. I hope that in the near future this will be fixed by the developers of the client. Under iOS and Mac OS, this is not a problem.

    At the moment, there is no way to use the bot in group chat, which would be very convenient for working in a team. And again, the bot keyboard. In group chat, keystroke sends a message always as a response to a bot message and there is no way to send it just to chat, like new. This makes it difficult to implement the same functionality that is available in private chat, so we wait until the corresponding opportunity appears in Telegram or until a good idea comes to my mind how to get around this limitation nicely.


    Now I want to get a response from potential users of the service, to understand how much it is in demand, what functions they would like to see in it. Of course, at the same time I have my own plan for the development of the functionality, which I gradually implement in parallel with the introduction of changes according to the feedback of the first users. For example, one of the next major updates should be getting statistics on broadcast readers in the bot interface.

    A week ago, unexpectedly for me, the project was focused on ProductHunt , got on the main page and collected a good amount of votes, although if it were a prepared launch, a much better result could be achieved. On the one hand, such a spontaneous launch frustrated my plans a little, but on the other, it means that the project is still in demand.

    Waiting for your feedback and your broadcasts. I will be happy to answer questions in the comments, you can also write to . Thanks for attention.

    Also popular now: