動画の自動切り抜きAIをVPS上で動かしてYouTube ShortsやTikTokを量産する
最初に結論を書いておきます
VPSで動かす。GPUは要らない。CPUで十分。
「GPU搭載VPSじゃないと動画処理できない」みたいな記事を見かけることがあるんですが、はっきり書いておきます。FFmpeg+Whisperの切り抜き自動化にGPUは不要です。 CPU 8コアあれば普通に動きます。GPU搭載プランを推してくる記事は、単純に単価の高いプランを売りたいだけの可能性が高い。
それと、自分のPCでやろうとするのもやめた方がいい。「夜間バッチで処理させたいのにPCの電源落とせない」「外出先で何かあったらリモートデスクトップで繋がないといけない」——これ、全然手放しにならないので精神的にしんどい。VPS上に環境を作ってcronで回す、これが正解。
VPS選びの結論:
- 月間コスト重視 → XServer VPS(8GBプラン 2,200円〜)
- 長期で安定稼働させたい → さくらのVPS(8GBプラン 2,189円〜)
どちらも月3,000円以内で「1日20本処理」の環境が作れます。1日あたり100円以下。手作業で1本30分かかる作業を毎日やることを思えば、コスパの話にすらならない。
切り抜き動画の量産を自動化する時代
YouTube チャンネルの切り抜き、ポッドキャストのハイライト、セミナーのショート化。手作業でやれば 1 本 30 分かかる作業も、VPS 上の自動化パイプラインを構築すれば夜中に何本でも処理できます。
VPS で動画処理を自動化するメリット:
- ローカル PC を占有しない(夜間バッチ処理)
- 長尺動画を複数並列処理できる
- Webhook で外部サービスとトリガー連携できる
体感として、「自動化の仕組みを作る最初の1〜2時間」さえ乗り越えれば、あとは寝てる間に動いてます。最初だけ踏ん張れればいい。
必要なVPSスペック
| 処理量 | CPU | メモリ | ストレージ |
|---|---|---|---|
| 1日5本以下 | 4コア | 8GB | 100GB |
| 1日20本程度 | 6コア | 16GB | 200GB |
| フル自動量産 | 8コア | 32GB | 500GB |
動画ファイルはサイズが大きいため、ストレージは多めに確保しておきます。処理済みファイルを外部ストレージに移す運用でも OK です。
自分の判断を加えておくと、 まずは「1日5本以下」の4コア・8GBプランで始めるのがいい。物足りなくなったらスケールアップすればいい。最初からフル構成を買う必要はないです。月2,200円から始めて、運用しながら判断する。それで十分。
おすすめVPS比較
🥇 XServer VPS
I/O 性能が高く、大容量動画ファイルの読み書きが速い。FFmpeg の並列処理も快適。
| 項目 | 内容 |
|---|---|
| 8GBプラン月額 | 2,200円〜 |
| ストレージ | NVMe SSD |
| 転送量 | 無制限 |
正直なところ、 動画処理でI/O速度は地味に重要です。NVMe SSDで転送量無制限、これは動画ファイルを大量に扱う用途にはありがたい。月2,200円固定なので「今月いくら使ったっけ」って計算しなくていいのも精神的にラク。
🥈 さくらのVPS
長期利用で割引が効く。安定した帯域でアップロード処理にも安心。
| 項目 | 内容 |
|---|---|
| 8GBプラン月額 | 2,189円〜 |
| 安定性 | 国内トップクラス |
| 長期割引 | あり |
自分の場合、 cron で毎日同じ時間に回し続けるような「継続運用」には、安定性の実績があるさくらも選択肢として十分あり。長期契約の割引を使えばさらに安くなるので、「もう完全に運用フェーズに入った」という人はさくらで契約してしまうのもいい判断だと思います。
自動切り抜きパイプラインの構築
ここから実際の構築手順です。「難しそう」と思うかもしれないけど、コマンドをそのまま流せばほぼ動きます。手を動かしながら読んでください。
ステップ1:必要ツールのインストール
sudo apt update && sudo apt upgrade -y
sudo apt install -y ffmpeg python3 python3-pip
pip3 install faster-whisper scenedetect[opencv] yt-dlp
faster-whisper を使うのがポイントで、オリジナルのWhisperより軽い。CPUでも現実的な速度で動くのはこっちのおかげです。
ステップ2:元動画のダウンロード
# YouTube から最高画質でダウンロード
yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]" \
-o "/var/videos/%(title)s.%(ext)s" \
"https://www.youtube.com/watch?v=動画ID"
一点だけ先に言っておきます。 自分のコンテンツ、または切り抜き許可を明示しているチャンネルの動画だけ使ってください。他人の動画を無断で切り抜いて投稿するのは著作権侵害です。ツールの話をする前に、これだけは最初に書いておきたかった。
ステップ3:シーン検出で自動分割
scenedetect を使って映像の場面転換を自動検出し、セグメントに分割します。
from scenedetect import VideoManager, SceneManager
from scenedetect.detectors import ContentDetector
video_manager = VideoManager(["input.mp4"])
scene_manager = SceneManager()
scene_manager.add_detector(ContentDetector(threshold=27.0))
video_manager.set_downscale_factor()
video_manager.start()
scene_manager.detect_scenes(frame_source=video_manager)
scenes = scene_manager.get_scene_list()
for i, (start, end) in enumerate(scenes):
print(f"Scene {i}: {start.get_seconds():.1f}s → {end.get_seconds():.1f}s")
threshold=27.0 の数値は調整できます。低くすると細かく分割、高くするとざっくり分割。素材によって変わるので、まず動かして確認してから調整してください。
ステップ4:Whisper で字幕付き切り抜きを生成
from faster_whisper import WhisperModel
import subprocess
model = WhisperModel("small", device="cpu", compute_type="int8")
def clip_with_subtitle(input_path, start, end, output_path):
# 音声を一時抽出
tmp_audio = "/tmp/clip_audio.mp3"
subprocess.run([
"ffmpeg", "-y", "-i", input_path,
"-ss", str(start), "-to", str(end),
"-vn", "-ar", "16000", tmp_audio
])
# Whisper で文字起こし → SRT 生成
segments, _ = model.transcribe(tmp_audio, language="ja")
srt_path = "/tmp/subtitle.srt"
with open(srt_path, "w") as f:
for j, seg in enumerate(segments, 1):
f.write(f"{j}\n{seg.start:.3f} --> {seg.end:.3f}\n{seg.text}\n\n")
# 字幕を焼き込みして縦型(9:16)にクロップ
subprocess.run([
"ffmpeg", "-y", "-i", input_path,
"-ss", str(start), "-to", str(end),
"-vf", f"crop=ih*9/16:ih,scale=1080:1920,subtitles={srt_path}:force_style='FontSize=24'",
"-c:v", "libx264", "-crf", "23",
output_path
])
ここでもGPUの話をしておきます。 device="cpu" で動かしています。「GPUにすれば速い」のはそうなんですが、月数万円のGPU VPSを借りるコストに見合うかというと、動画切り抜き用途では見合わないです。CPU(faster-whisper + int8量子化)で十分な速度が出ます。コスト最適化を考えるなら、CPUプランで全然いい。
ステップ5:バッチ処理の自動化
#!/bin/bash
# cron で毎日3時に実行
INPUT_DIR="/var/videos/raw"
OUTPUT_DIR="/var/videos/shorts"
for video in "$INPUT_DIR"/*.mp4; do
[ -f "$video" ] || continue
python3 /opt/clipper/process.py "$video" "$OUTPUT_DIR"
echo "[$(date)] Processed: $video" >> /var/log/clipper.log
done
# crontab に登録
0 3 * * * /opt/clipper/batch.sh
これを仕込んだら、あとは素材を /var/videos/raw に置くだけで朝には切り抜きが出来上がっています。これが「手放し」の状態。自分のPCでやっていたときは、これができなかった。
Shorts 向け最適化チェックリスト
| 項目 | 設定値 |
|---|---|
| 解像度 | 1080 × 1920(縦型) |
| 長さ | 30〜60 秒が最適 |
| 字幕フォントサイズ | 24〜28px |
| ビットレート | 8〜12 Mbps |
| フレームレート | 30fps |
TikTokとYouTube Shorts、設定はほぼ共通でいいです。1080×1920のmp4(H.264)を作っておけば両方に使い回せます。プラットフォームごとに別エンコードする必要はない。
よくある質問(FAQ)
まとめ:あなたの使い方で選ぶ
FFmpeg + Whisper + scenedetect を VPS に組み合わせることで、動画切り抜きから字幕付与・縦型変換まで全自動化できます。一度パイプラインを構築すれば、夜間バッチで毎日コンテンツを量産できます。
どのVPSを選ぶか、使い方別の判断テーブルです:
| あなたの状況 | おすすめ | 理由 |
|---|---|---|
| まず試したい・費用固定で管理したい | XServer VPS | 月2,200円固定、NVMe SSD、転送無制限。コスト計算不要 |
| 長期で安定稼働させたい | さくらのVPS | 長期割引あり、国内トップクラスの安定性 |
| 「GPU VPSじゃないと無理」と思ってる | どちらでも CPUプランで十分 | GPUは不要。faster-whisper + CPU + int8量子化で動く |
| 自分のPCでやろうとしてる | やめてVPSにした方がいい | 電源落とせない・手放しにならない・精神的コストが高い |
費用感のまとめ:
- XServer VPS 8GBプラン:月2,200円 = 1日あたり約73円
- さくらのVPS 8GBプラン:月2,189円 = 1日あたり約73円
- 1日20本の切り抜きを手作業でやった場合(1本30分):1日10時間作業
どう見ても月2,200円は安い。
このパイプライン、最初に構築するのに数時間かかるのは確かです。でもこれが「最終回答」じゃないんだから、まずは動かしてみてください。動かしてから「ここを変えたい」が出てくるのが普通で、そのときにまた調整すればいい。完璧な設計を目指して始めない方がいい。