# n8n

4つのノードからなるワークフローです：入力は出生データ、途中でAPIから取得したネイタルチャート、出力は太陽・月・アセンダントのサインです。これを n8n 2.39.7 にインポートし、2026-09-17 の本番環境で実行した結果が以下です。

まず、[自動化用キー](/integrations/#ключ-для-автоматизації) のセクションに従って、スコープ `chart` のキーを作成してください。

## 1. キーをクレデンシャルとして追加

キーは 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) をダウンロードし、空のワークフローを開いてファイルの内容をキャンバスに貼り付けるか、ワークフローメニューからファイルインポートを使用してください。

内部には4つのノードがあります：

- **Start**、ノード Manual Trigger：テスト時にワークフローを起動します。
- **Birth data**、ノード Edit Fields (Set)：`date`、`time`、`timezone`、`latitude`、`longitude` の1人分のデータです。
- **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、クレデンシャル **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、またはテーブルの新しい行）に置き換え、上記の5つの名前にフィールドをマッピングしてください。確認すべき点が2つあります：

- **`timezone` は空にできません。** 空の値は `400` で拒否されるので、フィールドをマッピングするか、座標が確実なら `auto` を設定してください。
- **座標は必須です。** API は都市名をジオコーディングしません。フォームが場所だけを尋ねる場合は、**AstroWay chart** の前にジオコーディングステップを追加してください。

<Aside type="note">
キーのスコープ外で呼び出すと `403 ENDPOINT_NOT_IN_SCOPE` で実行が停止し、予算超過のキーは `429 KEY_BUDGET_EXHAUSTED` になります。どちらも、ダッシュボードで上限を上げるべきで、リクエストを再送しないでください。
</Aside>
