# n8n

4개의 노드로 구성된 워크플로우: 입력에는 출생 데이터, 중간에 API에서 가져온 네이털 차트, 출력에는 태양, 달, 상승점의 별자리. 이 워크플로우는 n8n 2.39.7에 임포트되어 2026-09-17 프로덕션에 실행되었으며, 아래 결과는 실제 반환된 값이다.

먼저, [자동화 키](/integrations/#ключ-для-автоматизації) 섹션에 설명된 대로 `chart` 영역을 가진 키를 생성해.

## 1. 키를 credential로 추가해

키는 n8n의 credentials 저장소에 저장되고 노드에 저장되지 않으므로 내보낸 워크플로우에 포함되지 않아.

1. n8n에서 새로운 credential 타입 **Header Auth**를 생성해.
2. **Name**: `X-Api-Key`.
3. **Value**: 너의 키.
4. 이름을 **AstroWay API key**로 저장해. 아래 워크플로우는 바로 이 이름의 credential을 찾을 거야.

## 2. 워크플로우를 임포트해

[n8n-natal-chart.json](/integrations/n8n-natal-chart.json) 파일을 다운로드하고, 빈 워크플로우를 열어 파일 내용을 캔버스에 붙여넣거나 워크플로우 메뉴에서 파일 임포트를 사용해.

내부에는 네 개의 노드가 있어:

- **Start**, Manual Trigger 노드: 테스트 시 워크플로우를 시작해.
- **Birth data**, Edit Fields (Set) 노드: 한 사람의 `date`, `time`, `timezone`, `latitude`, `longitude`를 설정해.
- **AstroWay chart**, HTTP Request 노드: `POST /v1/chart`를 호출해.
- **Big three**, Edit Fields (Set) 노드: 경도를 별자리 이름으로 변환해.

## 3. 실행해

워크플로우를 실행해. **Big three**가 반환해:

```json
{
  "sun": "Taurus",
  "moon": "Capricorn",
  "rising": "Virgo",
  "offset_used": 4
}
```

`offset_used`는 UTC로부터의 오프셋으로, 서버가 `Europe/Kyiv`에 대해 1990-05-15에 찾은 값은 4이며, 보통 수동으로 적는 3이 아니야.

## HTTP Request 노드 설정 방법

- **Method**: `POST`.
- **URL**:

  ```
  https://api.astroway.info/v1/chart
  ```

- **Authentication**: Generic Credential Type.
- **Generic Auth Type**: Header Auth, credential **AstroWay API key**.
- **Send Body**: 활성화.
- **Body Content Type**: JSON.
- **Specify Body**: Using JSON.

본문은 표현식으로 지정돼서, 이전 노드의 값이 그대로 전달돼:

```js
{{ JSON.stringify({ date: $json.date, time: $json.time, timezone: $json.timezone, latitude: $json.latitude, longitude: $json.longitude }) }}
```

## 별자리 계산 방법

**Big three**의 각 필드는 표현식이야. 별자리는 경도를 30으로 나눈 뒤 내림하여 리스트의 인덱스로 사용해:

```js
{{ ['Aries','Taurus','Gemini','Cancer','Leo','Virgo','Libra','Scorpio','Sagittarius','Capricorn','Aquarius','Pisces'][Math.floor($json.data.houses.ascendant / 30)] }}
```

태양과 달의 경우, 경도는 `$json.data.planets.find(p => p.name === 'Sun').longitude`와 `'Moon'`에 대해 같은 방식으로 가져와.

## 너의 데이터를 넣어봐

**Start**와 **Birth data**를 실제로 사용하는 트리거(폼, webhook, 혹은 새로운 테이블 행)로 교체하고, 그 필드를 위의 다섯 개 이름에 매핑해. 확인할 두 가지가 있어:

- **`timezone`은 비워둘 수 없어.** 빈 값은 `400` 오류를 반환하니, 필드를 매핑하거나 좌표가 신뢰할 수 있으면 `auto`로 설정해.
- **좌표는 필수야.** API는 도시 이름을 지오코딩하지 않으니, 폼이 장소만 묻는 경우 **AstroWay chart** 앞에 지오코딩 단계를 추가해.

<Aside type="note">
키 범위 밖에서 호출하면 `403 ENDPOINT_NOT_IN_SCOPE` 오류로 실행이 중단되고, 예산을 초과하면 `429 KEY_BUDGET_EXHAUSTED` 오류가 발생해. 두 경우 모두 대시보드에서 한도를 올려야지, 요청을 반복하지 마.
</Aside>
