# 장소

> AI 어시스턴트에서 장소를 만들고 이스태블리싱 샷을 생성해 승인하세요. 시간대, 날씨, 앵글 베리언트를 추가하고 분위기 클립도 만들 수 있습니다.

Source: https://nodaro.ai/ko/docs/mcp/tools/locations

**장소 도구**를 사용하면 어시스턴트가 내 라이브러리의 장소를 만들고 사용할 수 있습니다. 장소는 거리, 방, 풍경처럼 모습이 고정되어 모든 샷에서 똑같이 보이는 공간입니다. 어시스턴트는 장소를 만들고, 이스태블리싱 샷을 생성해 승인하고, 시간대, 날씨, 계절, 앵글, 조명 베리언트를 추가하고, 분위기 클립을 만들고, 그 이미지를 다른 생성에 레퍼런스로 넘깁니다. 앱에서 같은 작업을 하는 방법은 [장소](https://nodaro.ai/docs/guides/locations)를 읽어 보세요.

진행 순서는 [캐릭터 도구](https://nodaro.ai/docs/mcp/tools/characters)와 같습니다. 만들고, 대표 이미지를 생성하고, 승인한 다음, 그 이미지로 베리언트와 모션을 생성합니다.

## `list_locations`
내 장소를 최신순으로 나열합니다. 이름, 설명, 대표 이미지, 종류별 베리언트 개수, 그리고 정체성인 기준 설명, 카테고리, 스타일, 스타일 고정이 담깁니다. 보관된 장소는 요청하지 않으면 빠집니다.

**권한:** `assets:read`. **크레딧:** 무료.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `search` | string | 최대 5단어, 최대 200자입니다. 모든 단어가 대소문자와 관계없이 장소의 이름이나 설명에 있어야 합니다. 빈 값은 검색하지 않음을 뜻합니다. |
| `archived` | boolean | `true`이면 보관된 장소를 대신 나열합니다. |

**반환값:** 장소 목록입니다. 이미지 URL은 `get_location`을 호출해 가져오세요.

## `get_location`
장소 하나의 전체 정보를 반환합니다. 모든 시간대, 날씨, 앵글, 조명, 계절, 분위기 클립과 각각의 이름 및 URL, 레퍼런스 사진, 정체성 필드가 담깁니다.

**권한:** `assets:read`. **크레딧:** 무료.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `id` | string | **필수.** `list_locations`에서 받은 장소 ID입니다. |

**반환값:** `update_location`에 쓸 `updatedAt`과 그 장소에서 아직 실행 중인 생성을 포함한 장소입니다. 장소가 없거나 내 장소가 아니면 오류입니다.

## `create_location`
정체성을 갖춘 장소를 만듭니다. 아직 대표 이미지는 없으므로, 다음에 `generate_location`으로 생성하세요.

**권한:** `assets:write`. **크레딧:** 무료.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `name` | string | **필수.** `Rainy Tokyo Alley` 같은 표시 이름으로, 최대 200자입니다. |
| `description` | string | 최대 2,000자입니다. |
| `category` | string | `interior`, `exterior`, `urban` 같은 카테고리 태그로, 최대 50자입니다. |
| `style` | string | `cinematic`, `documentary`, `noir` 같은 스타일 태그로, 최대 50자입니다. |
| `projectId`, `workflowId`, `nodeId` | string | 프로젝트, 워크플로, 캔버스 노드에 대한 선택적 연결입니다. 보통은 생략합니다. |

**반환값:** 새 장소의 ID입니다.

## `update_location`
장소의 정체성을 바꿉니다. 넘긴 필드만 기록됩니다. 베리언트는 여기서 편집할 수 없으며, 생성 도구가 추가합니다.

**권한:** `assets:write`. **크레딧:** 무료.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `id` | string | **필수.** 장소 ID입니다. |
| `name`, `description`, `category`, `style` | string | `create_location`과 같습니다. |
| `canonicalDescription` | string | 장면 설명으로, 최대 4,000자입니다. 내가 쓴 텍스트가 자동 캡션을 대체합니다. |
| `styleLock` | boolean | `true`이면 베리언트를 생성할 때마다 대표 이미지도 레퍼런스로 함께 전달되어 배치가 일관되게 유지됩니다. |
| `expectedUpdatedAt` | string | `get_location`에서 받은 `updatedAt`입니다. 읽은 뒤에 장소가 바뀌었으면 변경이 거부됩니다. |

**반환값:** 확인 응답입니다. `expectedUpdatedAt`이 오래된 값이면 충돌 오류입니다.

## `approve_main_image`
완료된 `generate_location` 결과를 장소의 대표 이미지로 정하고, 비전 모델이 그 이미지를 설명하게 해 장소의 기준 설명을 채웁니다.

**권한:** `assets:write`. **크레딧:** 설명을 위한 짧은 LLM 실행 1회.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `location_id` | string | **필수.** 대상 장소입니다. |
| `candidate_job_id` | string | **필수.** 완료된 내 `generate_location` 작업입니다. |

**반환값:** 대표 이미지 URL과 설명입니다. 설명 생성에 실패해도 이미지는 설정되고 설명은 비어 있습니다. 이때는 `recaption_location`을 실행하세요.

## `recaption_location`
비전 모델이 현재 대표 이미지를 다시 설명하게 하고, 새 기준 설명을 저장합니다.

**권한:** `assets:write`. **크레딧:** 짧은 LLM 실행 1회.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `location_id` | string | **필수.** 대상 장소입니다. |

**반환값:** 새 설명입니다. 장소에 대표 이미지가 없으면 `400 no_source_image`입니다.

## `generate_location`
장소의 이스태블리싱 샷(`kind: "main"`)이나 베리언트(`kind: "asset"`)를 생성합니다.

**권한:** `workflows:execute`. **크레딧:** 이미지 모델의 가격.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `name` | string | **필수.** 장소의 이름입니다. |
| `kind` | string | `main`(기본값) 또는 `asset`입니다. |
| `description`, `style` | string | 대표 이미지를 위한 정체성입니다. |
| `category` | string | `indoor`, `outdoor`, `urban`, `nature`, `fantasy`, `sci-fi`, `historical`, `futuristic`, `other` 중 하나입니다. |
| `model` | string | 이미지 모델입니다. 기본값은 `gpt-image-2`입니다. |
| `asset_type` | string | `asset`에서: `timeOfDay`, `weather`, `seasons`, `angles`, `lighting`, `custom` 중 하나입니다. |
| `variant` | string | `asset`에서: 예를 들어 `dawn`, `noon`, `dusk`, `night`, 또는 `rain`, `snow`, `fog`, 또는 `spring`~`winter`, 또는 `aerial`, `street-level`, `wide`, 또는 `golden-hour`, `overcast`, `neon`이며, 직접 정한 짧은 라벨도 됩니다. |
| `attach_to_location_id` | string | 결과를 이 장소에 저장하고, 장소의 승인된 대표 이미지를 소스로 사용합니다. 없으면 호출이 `main_image_required`를 반환합니다. |
| `attach_to_column` | string | `custom` 베리언트에서 `attach_to_location_id`와 함께 필수입니다: `time_of_day`, `weather`, `seasons`, `angles`, `lighting`, `atmosphere_motions`, `sheets`, `detail_closeups` 중 하나입니다. |
| `attach_name` | string | 저장할 베리언트의 이름입니다. 기본값은 베리언트 값입니다. |
| `source_image_url` | string | 장소에 연결하지 않을 때 쓰는 소스 이미지입니다. |

**반환값:** 작업 ID입니다. 대표 이미지라면 결과가 마음에 들 때 그 작업을 `approve_main_image`에 넘기세요.

## `generate_location_motion`
장소를 분위기 클립으로 만듭니다. 분위기 클립은 “느린 돌리 인, 나뭇잎이 화면을 가로질러 흩날림”이나 “드론 플라이 오버, 네온사인이 깜박임”처럼 카메라 움직임에 공간 속의 미묘한 움직임을 더한 클립입니다.

**권한:** `workflows:execute`. **크레딧:** 동영상 모델의 가격.

| 매개변수 | 타입 | 설명 |
| --- | --- | --- |
| `motion_prompt` | string | **필수.** 카메라 움직임과 모션으로, 최대 2,000자입니다. |
| `source_image_url` | string | **필수.** 첫 프레임으로, 보통 장소의 승인된 대표 이미지입니다. |
| `name` | string | **필수.** 장소의 이름으로, 프롬프트에서 맥락으로 쓰입니다. |
| `provider` | string | `kling`(기본값), `kling-turbo`, `kling-3.0`, `wan-i2v`, `wan-2.7-i2v`, `seedance-2` 중 하나입니다. |
| `attach_to_location_id` | string | 클립을 장소의 분위기 클립에 저장합니다. |
| `attach_name` | string | 저장할 클립의 이름입니다. |
| `refine_from_video_url` | string | 이미지에서 시작하는 대신, 기존 클립을 새 프롬프트로 동영상에서 동영상으로 다듬습니다. |
| `canonical_description`, `category`, `style` | string | 프롬프트에 더할 추가 맥락입니다. |

**반환값:** 작업 ID입니다. 준비되면 카드에서 클립이 재생됩니다.

## 자주 묻는 질문

### 모든 샷에서 같은 장소를 유지하려면 어떻게 하나요?

장소를 만들고 이스태블리싱 샷 하나를 대표 이미지로 승인한 다음, 그 이미지로 베리언트를 생성하세요. 그 장소가 나오는 모든 이미지와 동영상에 대표 이미지나 베리언트를 레퍼런스로 넘기세요.

### 장소에는 어떤 베리언트가 있나요?

시간대, 날씨, 계절, 카메라 앵글, 조명이 있고, 직접 이름을 붙이는 커스텀 베리언트도 있습니다. 모든 베리언트는 승인된 대표 이미지로 생성되어 장소에 저장됩니다.

### styleLock은 무엇을 하나요?

styleLock이 켜져 있으면 베리언트를 생성할 때마다 대표 이미지도 레퍼런스로 함께 전달됩니다. 그래서 베리언트 사이에서 장소의 배치가 일관되게 유지됩니다.

### 분위기 클립을 처음부터 다시 만들지 않고 다듬으려면 어떻게 하나요?

refine_from_video_url을 그 클립으로 설정하고, 안개 대신 가랑비가 내리는 같은 샷처럼 새 프롬프트를 넣어 generate_location_motion을 다시 호출하세요. 그 클립에 동영상에서 동영상으로 생성이 실행됩니다.
