サービスを開発したので、サービス紹介動画をAIを使って紹介していきたいと思います。
windows11
方法は以下からいろいろなやり方が公式として出てる
https://nodejs.org/ja/download
node -v
npm -v
npm install -g mulmocast
mulmo --version
https://www.gyan.dev/ffmpeg/builds/
choco install ffmpeg
# アップデートしたい場合は
choco upgrade ffmpeg -y
ffmpeg -version
本格的にサービス紹介動画を作る前に、最小構成のスクリプトで mp4 が1本出るところまでを先に通しておく。ここがコケると後工程で原因切り分けが面倒になるので、Hello World を1本通してから本番に入る。
PowerShell で以下が全部通ることを確認:
node -v
npm -v
mulmo --version
ffmpeg -version
mulmo --version が出れば CLI は入っている。ffmpeg -version が通らない場合は前のセクションに戻ってインストール/PATH 設定を見直す。ffmpeg が無いと音声・画像までは作れても mp4 への結合で必ず転ぶ。
デスクトップに作業フォルダを切る:
cd $env:USERPROFILE\Desktop
mkdir mulmo-service-video
cd mulmo-service-video
.env を作るmulmocast 公式 README は プロジェクトフォルダに .env を置いて API キーを設定する 方式を採用している。
notepad .env
最低限はこれだけ:
APIキーを作るときは、RestrictKeyをONにする。
有効にするのは、"Text to Speech"だけでよいです。
声の一覧もほしい場合は、"Voices"も有効にする。が、mulmocastでVoice IDを直接指定する使い方なら不要です。
APIの設定でProject Limitsを確認しましょう。
が使える設定にしておきましょう。
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
オプションは後から追加できる:
# 画像品質を上げる
DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1
# ElevenLabs の声を使う場合
# https://elevenlabs.io/app/api
ELEVENLABS_API_KEY=xxxxxxxxxxxxxxxx
.env は絶対に Git に上げない。.gitignore に .env を必ず入れる。値はクォートで囲わない(OPENAI_API_KEY=sk-... の形が正、"sk-..." にすると読めない実装がある)。
test_beats.json を書くnotepad test_beats.json
中身:
{
"$mulmocast": {
"version": "1.1"
},
"beats": [
{
"text": "毎日の予約管理、電話メモと付箋でなんとか回していませんか?"
},
{
"text": "予約くんは、すべての予約をひとつの画面にまとめます。"
},
{
"text": "操作はワンタップ。本来の仕事に集中できる時間が戻ってきます。"
}
]
}
ここでは架空の予約管理サービス「予約くん」を例にしています。以降のサンプルも同じサービスを題材にしますが、実際は自分のサービスの内容に差し替えてください。
MulmoScript の最小単位は $mulmocast バージョンと beats 配列だけ。画像も声もデフォルトで自動生成される。
mulmo movie test_beats.json -l ja -c ja
| フラグ | 意味 |
|---|---|
-l ja |
日本語音声で生成 |
-c ja |
日本語字幕付き動画を生成 |
成功すると output/ 配下に成果物ができる:
output/
├── audio/ ナレーション音声(シーンごと)
├── images/ AI生成画像
├── cache/ キャッシュ
└── test_beats.mp4 最終成果物
ここまで通ればセットアップ完了。
[ ] mulmo --version が通る
[ ] ffmpeg -version が通る
[ ] .env に OPENAI_API_KEY を設定済み
[ ] test_beats.json から output/ に mp4 ができた
詰まったときの典型原因は2つ:
.env の API キーが空・誤り・クォート付き → クォートなしの素の値で書くいきなり90秒の本番動画を組むより、まず対話モードで短い版を作ってツールの感触を掴むのがおすすめ。
mulmo tool scripting -i -o ./ -s story
対話プロンプトに以下のような内容を入力:
中小規模の店舗オーナー向けに、電話やLINEでバラバラだった予約を
ひとつに集約する「予約くん」というサービスの紹介動画を作りたい。
トーンは親しみやすく、信頼感のある日本のB2B SaaS。
対象は飲食店・サロン・クリニックなど。
動画は60秒。
特に「操作が簡単」「ダブルブッキングを防げる」を強調。
mulmocast が MulmoScript の .yaml を生成してくれるので、そのファイル名を mulmo movie {生成されたファイル} に渡せば1分動画が出る。ここまで通れば、次の「1. ChatGPTで営業台本を作る」以降の本番ワークフローに進む準備が整っている。
まずは ChatGPT(または Claude)に紹介台本を書かせる。いきなり「動画の台本作って」と投げるとブレるので、対象視聴者・尺・シーン数・トーンを最初に固定するのがコツ。
プロンプト例:
あなたはサービス紹介動画の構成作家です。
以下のサービスについて、90秒・5シーン構成の紹介動画台本を書いてください。
【サービス】(架空の例。実際は自分のサービスの内容に差し替える)
- 名前: 予約くん
- 対象: 中小規模の店舗オーナー(飲食店・サロン・クリニック など)
- 提供価値: 電話・LINE・口頭でバラバラだった予約を1画面に集約し、
ダブルブッキングや当日連絡の取りこぼしを防ぐ
- 差別化: 大手予約サービスより安価、店舗側の操作が圧倒的に簡単
【出力形式】
各シーンを以下のJSONで出力してください(後続ツールで読み込むため)。
{
"scene": 1,
"narration": "ナレーション原稿(口語、20〜30秒で読める長さ)",
"visual": "画面に映すもの(テキスト指定 or 用意するキャプチャ名)"
}
JSON で吐かせるのは次の MulmoScript 変換ステップに流し込みやすくするため。日本語の口語ナレーションは LLM がやや硬くなりがちなので、最後に「もう少し営業のセリフっぽく、語尾を柔らかく」と1往復してから採用すると馴染む。
mulmocast は MulmoScript(YAML/JSON 形式)を入力にとる。Step 1 のJSONを ChatGPT に渡して「これを MulmoScript 形式に変換して」とお願いすれば概ね通る。
最小構成の骨格(script.yaml):
title: "予約くん 紹介"
lang: "ja"
beats:
- text: "電話、LINE、当日の口頭予約、バラバラに管理していませんか?"
imagePrompt: "busy small shop owner with phone and notebook, flat illustration"
- text: "予約くんは、すべての予約をひとつの画面にまとめて見える化します。"
imagePrompt: "clean reservation dashboard on a tablet, modern flat design"
- text: "管理者は予約一覧をひとめで確認、変更はワンタップで反映されます。"
image: "assets/reservation_screen.png"
要点:
imagePrompt を入れておくと mulmocast 側で AI 画像生成してくれるimage: assets/xxx.png を指定# 公式サンプルとスキーマを確認
mulmo --help
# scripts/ サンプルは GitHub の mulmocast/mulmocast-cli を参照
最初は公式サンプル .yaml を1本コピーしてきて、beats: だけ自分の台本に差し替えるのが事故が少ない。
script.yaml が用意できたら、生成は1コマンド。
# 動画ファイル生成(mp4)
mulmo movie script.yaml
# 途中段階で音声だけ確認したい場合
mulmo audio script.yaml
API キーは Hello World セクションで作った .env をそのまま流用する(同じ作業フォルダ内なら自動で読まれる)。別フォルダで動かす場合は .env をコピーするか、PowerShell で一時的に環境変数を立てる:
$env:OPENAI_API_KEY="sk-..."
output/ 配下に mp4 と srt(字幕)が出る。ここで一旦再生して、
をチェック。読み間違いは台本の該当箇所をカタカナにする / ふりがなを足すだけで直る(例: サービス名「予約くん」が英語っぽく読まれる、「API」が「エーピーアイ」と「アピ」で揺れる → カタカナ表記に置き換える)。
AI生成画像だけだとサービス紹介としてのリアリティが弱い。実際の管理画面、ダッシュボード、利用者向けの操作フロー画面 — このあたりは実物を見せた方が説得力が段違いに上がる。
撮り方:
MulmoScript への差し込み:
beats:
- text: "管理画面では、当日の予約状況がひとめで確認できます。"
image: "assets/dashboard.png"
# 動きを見せたい場合は動画
# movie: "assets/dashboard_demo.mp4"
キャプチャは assets/ のような場所にまとめて、script.yaml から相対パスで参照する。後で差し替えが効くので、最初は荒くてもいい。
mulmocast の出力はそのままでも使えるが、最後の仕上げだけ GUI ツールが圧倒的に速い。
| ツール | 得意なこと |
|---|---|
| Vrew | 字幕の誤認識修正、テロップのフォント/位置調整 |
| Canva | タイトルカード・エンディングカード、ロゴ重ね |
| CapCut | BGM 追加と音量調整、トランジション、効果音、ジャンプカット |
私のワークフロー:
mulmo movie script.yaml で本体生成(mp4 + srt)完成した動画は YouTube 限定公開にしておけば、営業資料の表紙ページ、サービス LP のヒーローセクション、SNS の固定投稿など、どこにでも埋め込みリンクで貼れる。
ここまでハウツーとして書いてきましたが、実際に1本通してみて見えた正直な評価を残します。販促ではない実体験ベースの話なので、これから触る人の判断材料に。
「AI動画生成」という言葉から動きのある映像をイメージすると、ギャップがあります。mulmocast の出力は実態として:
の組み合わせ。動画というより 音声付きスライドショー と呼ぶ方が実態に近いです。
OpenAI API で計算すると:
| 内訳 | 単価 | 1スライド分(4-6 beats) |
|---|---|---|
| 画像 (gpt-image-1) | $0.04〜$0.17/枚 | $0.16〜$1.02 ← 支配的 |
| 音声 (gpt-4o-mini-tts) | 約 $0.005/15秒 | $0.02〜$0.05 |
→ 画像生成のクオリティ設定がコストの90%以上を占めます。
10本のスライド動画を作って、満足のいく品質になるまで 4-5 回作り直すと、$20〜$50 飛ぶ計算。$10 の課金がアッという間に切れるのはこのため。
これが個人向けには致命的:
JSON 編集 → CLI 実行 → API 待つ → mp4 確認 → 違和感あれば戻る
↑ ここで毎回 $0.5〜$1 消える
GUI ツール(Vrew / Canva)なら画面を見ながら何度でも調整できますが、mulmocast は CLI ループのため、1リテイク = $1 + 数分待ち。心理的にも金銭的にも重い。
しかも動画と音声の両方の完成度が高くないと取り直しになるので、リテイク発生率が高い。
「サブスクで何とかならんか」と思って調べると、OpenAI Platform API は ChatGPT Plus とは別課金。これは API 開発の常識ですが、初見だとハマります。
代わりに Gemini API の無料枠を使う、ElevenLabs の月額プランで音声だけ賄う、などの逃げ道はあります。
| ツール | 月額 | 強み |
|---|---|---|
| Canva Pro | ¥1,180/月(月払い)または ¥8,300/年(実質 ¥691/月) | AI ナレーション込み、スライドアニメ、作り直し放題 |
| PowerPoint 標準 | ¥0(Office あれば) | スライドショー → 録音 → 動画書き出し |
| Vrew | 約 ¥1,000〜 | AI 字幕・ナレーション、GUI 編集快適 |
B2B 営業動画を一人で作るなら、現時点では Canva Pro が一番バランスが良い が個人的結論。
否定だけだと不公平なので、本領も書いておきます:
→ 個人の単発制作には過剰。サービス組み込み・自動化パイプラインで真価が出るツール。
一回限りの個人制作 → Canva Pro
100本以上のバッチ生成 → mulmocast
サービスへの組み込み → mulmocast
mulmocast は「使えなくはない」けど、個人の単発制作のためのツールではない。
当初の目論見は「mulmocast で 1 本動画を作る」でしたが、ツールの強みと用途のミスマッチでした。これは触ってみないと分からなかったことなので、その記録としてこの記事を残します。
「やってみた結果、こうだった」は、検索しても出てこない情報です。次に触る人の試行錯誤を1ステップ減らせれば。