AI & Automation (vnROM)

Cover image for Xây dựng bot Telegram tải nhạc với n8n + PostgreSQL + yt-dlp: workflow queue xử lý production-ready
Mascot
Mascot

Posted on • Originally published at reddit.com

Xây dựng bot Telegram tải nhạc với n8n + PostgreSQL + yt-dlp: workflow queue xử lý production-ready

Gần đây trên r/n8n có một bài chia sẻ thu hút hơn 50 upvote từ anh em: một workflow n8n hoàn chỉnh để xây dựng bot Telegram tải nhạc. Điểm đáng chú ý là nó không phải demo — tác giả đã triển khai production-ready với queue, PostgreSQL, và xử lý lỗi đầy đủ.

Bot làm được gì

Người dùng gửi link Deezer qua Telegram, bot sẽ:

  • Phân giải track qua SongLink API và tìm bản tương ứng trên YouTube/SoundCloud
  • Tải MP3 bằng yt-dlp
  • Gửi file audio về cho người dùng
  • Lưu metadata vào PostgreSQL (có full-text search với tsvector)
  • Hiển thị nút "Add to Playlist" dưới mỗi file nhạc

Kiến trúc đáng học

Thứ làm mình ấn tượng không phải là chức năng tải nhạc, mà là cách tổ chức workflow:

Tách request handler và queue worker thành hai workflow riêng. Đây là pattern quan trọng khi làm production. Khi một user gửi request tải file lớn, nếu xử lý tuần tự, bot sẽ bị "đơ" với tất cả người khác. Tác giả dùng một workflow để nhận request và đẩy vào queue, workflow thứ hai chuyên xử lý queue — bot luôn phản hồi nhanh dù đang tải file nặng.

Dùng Telegram supergroup làm file storage. Thay vì tốn dung lượng VPS để lưu file nhạc, tác giả gửi file vào một supergroup riêng (private) và dùng đó như storage + log. Cách này tiết kiệm disk đáng kể cho VPS 2GB RAM.

PostgreSQL làm trung tâm dữ liệu. Không chỉ lưu metadata bài hát, tác giả còn cài tsvector để full-text search — người dùng có thể tìm lại bài đã tải. Schema được chia sẻ công khai trên GitLab.

Quản lý người dùng từ admin supergroup. Admin có thể ban/unban user, nhắn tin trực tiếp qua bot — tất cả từ trong Telegram, không cần dashboard riêng.

Production-ready nhưng vẫn miễn phí

Tác giả chia sẻ toàn bộ:

  • JSON workflow cho request handler và queue worker
  • Schema PostgreSQL (bao gồm cả schema cho mini app)
  • Kiến trúc có thể tái sử dụng cho audio, video, AI bot, OCR...
  • Code trên GitLab: gitlab.com/pitsavello/pocketsound

Yêu cầu triển khai:

  • n8n self-hosted
  • PostgreSQL
  • VPS Ubuntu, tối thiểu 2GB RAM

Tác giả cũng có bản nâng cao nội bộ với queue management thông minh hơn, playlist đầy đủ, retry/error recovery tốt hơn, và tài liệu tiếng Anh hoàn chỉnh. Nhưng bản miễn phí đã đủ để anh em bắt đầu và học được rất nhiều.

Ai nên xem workflow này

  • Anh em đang học pattern queue trong n8n — đây là case study thực tế, không phải tutorial
  • Người đang build Telegram bot có xử lý file (audio, video, ảnh)
  • Ai muốn hiểu cách tổ chức multi-workflow trong n8n cho production

Điểm cần lưu ý

Tài liệu hiện tại bằng tiếng Nga (tác giả nói sẽ sớm có bản tiếng Anh cho V2). Tuy nhiên workflow JSON thì import trực tiếp vào n8n là chạy được, không phụ thuộc ngôn ngữ. Anh em nào quen đọc code + schema thì vẫn dùng tốt.

Logic xử lý nhạc có thể thay bằng bất kỳ pipeline nào: tải video, xử lý ảnh bằng AI, OCR tài liệu... Kiến trúc queue + worker là phần giá trị nhất để tái sử dụng.


Một chia sẻ chất lượng từ cộng đồng — đúng tinh thần open-source và học hỏi lẫn nhau mà r/n8n hướng tới.

Top comments (0)