# 앱(미니앱)

> 미니앱은 고유 URL이 있는 간단한 양식으로 게시한 워크플로입니다. 사람들이 채울 입력, 보기 모드, 공유, 요금, 임베드를 정하는 방법을 알아보세요.

Source: https://nodaro.ai/ko/docs/concepts/apps

**미니앱**은 간단한 앱으로 게시한 워크플로입니다. 사람들이 짧은 양식을 채우고 **실행**을 클릭하면, Nodaro가 그 뒤에 있는 워크플로를 실행하고 결과를 보여 줍니다. 사람들은 캔버스를 보지 않으며, 미니앱마다 고유한 URL, 실행 기록, 버전이 있습니다.

## 미니앱의 작동 방식
| | 만든 사람(나) | 앱을 실행하는 사람 |
| --- | --- | --- |
| **보이는 것** | 캔버스 위의 워크플로 전체 | 만든 사람이 고른 입력과 결과만 |
| **하는 일** | 워크플로를 만들고, 입력과 출력을 고르고, 게시합니다 | 입력을 채우고 **실행**을 클릭합니다 |
| **비용** | 게시는 무료입니다 | 실행에 드는 크레딧. 자신의 잔액에서 내며, **실행** 버튼에 표시됩니다 |

Workflow: 앱에는 입력 2개와 출력 1개가 보입니다. 그 사이의 모든 것은 양식 뒤에서 실행됩니다.

- 텍스트 → 이미지 생성 (프롬프트)
- 스타일 → 이미지 생성 (룩)
- 이미지 생성 → 동영상 생성 (시작 프레임)

## 워크플로를 미니앱으로 게시
### 프레젠테이션 탭 열기
워크플로를 열고 편집기 상단의 **프레젠테이션**을 클릭하세요. **프레젠테이션** 탭에서는 사람들이 보는 화면을 만듭니다. 사람들이 채우는 입력, 받는 결과, 그리고 그 주변의 제목, 그룹, 짧은 텍스트입니다.

### 입력과 출력 고르기
프롬프트, 이미지 업로드, 피커처럼 사람들이 필드를 채울 노드를 추가하세요. 그런 다음 사람들이 결과를 볼 노드를 추가하세요. 각각에 제목과 설명을 붙이세요. 선택지 목록이라면 사람들이 고를 수 있는 값을 제한할 수 있습니다.

노드 하단 바의 빠른 설정도 무엇이든 공개할 수 있습니다. 예를 들어 모델, 해상도, 길이, 화면 비율, **초안**입니다. 앱의 카드는 실행에 쓰이는 모델의 선택지만 보여 줍니다. 사람들이 모델을 바꾸면, 새 모델이 받지 않는 선택은 받는 선택으로 바뀝니다.

### 게시를 클릭하고 미니앱 선택
**게시**를 클릭하고 **미니앱**을 선택한 다음, **미니앱 이름**과 설명을 입력하세요. **URL 슬러그**는 선택 사항입니다. 비워 두면 Nodaro가 이름으로 만들어 줍니다.

### 앱 옵션을 정하고 게시
아래 표의 옵션을 고른 다음 **앱 게시**를 클릭하세요. **미니앱 열기**로 사용자에게 보이는 모습 그대로 확인할 수 있습니다.

| 옵션 | 기능 |
| --- | --- |
| **마켓플레이스에 등록** | 고른 카테고리, 출력 유형, 태그와 함께 미니앱 페이지의 **둘러보기** 탭에 앱을 등록합니다. 등록하지 않은 앱도 링크로는 열립니다. |
| **RemX 지원** | 사람들이 내 앱을 맞춤 설정하고 리믹스할 수 있게 합니다. |
| **읽기 전용** | 사람들이 결과는 볼 수 있지만 입력은 편집할 수 없습니다. |
| **허용할 보기 모드** | 사람들이 전환할 수 있는 레이아웃입니다. [보기 모드](#view-modes)를 참고하세요. |
| **기본 보기 모드** | 앱이 처음 열릴 때의 레이아웃입니다. |
| **비교 기본값** | **나란히 비교** 모드가 처음에 왼쪽과 오른쪽에 나란히 보여 주는 두 노드입니다. |
| **실행 썸네일** | 실행 목록에서 각 실행의 썸네일로 쓰이는 결과를 내는 노드입니다. |

게시된 앱의 주소는 `app.nodaro.ai/app/` 뒤에 슬러그를 붙인 것입니다. URL은 버전이 바뀌어도 그대로입니다. 워크플로를 변경한 뒤 다시 게시하면, 공유한 모든 링크에서 새 버전이 열립니다.

## 보기 모드
만든 사람은 앱이 제공할 보기 모드와 처음 열릴 모드를 고릅니다. 앱을 실행하는 사람은 허용된 모드 사이에서 전환할 수 있습니다.

| 모드 | 모습 |
| --- | --- |
| **좌우 분할** | 왼쪽에 입력, 오른쪽에 결과가 있습니다. |
| **세로 배열** | 위에 입력, 아래에 결과가 있습니다. 좁은 화면에 알맞습니다. |
| **갤러리 그리드** | 입력과 결과가 카드 그리드로 표시됩니다. |
| **전체 화면 슬라이드쇼** | 결과를 한 번에 하나씩 전체 화면으로 보여 줍니다. |
| **나란히 비교** | 두 결과를 나란히 보여 줍니다. |
| **채팅** | 하단의 작성창에 입력이 있고, 각 실행이 스레드의 메시지로 나타납니다. |

### 채팅 모드
채팅 모드는 앱을 대화로 바꿉니다. 앱의 허용할 보기 모드에 **채팅**을 추가하기 전까지는 꺼져 있으며, 데스크톱과 모바일에서 작동합니다.

- **작성창은 칩 한 줄입니다.** 각 입력은 작은 칩입니다. 클릭하면 값을 편집할 수 있습니다. 업로드 칩은 파일을 추가하면 썸네일을 보여 줍니다.
- **실행 버튼으로 시작합니다.** 새 실행 버튼은 따로 없습니다. **실행**은 실행을 시작하고 크레딧 가격을 보여 주며, 값을 작성창에 그대로 남겨 두므로 하나만 바꿔 다시 실행할 수 있습니다.
- **한 번에 하나씩 실행합니다.** 실행 중에는 작성창이 잠기고, 실행이 끝나면 다시 열립니다.
- **각 실행은 스레드에 남습니다.** 여러 단계로 된 실행은 단계마다 칩을 보여 주고, 단계가 끝날 때마다 완료 표시가 됩니다. 같은 값으로 다시 실행하려면 **입력 재사용**, 단계의 결과를 열려면 **단계 보기**, 결과를 저장하려면 **다운로드**를 사용하세요.
- **결과를 전체 화면으로 봅니다.** 결과를 탭하면 전체 화면으로 열립니다. ←와 →로 그 실행의 입력과 결과를 차례로 보고, ↑와 ↓로 실행 사이를 이동하고, Esc로 닫으세요.

## 앱을 실행하는 사람에게 보이는 것
- **내가 고른 것만 보입니다.** **프레젠테이션** 탭에 넣은 입력과 결과가, 내가 쓴 제목과 텍스트와 함께 보입니다.
- **앞뒤 텍스트는 보이지 않습니다.** 노드의 [앞뒤 텍스트](https://nodaro.ai/docs/concepts/prompt-pre-post-text)는 모든 프롬프트를 감싸지만, 앱에는 절대 표시되지 않습니다. 내 고유한 스타일을 담는 데 사용하세요.
- **보내는 곳은 바뀌지 않습니다.** 앱은 보내는 곳과 가져오는 대상을 고정합니다. [Webhook 출력](https://nodaro.ai/docs/nodes/publish/webhook-output) 주소, 소셜 계정, 스크레이퍼의 대상이 그렇습니다. 앱을 실행하는 사람은 이를 바꿀 수 없습니다.
- **각자 자신의 잔액으로 냅니다.** 앱을 실행하려면 로그인해야 하며, 각 실행 비용은 자신의 크레딧에서 나갑니다. 앱은 잔액으로 몇 번 실행할 수 있는지 알려 줍니다.
- **녹음 길이에 따른 가격.** 가격이 앱에 주는 녹음이나 동영상 링크의 길이에 따라 달라지면, 고정 부분과 녹음 1분당 부분으로 표시됩니다. 채우는 목록이 있으면 추가 항목마다 부분이 더해집니다. 표시된 가격에는 최종 렌더링도 포함됩니다. **실행** 버튼은 실행의 가격을 보여 주고, 녹음을 고르면 정확한 금액을 보여 줍니다.
- **선택에 따라 가격이 바뀌면 가격 범위.** 사람들이 모델이나 길이처럼 가격을 바꾸는 설정을 바꿀 수 있으면, 표시된 가격은 “X부터 최대 Y”로 나옵니다. “부터”는 내가 저장한 설정의 가격이고, “최대”는 사람들이 고를 수 있는 선택지에서 실행 한 번에 들 수 있는 가장 높은 가격입니다.

저장된 키로 보내는 Webhook 출력이 있으면, 앱을 게시하기 전에 하나의 주소에 고정된 키를 사용해야 합니다. 게시 대화 상자에서 키를 대신 고정해 주겠다고 제안합니다. [Webhook 출력](https://nodaro.ai/docs/nodes/publish/webhook-output)을 참고하세요.

## 앱의 UGC 동영상
[UGC 동영상](https://nodaro.ai/docs/nodes/video/ugc-creator)을 만드는 워크플로는 UGC 노드를 비운 채로 게시합니다. 앱에는 내 스크립트, 클립, 카드, 크리에이터 이미지가 포함되지 않으며, 내 사진도 절대 포함되지 않습니다. 크리에이터 사진으로 이어지는 모든 노드와 UGC 동영상으로 만든 모든 노드는 설정만 포함됩니다. 실행할 때마다 다시 렌더링됩니다. 공유 링크도 같은 방식으로 다른 사람에게 워크플로를 보여 줍니다.

- **내 사진 사용.** UGC 크리에이터가 **내 사진 사용**으로 설정되어 있으면, 앱은 실행하는 사람마다 본인 사진을 요청합니다. 사진 없이 실행하면 요금이 청구되기 전에 “이 앱에는 본인 사진이 필요합니다. 사진을 추가한 뒤 다시 실행하세요.”라는 메시지와 함께 거부됩니다.
- **크리에이터 하나.** 앱 실행은 크리에이터를 하나만 만들고 곧바로 동영상으로 넘어갑니다.
- **잔액 먼저 확인.** UGC 동영상은 클립을 렌더링하는 동안 예상 비용보다 많은 크레딧을 보류합니다. 결제하는 사람이 그 보류 금액을 충당할 수 없는 실행은 아무것도 실행되기 전에 금액과 잔액을 알려 주는 메시지와 함께 거부됩니다.
- **잠긴 필드.** 실행으로 설정할 수 있는 것은 크리에이터의 소스, 성별, 사진과 스크립트 길이뿐입니다. UGC 노드의 다른 값은 거부됩니다.

UGC 동영상은 Nodaro Cloud 기능입니다.

## 앱에서 최종 렌더링
워크플로의 [EDL 적용](https://nodaro.ai/docs/nodes/video/apply-edl) 렌더링이 **미리 보기 먼저 — 검토 후 최종 렌더링**으로 설정되어 있으면, 앱의 렌더링 카드는 결과를 **미리 보기** 레이블과 함께 보여 줍니다. 카드에는 가격이 붙은 **최종 렌더링** 버튼도 있습니다. **최종 렌더링**은 시작하기 전에 확인을 요청합니다. 컷을 전체 품질로 렌더링한 다음, 렌더링 뒤의 모든 노드를 한 번 더 실행합니다. Nodaro Cloud에서는 앱 실행이 미리 보기에서 멈추지 않습니다. 렌더링 뒤의 노드는 먼저 미리 보기로 실행됩니다.

- **앱 실행과 별도로 청구됩니다.** 최종본과 그 뒤의 노드는 앱을 실행하는 사람에게 각 노드의 가격으로 청구됩니다. 만든 사람의 추가 요금은 붙지 않으며, 앱의 하루 실행 한도에도 포함되지 않습니다.
- **미리 보기는 계속 재생할 수 있습니다.** 최종본을 렌더링하는 동안에도 그렇습니다. 최종본이 완성되면 카드에 **최종**이 표시되고, **미리 보기 표시**로 미리 보기로 돌아갈 수 있습니다.
- **실행마다 최종 렌더링은 한 번에 하나**입니다. 실패한 최종 렌더링은 같은 버튼에서 다시 시작할 수 있습니다.

**최종 렌더링**은 모든 보기 모드, 모바일, 임베드한 앱에서 작동합니다. [미리 보기와 최종 렌더링](https://nodaro.ai/docs/nodes/video/apply-edl#preview-and-render-final)을 참고하세요.

## 대신 프레젠테이션 링크 공유
**프레젠테이션** 탭에서는 워크플로를 게시하지 않고 공유할 수도 있습니다. 공유 대화 상자는 누구나 워크플로를 실행할 수 있는 링크를 만들며, 실행 비용은 각자 자신의 크레딧으로 냅니다. **뷰어 설정**에는 **뷰어는 결과만 볼 수 있습니다**, 허용할 보기 모드, 기본 보기 모드가 있습니다. **공유 취소**를 누르면 링크가 꺼집니다.

오래 유지되는 URL, 실행 기록, 버전, 분석, 미니앱 페이지 등록이 필요하면 미니앱을 게시하세요. 빠르게 검토만 받으려면 공유 링크를 사용하세요.

## 내 미니앱 관리
사이드바에서 **미니앱**을 여세요. 페이지에는 탭이 세 개 있습니다.

- **둘러보기**: 등록된 모든 미니앱입니다. 검색하고 **인기순**, **최신순**, **즐겨찾기 많은 순**으로 정렬할 수 있습니다.
- **내 미니앱**: 내가 게시한 앱과 각 앱의 실행 수, 실행당 가격, 즐겨찾기 수입니다. 각 카드에서 앱이나 워크플로를 열고, URL이나 임베드 코드를 복사할 수 있습니다. **분석**을 보고, 설정을 편집하고, 등록하거나 등록 해제하고, 비활성화할 수도 있습니다.
- **즐겨찾기**: 하트를 눌러 둔 앱입니다.

미니앱을 삭제하면 마켓플레이스와 내 목록에서 숨겨집니다. **삭제한 미니앱**에서 언제든 복원할 수 있으며, 수익, 분석, 실행 기록은 그대로 유지됩니다.

## 미니앱에 요금 부과
Nodaro Cloud에서는 다른 사람이 내 미니앱을 실행할 때 추가 요금을 받을 수 있습니다. 앱 카드에서 **미니앱 설정 편집**을 열고, **수익화**에서 크레딧 단위의 고정 요금, 비율 또는 둘 다를 정하세요. 대화 상자에는 사람들이 낼 금액, 즉 실행 기본 비용에 내 추가 요금을 더한 금액이 표시됩니다. 미니앱 페이지의 **수익화 기본값**은 미니앱에서 수익화를 처음 켤 때 적용되는 고정 요금과 비율을 정합니다.

내 수익은 충전 잔액에 더해지며 12개월 동안 유효합니다. **결제** 페이지의 **미니앱 수익**에서 이번 달, 최근 30일, 전체 기간의 수익을 볼 수 있습니다. [크레딧](https://nodaro.ai/docs/concepts/credits)을 참고하세요.

## 미니앱 임베드 또는 코드에서 실행
**웹사이트에 임베드하기.** 앱 카드에서 **임베드**를 클릭해 임베드 코드를 복사하세요. 먼저 **임베드 설정** › **임베드 허용 도메인**에 앱을 보여 줄 웹사이트를 추가하세요. 도메인을 하나 이상 추가하기 전까지 임베드는 차단됩니다.

**내 코드에서 실행하기.** 내 웹사이트나 앱에서도 REST API로 게시된 미니앱을 실행할 수 있습니다. 서버가 앱의 입력을 읽고, 실행을 시작하고, 결과를 기다립니다. 앱의 식별자는 URL의 마지막 부분인 슬러그입니다. 실행은 비동기로 진행되므로, 서버는 실행을 시작한 다음 결과를 확인합니다. 코드를 포함한 전체 흐름은 [미니앱 임베드](https://nodaro.ai/docs/developers/embed/miniapps)에 있습니다.

[MCP](https://nodaro.ai/docs/mcp)로 연결된 어시스턴트도 내 앱을 나열하고 실행할 수 있으며, [CLI](https://nodaro.ai/docs/developers/cli)는 `nodaro apps run`으로 앱을 실행합니다.

양식이 아니라 다른 워크플로 안에서 워크플로를 재사용하려면 [컴포넌트](https://nodaro.ai/docs/concepts/components-and-sub-workflows)로 게시하세요. 워크플로 하나를 미니앱과 컴포넌트로 동시에 게시할 수 있습니다.

## 자주 묻는 질문

### Nodaro의 미니앱이란 무엇인가요?

미니앱은 고유 URL이 있는 간단한 앱으로 게시한 워크플로입니다. 사람들은 만든 사람이 고른 입력을 채우고 “실행”을 클릭합니다. Nodaro가 워크플로를 실행하고, 캔버스 없이 결과를 보여 줍니다.

### 내 미니앱의 실행 비용은 누가 내나요?

앱을 실행하는 사람이 자신의 크레딧으로 냅니다. “실행” 버튼에 가격이 먼저 표시됩니다. Nodaro Cloud에서는 추가 요금을 붙일 수도 있으며, 이 금액은 수익으로 내 충전 잔액에 더해집니다.

### 사람들이 내 프롬프트와 설정을 볼 수 있나요?

앱에 넣은 입력과 결과만 볼 수 있습니다. 앞뒤 텍스트는 절대 표시되지 않으며, Webhook 주소나 소셜 계정처럼 외부로 보내는 노드의 대상은 앱을 실행하는 사람이 바꿀 수 없습니다.

### 게시한 미니앱은 어떻게 업데이트하나요?

워크플로를 변경한 다음 “프레젠테이션” 탭에서 다시 게시하세요. URL은 버전이 바뀌어도 그대로이므로, 이미 공유한 링크도 계속 작동합니다.

### 미니앱을 내 웹사이트에 넣을 수 있나요?

네. 앱 카드에서 임베드 코드를 복사하고 “임베드 허용 도메인”에 내 웹사이트를 추가하세요. 인터페이스를 직접 만들려면, 서버에서 REST API로 실행을 시작하고 결과를 읽을 수 있습니다.
