Publicador de Reels para Telegram
Automatiza la subida y transmisión de videos MP4 verticales de calidad de estudio (hasta 50 MB) directamente a Telegram utilizando los endpoints estándar de la API de Bot de Telegram, sin dependencias externas de npm.
flowchart LR
A[Reel MP4 renderizado] --> B[telegram_bot.js]
B --> C[API de Bot de Telegram /sendVideo]
C --> D[Chat de Usuario / Canal]
D --> E[Comandos interactivos /reels, /day1, /status]
Cuándo usarlo
- Has renderizado un video MP4 (especialmente reels verticales 1080x1920 9:16) y deseas entregarlo inmediatamente a Telegram.
- Deseas un bot de Telegram interactivo donde los usuarios puedan solicitar reels bajo demanda.
- Deseas una entrega automatizada en el pipeline después de que termine la renderización del video.
Requisitos previos
- Node.js 18+ (usa
fetch,FormDatayBlobnativos). - Un Token de Bot de Telegram de
@BotFather. - Un
chat_idde destino (obtenido automáticamente cuando un usuario hace clic en/start).
Configuración: telegram_config.json
{
"bot_token": "TU_TOKEN_DE_BOT_AQUÍ",
"chat_id": "TU_CHAT_ID_AQUÍ",
"bot_name": "Peak Lyrics",
"bot_username": "PeakLyricsBot",
"auto_upload": true
}
Configuración y enlace automatizado
Ejecuta el script de configuración con tu token de bot:
node setup_telegram.js <TU_TOKEN_DE_BOT>
- Verifica el token con
getMe. - Imprime el enlace de tu bot (
https://t.me/<nombre_de_usuario_del_bot>). - Espera a que el usuario presione
/starten Telegram. - Captura y guarda el
chat_idautomáticamente entelegram_config.json. - Entrega inmediatamente los reels pendientes.
Flujo de trabajo de subida directa a la API
const fs = require('fs');
const path = require('path');
async function sendReelVideo(videoPath, { day, songTitle }, chatId, botToken) {
const blob = await fs.openAsBlob(videoPath);
const form = new FormData();
form.append('chat_id', chatId);
form.append('video', blob, path.basename(videoPath));
form.append('caption', `🎬 <b>Día ${day}</b>: <i>${songTitle}</i>\n✨ Calidad de estudio 1080x1920\n⏱ Sincronización palabra por palabra`);
form.append('parse_mode', 'HTML');
form.append('supports_streaming', 'true');
form.append('width', '1080');
form.append('height', '1920');
const res = await fetch(`https://api.telegram.org/bot${botToken}/sendVideo`, {
method: 'POST',
body: form
});
return await res.json();
}
Ejecutar el listener del bot interactivo
node telegram_bot.js listen
Responde a:
/starto/help- Resumen y menú/day1- Entrega el Reel del Día 1/day2- Entrega el Reel del Día 2/reels- Entrega la colección completa de la serie/status- Estado del bot y estado del enlace del chat