# 목록과 일괄 처리

> 프롬프트, 이미지, 행 여러 개를 한 워크플로에서 처리하세요. 노드는 목록 항목마다 한 번씩 실행되고, 수집, 선택기, 최적 선택이 많은 결과를 다시 하나로 만듭니다.

Source: https://nodaro.ai/ko/docs/concepts/lists-and-batching

**목록**은 워크플로가 함께 처리하는 항목 모음입니다. 프롬프트, 이미지, 동영상, 오디오 파일, 표의 행이 항목이 될 수 있습니다. **팬아웃**은 항목마다 노드를 한 번씩 실행하므로, 프롬프트 10개가 이미지 10장이 됩니다. **팬인**은 많은 결과를 다시 하나로 만듭니다. 예를 들어 클립을 이어 동영상 하나로 만들거나, AI 심사 모델이 가장 좋은 이미지를 고르게 합니다.

## 작동 방식
Workflow: 프롬프트 5개가 이미지 5장으로 팬아웃됩니다. 최적 선택이 이미지 5장을 심사해 가장 좋은 것만 넘기므로, 동영상은 한 번만 실행됩니다.

- 목록 → 이미지 생성 (프롬프트)
- 이미지 생성 → 최적 선택 (후보)
- 최적 선택 → 동영상 생성 (시작 프레임)

**연결 모드**는 목록을 항목별로 처리할지 한꺼번에 처리할지 정합니다. **개별** 모드의 연결은 다음 노드를 항목마다 한 번씩 실행합니다. **묶음** 모드의 연결은 목록 전체를 한 번의 실행으로 넘깁니다. 모든 모드는 [노드와 연결](https://nodaro.ai/docs/concepts/nodes-and-connections#connection-modes)에서 설명합니다.

## 목록을 만드는 곳
| 출처 | 얻는 것 |
| --- | --- |
| [목록](https://nodaro.ai/docs/nodes/automate/list) | 한 행에 하나씩 직접 입력하거나, 붙여 넣거나, 업로드한 항목. 목록은 유형이 정해진 열 여러 개가 있는 표로 늘릴 수 있습니다. 무료입니다. |
| [텍스트 분할](https://nodaro.ai/docs/nodes/automate/split-text) | 텍스트 하나를 줄바꿈마다, 쉼표마다, 또는 고른 구분자마다 잘라 만든 항목. 무료입니다. |
| [텍스트 생성 - 모든 LLM](https://nodaro.ai/docs/nodes/automate/prompt) | **항목** 출력은 모델의 답변을 `===NEXT===`가 나오는 곳마다 나누므로, 답변 하나가 여러 프롬프트가 될 수 있습니다. |
| 결과가 여러 개인 노드 | **반복** 등으로 여러 번 실행한 노드에는 여러 버전이 있으며, 연결이 이를 목록으로 전달할 수 있습니다. |
| [수집](https://nodaro.ai/docs/nodes/automate/collect) | 서로 다른 여러 노드의 결과를 미디어 종류마다 목록 하나로 모은 것. 무료입니다. |

## 팬아웃: 항목마다 한 번씩 실행
**개별** 모드의 연결이 목록을 노드로 가져오면, 노드는 항목마다 한 번씩 실행되고 모든 결과를 보관합니다. 목록과 텍스트 분할에서 나오는 연결은 기본적으로 **개별**을 사용합니다.

- **항목이 입력한 프롬프트를 대체합니다.** 각 항목이 그 실행의 프롬프트가 됩니다. 노드에 입력한 프롬프트에 더해지는 것이 아니라, 그 프롬프트를 대체합니다. 프롬프트가 비어 있는 행에는 노드에 입력한 프롬프트가 사용됩니다.
- **항목은 차례로 실행됩니다.** 노드는 첫 행부터 마지막 행까지 순서대로 항목을 처리합니다. 항목이 많을수록 실행이 길어집니다.
- **체인은 짝을 유지합니다.** 다음 노드도 **개별** 연결로 결과를 받으면, 같은 순서로 결과마다 한 번씩 실행됩니다. 프롬프트 5개는 이미지 5장, 이어서 동영상 5개가 되며, 25개가 되지 않습니다.
- **반복은 곱해집니다.** 노드의 **반복**을 2로 정하면 모든 항목이 두 번씩 실행됩니다.
- **크레딧도 곱해집니다.** 노드 비용은 가격에 항목 수와 **반복** 횟수를 곱한 값입니다. 4크레딧짜리 노드에 항목 5개가 들어오면 그 노드의 비용은 20크레딧입니다. 실행하기 전에 **실행** 버튼에 합계가 표시됩니다.

**배지가 일괄 처리를 보여 줍니다.** 실행 전에는 팬아웃할 노드의 헤더에 `x5`처럼 실행 횟수가 표시됩니다. 실행 중에는 `3/5`처럼 진행 상황과 **목록 처리 중…** 막대가 표시되며, 끝나면 막대에 **완료**가 표시됩니다.

**실패는 그 항목에만 영향을 줍니다.** 항목 하나가 실패해도 성공한 항목은 결과를 유지하고, 실패한 항목의 크레딧은 환불됩니다.

**전부 아니면 전무.** [UGC 클립](https://nodaro.ai/docs/nodes/video/ugc-clip)은 예외입니다. 항목 하나라도 실패하면 노드 전체가 실패합니다. 그 뒤의 **묶음** 연결은 일부만 담긴 목록을 받지 않으므로, 합친 동영상이 클립이 빠진 채로 만들어지는 일은 없습니다.

**출력 하나만 나뉠 수 있습니다.** 어떤 노드는 출력 하나에서만 여러 개로 나뉩니다. [UGC 클립 목록](https://nodaro.ai/docs/nodes/video/ugc-clips)의 **클립** 출력은 다음 노드를 클립마다 한 번 실행하고, 나머지 출력은 값 하나를 전달합니다. [구간 분할](https://nodaro.ai/docs/nodes/video/split-into-chunks)도 목록을 만드는 노드입니다. 그 출력은 다음 노드를 구간마다 한 번 실행합니다.

## 표: 실행마다 여러 값
[목록](https://nodaro.ai/docs/nodes/automate/list)은 텍스트 열 하나로 시작합니다. 프롬프트와 레퍼런스 이미지처럼 한 번의 실행에 값이 여러 개 필요하면, 목록이 표가 됩니다.

1. 목록 왼쪽 아래의 **+** 입력에 노드를 연결하세요. 새 열이 나타납니다.
2. 각 열의 유형을 정하세요. 텍스트, 이미지, 동영상, 오디오, JSON 중에서 고릅니다. 각 열에는 자체 입력과 출력이 있습니다.
3. 각 열의 출력을 그 값이 필요한 노드의 입력에 연결하세요. 예를 들어 프롬프트 열은 **프롬프트**에, 이미지 열은 **레퍼런스**에 연결합니다.

행은 다음과 같이 짝을 이룹니다.

- **3행은 3행 그대로입니다.** 한 실행의 모든 입력은 같은 행에서 값을 받습니다. 빈 셀은 그 실행에서 해당 입력에 아무것도 주지 않으며, 아래 행이 위로 당겨지지 않습니다.
- **셀 하나라도 값이 있으면 그 행이 실행됩니다.** 모든 열이 빈 행은 무시되므로, 맨 아래의 빈 행이 실행을 늘리는 일은 없습니다.
- **연결 순서는 상관없습니다.** 어떤 연결을 먼저 그렸든, 프롬프트 입력에 연결한 열이 프롬프트를 제공합니다. **네거티브**에 연결한 열은 프롬프트로 쓰이지 않습니다.
- **길이가 다른 목록은 반복됩니다.** 행 수가 다른 두 목록이 한 노드에 들어가면, 긴 목록이 실행 횟수를 정합니다. 짧은 목록은 다 쓰면 첫 행부터 다시 시작합니다.
- **개별만 팬아웃합니다.** **묶음** 모드로 연결한 열은 목록 전체를 한 번의 실행으로 넘깁니다.

캔버스에서 목록은 “4행 × 2열” 같은 간단한 요약이나, 전체 표 또는 갤러리로 표시됩니다. 노드 아래의 작은 버튼으로 두 보기를 전환합니다. 이미지, 동영상, 오디오가 있는 표는 기본적으로 갤러리 보기로 열립니다.

## 팬인: 많은 결과를 하나로
| 원하는 것 | 사용할 것 |
| --- | --- |
| 클립을 동영상 하나로 합치는 것처럼, 한 번의 실행으로 모든 항목 합치기 | [동영상 합치기](https://nodaro.ai/docs/nodes/video/combine-videos), [오디오 믹스](https://nodaro.ai/docs/nodes/audio/mix-audio), [오디오 합치기](https://nodaro.ai/docs/nodes/audio/combine-audio)처럼 합치는 노드로 들어가는 **묶음** 연결 |
| 첫 번째나 마지막 항목처럼 항목 하나만 남기기 | **항목** 연결, 또는 [선택기](https://nodaro.ai/docs/nodes/automate/selector) 노드 |
| AI 심사 모델이 가장 좋은 결과를 고르게 하기 | **AI가 최적의 후보 선택**을 고른 [최적 선택](https://nodaro.ai/docs/nodes/automate/choose-best) |
| 텍스트 합치기, 결과 개수 세기, 가장 많이 나온 답변 남기기 | 무료 옵션을 고른 [최적 선택](https://nodaro.ai/docs/nodes/automate/choose-best) |
| 서로 다른 여러 노드의 결과 모으기 | [수집](https://nodaro.ai/docs/nodes/automate/collect) |

### 최적 선택
[최적 선택](https://nodaro.ai/docs/nodes/automate/choose-best) 노드는 후보 목록을 결과 하나로 바꿉니다. **후보 처리 방법**에서 할 일을 고르세요.

| 옵션 | 반환하는 것 | 크레딧 |
| --- | --- | --- |
| **AI가 최적의 후보 선택** | AI 심사 모델이 내 기준에 비춰 가장 좋다고 판단한 후보와, 한 문장으로 된 이유 | 심사 모델의 등급에 따라 4크레딧, 11크레딧 또는 28크레딧 |
| **하나의 텍스트로 합치기** | 고른 구분자로 모든 후보를 이은 텍스트 하나 | 무료 |
| **내용이 있는 첫 번째 후보** | 비어 있지 않은 첫 번째 후보 | 무료 |
| **개수 세기** | 도착한 후보의 수 | 무료 |
| **가장 많이 나온 답변** | 가장 자주 나온 후보. 동점이면 앞에 있는 후보가 선택됩니다. | 무료 |
| **JSON 객체 병합** | **깊음** 또는 **얕음** 방식으로 병합한 JSON 객체 하나 | 무료 |

**AI가 최적의 후보 선택**에서는 세 가지를 정하세요.

- **AI 모델**: 심사 모델입니다. **이코노미** 모델은 4크레딧, **표준** 모델은 11크레딧, **프리미엄** 모델은 28크레딧입니다. 기본값은 표준입니다.
- **판단 기준**: 좋은 결과의 조건입니다. 예를 들면 “어두운 에디토리얼 피드에서 가장 눈에 띄고, 썸네일로도 잘 읽히는 표지”입니다.
- **후보 유형**: **텍스트** 또는 **이미지**입니다. 후보가 그림이면 **이미지**를 고르세요. **텍스트**에서는 심사 모델이 그림의 링크만 비교하기 때문입니다.

노드에는 선택된 결과, 후보 중 그 결과의 위치, 심사 이유가 표시됩니다. 설정 패널의 **후보** 탭에는 모든 후보가 나열되고, 선택된 후보가 표시됩니다. 표준 모델로 이미지 5장을 심사하면, 이미지 5장의 비용에 11크레딧이 더해집니다.

**빈 후보는 무시됩니다.** 실패한 항목은 빈 후보를 남기며, 최적 선택은 빈 후보를 먼저 없앱니다. 그래서 **개수 세기**는 성공한 항목만 셉니다. 모든 후보가 비어 있으면 **하나의 텍스트로 합치기**는 빈 텍스트를, **개수 세기**는 `0`을 반환합니다. 다른 옵션은 실패하며, 최적 선택 뒤의 노드는 실행되지 않습니다.

### 수집
[수집](https://nodaro.ai/docs/nodes/automate/collect) 노드는 노드 몇 개의 결과든 종류별로 목록 네 개에 모읍니다. 텍스트, 이미지, 동영상, 오디오입니다. 출력 네 개가 항상 있으므로, 아무것도 실행되기 전에 다음 노드를 연결할 수 있습니다. 설정 패널에서 행을 끌어 항목 순서를 바꾸세요. 수집은 무료입니다.

서로 다른 노드에서 나온 결과를 비교하려면 수집을 [최적 선택](https://nodaro.ai/docs/nodes/automate/choose-best) 노드에 연결하세요. 예를 들어 서로 다른 모델 세 개가 만든 표지 세 장을 비교할 수 있습니다.

### 선택기
[선택기](https://nodaro.ai/docs/nodes/automate/selector) 노드는 목록에서 항목을 골라내며, 출력이 두 개 있습니다. 고른 항목인 **선택됨**과, 그 밖의 모든 항목인 **나머지**입니다. 여러 노드에 같은 선택이 필요하거나 연결에 없는 모드가 필요하면, **항목** 연결이나 범위 연결 대신 선택기를 사용하세요.

| 모드 | 고르는 것 |
| --- | --- |
| **항목(단일 인덱스)** | `3`, `last`, `last-1` 같은 항목 하나 |
| **범위(시작/끝/간격)** | 2~4번 항목 같은 범위의 항목 |
| **목록(쉼표 구분 식)** | `1, 3, 5..last` 같은 식에 해당하는 항목 |
| **무작위(시드 지정)** | 무작위 샘플. 같은 시드는 항상 같은 항목을 고릅니다. |
| **나머지(인덱스로 순환)** | 목록을 순환하는 위치에 있는 항목 |
| **조건(필터)** | 점수가 15보다 큰 것처럼, 필드가 조건에 맞는 항목 |
| **이름 키(조회)** | 이름이 “주인공”인 항목처럼, 필드에 주어진 값이 있는 항목 |

선택기는 설정 때문에 워크플로를 멈추는 일이 없습니다. 범위를 벗어난 인덱스나 읽을 수 없는 식은 적절한 선택으로 대체됩니다. 선택기는 무료입니다.

## 그 밖의 목록 도구
**노드 추가** 메뉴의 **목록 및 일괄 처리** 그룹에는 조건에 맞는 항목을 남기는 [목록 필터](https://nodaro.ai/docs/nodes/automate/filter-list), [목록 정렬](https://nodaro.ai/docs/nodes/automate/sort-list), [중복 제거](https://nodaro.ai/docs/nodes/automate/remove-duplicates), 그리고 두 목록을 끝에 이어 붙이거나 항목별로 합치는 [목록 병합](https://nodaro.ai/docs/nodes/automate/merge-lists)도 있습니다. 네 노드 모두 무료입니다.

## 팁
- **항목 하나에 아이디어 하나.** 각 항목은 그 자체로 완전한 프롬프트나 값이어야 합니다.
- **짧은 목록으로 테스트하세요.** 먼저 항목 2~3개로 된 목록을 실행해 결과를 확인한 다음, 나머지를 추가하세요.
- **큰 일괄 처리는 나누세요.** 아주 큰 목록은 긴 실행 하나가 됩니다. 작은 목록 여러 개가 확인하기 더 쉽습니다.
- **모든 팬아웃을 마무리하세요.** 일괄 처리가 결과 하나로 끝나야 한다면, 최적 선택, **묶음** 연결, **항목** 연결 중 하나로 마무리하세요.
- **항목에 변수를 쓰세요.** 항목에는 `{Style}` 같은 [프롬프트 변수](https://nodaro.ai/docs/concepts/prompt-variables)를 넣을 수 있어, 모든 실행이 같은 문구를 공유합니다.

## 자주 묻는 질문

### 프롬프트 10개로 이미지 10장을 만들려면 어떻게 하나요?

프롬프트 10개를 한 행에 하나씩 목록 노드에 넣고, 목록을 이미지 생성의 “프롬프트” 입력에 연결하세요. 이 연결은 “개별” 모드를 사용하므로, 이미지 생성이 10번 실행되어 결과 10개를 보관합니다.

### 일괄 처리에는 크레딧이 얼마나 드나요?

노드 가격에 항목 수를 곱하고, “반복” 횟수를 정했다면 그 횟수도 곱한 값입니다. 4크레딧짜리 노드에 항목 5개를 넣으면 20크레딧이 듭니다. 실행하기 전에 “실행” 버튼에 합계가 표시됩니다.

### 일괄 처리 중 항목 하나가 실패하면 어떻게 되나요?

나머지 항목은 결과를 그대로 유지하고, 실패한 항목의 크레딧은 환불됩니다. 최적 선택은 실패한 항목의 빈 결과를 무시하므로, “개수 세기”는 성공한 항목만 셉니다.

### 일괄 처리에서 가장 좋은 결과만 남기려면 어떻게 하나요?

일괄 처리 결과를 최적 선택 노드에 연결하고 “AI가 최적의 후보 선택”을 고르세요. “판단 기준”에 좋은 결과의 조건을 쓰고, 후보가 그림이면 “이미지”를 고르세요.

### 수집과 최적 선택은 어떻게 다른가요?

수집은 여러 노드의 결과를 미디어 종류마다 목록 하나로 모읍니다. 최적 선택은 후보 목록을 AI 판단, 개수 세기, 합치기, 투표로 결과 하나로 바꿉니다.
