# ショットシーケンス

> ブリーフ、強制アライメント、レンダリングで、ナレーションが話したその瞬間にテキストや図形が現れる、ナレーション付きのモーショングラフィックス動画を作ります。

Source: https://nodaro.ai/ja/docs/mcp/shot-sequence

**ショットシーケンス**は、ナレーション付きのモーショングラフィックス動画です。画面上のテキスト、図形、画像のすべてが、ナレーションで対応するフレーズが話された瞬間に現れます。あなたか AI アシスタントが、**ブリーフ**を書きます。ブリーフには、ナレーションとそのキュー、そしてシーン、ショット、リビールを記述します。Nodaro は、録音したナレーションを単語単位でアライメントし、すべてのキューを正確なフレームに焼き込みます。そのため、タイミングは確定的で、実行のたびに変わることはありません。[動画ディレクター](https://nodaro.ai/docs/mcp/video-director)はこのパイプラインを基盤にしており、ブリーフをあなたの代わりに書きます。

## パイプライン
Workflow: ナレーションを音声にし、単語単位でアライメントし、フレーム単位で正確なプランに解決して、レンダリングします。

- generate_speech → forced_alignment (オーディオ)
- forced_alignment → resolve_shot_sequence (アライメント)
- resolve_shot_sequence → render_shot_sequence (プラン)

### ナレーションを音声にする
ナレーションの台本を渡して、[`generate_speech`](https://nodaro.ai/docs/mcp/tools/audio#generate_speech) を呼び出します。オーディオの URL は、ジョブの出力から読み取ります。ElevenLabs v3 で 30 クレジットです。

### 単語をアライメントする
オーディオと、まったく同じ台本を `transcript` として渡して、`forced_alignment` を呼び出します。`output_data.alignment` を読み取ります。これは、秒単位の `{ word, start, end }` のリストです。30 クレジットです。

### ブリーフを解決する
ブリーフ、オーディオの URL、アライメントを渡して、`resolve_shot_sequence` を呼び出します。すぐに、レンダリングできる状態の `plan` と、警告があれば `warnings` が返されます。無料です。

### レンダリングする
プランを渡して、`render_shot_sequence` を呼び出します。ジョブが MP4 をレンダリングします。その動画はカードで再生でき、ライブラリに保存されます。1920 × 1080 で 50 クレジットです。

最初に [`start_video_director`](https://nodaro.ai/docs/mcp/tools/shot-sequence-and-video-director#start_video_director) を呼び出してください。ナレーションをキューのフレーズとして書く方法と、良いブリーフを作る方法のガイドが返されます。

## ブリーフを書く
ブリーフは、`script` と `cues` を持つ `narration` と、`scenes` からなります。`scenes` には `shots` が含まれ、`shots` には `reveals` が含まれます。**キュー**は、台本の中のフレーズです。**リビール**は、キューが話されたときに要素を配置します。

```json
{
"fps": 30, "width": 1920, "height": 1080, "backgroundColor": "#0b0b0f",
"narration": {
"script": "Ship faster. Nodaro turns your idea into video.",
"cues": [
{ "id": "c_ship", "text": "Ship faster" },
{ "id": "c_idea", "text": "your idea into video" }
]
},
"scenes": [
{
"id": "scene_hook",
"shots": [{
"id": "shot_1",
"reveals": [
{
"id": "rv_title",
"element": { "id": "t1", "type": "text", "text": "Ship faster", "fontFamily": "Inter", "fontSize": 120, "fontWeight": 900, "color": "#ffffff", "x": 200, "y": 450 },
"revealAt": { "kind": "cue", "cueId": "c_ship", "edge": "start" },
"enter": { "motion": "slide-up", "durationFrames": 12, "easing": "easeOut" }
}
]
}]
}
]
}
```

### アンカー
| アンカー | 要素が現れるタイミング |
| --- | --- |
| `{ "kind": "cue", "cueId": "…", "edge": "start" }` | キューのフレーズが始まったときです。終わったときにするには `"edge": "end"` を使い、少しずらすには `offsetMs` を使います。 |
| `{ "kind": "frame", "frame": 0 }` | 固定のフレームです。イントロのロゴやアウトロなど、ナレーションのない要素に使います。 |

フレーム 0 のサムネイルに表示されている必要がある要素には、`"enter": { "motion": "none", "durationFrames": 0 }` を使います。

### 要素が表示される長さ
要素は、そのシーンの内容が終わると退場します。退場のしかたを制御するには、`hold` と `exit` を設定します。`hold` は登場後に表示し続けるフレーム数で、`exit` はその後の動きです。

### タイミングを正確に保つルール
- **キューは台本と完全に一致させる**：スペースも含めて一致させる必要があります。読み上げる形で書いてください。「2026」ではなく「twenty twenty-six」、「$5」ではなく「five dollars」と書きます。
- **シーンの時間を重ねない**：各シーンは、ナレーションの連続した 1 つの区間を受け持ちます。2 つのシーンのリビールが重なると、`resolve_shot_sequence` は `422 scene_overlap` を返します。
- **フォント**：対応しているファミリーから選びます。たとえば、Inter、Roboto、Montserrat、Poppins、Playfair Display、Bebas Neue、Anton、Caveat、Roboto Mono、Fira Code です。ヘブライ語とアラビア語には、Rubik、Heebo、Cairo、Tajawal が対応しています。
- **登場の動き**：`fade`、`scale-up`、`wipe-in`、`slide-up`、`slide-down`、`slide-left`、`slide-right`、`none` です。
- **退場の動き**：`fade`、`slide-up`、`slide-down`、`slide-left`、`slide-right`、`none` です。

文字起こしの中に見つからないキューは、比例配分のタイミングにフォールバックし、そのことが `warnings` に示されます。

## ブループリント
ブループリントは、既製のアニメーション演出です。`blueprint` のリビールで配置し、`params` で内容を埋めます。`list_shot_shapes` はカタログを返し、`get_shot_shape` は 1 つのブループリントのパラメーターを、実例とともに返します。ブループリント自体に料金はかかりません。動画全体が、レンダリングの料金に含まれます。

| ID | 役割 | デフォルトのフレーム数 | 内容 |
| --- | --- | --- | --- |
| `comparison-split` | 機能紹介 | 180 | ラベル付きの 2 つのパネルが両側からスライドインし、仕切りを挟んで静止します。終盤に、任意のバッジがポップします。 |
| `constellation-hub` | フック、社会的証明 | 180 | ラベル付きのノードが、中央のハブを囲む輪の形に弾むように現れ、最後はショットが中心で締めくくられます。 |
| `cta-morph-press` | CTA | 150 | 中央にボタンが現れ、カーソルがゆっくり近づいてボタンを押します。 |
| `cursor-ui-demo` | 機能紹介、製品紹介 | 210 | カーソルがクリックでスクリーンショットを操作し、ビューがクリックする対象を 1 つずつ追いかけます。 |
| `dataviz-countup` | ペインポイント | 240 | 大きな数字が、ラベルとともにある値までカウントアップします。 |
| `device-surface-showcase` | 製品紹介、機能紹介 | 240 | デバイスのモックアップが静止し、その画面にスクリーンショットが順番に表示されます。見出しも同期して切り替わります。 |
| `grid-card-assemble` | 機能紹介、ベネフィット、社会的証明 | 180 | テキストのカードが、次々とグリッド状に並びます。 |
| `kinetic-type-beats` | フック | 150 | 1〜4 行のメッセージが入れ替わりながら現れ、最後の 1 行がアクセントを付けてポップします。 |
| `logo-assemble-lockup` | 製品紹介、ブランディング | 180 | ブランド名の文字が集まって、中央のロックアップになります。任意で、タグラインも付けられます。 |
| `overwhelm-surround` | ペインポイント | 210 | ツールのカードが集まり、チップが散らばって現れた後、あらゆる方向から要求が押し寄せます。 |
| `spatial-pan-stations` | フック、ペインポイント | 240 | 1 枚の大きなキャンバスに、ラベル付きのステーションが並びます。カメラが滑らかにパンして順に訪れ、止まるたびに吹き出しが表示されます。 |
| `ticker-takeover` | フック、ブランディング | 180 | アクセントの単語が切り替わるタイプ入力の導入の後、主役の要素が勢いよく飛び込んできます。 |
| `titlecard-reveal` | ベネフィット、社会的証明 | 120 | すっきりとした 1 つのタイトルと、任意のサブタイトルを、控えめな 1 つの動きで表示し、そのまま静止させます。 |
| `typewriter-reveal` | フック、ブランディング | 180 | 点滅するキャレットとともに、テキストが 1 文字ずつタイプされます。任意のサブラベルが、フェードアップします。 |
| `waterfall-reveal` | フック、機能紹介 | 150 | 1 行の単語が、左から右へ 1 つずつカットインします。任意のサブラベルが、フェードアップします。 |

デフォルトの長さは、30 fps でのフレーム数です。`list_shot_shapes` は、常に最新のカタログを返します。

## ブランドトークン
ブリーフには、パレット、フォント、ロゴからなるブランドトークンを含められます。そうすると、すべてのブループリントが、自分のブランドの色と書体を使います。ブリーフでは、トークンはプリセット ID ではなく、完全なオブジェクトで指定する必要があります。プリセットのトークンは、`list_brand_presets` からコピーします。フィールドは、[動画ディレクターのブランド](https://nodaro.ai/docs/mcp/video-director#brand)と同じです。

## Frequently asked questions

### Nodaro のショットシーケンスとは何ですか？

ブリーフとして記述した、ナレーション付きのモーショングラフィックス動画です。テキスト、図形、画像の 1 つひとつが、ナレーションのフレーズに結び付けられます。Nodaro は、MP4 をレンダリングする前に、単語のタイミングを正確なフレームに変換します。

### ショットシーケンスの動画には、何クレジットかかりますか？

1920 × 1080 の動画で 110 クレジットです。内訳は、ElevenLabs v3 でのナレーション音声が 30、強制アライメントが 30、レンダリングが 50 です。プランの解決は無料です。

### resolve_shot_sequence が scene_overlap を返すのはなぜですか？

2 つのシーンに、同じ時間帯のリビールがあるためです。各シーンはナレーションの連続した 1 つの区間を受け持つので、1 つのシーンのキューはすべて、次のシーンのキューより前に置いてください。

### ナレーションの中の数字は、どのように書けばよいですか？

「twenty twenty-six」や「five dollars」のように、読み上げるとおりに書きます。キューは台本と一語一句一致する必要があり、アライメントは話された言葉と照合されるためです。
