テロップ分割 LLM プロンプト
動画の文字起こしテキストをYouTube向けテロップ単位に分割するためのLLMプロンプト仕様。 意味のまとまりと表示文字数の両方を満たすルールセット。
2-2. LLMへのプロンプト
あなたはYouTube動画のテロップ分割の専門家です。以下のテキストをテロップ表示用に分割してください。
絶対ルール
- 1テロップ最大 <MAX_CHARS> 文字(フォーマット: <format>)
- 意味のまとまりで分割する
-
以下の位置で切る(優先度順):
- a 文末(。 ! ?)
- b 接続助詞の後(〜して、〜ので、〜から、〜けど、〜ことで)
- c 読点(、)の後
- d 「〜を」「〜に」「〜で」「〜が」「〜は」の後
-
以下の位置では絶対に切らない:
助詞の直前「時間 | を」→ NG「時間を | 」→ OK用言の途中「自動 | 化する」→ NG固有名詞の途中「Claude | Code」→ NG数字と助数詞の間「3 | つ」→ NG
- 句読点(。 、)はテロップでは省略する
入出力フォーマット
## 入力テキスト <セグメントテキスト> ## 入力words(タイムスタンプ参照用) <words JSON配列>
[
{
"text": "AIを使って動画編集を自動化することで",
"wordIndices": [0,1,2,3,4,5,6,7,8,9]
},
{
"text": "作業時間を大幅に削減できます",
"wordIndices": [10,11,12,13,14,15,16]
}
]
BudouX 改行処理
BudouX(Google開発の文節分割ライブラリ)でテロップ内の自然な改行位置を決定する。 形態素解析より粒度が「文節」のため、テロップ用途に最適。
3-0. BudouXとは
- Google開発、Apache 2.0 ライセンス
- 約 15-20KB、超軽量
- npm: budoux(template/package.jsonに追加済み)
- Chrome 119 / Android 14 にネイティブ搭載
3-1. 改行判定ルール
テロップテキストの文字数が 2行化の閾値 を超えたら改行する。
| format | 閾値 | 挙動 |
|---|---|---|
| youtube | 15文字超 | 2行化 |
| short | 10文字超 | 2行化 |
| square | 12文字超 | 2行化 |
テロップ・タイトルを分析して画像が効果的な箇所を抽出し、Gemini 3.1 Flash Image Preview で生成する。 詳細スキル仕様 → gemini-image-skill.pages.dev
コンテンツ分析
1-1. データ読み込み
- telopData.ts — 全テロップのテキスト・スタイル・タイミング
- titleData.ts — セグメント(チャプター)構成
- project-config.json — format, tone, notes
1-2. 画像候補の自動抽出
テロップとタイトルを分析し、画像が効果的な箇所を自動判定:
| 判定基準 | 画像タイプ | 例 |
|---|---|---|
| 数字・データが含まれる | infographic | 「3つのポイント」「売上が50%増」 |
| 手順・ステップの説明 | infographic | 「まず〜、次に〜、最後に〜」 |
| 比較・対比 | infographic | 「AとBの違い」「ビフォーアフター」 |
| 抽象的な概念 | photo | 「未来のビジョン」「成功のイメージ」 |
| ツール・サービス紹介 | infographic | 「ChatGPTとは」「Remotionの特徴」 |
| ネガティブな問題提起 | overlay | 「こんな悩みありませんか?」 |
| タイトル切り替わり | なし | タイトル自体が表示 |
1-3. 候補リスト生成
[
{
"insertAt": { "startFrame": 150, "endFrame": 450 },
"reason": "「3つのポイント」を説明している箇所",
"suggestedType": "infographic",
"promptDraft": "3つのポイントを示す図解。1.○○ 2.○○ 3.○○",
"priority": "high"
}
]
画像計画(ヒアリング)
候補リストをユーザーに提示し、確認:
テロップ内容を分析しました。以下の箇所に画像を挿入する計画です: 1. [0:05-0:15] 📊 インフォグラフィック(高優先) → 「3つのポイント」の図解 → プロンプト案: "3つのポイントを示すモダンな図解..." 2. [0:30-0:45] 🖼️ イメージ画像(中優先) → 「AIの未来」のビジュアル → プロンプト案: "未来的なAIテクノロジーのイメージ..." 3. [1:20-1:35] 📊 インフォグラフィック(高優先) → 「ステップ1→2→3」のフロー図 → プロンプト案: "3ステップのフローチャート..." 修正・追加・削除があれば教えてください。OKならこのまま生成します。
Gemini API で画像生成
3-1. フォーマット別アスペクト比
project-config.json の format に連動:
| format | Gemini API -a | 用途 |
|---|---|---|
| youtube | 16:9 | 横長(デフォルト) |
| short | 9:16 | 縦長 |
| square | 1:1 | 正方形 |
3-2. タイプ別プロンプトテンプレート
infographic図解・データ
Create a clean, modern infographic with the following content: [内容] Style: minimalist, dark background (#1a1a2e), bright accent colors, no text (text will be overlaid separately), aspect ratio: [format], high contrast for video overlay
photoイメージ画像
Photorealistic image of [内容]. Style: cinematic lighting, shallow depth of field, professional stock photo quality, aspect ratio: [format]
overlay問題提起・暗い背景
Dark, moody background image representing [内容]. Style: abstract, dark tones with subtle color accents, suitable as a video overlay with text on top, aspect ratio: [format]
3-3. 生成実行
cd ~/.claude/skills/gemini-api-image && \ python scripts/run.py api_generator.py \ --prompt "<プロンプト>" \ -a <アスペクト比> \ -m pro \ -o "<PROJECT>/public/images/generated/<filename>.png"
SE 配置ロジック
テロップのスタイル・タイミング・プロジェクトトーンに合わせて効果音を自動配置。 連続回避ルールでバリエーション管理。
データ読み込み
- 1-1. テロップデータ — src/テロップテンプレート/telopData.ts から全セグメントを取得
- 1-2. タイトルデータ — src/Title/titleData.ts からセグメント境界を取得
- 1-3. プロジェクト設定 — project-config.json の tone を取得(SE密度の調整)
SE素材準備
2-1. 素材チェック
public/se/ の中身を確認。空の場合は共通素材をコピー:
cp /Users/tonodukaren/movie/YT/03_AI×動画編集革命_YT/public/se/* "<PROJECT>/public/se/"
2-2. SE素材カタログ
| ファイル名 | 略称 | 用途 |
|---|---|---|
| パッ (1).mp3 | POP | 汎用アクセント |
| 決定ボタンを押す2.mp3 | BTN-2 | 決定・強調 |
| 決定ボタンを押す3.mp3 | BTN-3 | 決定バリエーション |
| 決定ボタンを押す4.mp3 | BTN-4 | 決定バリエーション |
| 決定ボタンを押す12.mp3 | BTN-12 | 決定バリエーション |
| ニュッ1.mp3 | WSH-1 | スライド・登場 |
| ニュッ2.mp3 | WSH-2 | スライドバリエーション |
| ニュッ3.mp3 | WSH-3 | スライドバリエーション |
| カーソル移動2.mp3 | CUR-2 | 軽いクリック |
| カーソル移動7.mp3 | CUR-7 | クリックバリエーション |
| カーソル移動8.mp3 | CUR-8 | クリックバリエーション |
| 間抜け3.mp3 | COMIC | コミカル・ツッコミ |
| 水滴3.mp3 | DROP | 感動・しみじみ |
| 涙のしずく.mp3 | TEAR | 悲しみ・共感 |
| クイズ不正解1.mp3 | BUZZ | 失敗・ブザー |
SE配置ロジック
3-1. 配置密度(トーン別)
| トーン | SE密度(テロップ比) | 特徴 |
|---|---|---|
| プロフェッショナル | 30-40% | 控えめ、POP中心 |
| エンタメ | 50-70% | 積極的、バリエーション豊富 |
| カジュアル | 40-50% | 程よい、自然な配置 |
| 教育的 | 25-35% | 最小限、邪魔しない |
3-2. スタイル別SE選択マトリクス
| style | SE候補(ランダム選択) | volume |
|---|---|---|
| normal | POP WSH-1 WSH-2 WSH-3 | 0.30 |
| emphasis | BTN-2 BTN-3 BTN-4 BTN-12 | 0.35 |
| warning | BUZZ COMIC | 0.25 |
| success | BTN-2 BTN-3 | 0.35 |
| (感動文脈) | DROP TEAR | 0.25 |
3-3. 配置ルール(優先度順)
- emphasis テロップの startFrame → BTN系
- warning テロップの startFrame → BUZZ or COMIC
- success テロップの startFrame → BTN系
- タイトル切り替わりフレーム → CUR系
- 画像出現フレーム(insertImageData.ts の startFrame)→ WSH系(スライド音)
- normal テロップ → 2〜3個に1個の頻度で POP or WSH系
- 直前のSEから 10フレーム以内 の場合 → スキップ
- 動画の最後5秒 → 余韻のため控える
3-4. バリエーション管理
- 同一SEファイルが 3回連続 しない
- BTN系は 2, 3, 4, 12 をローテーション
- WSH系は 1, 2, 3 をローテーション
- CUR系は 2, 7, 8 をローテーション
BTN_ROTATION = [BTN-2, BTN-3, BTN-4, BTN-12] // index循環 WSH_ROTATION = [WSH-1, WSH-2, WSH-3] CUR_ROTATION = [CUR-2, CUR-7, CUR-8]