Convert any input context into an mp4 with narration + slides + subtitles + (optionally) an avatar.
When to Use
動画化,解説動画作って,ブログを動画に,記事を動画化,explainer video,context to video- Want to turn release blogs / PR descriptions / meeting minutes / design memos / release notes / learning content into short videos
- Want to mass-produce materials for YouTube / internal study sessions / Teams / X in less time
- If distributing to customers, replace TTS with the official Azure Speech version (default is the free edge-tts endpoint)
Input Sources (any of these works)
| Input | How to obtain |
|---|---|
| Blog/article URL | web_fetch fetch the body with |
| Pasted text | Summarize as-is |
| PR / commit diff | gh pr view + gh pr diff |
| Meeting minutes/design memo | Read file |
| Release Notes | URL or Markdown |
| Free prompt | Ask the LLM to structure it directly |
→ Processing after source acquisition is common (the LLM writes notes/script.json ).
Stack (all free, local)
| Role | Tools |
|---|---|
| Script generation | LLM (the caller of this skill) |
| Slides | Pillow (BIZ UDGothic, etc.) |
| Narration | edge-tts (Edge Neural voices, free, unofficial) |
| Video composition | ffmpeg (imageio-ffmpeg bundled binary allowed) |
| Subtitles | .srt auto-generated |
| Avatar (optional) | SadTalker (GPU recommended) + ffmpeg elliptical mask |
Quick Workflow (no avatar)
pip install edge-tts imageio-ffmpeg pillow
# 1. 入力からscript.json生成 (LLM)
# 2. 動画生成
python scripts\build_video.py --project <project-dir>
# → output\final.mp4 + final.srt
Details: references/script-schema.md / references/setup.md
Avatar Mode (talking-head in corner)
If you have a GPU (VRAM 8GB+), you can add an avatar in the bottom right with SadTalker. Initial setup takes 30–40 minutes in a separate venv (Python 3.10), and thereafter +20–30 minutes per video.
# 既存動画 + 8音声 → アバター合成
python scripts\add_avatar.py --project <project-dir> --face <face.jpg>
# 楕円マスク版を作る
python scripts\ellipse_overlay.py --project <project-dir>
# → output\final_with_avatar.mp4 と final_with_avatar_ellipse.mp4
Setup, pitfalls, character selection: references/avatar.md
Output Layout
<project>/
├── notes/script.json 台本 (LLM が書く)
├── slides/slide_XX.png 1920x1080
├── audio/audio_XX.mp3 スライドごとのナレ
├── avatar/ (任意)
│ ├── input/face.jpg アバター元写真
│ ├── SadTalker/ repo + checkpoints
│ ├── venv/ Python 3.10 + torch cu121
│ └── clips/audio_XX.mp4 各ナレぶんアバター動画
└── output/
├── final.mp4 無印 (スライド+ナレ)
├── final.srt 字幕
├── final_with_avatar.mp4 (任意) アバター矩形
└── final_with_avatar_ellipse.mp4 (任意) アバター円形ワイプ
Defaults
- Resolution: 1920x1080 30fps (16:9)
- Voice:
ja-JP-NanamiNeural(female, calm). For male,ja-JP-KeitaNeural - Number of slides: cover + 5–7 main slides (6–8 total)
- Color scheme: slate-900 / sky-400 / BIZ UDGothic
- 15–25 seconds per slide, 2–4 minutes total
Changing voice, color scheme, font, aspect ratio: references/customization.md
Production Use
Free edge-tts は unofficial, no SLA, commercially gray-area. For customer distribution or continuous operation:
- Narration → Azure Speech (Neural TTS) replace with
- Commercial with avatar → Azure TTS Avatar (Lisa, etc., official, from $0.30/min)
Details: references/production-upgrade.md
Common Variants
- 9:16 short version (X/Reels):
W,H = 1080, 1920, compress narration to 60 seconds - Burn in subtitles: ffmpeg
subtitles=final.srtburn into the video with the filter (ffmpeg-advanced-filters.md) - Add BGM: mix a separate mp3 at low volume (ffmpeg-advanced-filters.md)
- Chapter/course format (learning material): split script.json by chapter, common intro/outro
- Multilingual version:
voiceswitch + translate the script - Channel-fixed character generation: create a mascot with SDXL and save the seed (avatar-generation-sdxl.md)
- VOICEVOX + official character standing art: for "relaxed/friendly explanation" channels like Zundamon, full lip-sync with PSD layer differences (voiced-mascot.md)
- Circular avatar wipe: circular mask + accent ring with ffmpeg geq filter (ffmpeg-advanced-filters.md)
- YouTube auto publishing: public scheduling + thumbnail via API (youtube-upload.md)
- PoC → promotion to regular streaming channel: directory redesign (scale-up-production.md)
Done Criteria
-
<out>/output/final.mp4(or avatar version) can be played, and audio and video are not out of sync - Slide body text 28pt or larger / title 56pt or larger is readable
- Narration correctly reflects the main message of the input
-
final.srtis synchronized with the narration - Does not infringe the copyright of the input source (summary + quotation range, not reading the full text)
- (when using avatar) completes without GPU memory overflow, and lip-sync is not extremely off