Video Editor
Documentsvideo-editorVideo Editor is an Agent Skill for documents published in the minicoohei/ai-agent-camp repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
TikTok/YouTube向け動画編集スキル。ffmpegでキャプション焼き込み、 Ken Burnsエフェクト、シーン結合、音声合成を行う。 scenes.jsonから自動的に編集指示を読み取り最終動画を出力する。 Remotionコンポーネントも同梱(ローカル環境用)。 「動画編集」「キャプション追加」「テロップ付き動画」等で発動。
QUICK START
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/minicoohei/ai-agent-camp/blob/HEAD/skills/video-editor/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/video-editor, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
Video Editor
scenes.json + フレーム画像/動画クリップから最終動画を生成する。
2つの実行モード
🟢 ffmpegモード(サンドボックス対応・推奨)
Chromium不要。サンドボックスでも動作する。
python skills/video-editor/scripts/compose_video.py \
--storyboard-dir output/storyboard/YYYYMMDD_session \
--captions \
--output output/final_tiktok.mp4
🔵 Remotionモード(ローカル環境用)
Chromium + Node.js必要。より高度なアニメーション。
npx remotion render TikTokVideo --output=out/tiktok_video.mp4 --root=remotion-editor/src/Root.tsx
ffmpegパイプライン
1. 素材準備
scenes.json → 各フレームのmotion_type確認
i2v → video/{frame}_i2v.mp4 を使用
ken_burns → ffmpeg zoompan フィルターで画像→動画
static → ffmpeg loop で画像→動画
motion_graphics → ffmpeg で画像→動画(将来テキストアニメ追加)
2. 正規化
全クリップを統一仕様に:
- 解像度: 1080×1920 (9:16) or 1920×1080 (16:9)
- FPS: 30
- コーデック: h264 / yuv420p
- 横向きi2V動画 → ぼかし背景付き縦型に変換
3. キャプション焼き込み(drawtext)
ffmpeg -i clip.mp4 -vf "drawtext=text='テキスト':fontfile=/path/to/NotoSansJP-Bold.otf:\
fontsize=64:fontcolor=white:borderw=3:bordercolor=black:\
x=(w-text_w)/2:y=h*0.58" output.mp4
キャプション仕様:
| 項目 | TikTok推奨 |
|---|---|
| フォントサイズ | 54-76px (画面幅の5-7%) |
| 文字数/行 | 日本語5-8文字 / 英語2-3語 |
| 最大行数 | 2行 |
| フォント | Noto Sans JP Bold |
| 色 | 白 + 黒ストローク(3px) + シャドウ |
| 位置 | Y: 55-65% (TikTokセーフゾーン内) |
4. 結合
ffmpeg -f concat -safe 0 -i concat.txt -c:v libx264 -pix_fmt yuv420p final.mp4
5. 音声合成(オプション)
ffmpeg -i video.mp4 -i narration.mp3 -c:v copy -c:a aac -shortest final_with_audio.mp4
TikTokセーフゾーン
┌─────────────────────┐
│ ⚠️ 上15% 避ける │ ← ユーザー名/フォローボタン
├─────────────────────┤
│ メインコンテンツ │
│ ┌───────────────┐ │
│ │ キャプション │ │ ← Y: 55-65%
│ └───────────────┘ │
├─────────────────────┤
│ ⚠️ 下20% 避ける │ ← いいね/コメント/シェア
└─────────────────────┘
scenes.json フォーマット
{
"title": "動画タイトル",
"scenes": [
{
"frame_number": 1,
"timestamp": "0:00-0:02",
"motion_type": "i2v | ken_burns | static | motion_graphics",
"narration": "ナレーション台本",
"text_overlay": {
"main_text": "メインテロップ",
"sub_text": "サブテロップ",
"position": "top | center | bottom",
"style": "bold | subtitle | minimal"
}
}
]
}
依存
- ffmpeg (静的バイナリ:
.bin/ffmpeg) - Python 3.11+ (compose_video.py)
- Noto Sans JP フォント(キャプション用)
Remotionコンポーネント(ローカル用)
remotion-editor/src/
components/
Caption.tsx # TikTok最適キャプション(日本語改行、pop-inアニメ)
KenBurns.tsx # Ken Burns zoom/pan エフェクト
compositions/
TikTokVideo.tsx # 9:16 メインコンポジション
Root.tsx # エントリポイント
関連スキル
storyboard-generator— 入力素材(frames + scenes.json)content-creator— コンテンツ企画post-publisher— 投稿・配信