# 명령

> 프로젝트, 워크플로, 앱, 노드, 모델, 프리셋, 팔레트, 작업, 갤러리, Webhook, 결제, Recast를 다루는 Nodaro CLI의 모든 핵심 명령과 옵션을 정리했습니다.

Source: https://nodaro.ai/ko/docs/developers/cli/commands

핵심 **Nodaro CLI 명령**은 프로젝트와 워크플로를 관리하고, 게시된 앱과 단일 노드를 실행하고, 실행과 작업을 확인합니다. 이 페이지에는 각 명령과 옵션이 정리되어 있습니다. 에셋, 미디어, 워크스페이스 명령은 별도 페이지가 있으며, 첫 번째 표에 나와 있습니다.

모든 예시는 [CLI를 설치하고 로그인](https://nodaro.ai/docs/developers/cli)했다고 가정합니다.

## 명령 그룹
| 그룹 | 기능 | 문서 위치 |
| --- | --- | --- |
| `auth` | 로그인, 프로필 보기와 제거 | [CLI](https://nodaro.ai/docs/developers/cli#sign-in) |
| `projects` | 프로젝트 만들기, 읽기, 수정, 삭제 | 이 페이지 |
| `sessions` | 프로젝트 안의 생성 세션 | 이 페이지 |
| `workflows` | 워크플로 관리, 내보내기, 가져오기, 실행, 공유 | 이 페이지 |
| `apps` | 게시된 앱 둘러보기와 실행 | 이 페이지 |
| `nodes` | 노드 타입 목록 보기와 단일 노드 실행 | 이 페이지 |
| `models` | 모델 카탈로그 둘러보기 | 이 페이지 |
| `billing` | 요금제와 가격, 내 구독 | 이 페이지 |
| `pickers` | 피커 카탈로그 읽기와 설명으로 피커 채우기 | 이 페이지 |
| `presets` | 내 노드 프리셋, 즐겨찾기, 폴더, 그리고 기본 제공 카탈로그 | 이 페이지 |
| `palettes`, `moodboards` | **이미지 생성**에 쓰는 내 컬러 팔레트와 무드보드 | 이 페이지 |
| `catalog` | 배포 환경의 카탈로그 팩을 오프라인으로 관리 | 이 페이지 |
| `executions`, `jobs` | 실행 확인, 필터, 평가, 취소 | 이 페이지 |
| `gallery` | 공개 갤러리와 내 즐겨찾기 | 이 페이지 |
| `webhooks` | 작업이 끝날 때 Nodaro가 호출하는 엔드포인트 | 이 페이지 |
| `video-pro` | 동영상 생성 Pro 실행 중지와 이어 가기 | 이 페이지 |
| `prompt` | 대략적인 아이디어를 최적화된 프롬프트로 바꾸기 | 이 페이지 |
| `shots` | 샷 공유 기록 만들기와 읽기 | 이 페이지 |
| `recast` | Recast 실행 계획과 렌더링, 또는 스크립트 가져오기 | 이 페이지 |
| `characters`, `locations`, `objects` | 에셋 관리와 그 이미지, 모션 생성 | [에셋 명령](https://nodaro.ai/docs/developers/cli/asset-commands) |
| `voice`, `media`, `audio`, `edit` | 미디어의 음성 교체, 자막, 합성, 편집 | [미디어와 보이스 명령](https://nodaro.ai/docs/developers/cli/media-commands) |
| `org`, `workspace` | 조직, 초대, 워크스페이스, 사용량 보고서 | [워크스페이스와 조직](https://nodaro.ai/docs/developers/cli/workspaces) |

## 모든 명령에 쓸 수 있는 옵션
- `--profile <name>`은 기본 프로필 대신 저장된 프로필로 명령을 실행합니다.
- `--json`은 데이터를 읽는 모든 명령에서 기계가 읽을 수 있는 출력을 표시합니다. [출력과 종료 코드](https://nodaro.ai/docs/developers/cli/output)를 참고하세요.
- `--workspace <id>`는 전역 옵션입니다. 이 명령에만 적용할 워크스페이스를 정합니다. [워크스페이스와 조직](https://nodaro.ai/docs/developers/cli/workspaces)을 참고하세요.
- `-v` 또는 `--version`은 CLI 버전을 표시합니다.

아래 형식에서 `<value>`는 직접 넣는 값, `[...]`는 선택 사항, `a|b`는 나열된 값 중 하나를 뜻합니다.

## 프로젝트
```bash
nodaro projects list [--json]
nodaro projects get <id> [--json]
nodaro projects create --name <name> [--description <desc>] [--json]
nodaro projects update <id> [--name <name>] [--description <desc>] [--json]
nodaro projects delete <id> [--json]
```

## 세션
생성 세션은 프로젝트 안에서 단일 생성을 묶습니다. 세션의 항목은 내 작업의 사본이 아니라 링크입니다. [`client.sessions`](https://nodaro.ai/docs/developers/sdk/workflows#clientsessions)를 참고하세요.

```bash
nodaro sessions list [--project <id>] [--tool <tool>] [--archived] [--limit <n>] [--cursor <c>] [--json]
nodaro sessions get <id> [--json]
nodaro sessions items <id> [--limit <n>] [--cursor <c>] [--json]
nodaro sessions create --tool <tool> [--project <id>] [--title <title>] [--json]
nodaro sessions update <id> [--title <title> | --untitled] [--archive | --unarchive] [--json]
nodaro sessions import <id> --jobs <id,id,...> [--json]
nodaro sessions remove <id> <jobId> [--json]
nodaro sessions delete <id> [--json]
```

- `import`는 작업을 세션에 연결합니다. 전부 성공하거나 전부 실패합니다. 내 것이 아닌 작업이 하나라도 있으면 호출 전체가 실패합니다.
- `remove`는 링크만 제거합니다. 작업은 남고, 그 작업을 담은 다른 세션도 그대로입니다.
- `delete`는 세션을 삭제합니다. 세션의 작업은 유지됩니다.

## 워크플로
```bash
nodaro workflows list --project <projectId> [--json]
nodaro workflows get <id> [--json]
nodaro workflows create --project <projectId> --name <name> [--file bundle.json] [--json]
nodaro workflows update <id> [--name <name>] [--file nodes-edges.json] [--json]
nodaro workflows delete <id> [--json]
nodaro workflows export <id> [--with-assets] [--output bundle.json]
nodaro workflows import <file> --project <projectId> [--json]
nodaro workflows run <id> [--watch] [--node n1 n2 ...] [--json]
```

| 옵션 | 기능 |
| --- | --- |
| `create --file` | 내보낸 워크플로 번들로 워크플로를 만듭니다. |
| `update --file` | JSON 파일에 있는 노드, 엣지, 설정을 워크플로에 씁니다. |
| `export --with-assets` | 워크플로가 쓰는 캐릭터, 오브젝트, 장소 데이터를 번들에 추가합니다. |
| `export --output` | 번들을 출력하지 않고 파일에 씁니다. |
| `run --node` | 공백으로 구분해 나열한 노드 ID만 실행합니다. |
| `run --watch` | 실행이 끝날 때까지 따라갑니다. |

번들 형식은 편집기가 내보내는 형식과 같습니다. [워크플로 가져오기와 내보내기](https://nodaro.ai/docs/guides/import-export)를 참고하세요.

### 워크플로 공유와 이동
이 명령은 조직과 워크스페이스가 있는 인스턴스에서 작동합니다.

```bash
nodaro workflows share <id> [--visibility workspace|private] [--json]
nodaro workflows move <id> --project <projectId> [--json]
nodaro workflows shared-with-me [--json]
nodaro workflows collaborators list <id> [--json]
nodaro workflows collaborators add <id> (--user <userId> | --email <email>) --role viewer|editor [--json]
nodaro workflows collaborators update <id> <userId> --role viewer|editor [--json]
nodaro workflows collaborators remove <id> <userId> [--json]
```

- `share`는 워크스페이스에서 누가 워크플로를 볼 수 있는지 정합니다. 기본 공개 범위는 `workspace`입니다.
- `collaborators add --email`은 조직과 관계없이 모든 Nodaro 계정의 주소와 대조합니다. 계정이 없는 주소에는 `404`가 반환됩니다.
- `move`는 워크플로를 다른 프로젝트로 옮깁니다. 다른 워크스페이스로 옮기면 워크플로의 공동 작업자가 제거되며, 결과에 액세스를 잃은 사람이 나옵니다.

## 앱
앱은 다듬어진 입력과 출력 폼으로 감싼 워크플로입니다. [앱](https://nodaro.ai/docs/concepts/apps)을 참고하세요.

```bash
nodaro apps list [--search <query>] [--limit <n>] [--cursor <token>] [--category <slug>]
nodaro apps get <slug>                                   # input schema and outputs
nodaro apps run <slug> --input prompt="..." [--watch]
nodaro apps run <slug> --params-file inputs.json [--watch]
nodaro apps run <slug> --input prompt="..." --override <nodeId>.<field>=<value>
nodaro apps runs <slug> [--limit <n>] [--cursor <token>] [--json]   # your past runs
nodaro apps run-get <slug> <runId>
```

- `apps list`는 페이지마다 최대 50개의 앱을 반환합니다. 다음 페이지를 받으려면 한 페이지의 `--cursor`를 넘기세요.
- `apps get`은 앱의 입력 이름을 보여 줍니다. 이 이름을 `--input`의 키로 쓰세요.
- `--input`은 앱 입력 하나를 설정합니다. 입력마다 반복하거나, `--params-file`로 모두 JSON 파일에 담으세요.
- `--override`는 이번 실행에만 원시 노드 필드를 `<nodeId>.<field>=<value>` 형식으로 설정합니다. `promptPrefix`처럼 앱이 노출하지 않는 필드에도 닿습니다. [프롬프트 앞뒤 텍스트](https://nodaro.ai/docs/concepts/prompt-pre-post-text)를 참고하세요.

재정의로는 Webhook 출력 주소처럼 외부 전송 노드가 보내거나 가져오는 곳을 절대 바꿀 수 없습니다. 대신 실행이 `locked_field`로 거부됩니다.

## 노드
```bash
nodaro nodes list [--category <category>] [--json]
nodaro nodes get <type>                                  # full input schema
nodaro nodes run <type> --param prompt="..." --param provider=flux [--watch]
nodaro nodes run <type> --params-file body.json [--watch] [--poll-interval 1000]
nodaro nodes run generate-image --param prompt="..." [--count 1-4] [--models <id,id,...>] [--watch]
```

- `--category`는 `input`, `parameter`, `ai-image`, `ai-video`, `ai-audio`, `ai-text`, `processing`, `composition`, `output`, `control`, `entity`, `trigger`, `utility` 중 하나입니다.
- `nodes get`은 노드 타입 하나의 입력 스키마, 즉 `--param`이 받는 필드를 출력합니다.
- `nodes run`은 노드 자체의 경로로 요청을 보내며, 대부분의 노드 타입에서는 `POST /v1/<type>`입니다. `llm-chat`이나 Suno 노드 같은 일부 노드 타입은 별도의 경로가 있으며, CLI가 그 경로를 대신 사용합니다. `modify-image`나 `paint-mask`처럼 단독으로 실행할 수 없는 노드 타입은 API를 호출하기 전에 실패하며, 메시지가 대신 실행할 것을 알려 줍니다. [노드 실행](https://nodaro.ai/docs/developers/sdk/nodes#runtype-params-options)을 참고하세요.
- `--watch`는 응답에 작업 ID가 있으면 작업이 끝날 때까지 폴링합니다. `--poll-interval`은 폴링 간격을 밀리초 단위로 정합니다. 기본값은 2000입니다.

`--param`과 `--params-file`의 문법은 [매개변수와 입력 파일](https://nodaro.ai/docs/developers/cli/params)에 있습니다.

예를 들어 [동영상 깊이](https://nodaro.ai/docs/nodes/video/video-depth)는 클립을 가까운 곳은 밝고 먼 곳은 어두운 깊이 동영상으로 바꿉니다.

```bash
nodaro nodes run video-depth --param videoUrl=https://cdn.example.com/clip.mp4 --param colormap=turbo --watch
```

### 한 번의 호출로 여러 이미지
`generate-image`에서만 `--count <n>`이 이미지를 1~4장 만들며, 각 이미지는 별도의 작업입니다. `--models a,b`는 `provider` 대신 이미지 모델 2~4개에서 같은 요청을 실행합니다. 둘을 함께 쓰면 `--count`는 모델마다 적용되며, 최대 8장입니다. 일괄 처리 전체가 내 잔액과 비교되고, 전체가 청구되거나 아예 청구되지 않습니다.

```bash
nodaro nodes run generate-image --param prompt="a lighthouse at dusk" --count 4 --watch
nodaro nodes run generate-image --param prompt="a lighthouse at dusk" --models gpt-image-2,flux-2-max --count 2 --watch
```

CLI는 모든 작업 ID를 모델별로 묶어 출력하고, 일괄 처리 ID도 출력합니다. `--watch`는 모든 작업이 끝날 때까지 하나하나 따라갑니다. 모두 완료되면 `0`, 하나라도 실패하거나 취소되면 `2`, 나머지는 완료되고 일부가 검토를 기다리면 `3`으로 종료합니다. `--json --watch`는 모든 최종 상태를 출력합니다. 이 플래그는 `--param`이나 `--params-file`의 `count`, `models`보다 우선합니다.

## 모델
```bash
nodaro models list [--kind image|video|audio] [--mode <mode>] [--family <vendor>] [--featured] [--json]
```

- `--mode`는 `t2i`, `i2v`, `t2v`, `tts` 같은 작업 종류로 거릅니다.
- `--family`는 `Google`이나 `Bytedance` 같은 모델 제조사로 거릅니다.
- `--featured`는 추천 모델만 보여 줍니다.

표에는 각 모델의 ID, 종류, 제품군, 제조사, 모드, 크레딧 등급이 나옵니다. 제조사는 모델을 만든 회사입니다. 추천 모델과, Nodaro가 프롬프트 가이드를 마련한 모델 제품군도 표시됩니다. `--json`은 전체 기능 명세, 크레딧 가격, 프롬프트 팁을 반환합니다. 각 모델의 `maker`를 `{ id, name }`으로, 제조사의 `logoUrl`도 반환하며, 인스턴스가 로고를 게시하지 않으면 `logoUrl`은 `null`입니다. 같은 카탈로그는 [모델](https://nodaro.ai/docs/models)에서 둘러볼 수 있습니다.

## 결제
이 명령은 요금제와 가격, 내 구독을 읽습니다. 요금제 구매와 변경은 Nodaro 앱에서 합니다.

```bash
nodaro billing plans [--base-url <url>] [--json]
nodaro billing subscription [--json]
nodaro billing account [--json]
nodaro billing surface [--base-url <url>] [--json]
```

| 명령 | 보여 주는 내용 |
| --- | --- |
| `billing plans` | 판매 중인 요금제와 크레딧 팩, 그리고 가격입니다. Nodaro Cloud 전용입니다. 로그인이 필요 없습니다. |
| `billing subscription` | 내 구독과, 내 계정의 권한이 따르는 등급입니다. Nodaro Cloud 전용입니다. |
| `billing account` | 배포 환경의 결제 공급자가 보고하는 내 요금제와 잔액이며, 그 공급자의 단위로 표시됩니다. |
| `billing surface` | 배포 환경의 결제 방식입니다. 사용량을 측정하는지, 비용을 어떤 단위로 표시하는지 알려 줍니다. 로그인이 필요 없습니다. |

`plans`와 `surface`는 자격 증명을 보내지 않습니다. `--base-url`의 인스턴스에 묻고, 없으면 프로필의 인스턴스, 그것도 없으면 `https://app.nodaro.ai`에 묻습니다. 결제가 없는 셀프 호스팅 인스턴스에서는 `plans`와 `subscription`이 404로 응답합니다. 필드는 [`client.billing`](https://nodaro.ai/docs/developers/sdk/models-and-credits#clientbilling)을 참고하세요.

## 피커
피커는 분위기, 프레이밍 같은 크리에이티브 컨트롤 노드입니다. 이 명령은 피커의 유효한 값 카탈로그를 읽습니다. [피커 카탈로그](https://nodaro.ai/docs/developers/picker-catalogs)를 참고하세요.

```bash
nodaro pickers list [--json]
nodaro pickers get <nodeType> [--full] [--category <c>] [--field <f>] [--json]
nodaro pickers analyze "<text>" [--target <types>] [--instructions <text>] [--model <id>] [--effort <level>] [--json]
```

| 명령 또는 옵션 | 기능 |
| --- | --- |
| `pickers list` | 모든 피커 노드 타입과 각 타입의 옵션 수, 그리고 이미지가 있는 옵션 수를 나열합니다. |
| `pickers get` | 카탈로그 하나를 반환합니다. 각 옵션에는 `id`, `label`, `category`, `term`, `icon`이 있고, 이미지가 있으면 `imageUrl`도 있습니다. |
| `--full` | 각 옵션의 설명과 그 옵션이 추가하는 프롬프트 조각을 더합니다. |
| `--category` | 단일 차원 피커를 카테고리 하나로 거릅니다. |
| `--field` | 프레이밍의 `shotSize`처럼 다차원 피커의 차원 하나를 반환합니다. |
| `pickers analyze` | “AI 채우기”입니다. 자유롭게 쓴 설명에서 피커 값을 고릅니다. LLM 호출이며 크레딧이 청구됩니다. |
| `--target` | 채울 피커 노드 타입을 쉼표로 구분한 목록입니다. 기본값은 분석할 수 있는 모든 피커입니다. |

`term`은 간략 힌트 모드가 프롬프트에 추가하는 짧은 전문 문구입니다. `auto`나 `none`처럼 아무것도 추가하지 않는 옵션에서는 비어 있습니다. 인물과 스타일링은 `sections`도 반환합니다. 각 주제에는 둥근 이미지가 있습니다.

## 프리셋
프리셋은 노드의 저장된 설정입니다. 이 명령은 내 프리셋, 즐겨찾기, 폴더를 관리하고, 기본 제공 카탈로그를 읽습니다. [프리셋](https://nodaro.ai/docs/concepts/presets)을 참고하세요.

```bash
nodaro presets list [--node-type <type>] [--factory [--base-url <url>]] [--json]
nodaro presets create --node-type <type> --name <name> (--data <json> | --data-file <path|->) [--description <text>] [--group <id>] [--tag <t>]... [--preview-url <url>] [--json]
nodaro presets update <id> [--name <name>] [--description <text>] [--data <json> | --data-file <path|->] [--group <id> | --no-group] [--tag <t>]... [--preview-url <url> | --no-preview-url] [--expected-updated-at <iso>] [--json]
nodaro presets delete <id> [--expected-updated-at <iso>] [--json]
nodaro presets export [--node-type <type>] [--output <file>]
nodaro presets import <file|-> [--json]
nodaro presets favorites --node-type <type> [--json]
nodaro presets favorite <presetId> --node-type <type> [--json]
nodaro presets unfavorite <presetId> --node-type <type> [--json]
nodaro presets groups list [--node-type <type>] [--json]
nodaro presets groups create --node-type <type> --name <name> [--kind folder|section] [--sort-order <n>] [--json]
nodaro presets groups update <id> [--name <name>] [--sort-order <n>] [--json]
nodaro presets groups delete <id> [--json]
```

| 명령 또는 옵션 | 기능 |
| --- | --- |
| `list --factory` | `--node-type`의 기본 제공 카탈로그를 나열합니다. **로그인이 필요 없습니다.** `--base-url`은 다른 인스턴스에 묻습니다. `photos` 열은 프리셋이 쓰는 레퍼런스 사진의 수이고, `preview`는 예시 이미지가 있는지 알려 줍니다. |
| `list` | `--factory` 없이 쓰면 내 프리셋을 나열합니다. 프로필이 필요합니다. |
| `create --preview-url` | 이 플랫폼에 이미 저장된 이미지입니다. 업로드한 이미지나 완료된 결과입니다. |
| `update --expected-updated-at`, `delete --expected-updated-at` | 그 시각 이후 프리셋이 바뀌었으면 변경을 거부합니다. |
| `export` | 내 프리셋을 `import`가 받는 JSON 파일로 씁니다. |
| `import` | 그 파일이나 프리셋의 JSON 목록을 경로 또는 표준 입력에서 읽습니다. |
| `favorite`, `unfavorite` | 즐겨찾기를 추가하거나 제거합니다. 기본 제공 ID나 내 프리셋 ID를 씁니다. |
| `groups` | 내 폴더와 섹션을 나열하고, 만들고, 이름을 바꾸고, 삭제합니다. `groups`만 써도 목록이 나옵니다. 폴더를 삭제하면 그 안의 프리셋은 폴더 밖으로 옮겨집니다. |

순서 바꾸기는 편집기에서 드래그로 합니다. 스크립트에서는 SDK의 [`presets.reorder()`](https://nodaro.ai/docs/developers/sdk/pickers-and-prompts#presetsimportpresets-and-reorderinput)를 쓰세요.

## 팔레트와 무드보드
내 색상과 스타일 레퍼런스를 저장한 다음, `generate-image`에서 하나를 쓰세요. 팔레트는 `direction.colorLook`에 `palette:<id>`로, 무드보드는 `direction.style`에 `moodboard:<id>`로 넣습니다. SDK 레퍼런스의 [팔레트와 무드보드](https://nodaro.ai/docs/developers/sdk/pickers-and-prompts#clientpalettes)를 참고하세요.

```bash
nodaro palettes list [--limit <n>] [--cursor <c>] [--json]
nodaro palettes get <id> [--json]
nodaro palettes create --name <name> --colors <#hex,#hex,...> [--description <text>] [--json]
nodaro palettes update <id> [--name <name>] [--colors <#hex,...>] [--description <text> | --clear-description] [--json]
nodaro palettes delete <id> [--json]
nodaro moodboards list [--limit <n>] [--cursor <c>] [--json]
nodaro moodboards get <id> [--json]
nodaro moodboards create --name <name> --image <url[|caption]>... [--description <text>] [--json]
nodaro moodboards update <id> [--name <name>] [--description <text> | --clear-description] [--image <url[|caption]>...] [--json]
nodaro moodboards delete <id> [--json]
```

- 팔레트에는 색상이 2~12개 있습니다.
- 무드보드에는 이미지가 1~12장 있습니다. 이미지마다 `--image`를 반복하고, `|` 뒤에 캡션을 붙일 수 있습니다. `update`에서 `--image`는 모든 이미지를 바꿉니다.
- 무드보드를 삭제해도 연결된 이미지는 그대로 남습니다.

```bash
nodaro palettes create --name Harbour --colors "#0F4C5C,#E3B23C,#F28C7A"
nodaro nodes run generate-image --param prompt="a lighthouse at dusk" --param 'direction={"colorLook":"palette:<paletteId>"}' --watch
```

## 카탈로그 팩
배포 환경은 함께 포함한 카탈로그 팩으로 피커 카탈로그를 직접 다듬을 수 있습니다. 이 명령은 그런 팩을 관리합니다. 파일을 대상으로 오프라인에서 작동하며 로그인이 필요 없습니다.

```bash
nodaro catalog snapshot --in <file>
nodaro catalog diff-upstream --baseline <f> --upstream <f> --pack <f> [--write <f>]
nodaro catalog validate --pack <file> [--exempt es,fr,...]
```

- `snapshot`은 파일의 전체 상세 `/v1/catalogs` 투영을 번역 파일과 함께 JSON으로 출력합니다.
- `diff-upstream`은 3방향 병합입니다. 내가 바꾸지 않은 항목에 업스트림의 수정 사항을, 번역된 11개 로캘의 문자열과 함께 반영합니다. 나와 업스트림이 모두 바꾼 항목은 충돌로 보고하고 내 버전을 유지합니다. 업스트림에 새로 생긴 항목과 업스트림에서 삭제된 항목을 나열하며, 스스로 무언가를 추가하지는 않습니다. 충돌이 있으면 코드 2로 종료합니다.
- `validate`는 팩 스냅숏에 번역된 11개 로캘의 번역이 모두 있는지 확인하거나, `--exempt`로 예외를 선언합니다. 예외가 아닌 로캘에 번역이 빠져 있으면 코드 1로 종료합니다.

## 실행과 작업
**실행**은 워크플로나 앱을 한 번 실행하는 것입니다. **작업**은 이미지 생성 한 번처럼 노드 하나가 하는 일입니다. `nodaro nodes run`은 작업을 반환합니다.

```bash
nodaro executions get <id> [--watch] [--json]
nodaro executions cancel <id> [--mode cancelled|stopping]
nodaro jobs list [--status <s,s>] [--type <t,t>] [--origin <app>] [--favorited | --no-favorited] [--rating good|bad|rated|unrated] [--limit <n>] [--cursor <c>] [--json]
nodaro jobs get <id> [--json]
nodaro jobs rate <id> good|bad|clear [--json]
nodaro jobs cancel <id> [--json]
```

- `executions get --watch`는 실행이 완료, 실패, 취소될 때까지 폴링합니다.
- 기본값인 `executions cancel --mode cancelled`는 실행을 즉시 멈춥니다. `--mode stopping`은 현재 단계의 노드가 먼저 끝나도록 합니다.
- `jobs list`는 내 작업을 최신순으로 나열합니다. `--status`와 `--type`은 쉼표로 구분한 목록을 받습니다. `--no-favorited`는 즐겨찾기하지 않은 작업만 남깁니다. 모든 필터는 서로 조합됩니다.
- `jobs rate`는 내 작업 하나에 평가를 매깁니다. `clear`는 평가를 제거합니다.

## 갤러리
```bash
nodaro gallery browse [--type image|video|audio] [--user <id> | --favorites] [--limit <n>] [--cursor <c>] [--json]
nodaro gallery favorite <jobId> [--json]
nodaro gallery favorites [--json]
```

- `browse --user`는 한 사람의 작업물을 보여 줍니다. 내 ID를 쓰면 비공개 항목도 포함됩니다.
- `browse --favorites`는 내가 즐겨찾기한 내 항목만 보여 줍니다.
- `favorite`는 전환합니다. 작업을 즐겨찾기에 추가하거나, 이미 즐겨찾기라면 제거합니다.
- `favorites`는 즐겨찾기한 작업 ID를 최신순으로 출력합니다.

## Webhook
Webhook 엔드포인트는 내 작업이 `job.completed` 또는 `job.failed`로 끝날 때마다 Nodaro가 서명된 POST로 호출하는 https 주소입니다. 이벤트, 본문, 서명 확인 방법은 [Webhook](https://nodaro.ai/docs/developers/api/webhooks)을 참고하세요.

```bash
nodaro webhooks list [--json]
nodaro webhooks get <id> [--json]
nodaro webhooks create --url <https-url> [--events job.completed,job.failed] [--description <text>] [--json]
nodaro webhooks update <id> [--url <https-url>] [--events <list>] [--description <text> | --clear-description] [--enable | --disable] [--json]
nodaro webhooks delete <id> [--json]
nodaro webhooks rotate-secret <id> [--grace <seconds>] [--json]
nodaro webhooks deliveries <id> [--status pending|delivered|failed] [--limit <n>] [--cursor <c>] [--json]
nodaro webhooks test <id> [--wait] [--poll-interval <ms>] [--json]
```

| 명령 | 기능 |
| --- | --- |
| `create` | 엔드포인트를 등록하고 서명 시크릿(`whsec_…`)을 **한 번만** 출력합니다. 잘 보관하세요. `--json`을 쓰면 출력은 `{ data, secret }`입니다. |
| `update --enable` | 엔드포인트를 켭니다. 50번 연속 전송이 최종 실패하면 일어나는 자동 꺼짐도 해제합니다. |
| `delete` | 엔드포인트와 그 전송 기록을 삭제합니다. |
| `rotate-secret` | 새 시크릿을 한 번 출력합니다. 이전 시크릿은 `--grace`초 동안 계속 서명합니다. 기본값은 하루이며, `0`이면 이전 시크릿이 즉시 멈춥니다. |
| `deliveries` | 전송 기록을 최신순으로 나열합니다. |
| `test` | 엔드포인트가 꺼져 있어도 `ping`을 한 번 보냅니다. `--wait`는 그 전송을 따라가며 서버가 어떻게 응답했는지 보여 줍니다. |

## 동영상 생성 Pro 실행 제어
[동영상 생성 Pro](https://nodaro.ai/docs/nodes/video/generate-video-pro)는 긴 동영상을 세그먼트 하나씩 만들기 때문에, 실행을 멈췄다가 나중에 이어 갈 수 있습니다. Nodaro Cloud에서 실행되며, 셀프 호스팅 설치는 Nodaro Cloud 연결을 통해 실행합니다.

```bash
nodaro video-pro stop <jobId> [--json]
nodaro video-pro continue <jobId> [--from-segment N] [--watch] [--poll-interval <ms>] [--json]
```

- `stop`은 실행을 정상적으로 끝냅니다. 완성된 세그먼트는 유지되어 전달되고, 남은 예약분은 환불됩니다. 진행 중이던 세그먼트는 그대로 청구됩니다.
- `continue`는 세그먼트 `N`부터 다시 생성하는 새 작업을 시작합니다. 기본값은 전달되지 않은 첫 번째 세그먼트입니다. 다시 생성한 세그먼트와 고정 Pro 요금만 지불합니다.

## 프롬프트 마법사
프롬프트 마법사는 대략적인 아이디어를 `generate-image` 같은 노드 타입에 맞는 최적화된 프롬프트로 바꿉니다.

```bash
nodaro prompt wizard [--node-type <type>] [--prompt "..."] [--provider <name>] [--style <name>] [--aspect-ratio <ratio>] [--duration <seconds>] [--llm-model <id>] [--reasoning-effort <level>] [--advanced] [--temperature <n>] [--max-tokens <n>]
nodaro prompt analyze --node-type <type> [--prompt "..."] [--provider <name>] [--style <name>] [--aspect-ratio <ratio>] [--duration <seconds>] [--llm-model <id>] [--reasoning-effort <level>] [--advanced] [--temperature <n>] [--max-tokens <n>] [--json]
nodaro prompt generate --node-type <type> --selection category=value [--selection ...] [--original-prompt "..."] [--provider <name>] [--style <name>] [--aspect-ratio <ratio>] [--duration <seconds>] [--llm-model <id>] [--reasoning-effort <level>] [--advanced] [--temperature <n>] [--max-tokens <n>] [--json]
nodaro prompt enhance --node-type <type> [--prompt "..."] [--provider <name>] [--style <name>] [--aspect-ratio <ratio>] [--duration <seconds>] [--llm-model <id>] [--reasoning-effort <level>] [--advanced] [--temperature <n>] [--max-tokens <n>] [--json]
```

| 명령 | 기능 |
| --- | --- |
| `prompt wizard` | 터미널에서 안내 질문을 합니다. `--node-type`이 없으면 먼저 어느 노드용 프롬프트인지 묻습니다. 대화형 터미널이 필요합니다. |
| `prompt analyze` | 스크립트용으로 마법사의 안내 질문을 반환합니다. |
| `prompt generate` | 내 답변으로 최종 프롬프트를 만듭니다. 답변마다 `--selection category=value`를 한 번씩 반복하세요. |
| `prompt enhance` | 질문 없이 한 번에 프롬프트를 다시 씁니다. |

- `--reasoning-effort`는 `none`, `low`, `medium`, `high`, `xhigh`, `max` 중 하나입니다. 지원 여부는 모델에 따라 다르며, 지원하지 않거나 생략한 값은 모델의 기본값을 씁니다. `xhigh`와 `max`는 한 등급 위로 청구되지만, 프리미엄 모델은 프리미엄 가격 그대로입니다. Claude 모델에서는 어떤 추론 강도든 Anthropic 자체 API에서 실행되며, 한 등급 더 위로 청구됩니다.
- `--advanced`는 Gemini와 Claude 모델에서 작동합니다. 요청을 모델 제작사의 자체 API에서 실행합니다. `--temperature`, `--max-tokens`, 전체 추론 범위를 쓸 수 있게 하며, 한 등급 위로 청구됩니다. 프리미엄 모델은 premium-direct 가격이 됩니다.

## 샷
샷은 저장된 빌더 상태로, 피커 선택, 프롬프트, 고른 모델, 에셋 레퍼런스를 담습니다. 샷으로 공유 링크와 원클릭 리믹스가 가능합니다.

```bash
nodaro shots get <id> [--json]
nodaro shots create [--file shot.json] [--visibility private|public] [--json]
nodaro shots update <id> [--file fields.json] [--visibility private|public] [--json]
nodaro shots delete <id>
```

`--visibility public`을 설정하지 않으면 새 샷은 비공개입니다. 공개 샷의 ID를 가진 사람은 누구나 그 샷을 읽을 수 있습니다.

## Recast
Recast는 분석한 동영상을 내 출연진으로 다시 생성합니다. 직접 쓴 스크립트를 가져와 Recast로 렌더링할 수도 있습니다. recast 명령은 Nodaro Cloud에서만 작동합니다.

```bash
nodaro recast skill
nodaro recast validate --file script.json [--json]
nodaro recast import --file script.json --rights-attested [--json]
nodaro recast estimate --analysis-job <id> [--fidelity faithful] [--resolution <r>] [--segment-sec <n>] [--json]
nodaro recast create --workflow <id> --analysis-job <id> [--rights-attested] [--fidelity faithful] [--resolution <r>] [--segment-sec <n>] [--json]
nodaro recast start <recastId> [--segment-sec <n>] [--json]
nodaro recast status <recastId> [--json]
```

| 명령 | 기능 | 비용 |
| --- | --- | --- |
| `recast skill` | 스크립트 작성 가이드를 Markdown으로 출력합니다. | 무료 |
| `recast validate` | 스크립트를 검사합니다. 스크립트가 유효하지 않으면 코드 1로 종료합니다. | 무료 |
| `recast import` | 검증한 스크립트를 완료된 분석으로 가져옵니다. `--rights-attested`는 스크립트가 내 작업물임을 밝힙니다. 직접 작성한 Recast는 `faithful` 충실도로, 쓴 그대로 렌더링됩니다. | 무료 |
| `recast estimate` | 실행 비용을 크레딧으로 견적합니다. | 무료 |
| `recast create` | 계획을 구매하고 실행 ID를 반환합니다. 먼저 `estimate`를 실행하세요. | 크레딧 |
| `recast start` | 계획된 실행을 렌더링합니다. 두 번 실행해도 문제가 없습니다. | 계획에 포함 |
| `recast status` | 상태와 나를 기다리는 대화형 단계를 보여 줍니다. | 무료 |

**CLI 1.24.0의 `--segment-sec`.** Recast 라우트는 세그먼트 설정에 묶음 이름을 받습니다. `scenes-max`(이음매가 가장 적음), `scenes`(더 짧은 파트), `max`(모델이 허용하는 가장 긴 파트) 중 하나입니다. CLI 1.24.0은 `--segment-sec`을 숫자로 보내므로 묶음 이름을 보낼 수 없고, `10` 같은 숫자는 `400 validation_error`로 거부됩니다. 이 옵션을 빼면 서버가 기본값인 `scenes-max`를 씁니다. 다른 묶음을 고르려면 [Recast API](https://nodaro.ai/docs/developers/api/recast)를 호출하세요.

Recast가 작동하는 방식은 [Recast](https://nodaro.ai/docs/mcp/recast)에서, 이 명령 뒤에 있는 엔드포인트는 [Recast API](https://nodaro.ai/docs/developers/api/recast)에서 확인하세요.

## 자주 묻는 질문

### Nodaro CLI로 실행할 수 있는 모든 노드 타입을 보려면 어떻게 하나요?

nodaro nodes list를 실행하세요. 목록을 거르려면 --category ai-image처럼 카테고리를 추가하고, 노드 타입 하나의 전체 입력 스키마를 보려면 nodaro nodes get generate-image를 실행하세요.

### CLI에서 워크플로의 일부 노드만 실행하려면 어떻게 하나요?

nodaro workflows run에 --node를 추가하고, 그 뒤에 노드 ID를 공백으로 구분해 적으세요. 그 노드들만 실행됩니다.

### 터미널에서 실행 중인 워크플로를 멈추려면 어떻게 하나요?

실행 ID와 함께 nodaro executions cancel을 실행하세요. 기본 모드인 cancelled는 실행을 즉시 멈춥니다. --mode stopping을 쓰면 현재 단계의 노드가 먼저 끝납니다.

### CLI 명령 하나로 이미지를 여러 장 생성하려면 어떻게 하나요?

nodaro nodes run generate-image에 --count(이미지 1~4장)를 붙이거나, 이미지 모델 ID 2~4개와 함께 --models를 붙여 실행하세요. --watch를 추가하면 모든 작업이 끝날 때까지 하나하나 따라갑니다.

### Nodaro Cloud가 필요한 Nodaro CLI 명령은 무엇인가요?

recast 명령은 Nodaro Cloud에서만 실행됩니다. 동영상 생성 Pro 실행 제어는 셀프 호스팅 설치에서도 Nodaro Cloud 연결을 통해 작동합니다.

### 작업이 끝날 때 내 서버로 호출을 받으려면 어떻게 하나요?

nodaro webhooks create --url에 내 https 주소를 붙여 실행하세요. CLI는 엔드포인트의 서명 시크릿을 한 번만 출력합니다. 엔드포인트 ID와 --wait를 붙여 nodaro webhooks test를 실행하면 서버가 어떻게 응답했는지 볼 수 있습니다.
