# パラメーターと入力ファイル

> Nodaro CLI が、繰り返し指定した --param と --input の key=value をリクエストボディに変換する仕組み、値の型の決まり方、JSON ファイルを使うべき場面を説明します。

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

**パラメーター**は、コマンドラインで実行に渡す値です。`nodaro nodes run` では `--param key=value` として渡し、`nodaro apps run` では `--input key=value` として渡します。どちらのフラグも繰り返し指定でき、規則も同じで、フラグに収まらない値は `--params-file` で JSON ファイルとして渡せます。

## key=value のペアを書く
値ごとに、そのフラグを 1 回繰り返します。スペースを含む値は引用符で囲み、シェルが 1 つの引数として渡すようにします。

```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` で渡します。ファイルには、1 つの 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 出力**（Webhook Output）](https://nodaro.ai/docs/nodes/publish/webhook-output)ノードの宛先など）を変更することはできません。そのような実行は `locked_field` で拒否されます。

## 入力ノードとソースノードを実行する
入力ノードとソースノードも、同じように実行します。[**Web スクレイピング**（Web Scrape）](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
```

セルフホスティング環境で **Web スクレイピング**を使うには、サーバーの `APIFY_API_TOKEN` か、スクレイピングを実行して課金する [Nodaro Cloud への接続](https://nodaro.ai/docs/self-hosting/cloud-connect)が必要です。

## Frequently asked questions

### 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 で使い、キーにはアプリの入力名を指定します。どちらのフラグも書式は同じです。
