Telegram Reel Publisher
스튜디오 품질의 세로 MP4 동영상(최대 50MB)을 표준 Telegram Bot API 엔드포인트를 사용하여 Telegram에 직접 업로드하고 스트리밍합니다. 외부 npm 의존성이 전혀 없습니다.
flowchart LR
A[렌더링된 Reel MP4] --> B[telegram_bot.js]
B --> C[Telegram Bot API /sendVideo]
C --> D[사용자 / 채널 채팅]
D --> E[대화형 명령어 /reels, /day1, /status]
사용 시기
- 렌더링된 MP4 동영상(특히 1080x1920 9:16 세로 릴)을 가지고 있으며 Telegram에 즉시 전달하려는 경우.
- 사용자가 주문형 릴을 요청할 수 있는 대화형 Telegram 봇을 원하는 경우.
- 동영상 렌더링 완료 후 자동화된 파이프라인 전달을 원하는 경우.
사전 요구 사항
- Node.js 18+ (기본
fetch,FormData,Blob사용). @BotFather로부터 받은 Telegram Bot Token.- 대상
chat_id(사용자가/start를 클릭하면 자동으로 획득).
구성: telegram_config.json
{
"bot_token": "YOUR_BOT_TOKEN_HERE",
"chat_id": "YOUR_CHAT_ID_HERE",
"bot_name": "Peak Lyrics",
"bot_username": "PeakLyricsBot",
"auto_upload": true
}
설정 및 자동 연결
봇 토큰을 사용하여 설정 스크립트를 실행하세요:
node setup_telegram.js <YOUR_BOT_TOKEN>
getMe로 토큰을 확인합니다.- 봇 링크(
https://t.me/<bot_username>)를 출력합니다. - 사용자가 Telegram에서
/start를 누를 때까지 기다립니다. chat_id를 자동으로 캡처하여telegram_config.json에 저장합니다.- 대기 중인 릴을 즉시 전달합니다.
직접 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>Day ${day}</b>: <i>${songTitle}</i>\n✨ 1080x1920 Studio Quality\n⏱ Word-by-word synced`);
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();
}
대화형 봇 리스너 실행
node telegram_bot.js listen
다음 명령어에 응답합니다:
/start또는/help- 개요 및 메뉴/day1- Day 1 Reel 전달/day2- Day 2 Reel 전달/reels- 전체 시리즈 컬렉션 전달/status- 봇 상태 및 채팅 링크 상태