AI動画の前にプリビズを作る|Claude CodeでCozyClayを動かす


プリビズ(プレビズ/previs)とは、本番の撮影や生成の前に、仮の3Dで人物の立ち位置・動き・カメラワークを動く映像にして確かめる工程です。AI動画では、無料のブラウザ製ツールCozyClayで組んだプリビズを参照動画にしてSeedance 2.5へ渡すと、文章だけでは伝えにくい「寄って、回り込んで、引く」ような連続したカメラの動きを、映像で指定できます。

動画AIにカメラワークを文章で頼むと、どこから寄るのか、どちら回りに回るのかが伝わらず、思った動きにならないことがよくあります。1本ごとにクレジットがかかるので、外れるたびに作り直すのは負担です。

この記事では、オープンソースのプリビズツールCozyClayをClaude Codeから操作して連続カメラを組み、Seedance 2.5に渡す参照動画とプロンプトを書き出すまでの手順を紹介します。2026年10月21日に、macOS・Node.js 23.9・Chrome・CozyClay 3.0.3の環境で実際に試しました。CozyClayとSeedance 2.5の仕様は、同日に公式の資料で確認しています。Seedance 2.5での生成そのものは今回は行っていないので、渡し方の手順までを書きます。


プリビズとは?絵コンテ・アニマティックとの違い

プリビズとは、本番の前に、仮の3Dでショットの暫定版を作る工程です。映画やCMでは、撮影やCG制作の手戻りを防ぐために使われてきました。

業界団体のPrevisualization Societyは、プリビズを「a collaborative process that generates preliminary versions of shots」(ショットの暫定版をつくる共同作業)と定義しています(設立を報じたPost Magazine、2009年)。ハリウッドのプリビズアーティストは、PRONEWSのコラム(2023年)で、この仕事を「映画の大まかな3Dバージョン」を組み立てる作業だと説明しています。

似た言葉との違いは次のとおりです。

言葉中身動き
絵コンテ(ストーリーボード)コマごとの止まった絵を並べたもの動かない
アニマティック絵コンテを時間どおりに並べて動画にしたもの絵は止まったまま、切り替わりだけ
プリビズ仮の3Dで、人物とカメラを実際に動かした映像人物もカメラも動く
ブロッキングプリビズの中で、人物や物の立ち位置と動きを決める作業—

表記は「プリビズ」のほか「プレビズ」も使われます。英語でもPre-Vis/Pre-Vizのように表記が分かれます。どのショットを撮るかを先に決めたいときは、絵コンテ ショット集で写真を見ながら選べます。ショットの呼び方は動画のショットの種類一覧にまとめています。


AI動画でプリビズが効く理由

Seedance 2.5は、テクスチャのない3Dモデルの映像(clay render)を参照して、カメラの動きや人物の動きを決める使い方を公式に想定しています。プリビズはこの入力をそのまま作る作業です。

Seedance 2.5は仮の3Dを参照できる

ByteDance Seedの公式ブログ(2026年7月31日)によると、Seedance 2.5は1回の生成で画像30・動画10・音声10までを参照できます。同じ発表では、空間の構造・人物のポーズ・動きの経路・カメラアングルを、テクスチャのない3Dモデル(textureless 3D models)で組んで渡す使い方が紹介されています。

文章では連続したカメラが伝わりにくい

「ゆっくり寄る」「周りを回る」のような1つの動きなら、プロンプトの文章でもある程度伝わります。一方で「正面の全身から寄り、右へ回り込んで真横になり、最後に引く」のように動きが続くと、順番や方向、回る角度まで文章で決めきるのは難しくなります。文章でのカメラ指定の効き方はAI動画の指示の出し方をDomoAIで6本検証した記事で確かめています。プリビズなら、この続きの動きを映像として渡せます。


CozyClayとは?無料のブラウザ製プリビズツール

CozyClayは、ブラウザで動くオープンソースのプリビズツールです。開発元のNomaDamasはGitHubのREADMEで、CozyClayを「Open source previs in a browser tab」と説明しています。セットを組む、人物を動かす、カメラのカットを割る、動画AIへ渡す、までを1つの画面で行えます。

項目内容(2026年10月21日時点)
料金無料(AGPL-3.0-or-later のオープンソース)
バージョン3.0.3(2026年10月20日公開。10月18〜20日だけで4回更新されるなど、更新が速い)
動く場所Chrome・Edgeなど Chromium 系のブラウザ(Safari・Firefoxは非対応)
インストールNode.js 22.19以上で npx cozyclay。GPU・Python・モデルのダウンロードは不要
お試し公式サイト cozyclay.org でインストールなしに試せる(マウスとキーボードが必要)
書き出しMP4、Keyframe pack(最初と最後のコマ・仮の3Dの動画・カメラ情報・プロンプト)、奥行き・面の向きの映像、コンタクトシート、OTIO
AIからの操作MCPサーバーと、ターミナル用の cclay live コマンド

ライセンスのAGPLは、自分で使うだけなら制約はありません。CozyClayのコードを取り込んだり改変したりしたソフトを配布する場合や、Webサービスとして提供する場合は、受け取った人や利用者にソースコードを提供する義務が出ます。


CozyClayの起動と準備

手元で使うときは、ターミナルで npx cozyclay を実行するだけで起動します。開発用のポートが他と重なる場合は、--port で変えられます。

# 起動(ブラウザは自動で開かない設定。表示されたURLをChromeで開く)
npx -y cozyclay --no-star --no-open --port 3016
# → CozyClay is running at http://127.0.0.1:3016/app/

npmで配布されている版は、匿名の利用状況を送る設定になっています。送られるのは機能を使った回数などで、プロジェクトの中身は送られないと公式のプライバシー説明に書かれています。止めたい場合は次のコマンドで切れます。

npx -y cozyclay telemetry off
# → Telemetry: off

ソースコードから起動した場合は、もともと送られません。アプリ内の Settings → Privacy でも切り替えられます。


Claude CodeからCozyClayを操作する仕組み

Claude Codeからは、CozyClayのMCPサーバーか、ターミナル用の cclay live コマンドで操作します。どちらも、ブラウザで開いているCozyClayの画面に命令を送り、結果をJSONで受け取る仕組みです。

方法始め方向いている場面
MCPサーバーMCPの設定に npx -y cozyclay mcp を登録Claude DesktopやClaude Codeのチャットで会話しながら組む
cclay liveCozyClayを起動したまま npx -y cozyclay live … を実行Claude Codeにスクリプトを書かせて、カメラのキーなどをまとめて入れる
アプリ内のAgent画面で Cmd+B(WindowsはCtrl+B)ChatGPTのアカウントか各社のAPIキーで、画面の中だけで頼む

今回はClaude Codeのターミナルから cclay live を使いました。命令ごとに結果(どの値が変わったか、元に戻すための情報)が返ってくるので、Claude Codeが結果を読みながら次の命令を決められます。使い始める前に、ブラウザでCozyClayの画面を開いておく必要があります。

# ブラウザの画面が接続されるまで待つ(最初に必ず実行)
npx -y cozyclay live status --wait

# シーンにある人物や物の一覧を読む
npx -y cozyclay live inspect --scope entities

Claude Codeで外部のツールを動かす記事としては、Claude CodeでBlenderを動かしWebに載せる記事もあります。あちらはWebに載せる3D素材を作るのが目的で、この記事は動画AIに渡すプリビズを作るのが目的です。


連続カメラを組む手順|寄る→回り込む→引く

1つのショットの中に、時間ごとのカメラ位置(キー)を複数入れると、CozyClayがその間をなめらかにつないで連続したカメラの動きになります。今回は、立っている人物に対して次の5つのキーを入れました。

入れたカメラのキー

コマ(24コマ=1秒)大きさ向き高さ
0全身が入る引き(wide shot)正面目線
96(4秒)太ももから上(medium shot)正面目線
150(約6秒)太ももから上斜め前(front three-quarter)目線
192(8秒)太ももから上真横(profile)目線
214(約9秒)全身が入る引き真横上から(high)

座標を自分で計算する必要はありません。「全身」「真横」「目線の高さ」のような撮り方の言葉で指定すると、CozyClayがカメラの位置とレンズを決めます。向きに使える言葉は front/front three-quarter/profile/rear three-quarter/back の5つで、人物のどちら側から撮るか(left/right)も必ず指定します。

Claude Codeに書かせたスクリプト

キーを1つ入れるたびに、シーンの最新の状態を読み直してから命令を送るスクリプトです。CozyClayは、読んだ時点からシーンが変わっていると命令を受け付けないので、毎回読み直しています。

// 1つのショットに、撮り方の言葉でカメラのキーを入れていく
import { execFileSync } from "node:child_process";
import { randomUUID } from "node:crypto";

const live = (...args) =>
  JSON.parse(execFileSync("npx", ["-y", "cozyclay", "live", ...args], { encoding: "utf8" }));

const keys = [
  { frame: 0, intent: { size: "wide shot", view: "front", level: "eye", side: "right" } },
  { frame: 96, intent: { size: "medium shot", view: "front", level: "eye", side: "right" } },
  { frame: 150, intent: { size: "medium shot", view: "front three-quarter", level: "eye", side: "right" } },
  { frame: 192, intent: { size: "medium shot", view: "profile", level: "eye", side: "right" } },
  { frame: 214, intent: { size: "wide shot", view: "profile", level: "high", side: "right" } },
];

for (const k of keys) {
  const scene = live("inspect", "--scope", "shot"); // 毎回、最新の状態を読む
  const shot = scene.document?.shots?.[0]; // 最初の1回はまだショットが無い
  const args = { subjectIds: ["char-a"], keyAtFrame: k.frame, framing: { intent: k.intent } };
  if (shot) args.shotId = shot.id;
  const envelope = {
    name: "frame_shot",
    args,
    commandId: randomUUID(),
    host: scene.host,
    expectedRevision: scene.revision.scene,
  };
  const result = live("cmd", "frame_shot", "--args", JSON.stringify(envelope));
  console.log(k.frame, result.status, result.checks?.derivedSize);
}

char-a は人物のIDで、inspect --scope entities の結果から取ります。ショットが無い状態で最初のキーを入れるとショットが作られ、筆者の環境では長さが216コマ(9秒)になりました。キーはこの範囲の中にしか入れられないので、最後のキーを214コマにしています。


組んだカメラを画像で確かめる

組み終わったら、ショットを等間隔のコマで切り出した1枚の画像(コンタクトシート)を書き出して、カメラが狙いどおりに動いているかを確かめます。ブラウザの画面を撮るより、実際のカメラの視点で描いた画が手に入ります。

npx -y cozyclay live verify --targets char-a --checks framing \
  --visual contact_sheet --frames even --out contact.png
CozyClayで組んだ連続カメラの6コマ。正面の全身から寄り、右へ回り込んで真横になり、最後に引いて全身に戻る
左上から右下へ0・43・86・129・172・215コマ。正面の全身→寄る→斜め→真横→引き

正面の全身から寄り、右へ回り込んで真横になり、最後に引くまでが1本のショットでつながっています。上から見た配置図(--visual plan)も書き出せるので、カメラと人物の位置関係を確かめたいときに使えます。


試して分かった注意点

実際に組んでみると、カメラの狙いがずれる、指定ほど高さが変わらない、など公式の説明だけでは分からない点がいくつかありました。

人物に動きが入っていると、カメラが外れる

最初に試したとき、後半のコマで人物が画面から外れました。使ったサンプルのシーン(City Block)では、人物に最初から歩きの動きが入っていたためです。撮り方の言葉で入れたキーは、歩き出す前の立ち位置に向けて計算されていて、歩いて移動した後の人物は追っていませんでした。

人物に歩きの動きが入ったままカメラを組んだ6コマ。後半の多くのコマで人物が画面から外れている
歩きの動きが入ったまま組んだ場合。4・5コマ目は人物が画面の外で、最後のコマで右端に小さく戻る

止まった人物でカメラだけを確かめたいときは、先に動きを外します。歩く人物を追うカメラにしたい場合は、人物の動きを決めてから、その位置に合わせてキーを入れ直す必要があります(今回は未検証です)。

# 人物の動き(歩きなど)を外す
npx -y cozyclay live run motion.clear --args '{"characterId":"char-a"}'

なお、公式の変更履歴(CHANGELOG)では、組み込みのセット素材やCity Blockのサンプルを次の版で削除する予定が告知されています。サンプルが無い版では、人物と箱などを自分で置いてから同じ手順で組めます。

「上から(high)」はあまり高くならない

最後のキーを「上から」にしましたが、カメラの高さは約1.65mから約2.09mへと、0.4mほど上がっただけでした。見下ろしをはっきり出したい場合は、撮り方の言葉ではなく、カメラの位置と向きを数値で指定する方法(frame-shot --exact)を使います。

自動のプロンプトは背景を直してから使う

CozyClayには、ショットの内容から動画AI向けの英語のプロンプトを作る機能があります。試すと、カメラの動きは「寄る→回り込む→回り込む→引きながら上がる」と順番どおりに書かれていました。一方で、背景の説明は「a sunlit modern living room」(明るいリビング)になっていました。シーンは街の通りなので、ステージの環境の設定を変えていなかったことが原因です。背景の行は、渡す前に自分で書き直します。

MP4の書き出しは画面で人が押す

ターミナルからMP4の書き出しを命令すると、「確認が必要」というエラーが返りました。ファイルをStudioの外に書き出す操作なので、人が画面で承認する作りになっています。MP4は、Studioの Export → Video — this shot only (mp4) を自分で押して書き出します。


プリビズをSeedance 2.5(DomoAI)に渡す手順

DomoAIでは、Seedance 2.5に参照動画を入れられるのはOmni Referenceのモードだけです。CozyClayで書き出したMP4とプロンプトを、ここに入れて生成します。

DomoAIのOmni Referenceの説明によると、Seedance 2.5では参照に画像30枚・動画10本・音声10ファイルまで(合計50点)入れられ、480Pか720Pで4〜30秒の動画を生成できます(2026年10月21日時点)。参照動画1本の長さにも上限があるので、アップロード時の表示を確認してください。今回のプリビズは9秒です。

  1. CozyClayのStudioで Export → Video — this shot only (mp4) を押し、プリビズのMP4を書き出す
  2. 自動のプロンプトを書き出し、背景や人物の説明を、作りたい本番の映像に合わせて書き直す
  3. DomoAIのOmni Referenceを開き、プリビズのMP4を参照動画として入れる
  4. プロンプトに、参照動画を何に使うか(例:カメラの動きと人物の位置を Video 1 に合わせる)を書いて生成する

DomoAIの公式ブログ(2026年8月)では、参照動画の役割の1つを「Defines the camera movement or action pacing」(カメラの動きやアクションのテンポを決める)と説明しています。ただし、参照動画のカメラワークがどこまで正確に再現されるかは、公式にも保証されていません。生成は1回でクレジットがかかるので、まずは短いプリビズで試すのがおすすめです。

Seedance 2.5はDomoAIのOmni Referenceで使えます。料金とクレジットの仕組みはDomoAIの料金とクレジットの解説に、Seedance 2.5で実際に作った映像はSeedance 2.5の作例の記事にまとめています。

1本の動画を何カットで組むかを先に決めたい場合は、AI動画のカット割りの作り方でシーン表を作ってから、カメラが続けて動くカットだけをプリビズにすると手間が少なくなります。


よくある質問

Q. プリビズとプレビズは同じ意味ですか?

同じ意味です。英語の previs(pre-visualization)をカタカナにしたもので、日本の映像業界のメディアでは「プリビズ」が多く使われ、「プレビズ」と書かれることもあります。

Q. CozyClayは無料で使えますか?

無料で使えます。CozyClayはAGPL-3.0-or-laterのオープンソースで、2026年10月21日時点で有料プランはありません。自分で使うだけならライセンス上の制約もありません。

Q. CozyClayはインストールしないと使えませんか?

インストールなしでも試せます。公式サイト cozyclay.org の体験版がブラウザで動きます。手元で使う場合は、Node.js 22.19以上を入れて npx cozyclay を実行します。

Q. Claude CodeがなくてもCozyClayでプリビズは作れますか?

作れます。画面上で人物を置き、カメラのキーをタイムラインに入れる操作は手でもできます。アプリ内のAgent(Cmd+B)を使えば、ChatGPTのアカウントや各社のAPIキーで言葉から組むこともできます。

Q. Seedance 2.5に参照動画を入れるには、DomoAIのどのモードを使いますか?

Omni Referenceを使います。DomoAIでSeedance 2.5が使えるのはOmni Referenceだけで、参照には画像30枚・動画10本・音声10ファイルまで入れられます(2026年10月21日時点)。

Q. プリビズの通りにAI動画のカメラが動きますか?

必ず同じになるとは限りません。Seedance 2.5は参照動画からカメラの動きを読み取る使い方を公式に想定していますが、再現の正確さは保証されていません。短いプリビズで試し、外れた部分はプロンプトで補うのが確実です。


関連記事