SuperAPI AI Directory

context-to-video

Design & creation

View repository

Updated 10-15 16:47

About this skill

Context → Video

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.srt burn 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: voice switch + 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.srt is 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