AI 動画のドラフトを何本も回していると、「カメラの指示を書き忘れた」「光の記述がない」といった抜けで1本ムダにすることがあります。ドラフトは低コストとはいえ、比較の軸がぶれるのは困ります。そこで、プロンプトを投げる前に必須要素の有無だけを機械的に確認する小さな lint を作りました。対象は Wan 3.0 の ドラフトモード を想定しています。

リンク先ページの要約:wan30.io/ja/draft-mode(2026-10-31 閲覧)
ドラフトモードの位置づけ
ページによると、ドラフトモードは固定されたドラフトワークスペースで、プロンプト、カメラの動き、縦横比、参照画像を試すためのものです。生成前には正確なクレジット見積もりが表示され、良い方向性はフルジェネレーターに持ち込めます。また 使い方ページ では、ドラフトモードは 1–15 秒、480p / 720p / 1080p、テキスト・画像から動画を生成できると整理されています。
つまり「たくさん試して比べる」ための場所です。比べるためには、各プロンプトが同じ粒度で書かれている必要があります。
チェックする4要素
使い方ページには、プロンプトは撮影者への指示として「誰がどこで何をするかを書き、光、カメラ、雰囲気を加える」という考え方が書かれています。これを4つの要素に分けて、キーワードで有無を判定します。
コード
import re, sys
RULES = {
"カメラ": r"カメラ|寄る|引く|追う|パン|ズーム|ドリー|俯瞰|ローアングル|固定",
"光": r"光|ライト|照明|逆光|夕方|朝|夜|ネオン|影",
"動作": r"(する|して|歩|走|跳|振り向|持ち上げ|注ぐ|回る|開け)",
"場所": r"(で|の中|室内|屋外|路地|部屋|キッチン|スタジオ|街)",
}
VAGUE = ["いい感じ", "きれいに", "かっこよく", "おしゃれに", "なんとなく"]
def lint(prompt: str):
issues = [f"{k}の記述が見つからない" for k, pat in RULES.items()
if not re.search(pat, prompt)]
issues += [f"曖昧語「{w}」→ 見える条件に言い換える" for w in VAGUE if w in prompt]
n = len(prompt)
if n < 30:
issues.append(f"短すぎる({n}文字)")
if n > 400:
issues.append(f"ドラフトにしては長い({n}文字):比較したい要素に絞る")
return issues
if __name__ == "__main__":
for i, line in enumerate(open(sys.argv[1], encoding="utf-8"), 1):
p = line.strip()
if not p:
continue
res = lint(p)
print(f"#{i} {'OK' if not res else 'NG'} {p[:30]}…")
for r in res:
print(" -", r)
1行1プロンプトのテキストファイルを渡すと、行ごとに OK / NG と理由を出します。キーワードは自分の書き方に合わせて足してください。正規表現なので完璧ではありませんが、「書き忘れ」を拾うには十分です。
実行例
#1 OK 雨上がりの石畳の路地で、白いスニーカーの男性が水たまり…
#2 NG いい感じの商品動画…
- カメラの記述が見つからない
- 光の記述が見つからない
- 動作の記述が見つからない
- 場所の記述が見つからない
- 曖昧語「いい感じ」→ 見える条件に言い換える
- 短すぎる(9文字)
ドラフトの回し方
lint を通ったプロンプトをドラフトモードで生成し、比較するときは1要素だけ変えます。たとえばカメラだけを「低い位置から追う」「固定で引き」に変え、他はそのまま。良い方向が見えたら、その設定をフルジェネレーターに持ち込みます。
lint の限界
構図や動きの自然さは、実際に生成して見るしかありません。lint はあくまで「比較できる状態のプロンプト」を揃えるための入口で、判断そのものはドラフトの映像で行います。
まとめ
ドラフトを多く回すほど、プロンプトの粒度を揃えることが効いてきます。数十行の lint でも書き忘れによるムダ打ちは減らせるので、チームで同じルールを共有するのにも向いています。


