# 매개변수와 입력 파일

> Nodaro CLI가 반복된 --param과 --input의 key=value 쌍을 요청 본문으로 바꾸는 방식, 값의 타입이 정해지는 규칙, 대신 JSON 파일을 보낼 때를 설명합니다.

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

**매개변수**는 명령줄에서 실행에 전달하는 값입니다. `nodaro nodes run`은 이를 `--param key=value`로, `nodaro apps run`은 `--input key=value`로 받습니다. 두 플래그 모두 반복해서 쓸 수 있고 같은 규칙을 따르며, 플래그에 맞지 않는 것은 `--params-file`로 전달하는 JSON 파일로 처리할 수 있습니다.

## key=value 쌍 작성
값마다 플래그를 한 번씩 반복하세요. 공백이 들어간 값은 셸이 하나의 인수로 전달하도록 따옴표로 감싸세요.

```bash
nodaro nodes run generate-video \
  --param prompt="a paper boat drifting down a rainy street" \
  --param provider=seedance-2-fast \
  --param duration=8
```

CLI는 요청을 보내기 전에 각 값에 타입을 지정합니다.

| 입력한 값 | 요청 본문에 들어가는 값 |
| --- | --- |
| `true` 또는 `false` | 불리언 |
| `null` | `null` |
| `8` 같은 정수 | 숫자 |
| `0.5` 같은 소수 | 숫자 |
| `[` 또는 `{`로 시작하고 유효한 JSON인 값 | JSON 배열 또는 객체 |
| 그 밖의 모든 값 | 문자열 |

첫 번째 `=`만 키와 값을 구분합니다. 나머지 텍스트는 그대로 유지되므로, `--param query=a=b=c`는 문자열 `a=b=c`를 보냅니다.

인라인 JSON 배열은 다음과 같습니다. 셸이 큰따옴표를 유지하도록 쌍 전체를 작은따옴표로 감싸세요.

```bash
nodaro nodes run generate-image --param prompt="the same mug on a marble counter" --param 'referenceImageUrls=["https://example.com/mug-front.png","https://example.com/mug-side.png"]'
```

노드가 받는 키를 확인하려면 `nodaro nodes get <type>`을 실행하세요. 앱이라면 `nodaro apps get <slug>`를 실행하세요.

## JSON 파일 보내기
중첩된 객체, 긴 배열, 또는 플래그 형식에 맞지 않는 값은 본문 전체를 JSON 파일에 작성해 `--params-file`로 전달하세요. 파일에는 JSON 객체가 하나 들어 있어야 합니다.

```bash
cat > body.json <<'EOF'
{
"prompt": "a lighthouse on a cliff at dawn, cinematic",
"provider": "flux",
"aspectRatio": "16:9"
}
EOF

nodaro nodes run generate-image --params-file body.json --param aspectRatio=9:16
```

플래그가 파일보다 우선합니다. 이 예시에서 실행은 플래그로 지정한 `9:16` 화면 비율을 사용하고, 본문의 나머지는 파일의 값을 사용합니다.

## 앱 입력과 원시 노드 필드 설정
`nodaro apps run`은 앱의 입력 이름을 키로 받습니다.

```bash
nodaro apps run hair-styler-dd3erw --input prompt="curly red hair" --watch
```

`--override`는 앱이 노출하지 않는 노드 필드를 이번 실행에서만 변경합니다. `<nodeId>.<field>=<value>` 형식으로 작성하세요.

```bash
nodaro apps run hair-styler-dd3erw --input prompt="curly red hair" \
  --override n1.promptPrefix="Studio portrait of" --override n1.promptSuffix=", 85mm, soft light"
```

이 예시는 사용자의 프롬프트 앞뒤를 숨겨진 텍스트로 감쌉니다. [프롬프트 앞뒤 텍스트](https://nodaro.ai/docs/concepts/prompt-pre-post-text)를 참고하세요. 오버라이드로는 [**Webhook 출력**](https://nodaro.ai/docs/nodes/publish/webhook-output) 노드의 주소처럼 노드가 데이터를 보내거나 가져오는 위치를 절대 바꿀 수 없습니다. 이런 실행은 `locked_field`로 거부됩니다.

## 입력 노드와 소스 노드 실행
입력 노드와 소스 노드도 같은 방식으로 실행합니다. [**웹 스크래핑**](https://nodaro.ai/docs/nodes/automate/web-scrape) 노드, 즉 `web-scrape`는 소스를 `actor`로 받으며, 값은 `google-search`, `content-crawler`, `rss`, `tiktok` 중 하나입니다.

```bash
# Google Search results
nodaro nodes run web-scrape --param actor=google-search --param query="running shoes" --param maxResults=5

# The text of one web page, as Markdown
nodaro nodes run web-scrape --param actor=content-crawler --param url=https://example.com --param mode=page
```

셀프 호스팅 설치에서 **웹 스크래핑**을 사용하려면 서버에 `APIFY_API_TOKEN`이 있거나, 스크래핑을 실행하고 요금을 청구하는 [Nodaro Cloud 연결](https://nodaro.ai/docs/self-hosting/cloud-connect)이 있어야 합니다.

## 자주 묻는 질문

### Nodaro CLI는 값이 숫자인지 문자열인지 어떻게 판단하나요?

true와 false라는 단어는 불리언이 되고, null은 null이 되며, 정수와 소수는 숫자가 됩니다. 대괄호나 중괄호로 시작하는 값은 유효한 JSON이면 JSON 배열이나 객체가 됩니다. 그 밖의 값은 모두 문자열로 남습니다.

### --param 값에 등호를 넣을 수 있나요?

네. 첫 번째 등호만 키와 값을 구분하므로, --param query=a=b=c는 a=b=c라는 값을 보냅니다.

### --param 대신 --params-file은 언제 사용해야 하나요?

중첩된 객체, 긴 배열, 또는 플래그로 입력하기 어려운 값에는 JSON 파일을 사용하세요. 같은 명령의 플래그는 파일과 겹치는 키를 덮어씁니다.

### --param과 --input은 어떻게 다른가요?

--param은 nodaro nodes run과 함께 사용하며, 키는 노드의 입력 필드입니다. --input은 nodaro apps run과 함께 사용하며, 키는 앱의 입력 이름입니다. 두 플래그 모두 같은 문법을 따릅니다.
