ワイルドカード構文リファレンス
Prompt・Negative・キャラクター欄で共通して使用できます。例中の # コメントと → の右側は説明用です(入力しません)。抽選結果は一例です。
ファイルの置き場所やWildcardsタブの使い方は、マニュアルのWildcardsを参照してください。
早見表
| 書き方 | できること | |
|---|---|---|
{A|B|C} | 候補から1つランダムに選ぶ | 詳しく → |
{3%%A|1%%B} | 当たりやすさ(重み)を変える | 詳しく → |
{2$$A|B|C} / {1-3$$A|B|C} | 候補を複数選ぶ | 詳しく → |
{2$$ + $$A|B|C} | 選んだ候補のつなぎ方を指定する | 詳しく → |
__name__ / __folder/name__ | TXTファイルから選ぶ | 詳しく → |
__folder/*__ | ファイル名を検索して選ぶ | 詳しく → |
{2$$__name__} | ファイルから複数選ぶ | 詳しく → |
__file/key/subkey__ | YAML / JSONのキーから選ぶ | 詳しく → |
CHAR:A1: … | YAMLからキャラクタープロンプトを追加する | 詳しく → |
[SEQ:__name__] / [SEQ:__name__:2] | 連続生成で候補を順番に使う | 詳しく → |
<!…!> / <ppp:stn>…<ppp:/stn> | Negativeへ移動する | 詳しく → |
[__name__] | 抽選後も弱調として残す | 詳しく → |
候補を1つランダムに選ぶ
# | で区切った候補から1つ選びます
{red|blue|green} hair → blue hair
# それぞれ独立に選びます
{shirt|jacket}, {skirt|pants} → jacket, skirt
# 候補を入れ子にします
{short|{long|very long}} hair → very long hair
当たりやすさを変える
# red と blue の当たりやすさを3対1にします
{3%%red|1%%blue} hair → red hair
# 小数でも指定できます
{0.5%%red|1.5%%blue} → blue
# 重みを省略すると1になります
{3%%red|blue} → red
# 0以下の重みは0として扱います。全候補が0なら均等に抽選します
{0%%red|1%%blue} → blue
複数の候補を選ぶ
# 2個選びます。同じ候補を再選択せず、抽選順に並べます
{2$$red|blue|green} → green, red
# 1〜3個選びます
{1-3$$red|blue|green} → red, blue, green
# 下限を省略すると1個から選びます
{-2$$red|blue|green} → blue, red
# 上限を省略すると全候補まで選べます。個数は1〜候補数に収まります
{2-$$red|blue|green} → red, green
# 個数と当たりやすさを組み合わせます
{2$$3%%red|1%%blue|1%%green} → red, blue
選んだ候補のつなぎ方を変える
# 区切りを省略すると「, 」でつなぎます
{2$$red|blue|green} → red, blue
# {個数$$区切り文字$$候補|候補} で指定します
{2$$ + $$red|blue|green} → red + blue
{2$$ / $$red|blue|green} → red / blue
# 区切り文字を空にします
{2$$$$red|blue|green} → redblue
TXTから候補を選ぶ
wildcards/tag.txt
# 色の候補です
red
blue
green
wildcards/clothes/top.txt
shirt
jacket
coat
wildcards/clothes/bottom.txt
skirt
pants
shorts
# 保存先は設定のワイルドカードフォルダーです(通常は wildcards)
# UTF-8・1行1候補で保存します。空行と行頭が # の行は除外します
# 設定フォルダーからの相対パスで、拡張子を省略します
# 設定が .../wildcards なら __tag__ と書きます。wildcards/ は付けません
# __wildcards/tag__ と書くと .../wildcards/wildcards/tag.txt を参照します
__tag__ hair → blue hair
# サブフォルダーは / で区切ります
__clothes/top__ → jacket
__clothes/top__, __clothes/bottom__ → shirt, skirt
# 出現箇所ごとに独立に抽選するため、同じ結果にもなります
__tag__, __tag__ → red, red
ファイル名を検索して選ぶ
# 一致した全ファイルの候補をまとめて抽選します
# YAML内部のキーを検索する指定ではありません
__clothes/*__ → shorts
# 拡張子も指定できます
__clothes/*.txt__ → coat
# [tb] は t または b に一致します
__clothes/[tb]*__ → pants
# **/ は下位フォルダーも対象にします
__clothes/**/*__ → shirt
ファイルから複数選ぶ
# 参照先の候補一覧から2個選びます
# 一覧に同じ文字列が複数あれば、結果の文字列も重複する場合があります
{2$$__tag__} → red, green
# 個数の範囲・区切り文字も指定できます
{1-3$$__tag__} → blue
{2$$ + $$__tag__} → blue + red
# 複数ファイルからまとめて選びます
{2$$__clothes/*__} → shirt, pants
# ファイル参照と直接指定を候補にします
{__tag__|black} hair → green hair
YAMLのキーから選ぶ
wildcards/pack.yaml
outfit:
color:
- white
- black
top:
- "__color__ shirt"
set:
- "__top__, __clothes/bottom__"
color:
- red
- blue
# __ファイル名/キー/子キー__ で参照します(.yaml / .yml に対応しています)
__pack/outfit/color__ → white
# __color__ は近い階層の white / black を使います
# ルートの red / blue より優先します
__pack/outfit/top__ → black shirt
__pack/outfit/set__ → white shirt, skirt
# キーの候補から複数選びます
{2$$__pack/outfit/color__} → white, black
# ファイル名だけなら全キー配下から選びます
__pack__ → black shirt
# 従来のキーだけの参照も使えます。ファイルを特定する場合はファイル名から書きます
__outfit/top__ → white shirt
YAMLで複数のキャラクタープロンプトを追加する
wildcards/characters.yaml
# |- で改行を保持し、複数行を1つの候補として保存します
# CHAR: __clothes/top__ のように位置を省略することもできます
# 共通プロンプトを先に書き、CHAR: の行を末尾にまとめます
# CHAR: 以降は、次の CHAR: または末尾までがそのキャラクターの内容になります
scene:
- |-
landscape
CHAR:A1: __clothes/top__
CHAR:E5: {red|blue} hair
# プロンプト欄には次のワイルドカードを書きます
# CHAR: を含むワイルドカードは、プロンプト全体の末尾に置きます
# 共通タグを追加する場合は cinematic lighting, __characters/scene__ のように前へ書きます
# このワイルドカードの後に入力した通常のプロンプトは、最後のキャラクタープロンプトに吸収されます
# 改行してから入力しても同じです。共通プロンプトにしたい内容は、ワイルドカードの前に書きます
__characters/scene__
# 次のように展開され、CHAR: の内容を各キャラクタープロンプトへ振り分けます
# CHAR: は本アプリの記法です。API送信前に共通プロンプトと各キャラクターへ分離します
# メインは landscape、キャラクターは jacket / blue hair などになります
# 位置指定ON時、A1は左上、E5は右下です(横 A〜E・縦 1〜5)
landscape
CHAR:A1: jacket
CHAR:E5: blue hair
# 構造化キャラクター非対応モデルでは本文へ結合します
# 後ろに追記すると、cinematic lighting は共通ではなく最後のキャラクターの内容になります
__characters/scene__, cinematic lighting
# 改行して追記した場合も、cinematic lighting は最後のキャラクターの内容になります
__characters/scene__
cinematic lighting
# 共通プロンプトとして使う場合は、ワイルドカードの前に書きます
cinematic lighting, __characters/scene__
JSONのキーから選ぶ
wildcards/weather.json
{"sky": ["sunny", "cloudy", "rainy"]}
# YAMLと同じ書式で参照します
__weather/sky__ → cloudy
外部ファイルを明示して参照する
wildcards/external/color.txt
purple
# pack.yaml の outfit 内に追加する例です
external_top:
- "__external/color__ shirt"
# 存在する外部ファイルへのパスを明記すると、その指定先を優先します
# 短い内部参照は、同じ階層 → 親階層 → 同じYAML内の一意な末尾一致 → 外部の順に探します
# 内部候補が複数で曖昧な場合は、参照を残して警告します
__pack/outfit/external_top__ → purple shirt
ファイル名と先頭キーが同じ場合に参照する
wildcards/wardrobe.yaml
wardrobe:
top:
- shirt
- jacket
# ファイル名と先頭キーの両方を書きます
__wardrobe/wardrobe/top__ → shirt
# 重なった名前を1つに省略する書式も使えます
__wardrobe/top__ → jacket
SEQで順番に選ぶ
# 順番選択には SEQ: を明記します
# tag.txt の red / blue / green を1回ずつ使います
# 最後まで進むと先頭へ戻ります
[SEQ:__tag__] → red → blue → green → red …
# :2 で各候補を2回ずつ使います。省略時は1回、0も1回として扱います
[SEQ:__tag__:2] → red → red → blue → blue → green → green …
# YAMLの候補を順番に使います
[SEQ:__pack/outfit/color__] → white → black → white …
# 1候補だけのテンプレートに含まれる参照も順番に展開します
[SEQ:__pack/outfit/top__] → white shirt → black shirt → white shirt …
# GUI: 入力欄へ直接書くと、生成開始時に先頭へ戻して1周分をキューに用意します
# 複数のSEQは周回数の最小公倍数まで生成します。2,000件を超える場合は開始前に確認します
# CLI: --count で生成枚数を指定します
# 旧 [__tag__:2] はSEQとして扱いません。[SEQ:__tag__:2] に変更します
ネガティブへ移動する
# 以下は Negative が lowres の場合です
# <!…!> は末尾へ移します
portrait <!watermark!>
→ Prompt: portrait
→ Negative: lowres, watermark
# stn は先頭へ移します
portrait <ppp:stn>watermark<ppp:/stn>
→ Prompt: portrait
→ Negative: watermark, lowres
# s は先頭を明示します
portrait <ppp:stn s>watermark<ppp:/stn>
→ Prompt: portrait
→ Negative: watermark, lowres
# e は末尾を指定します
portrait <ppp:stn e>watermark<ppp:/stn>
→ Prompt: portrait
→ Negative: lowres, watermark
# 選ばれた候補の内容だけ移します。ワイルドカードの候補内にも書けます
{red hair <!blue hair!>|blue hair <!red hair!>}
→ Prompt: red hair
→ Negative: lowres, blue hair
# キャラクター内の指定は、そのキャラクターのNegativeへ移します
# Negative欄に書いた移動ブロックは、内容をその場に残します
# V5 Full Medium: 対象をPromptから除去し、内部のワイルドカード・SEQは展開しません
# モデル既定の固定Negativeと、エディタ・YAMLの原文は維持します
# pN・iN、閉じ忘れ、移動ブロックの入れ子は送信前にエラーになります
抽選と強調を区別する
# [] はワイルドカード展開後も残し、NovelAIの弱調として送ります
# 候補は通常どおりランダムに選び、SEQは進めません
[__tag__] → [blue]
[[__tag__]] → [[red]]
# | や $$ のない波括弧と、NAIの数値強調はそのまま残ります
{red} → {red}
1.2::red:: → 1.2::red::
# %% は当たりやすさです。TXTの行頭に単独で書いても抽選重みにはなりません
# {3%%red|blue} のように候補の中へ書きます
3%%red → 3%%red
# 空の候補は除外されます。空文字を選ぶことはありません
{red|} → red
# ? を含む参照名には未対応です。ファイル名検索は *・**・[ab] を使います
# 見つからない参照・循環参照は、未解決の参照を残してログへ警告します
# 固定Seedでもランダム抽選の結果は変わることがあります
# SEQの固定Seedは維持します。-1の場合だけ画像生成のSeedをランダムにします