ショート動画制作エージェント
テーマから完成MP4まで制作する。Codexが原稿・演出・素材制作を担当し、同梱スクリプトが音声の実測時間に合わせて画像とBGMを合成する。常駐サービスではなく、チャットで呼び出す制作スキル。
入力と標準設定
- テーマ・メモ・資料URL・既存原稿のいずれかを受け取る。テーマ自体がない場合はテーマを尋ねる。
- 未指定なら日本語、9:16、1080×1920、30fps、約45秒、親しみやすい語り口。尺・声・画風・掲載先の指定を優先する。
- 番組名、AIちゃんのキャラクター、ラジオの挨拶、本編への誘導は自動挿入しない。
- 出力は
output/shorts/<日時>-<テーマ>/にまとめる。修正版は新しいフォルダーへ出力する。
制作
- テーマの伝えたいことを1つに絞り、冒頭の引きつけ→具体例・説明→短いまとめの原稿を作る。30秒で約120〜150文字を初期目安にし、最終的には生成音声の実測尺で調整する。最新情報や数値は資料・一次情報を確認し、参照先を記録する。
- 原稿を意味のまとまりごとのシーンに分ける。各シーンに読み上げ文・画像指示・画面上の短いテキストを設定する。構成確認の指定がなければ制作を進める。
- 利用可能な画像生成ツールとそのスキルを確認してシーン画像を生成する。画風・人物・色を統一し、縦型の安全領域を意識する。画像内に長い原稿を書き込まない。必要な生成ツールが使えなければ状況を伝え、ユーザー素材の利用など可能な工程を進める。ダミー画像を完成素材として扱わない。
- 利用可能なTTSでシーン別のナレーションを作る。APIを使う場合は現在の公式仕様を確認し、認証情報は環境変数等で受け取る。Macのローカル音声でよければ
say -v Kyoko -f narration.txt -o narration.aiffが使える(先にsay -v '?'で存在を確認)。音声方式を記録する。希望の声が使えない場合は無断で別人の声に置き換えない。読み間違い・不自然な間・尺を確認し、長ければ原稿を短くして再生成する。 - BGMはユーザー提供曲、利用条件を確認できる音源、利用可能な音楽生成ツールから選ぶ。曲名・出典・利用条件を
credits.mdに残す。指定がなく音源がない場合は同梱のmake_bgm.pyで簡単なオリジナルのインストBGMを作れる。これは音符から合成する簡易伴奏であり、音楽生成AIの出力とは説明しない。ナレーション中は音量を下げる。 - 下記形式の
manifest.jsonを保存し、render.pyを実行する。画像・音声・BGMのパスはmanifestからの相対パスまたは絶対パス。ナレーションを早回し・切り捨てせず、各音声長+約0.2秒でシーンを作る。標準レンダラーは静止画切り替えとSRTの別添に対応する。動きや焼き込み字幕が必要ならRemotion等で追加実装してから納品する。別添SRTだけで字幕入り動画と説明しない。 - MP4の解像度・音声映像・尺・全体デコードを検証し、抽出フレームで画像の切れや見づらさを確認する。試聴可能なら音量・発音・BGMとのバランスを確認。試聴できなかった場合はその範囲を明記する。希望尺を大きく外れたら原稿・音声を調整する。
- 完成MP4、原稿、SRT、manifest、素材出典をリンクで返す。実際に完了した工程と未確認点を区別する。投稿は依頼された場合に限る。
合成コマンド
必要環境: Python 3、ffmpeg、ffprobe。Pythonの追加パッケージは不要。
{
"bgm": "bgm.wav",
"scenes": [
{"image": "scene-01.png", "audio": "scene-01.aiff", "text": "読み上げる原稿です。"},
{"image": "scene-02.png", "audio": "scene-02.aiff", "text": "次のシーンの原稿です。"}
]
}
python3 <skill-dir>/scripts/make_bgm.py /absolute/output/bgm.wav --seconds 60
python3 <skill-dir>/scripts/render.py /absolute/output/manifest.json --output /absolute/output/render-v1
render-v1/final.mp4、captions.srt、timing.json が出力される。シーン字幕はシーン単位の時刻で、単語ごとの同期ではない。失敗時は完成済み素材を再利用し、原因を修正して新しい出力先で再実行する。