Chuddy adds self-hosted Telegram media downloads and OCR

Chuddy is a self-hosted Telegram bot that downloads audio and video from more than 1,000 yt-dlp-supported sites. It also adds OCR, translation, and a REST API for managing download tasks.

Chuddy adds self-hosted Telegram media downloads and OCR

Chuddy is a self-hosted Telegram bot that can download audio and video from more than 1,000 sites supported by yt-dlp, then send the files back into Telegram. The project also includes OCR for images, text translation, and a REST API for triggering and tracking download jobs.

The project was posted on Hacker News as “Show HN: Chuddy, self-hosted media downloading, translation and OCR Telegram bot.” According to the post, the tool was built by Riley, with a Yandex Translation script by Intruder Alert. It is designed to run in Docker and Docker Compose, and it works in private chats or groups.

⚡ New to this?

This is news because it combines several common automation tasks into one self-hosted tool: media downloading, OCR, translation, and API control. OCR means optical character recognition, which turns text inside images into editable text. A REST API is a web interface other software can call to create and manage jobs.

🦞 OpenClaw angle

If you build self-hosted agents, Chuddy is a good example of how to split a bot into separate worker, API, and storage services. Keep credentials and cookies in separate config files, and treat cookie-based access as sensitive data that should not live in the same place as your bot token. If you expose a similar tool publicly, change default database and queue passwords before launch and put the API behind your own auth layer, since Chuddy’s API is described as having no auth by default.

Chuddy uses yt-dlp for media downloads and FFmpeg for processing. Users can paste a video URL into Telegram and then use commands such as .v for video, .a for audio, .ocr to extract and translate text from an image, and .tr to translate text into English. The bot can also upload downloaded files directly back to Telegram, or save them to local storage instead.

For sites that require login, Chuddy supports cookie-based authentication. The source instructions say cookies should be exported in Netscape format and placed in app_worker/cookies/cookies.txt. The project also lets users customize yt-dlp options by copying a default config file and editing a user override file.

The REST API runs on localhost:1984 by default, according to the post, and Swagger docs are available at /docs. The API includes endpoints for health checks, starting new download tasks, listing and deleting tasks, and checking task statistics. Example requests in the post show how to submit a URL and choose whether the media should be saved to disk.

Chuddy’s configuration is split across several environment files, including common.env, api.env, bot.env, and worker.env. The post says the default database passwords should be changed for any public-facing deployment, and it gives an example of generating a stronger password with openssl rand -base64 32.

The project also supports admin notifications about yt-dlp updates, adjustable download concurrency, and a configurable thumbnail frame for short videos. By default, downloaded files are saved to ./files on the host, mapped into the container as /filestorage, though that path can be changed in docker-compose.yml.

The post says Chuddy runs as a set of Docker containers: chuddy_bot for the Telegram interface, chuddy_worker for downloads, chuddy_api for programmatic access, and supporting PostgreSQL, RabbitMQ, and Redis services. It is released under the BSD 3-Clause License, and the author says it is intended only for content the user has the right to download, such as Creative Commons media.

Source: HN Show HN ↗

More from OpenClaw News