# 프롬프트 변수

> 프롬프트 변수는 다른 노드의 레이블을 중괄호로 감싸 그 값을 프롬프트에 넣습니다. 파이프 두 개로 기본값을 정하고, @로 캐릭터와 이름 있는 이미지를 첨부하세요.

Source: https://nodaro.ai/ko/docs/concepts/prompt-variables

**프롬프트 변수**는 다른 노드의 값을 프롬프트에 넣습니다. `{Mood}`처럼 노드의 레이블을 중괄호로 감싸 쓰면, 프롬프트가 실행될 때 Nodaro가 이를 그 노드의 텍스트나 선택 값으로 바꿉니다. 변수를 사용하면 프롬프트를 한 번만 쓰고, 그 일부를 다른 노드, 피커, 목록 항목에서 바꿀 수 있습니다. 캐릭터, 장소, 이미지는 `@` 멘션을 쓰면 단어뿐 아니라 이미지 자체가 첨부됩니다.

## 작동 방식
Workflow: 이미지 생성의 프롬프트가 다른 두 노드를 가리킵니다. 실행할 때 변수는 Subject 노드의 텍스트와 분위기 피커의 문구로 바뀝니다.

- 텍스트 → 이미지 생성 (프롬프트)
- 분위기 → 이미지 생성 (룩)

1. 값을 가져올 노드에 “Subject” 같은 레이블을 붙이세요. 피커에는 “Mood” 같은 레이블이 이미 있습니다.
2. 다른 노드의 프롬프트에 레이블을 중괄호로 감싸 쓰세요. 예: `A portrait of {Subject}, {Mood}, soft window light`.
3. 값을 가져올 노드를 프롬프트가 있는 노드에 연결하세요. 피커의 값은 연결하지 않아도 워크플로 어디에서나 사용할 수 있습니다.
4. 노드를 실행하세요. Nodaro가 각 변수를 해당 노드의 현재 값으로 바꿉니다.

프롬프트 편집기에서 `{`를 입력하면 변수를 삽입할 수 있습니다. 변수 이름은 대소문자를 구분하지 않습니다. `{mood}`, `{Mood}`, `{MOOD}`는 모두 “Mood”라는 레이블의 노드를 가리킵니다. 각 변수의 출처가 하나가 되도록, 값을 가져올 노드마다 고유한 레이블을 붙이세요. 다른 인터페이스 언어에서도 노드의 기본 레이블은 영어로 유지되므로, 헤더에 번역된 이름이 표시되어도 변수는 여전히 `{Mood}`입니다.

## 기본값
변수에는 파이프 두 개 뒤에 대체 값을 붙일 수 있습니다. 변수에 값을 제공하는 것이 없으면 Nodaro는 이 대체 값을 사용합니다.

- `{person || man}`은 연결된 [인물](https://nodaro.ai/docs/nodes/creative-controls/person) 피커가 있으면 그 값을, 없으면 “man”(남자)이라는 단어를 사용합니다. 인물 피커가 없으면 프롬프트 `generate a {person || man} running`은 `generate a man running`이 됩니다.
- 파이프 뒤에 아무것도 없는 `{person || }`은 값을 제공하는 노드가 없으면 아무것도 들어가지 않습니다.
- 대체 값 앞뒤의 공백은 제거됩니다.

많은 기본 제공 [프리셋](https://nodaro.ai/docs/concepts/presets)은 `{brand || a modern tech startup}`처럼 기본값을 사용하므로, 프리셋을 그대로 실행해도 적절한 결과가 나옵니다. 변수 전체를 내 문구로 바꾸거나, 레이블이 일치하는 노드를 연결해 실행할 때 값을 채우세요.

## 강조 표시
설정 패널의 프롬프트 편집기와 Ctrl+E로 여는 더 큰 프롬프트 편집기에서는 변수가 강조 표시됩니다.

| 강조 색 | 의미 |
| --- | --- |
| 청록색 | 연결된 노드가 이 이름을 제공하거나, 이 이름이 기본 제공 템플릿 변수입니다. |
| 주황색 | 연결된 노드 중 아직 이 이름을 제공하는 노드가 없습니다. 오류가 아니라 경고이며, 기본값이 있는 변수는 그대로 작동합니다. |

기본값이 있는 변수 안에서 기본값 텍스트는 사용될 때 밝게 표시되고, 연결된 노드의 값이 대신 사용될 때는 회색에 취소선으로 표시됩니다.

노드가 보낼 정확한 텍스트를 보려면 노드의 프롬프트 영역을 **편집**에서 **최종**으로 전환하거나, 설정 패널의 프롬프트 필드에서 **최종 프롬프트 보기**를 클릭하세요. 최종 보기는 프롬프트의 각 부분을 출처에 따라 다른 색으로 표시하며, 범례에는 **변수**, **피커**, **스니펫**, **앞뒤 텍스트**, **레퍼런스**, **스타일**, **네거티브**가 있습니다. **최종 프롬프트 복사**는 결과를 복사합니다.

![최종 보기에 표시된 이미지 생성의 프롬프트. 값으로 바뀐 변수, 피커 문구, 앞뒤 텍스트가 서로 다른 색으로 표시되고 아래에 색상 범례가 있습니다.](https://nodaro.ai/docs-media/screens/en/concepts/prompt-final-view.light.webp)

## 변수를 해석할 수 없을 때
- **어떤 노드와도 일치하지 않는 이름은 실행을 중단합니다.** 기본값이 없는 변수가 워크플로 어디에도 없는 노드를 가리키면, 아무것도 전송되거나 청구되기 전에 실행이 거부됩니다. 따라서 오타 때문에 잘못된 이미지가 만들어지는 일은 없습니다.
- **값이 없는 노드는 빈 텍스트가 됩니다.** 노드는 있지만 아직 아무것도 만들지 않았다면, 기본값이 없는 변수는 빈 텍스트가 됩니다.
- **연결된 텍스트는 다시 쓰이지 않습니다.** 변수가 아니라 입력을 통해 들어온 텍스트는 그대로 사용됩니다. 그 안의 중괄호는 변수로 처리되지 않습니다.
- **일부 이름은 예약되어 있습니다.** 프롬프트 템플릿은 `{userPrompt}` 같은 기본 제공 이름을 사용합니다. 이런 이름은 노드 레이블이 아닙니다.

**노드가 빠졌습니까?** 프롬프트가 있는 노드를 선택하고 Tab 키를 눌러 노드를 추가하세요. **자동 연결**이 켜져 있으면 연결 대화 상자에 프롬프트의 **누락된 변수**가 표시됩니다. 하나를 고르면 새 노드에 그 이름이 붙고 자동으로 연결됩니다.

## 입력한 프롬프트와 연결된 프롬프트
노드에는 직접 입력한 프롬프트와 **프롬프트** 입력에 연결된 프롬프트가 동시에 있을 수 있습니다.

- **이미지 생성과 동영상 생성에서는** 연결된 프롬프트가 입력한 프롬프트 뒤에 추가됩니다. 입력한 프롬프트가 이미 연결된 노드를 변수로 가리키고 있으면, 텍스트는 변수 위치에만 나타납니다. 연결된 프롬프트를 추가하지 않으려면 설정 패널의 **프롬프트 삽입** 영역에서 **프롬프트 삽입**을 끄세요. 연결선은 노드가 연결된 텍스트를 사용하지 않을 때만 회색으로 바뀝니다. **프롬프트 삽입**이 꺼져 있고 프롬프트가 연결된 노드를 가리키지 않을 때, 또는 그 뒤에 다른 텍스트 노드가 연결되었을 때입니다. 회색 연결선을 가리키면 이유가 표시됩니다. “사용되지 않음: ‘프롬프트 삽입’이(가) 꺼져 있습니다” 또는 “사용되지 않음: 나중에 연결한 텍스트 노드가 대신 사용됩니다”입니다.
- **다른 노드에서는** 입력한 프롬프트가 우선합니다. 연결된 프롬프트는 입력한 프롬프트가 비어 있을 때나, 입력한 프롬프트가 그것을 변수로 가리키는 위치에서 사용됩니다. 노드가 연결된 프롬프트를 사용하지 않으면 연결선이 회색으로 바뀌고 “프롬프트에서 참조되지 않음”이라고 표시됩니다.
- **일괄 처리에서는** 각 목록 항목이 해당 실행의 프롬프트를 대체합니다. [목록과 일괄 처리](https://nodaro.ai/docs/concepts/lists-and-batching)를 참고하세요.

## 피커가 텍스트를 추가하는 방식
분위기, 조명, 프레이밍 같은 [피커](https://nodaro.ai/docs/nodes/creative-controls)는 모델을 실행하지 않습니다. 피커는 연결된 노드의 프롬프트에 검증된 문구를 다음 두 가지 방식 중 하나로 추가합니다.

- **룩 또는 요소에 연결.** 피커의 문구가 [이미지 생성](https://nodaro.ai/docs/nodes/image/generate-image) 또는 [동영상 생성](https://nodaro.ai/docs/nodes/video/generate-video)의 프롬프트 끝에 추가됩니다. 추가하지 않으려면 설정 패널에서 **룩 삽입** 또는 **요소 삽입**을 끄세요.
- **변수로 지정.** `{Mood}`를 쓰면 피커의 문구가 정확히 그 위치에 들어갑니다. 연결하지 않아도 모든 프롬프트에서 작동합니다.

모든 카탈로그 피커에는 **프롬프트 힌트** 스위치가 있습니다. **전체**는 선택 항목에 대한 더 긴 설명을 추가하고, **간략**은 짧은 용어만 추가하므로 여러 피커가 한 노드에 연결될 때 프롬프트를 짧게 유지할 수 있습니다. 피커 자체의 **사용자 지정 텍스트(앞)** 및 **사용자 지정 텍스트(뒤)** 값은 두 모드 모두에서 피커 문구 앞뒤에 추가됩니다. 피커가 추가하는 정확한 문구를 보려면 피커를 **프롬프트** 또는 **둘 다** 표시 모드로 전환하세요.

## @로 캐릭터와 이미지 멘션
`@` 멘션은 레퍼런스 이미지를 첨부하고, 입력한 위치에 그에 맞는 문구를 씁니다. 이미지 노드나 동영상 노드의 프롬프트에 `@`를 입력하고 옵션 중에서 고르세요.

| 멘션 | 첨부되는 것 |
| --- | --- |
| `@maya` 같은 캐릭터 | 연결된 [캐릭터 에셋](https://nodaro.ai/docs/nodes/assets/character) 노드에서 가져온, 캐릭터의 승인된 이미지와 설명 |
| `@old-library` 같은 장소 | 연결된 [장소 에셋](https://nodaro.ai/docs/nodes/assets/location) 노드에서 가져온, 장소의 이미지와 설명 |
| `@town:1` 같은 이름 있는 이미지 | “Town”이라는 레이블이 붙은, 연결된 [이미지 업로드](https://nodaro.ai/docs/nodes/image/upload-image) 노드 |
| `@nessie:1` 같은 크리처나 오브젝트 | 연결된 [동물/크리처 에셋](https://nodaro.ai/docs/nodes/assets/creature) 또는 [오브젝트/소품 에셋](https://nodaro.ai/docs/nodes/assets/object) 노드. 추천 목록이 없으므로 직접 입력하세요. |

멘션은 레퍼런스에서 무엇을 가져올지도 지정할 수 있습니다. `@town:1:background`는 `the background from reference image A`가 되고, `@maya:1:clothes`는 옷만 가져옵니다. 캐릭터와 장소는 프롬프트에 알약 모양 태그로 표시됩니다. 태그의 썸네일을 클릭하면 다른 이미지를 고를 수 있고, 레이블을 클릭하면 가져올 요소를 고를 수 있습니다. [레퍼런스 역할](https://nodaro.ai/docs/guides/reference-roles)에 모든 역할과 신원 잠금이 정리되어 있습니다.

숫자로 시작하는 레이블로는 멘션을 만들 수 없으므로 이름을 바꾸세요. 캐릭터나 장소가 이미지와 같은 이름이면 캐릭터나 장소가 우선합니다.

## 연결된 레퍼런스 가리키기
[Seedance 2](https://nodaro.ai/docs/models/video/seedance-2)처럼 여러 레퍼런스를 받는 동영상 모델에서는 위치 토큰으로 문구가 연결된 레퍼런스 하나를 가리키게 할 수 있습니다.

| 토큰 | 바뀌는 결과 |
| --- | --- |
| `{image:1:person}` | `the person from @image_1` |
| `{image:2:jacket}` | `the jacket from @image_2` |
| `{image:1}` | `the subject in @image_1` |
| `{video:1:clip}` | `the clip from @video_1` |
| `{audio:1:voice}` | `the voice from @audio_1` |

**이미지 레퍼런스**에 연결된 이미지에 먼저 연결 순서대로 번호가 매겨지고, 그다음 **에셋**에 연결된 에셋에 번호가 매겨집니다. 연결된 레퍼런스 수보다 큰 번호의 토큰은 일반 레이블이 되며, 레퍼런스를 지원하지 않는 모델도 일반 레이블을 읽습니다.

## 변수를 사용할 수 있는 곳
- 이미지, 동영상, 오디오, 음악, 음성, 텍스트 노드의 **프롬프트**, 그리고 [텍스트](https://nodaro.ai/docs/nodes/automate/text) 노드의 텍스트.
- **앞뒤 텍스트.** [프롬프트 앞뒤 텍스트](https://nodaro.ai/docs/concepts/prompt-pre-post-text)를 참고하세요.
- **목록 항목.** 일괄 처리의 각 항목에 변수를 넣을 수 있습니다.
- [선택기](https://nodaro.ai/docs/nodes/automate/selector) 노드의 나누는 수, 값, 시드 필드 같은 **일부 유틸리티 설정**.

값 대신 재사용할 텍스트를 삽입하려면 프롬프트에 `/`를 입력해 [프롬프트 스니펫](https://nodaro.ai/docs/guides/prompt-snippets)을 여세요. 스니펫은 일반 텍스트로 삽입됩니다.

## 자주 묻는 질문

### Nodaro의 프롬프트 변수란 무엇입니까?

프롬프트 안에 {Mood}처럼 중괄호로 감싸 쓴 노드의 레이블입니다. 노드가 실행되면 Nodaro가 변수를 그 노드의 텍스트나 선택 값으로 바꾸므로, 다른 노드에서 프롬프트의 일부를 바꿀 수 있습니다.

### 존재하지 않는 노드를 가리키는 변수는 어떻게 됩니까?

아무것도 전송되거나 청구되기 전에 실행이 중단되므로, 오타 때문에 잘못된 결과가 나오는 일은 없습니다. 이름을 고치거나, 파이프 두 개 뒤에 기본값을 추가하세요.

### 변수에 기본값을 지정하려면 어떻게 합니까?

{person || man}처럼 파이프 두 개 뒤에 기본값을 쓰세요. Nodaro는 연결된 노드가 있으면 그 노드를, 없으면 “man”이라는 단어를 사용합니다. {person || }처럼 기본값을 비워 두면 아무것도 들어가지 않습니다.

### 변수가 주황색으로 강조 표시되는 이유는 무엇입니까?

주황색은 연결된 노드 중 아직 그 이름을 제공하는 노드가 없다는 뜻입니다. 오류가 아니라 경고입니다. 기본값이 있는 변수는 그대로 작동하며, 피커의 값은 연결하지 않아도 사용할 수 있습니다.

### 변수와 @ 멘션은 어떻게 다릅니까?

변수는 텍스트를 삽입합니다. @ 멘션은 캐릭터, 장소 또는 이름 있는 이미지를 레퍼런스 이미지로 첨부하고, 입력한 위치에 “레퍼런스 이미지 A의 인물” 같은 문구를 씁니다.
