Telegram Reel Publisher
スタジオ品質の縦型MP4動画(最大50MB)を、外部npm依存関係なしで、標準のTelegram Bot APIエンドポイントを使用してTelegramに直接アップロードおよびストリーミングする自動化ツールです。
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トークン。- ターゲットの
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 スタジオ品質\n⏱ ワードバイワード同期`);
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 リールを配信/day2- Day 2 リールを配信/reels- 全シリーズコレクションを配信/status- ボットのヘルスとチャットリンクステータス