Install any skill in seconds. Free to start, no credit card required.
Get Started Free →TikTok/YouTube向け動画編集スキル。ffmpegでキャプション焼き込み、 Ken Burnsエフェクト、シーン結合、音声合成を行う。 scenes.jsonから自動的に編集指示を読み取り最終動画を出力する。 Remotionコンポーネントも同梱(ローカル環境用)。 「動画編集」「キャプション追加」「テロップ付き動画」等で発動。
.claude/skills/minicoohei-video-editor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 30% | 0% |
scenes.json + フレーム画像/動画クリップから最終動画を生成する。
Chromium不要。サンドボックスでも動作する。
bashpython skills/video-editor/scripts/compose_video.py \ --storyboard-dir output/storyboard/YYYYMMDD_session \ --captions \ --output output/final_tiktok.mp4
Chromium + Node.js必要。より高度なアニメーション。
bashnpx remotion render TikTokVideo --output=out/tiktok_video.mp4 --root=remotion-editor/src/Root.tsx
scenes.json → 各フレームのmotion_type確認
i2v → video/{frame}_i2v.mp4 を使用
ken_burns → ffmpeg zoompan フィルターで画像→動画
static → ffmpeg loop で画像→動画
motion_graphics → ffmpeg で画像→動画(将来テキストアニメ追加)全クリップを統一仕様に:
bashffmpeg -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セーフゾーン内) |
bashffmpeg -f concat -safe 0 -i concat.txt -c:v libx264 -pix_fmt yuv420p final.mp4
bashffmpeg -i video.mp4 -i narration.mp3 -c:v copy -c:a aac -shortest final_with_audio.mp4
┌─────────────────────┐
│ ⚠️ 上15% 避ける │ ← ユーザー名/フォローボタン
├─────────────────────┤
│ メインコンテンツ │
│ ┌───────────────┐ │
│ │ キャプション │ │ ← Y: 55-65%
│ └───────────────┘ │
├─────────────────────┤
│ ⚠️ 下20% 避ける │ ← いいね/コメント/シェア
└─────────────────────┘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" } } ] }
.bin/ffmpeg)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 — 投稿・配信| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | pass→pass | 14,158 | 8,255 | -42% | 1 | 1 | 0% | 2,454 | 2,748 | +12% | 0 | 0 | — |
case-01 | fail→pass | 5,446 | 4,518 | -17% | 1 | 1 | 0% | 961 | 1,922 | +100% | 0 | 0 | — |
case-02 | fail→pass | 10,006 | 9,027 | -10% | 1 | 1 | 0% | 1,774 | 2,736 | +54% | 0 | 0 | — |
case-13 | pass→pass | 11,654 | 4,052 | -65% | 1 | 1 | 0% | 1,981 | 2,003 | +1% | 0 | 0 | — |
case-03 | fail→fail | 2,802 | 5,636 | +101% | 1 | 1 | 0% | 399 | 1,454 | +264% | 0 | 0 | — |
case-04 | fail→pass | 9,263 | 8,088 | -13% | 1 | 1 | 0% | 1,543 | 2,646 | +71% | 0 | 0 | — |
case-05 | pass→pass | 12,982 | 10,243 | -21% | 1 | 1 | 0% | 2,177 | 2,893 | +33% | 0 | 0 | — |
case-06 | fail→pass | 11,197 | 6,229 | -44% | 1 | 1 | 0% | 1,870 | 2,264 | +21% | 0 | 0 | — |
case-07 | fail→fail | 13,880 | 9,511 | -31% | 1 | 1 | 0% | 2,480 | 2,831 | +14% | 0 | 0 | — |
case-09 | fail→pass | 15,812 | 11,477 | -27% | 1 | 1 | 0% | 2,609 | 3,389 | +30% | 0 | 0 | — |
case-10 | pass→pass | 7,477 | 1,678 | -78% | 1 | 1 | 0% | 1,099 | 1,345 | +22% | 0 | 0 | — |
case-11 | pass→pass | 7,862 | 4,948 | -37% | 1 | 1 | 0% | 1,375 | 2,031 | +48% | 0 | 0 | — |
case-12 | fail→pass | 9,036 | 3,329 | -63% | 1 | 1 | 0% | 1,671 | 1,751 | +5% | 0 | 0 | — |
case-14 | pass→pass | 6,327 | 6,372 | +1% | 1 | 1 | 0% | 1,131 | 2,208 | +95% | 0 | 0 | — |
case-15 | fail→pass | 15,581 | 1,848 | -88% | 1 | 1 | 0% | 2,719 | 1,401 | -48% | 0 | 0 | — |
case-16 | fail→pass | 11,039 | 1,879 | -83% | 1 | 1 | 0% | 1,887 | 1,493 | -21% | 0 | 0 | — |
case-17 | fail→pass | 9,296 | 1,575 | -83% | 1 | 1 | 0% | 1,637 | 1,369 | -16% | 0 | 0 | — |
case-18 | fail→pass | 12,471 | 1,656 | -87% | 1 | 1 | 0% | 2,475 | 1,391 | -44% | 0 | 0 | — |
case-19 | fail→pass | 10,951 | 3,108 | -72% | 1 | 1 | 0% | 1,837 | 1,687 | -8% | 0 | 0 | — |
case-20 | fail→fail | 12,546 | 9,243 | -26% | 1 | 1 | 0% | 1,892 | 2,550 | +35% | 0 | 0 | — |
case-21 | fail→fail | 9,209 | 16,957 | +84% | 1 | 1 | 0% | 1,675 | 3,871 | +131% | 0 | 0 | — |
case-22 | pass→pass | 10,519 | 14,963 | +42% | 1 | 1 | 0% | 1,854 | 3,910 | +111% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.