Upbit AIエージェントv1.02

上級

これはCrypto Trading, AI Chatbot, Multimodal AI分野の自動化ワークフローで、35個のノードを含みます。主にSet, Code, Telegram, Agent, HttpRequestToolなどのノードを使用。 Telegram内でGPT-4o-miniを使用してUpbitの暗号資産市場データにアクセス

前提条件
  • Telegram Bot Token
  • ターゲットAPIの認証情報が必要な場合あり
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "1P0wZUbdzeVsfStr",
  "meta": {
    "instanceId": "a5283507e1917a33cc3ae615b2e7d5ad2c1e50955e6f831272ddd5ab816f3fb6"
  },
  "name": "Upbit AI Agent v1.02",
  "tags": [],
  "nodes": [
    {
      "id": "65f5a5f3-53ae-4ec5-ba47-f97678991d8a",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1264,
        736
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "yUizd8t0sD5wMYVG",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "041e4483-e29f-4ba6-b733-7eac06085aaf",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        -1008,
        240
      ],
      "webhookId": "4f251873-4004-4549-b390-9f3287930f17",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "NRLKuLR7z8vCesub",
          "name": "BinanceSpotTradingAIAgent_Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4f3f7bdb-8e94-46be-8e57-2c2931d1b99b",
      "name": "ユーザー認証 (Telegram IDを置換)",
      "type": "n8n-nodes-base.code",
      "position": [
        -688,
        240
      ],
      "parameters": {
        "jsCode": "if ($input.first().json.message.from.id !== <<Replace>>) { // Replace with your actual ID\n  return {unauthorized: true};\n} else {\n  // Return the original data when authorized\n  return $input.all();\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "469fd8a2-b369-493c-87e6-30ad1ecac215",
      "name": "\"SessionId\"を追加",
      "type": "n8n-nodes-base.set",
      "position": [
        -416,
        240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "47598bf1-e55f-4cc0-ae75-272085e7ce02",
              "name": "=sessionId",
              "type": "string",
              "value": "={{ $json.message.chat.id }}"
            },
            {
              "id": "daa49d74-e55e-47bc-ac52-8686d591ab83",
              "name": "message",
              "type": "string",
              "value": "={{ $json.message.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1c8b1d16-6133-4346-8b57-7de7c7728d2c",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        896,
        240
      ],
      "webhookId": "0d8f53dc-fe8a-4093-926c-06b9179eb958",
      "parameters": {
        "text": "={{ $json.message }}",
        "chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "NRLKuLR7z8vCesub",
          "name": "BinanceSpotTradingAIAgent_Bot"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e802f5c0-2645-479b-bed4-501dedbb416f",
      "name": "メッセージが4000文字を超える場合に分割",
      "type": "n8n-nodes-base.code",
      "position": [
        464,
        240
      ],
      "parameters": {
        "jsCode": "// Input: assumes incoming message in `item.json.message`\nconst input = $json.output;\nconst chunkSize = 4000;\n\n// Function to split text\nfunction splitMessage(text, size) {\n  const result = [];\n  for (let i = 0; i < text.length; i += size) {\n    result.push(text.substring(i, i + size));\n  }\n  return result;\n}\n\n// Logic\nif (input.length <= chunkSize) {\n  return [{ json: { message: input } }];\n} else {\n  const chunks = splitMessage(input, chunkSize);\n  return chunks.map(chunk => ({ json: { message: chunk } }));\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "801570b2-0b43-4e18-ac6e-6de6fd469417",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        -32
      ],
      "parameters": {
        "color": 4,
        "height": 460,
        "content": "## Trigger Incoming Telegram Command\nNode: Telegram Trigger\n**Listens for new Telegram messages** from users.\nTriggers the full agent process and passes raw user input downstream."
      },
      "typeVersion": 1
    },
    {
      "id": "9966b776-c71d-4fe3-ba2b-b67197b0d460",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        -32
      ],
      "parameters": {
        "color": 2,
        "height": 460,
        "content": "## Validate User Access\nNode: User **Authentication\nChecks incoming Telegram ID** against the approved user list."
      },
      "typeVersion": 1
    },
    {
      "id": "31accad8-885b-4670-bd23-2039e154ad30",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        -32
      ],
      "parameters": {
        "color": 5,
        "height": 460,
        "content": "## Generate Session Metadata\nNode: Add S**essionId\nCreates a sessionId using the Telegram chat_id**.\nThis is passed into all downstream tools for memory and workflow routing."
      },
      "typeVersion": 1
    },
    {
      "id": "f526d222-bb30-4201-a090-72d71961f679",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        -208
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 644,
        "content": "### 📝 Main Agent Note (sticky, copy-paste)\n\n**Node: Upbit Data Agent**\nCore orchestrator that uses OpenAI only to **format and present** raw Upbit market data.\n\n**Direct HTTP access to Upbit REST** to fetch in parallel:\n\n* **Market list** (`/v1/market/all`)\n* **Tickers (price + 24h stats)** (`/v1/ticker`)\n* **Order book & supported levels** (`/v1/orderbook`, `/v1/orderbook/supported_levels`)\n* **Best bid/ask** (from first `orderbook_units`)\n* **Dynamic candles** (`/v1/candles/{seconds|minutes/{unit}|days|weeks|months|years}`) with auto path from `tf`\n* **Recent trades** (`/v1/trades/ticks`)\n\nOutputs **clean, structured text** (no HTML). If any call fails or a field is unavailable, show `N/A`.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8cf34baa-e329-42b5-99a1-dc7526edabaa",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -32
      ],
      "parameters": {
        "color": 5,
        "width": 260,
        "height": 460,
        "content": "## Handle Telegram Message Limits\nNode: Code (split logic)\nChecks if the **GPT output exceeds 4000 characters**.\nIf so, it splits the message into safe chunks and passes them on sequentially."
      },
      "typeVersion": 1
    },
    {
      "id": "ce8ee7ff-5b58-4413-80da-28b191c786f7",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -32
      ],
      "parameters": {
        "color": 4,
        "height": 460,
        "content": "## Send Final Report to Telegram\nNode: Telegram sendMessage\nSends **formatted HTML report (or split chunks)** directly to the authenticated user via Telegram bot."
      },
      "typeVersion": 1
    },
    {
      "id": "6686c779-cdb7-4413-936f-5527190342e6",
      "name": "付箋6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1344,
        640
      ],
      "parameters": {
        "height": 540,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## GPT Model for Reasoning\nNode: OpenAI Chat Model\nModel: **gpt-4o-mini**\nUsed to:\n\nInterpret signal values\n\nGenerate structured HTML\n\n**Recommend spot and leverage trades**\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6390def9-a6a1-4aae-a9b6-204075756b3f",
      "name": "付箋7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 980,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Order Book Depth**\n\n**Endpoint:** `GET /v1/orderbook`\n**What it does:** Returns **order book** with bids/asks and total sizes.\n\n**Params:**\n\n* `markets` (STRING, required) — market code, e.g., `KRW-BTC`.\n\n**Returns:** `orderbook_units` array with `ask_price`, `bid_price`, `ask_size`, `bid_size` (top ~15 levels by default).\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Upbit does not support arbitrary `limit` — it returns a fixed number of levels (usually 15).\n* Market codes use hyphen format (e.g., `KRW-BTC`)."
      },
      "typeVersion": 1
    },
    {
      "id": "41691a52-2ca2-4cd9-aba0-97139f8f6e67",
      "name": "付箋8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 932,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Best Bid/Ask (Orderbook Snapshot)**\n\n**Endpoint:** `GET /v1/orderbook`\n**What it does:** Returns the **best bid/ask** and order book depth for the given market.\n\n**Params:**\n* `markets` (STRING, required) — market code (e.g., `KRW-BTC`, `USDT-ETH`).\n\n**Returns:** Array with objects:\n* `orderbook_units`: [{ \"ask_price\", \"bid_price\", \"ask_size\", \"bid_size\" }, ...]\n* Top unit = **best bid/ask**.\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Use the first element of `orderbook_units` for **best bid/ask**.\n* You can expand to show more levels if needed."
      },
      "typeVersion": 1
    },
    {
      "id": "28671723-092c-49c7-8038-cb10677b41b7",
      "name": "付箋9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        640
      ],
      "parameters": {
        "color": 3,
        "height": 540,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Short-Term Memory Module\nNode: **Simple Memory\nStores the sessionId**, symbol, and other state data.\nUseful for:\n\nMulti-turn Telegram interactions\n\nTracking indicator agreement across timeframes\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "907b0af3-b626-46da-90dd-6d58f219bfa9",
      "name": "シンプルメモリ",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -992,
        736
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "6c479a7a-ff73-4b8d-9f8a-079a60f80af7",
      "name": "付箋10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 1124,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **24h Stats**\n\n**Endpoint:** `GET /v1/ticker`\n**What it does:** Real-time price and 24-hour rolling stats for one or more markets: **open/high/low/last**, **24h change**, **base/quote volume**, etc.\n\n**Params:**\n\n* `markets` (STRING, required) — one or more market codes, comma-separated. Examples: `KRW-BTC`, `USDT-BTC`, `KRW-BTC,KRW-ETH`.\n\n**Returns (key fields):** `trade_price` (last), `opening_price`, `high_price`, `low_price`, `signed_change_rate`, `signed_change_price`, `acc_trade_volume_24h`, `acc_trade_price_24h`, `prev_closing_price`, `timestamp`, etc.\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Market codes are uppercase with a hyphen (e.g., `KRW-BTC`).\n* Multiple markets are supported via comma separation."
      },
      "typeVersion": 1
    },
    {
      "id": "90ec97ef-7eb9-4071-a9c2-ef8f8440f313",
      "name": "付箋11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 980,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Price (Latest)**\n\n**Endpoint:** `GET /v1/ticker`\n**What it does:** Returns the **latest trade price** (and more stats) for a market.\n\n**Params:**\n* `markets` (STRING, required) — market code (e.g., `KRW-BTC`, `USDT-ETH`).\n\n**Returns:** Array with objects including `trade_price` (last price), `opening_price`, `high_price`, `low_price`, `prev_closing_price`, `acc_trade_volume`, `acc_trade_price`, `change`, `signed_change_rate`, etc.\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Always use **hyphenated format** (e.g., `KRW-BTC`).\n* Returns **more than just price** — can also be used instead of 24h stats."
      },
      "typeVersion": 1
    },
    {
      "id": "9bd5a13c-3346-40c0-a8b1-9a34632c43cf",
      "name": "付箋12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 1332,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Dynamic Klines (All Timeframes in One Node)**\n\n**Endpoint (dynamic):** `GET /v1/candles/{seconds|minutes/{unit}|days|weeks|months|years}`\n**What it does:** Returns OHLCV candles for the requested Upbit market using **one node**. The path segment is chosen automatically from your `tf` (timeframe) input.\n\n**Accepted `tf` examples:**\n- `1s`, `30s` → **seconds**\n- `1m`, `3m`, `5m`, `10m`, `15m`, `30m`, `60m`, `240m` → **minutes/{unit}**\n- `1h`, `2h`, `4h` → mapped to **minutes/60**, **minutes/120**, **minutes/240**\n- `1d` → **days**\n- `1w` → **weeks**\n- `1M` → **months**\n- `1y` → **years**\n\n**Params:**\n* `market` (STRING, required) — e.g., `KRW-BTC`, `USDT-ETH`\n* `tf` (STRING, required) — timeframe token as above (default `15m`)\n* `limit` (INT, optional, default 100, max 200) — number of candles\n* `to` (STRING, optional) — ISO8601 end time (exclusive), e.g. `2025-09-15T09:00:00Z`\n\n**Notes:**\n* Upbit hours are done via minutes (e.g., `1h` → `minutes/60`).\n* Seconds endpoint exists but is limited in historical depth.\n* Response is an array of candles with fields like `opening_price`, `high_price`, `low_price`, `trade_price` (close), `candle_acc_trade_volume`, `timestamp`.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7b656884-eeb9-433c-90e0-dd8bd19fc19d",
      "name": "付箋13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 948,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Average Price (VWAP)**\n\n**Endpoint:** `GET /v1/trades/ticks`\n**What it does:** Retrieves recent trades and can be used to calculate a rolling **average price (VWAP)** for a market.\n\n**Params:**\n* `market` (STRING, required) — e.g., `KRW-BTC`\n* `count` (INT, optional) — number of trades to fetch (default 30, max 200)\n\n**Returns:** Array of trades (`trade_price`, `trade_volume`, `timestamp`, etc.).\n\n**n8n mapping:**\n```txt\nmarket = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\ncount  = $fromAI('parameters1_Value', 30, 'number')\n```\n\n**Notes:** Upbit doesn’t provide a direct avgPrice endpoint. Instead, VWAP or mean trade price is derived from the latest trades."
      },
      "typeVersion": 1
    },
    {
      "id": "f4717caf-540e-4ced-90d9-825d200a0154",
      "name": "付箋14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 868,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Recent Trades**\n\n**Endpoint:** `GET /v1/trades/ticks`\n**What it does:** Fetches the **most recent trades** for a market.\n\n**Params:**\n\n* `market` (STRING, required) — Upbit market ID (e.g., `KRW-BTC`, `USDT-ETH`).\n* `count` (INT, optional, default 30, max 200) — number of trades to fetch.\n\n**Returns:** array of trade objects `{trade_price, trade_volume, ask_bid, timestamp, sequential_id, ...}`\n\n**n8n query mapping:**\n\n```txt\nmarket = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\ncount  = $fromAI('parameters1_Value', 30, 'number')\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "9adcbbd2-1f62-4779-b1bd-0c3792042110",
      "name": "計算機",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        1520,
        592
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c5fc3093-d51e-430e-bd5b-59a79d07c835",
      "name": "思考",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        1808,
        592
      ],
      "parameters": {
        "description": "### 🏷 Tool: **Think**\n\n**Purpose:**\n\n* Lightweight **reasoning helper**.\n* Lets the AI Agent process intermediate logic, format outputs, or decide how to combine multiple API results before sending the final report.\n* Does not fetch data itself.\n\n**Use cases:**\n\n* Clean/reshape JSON from Binance endpoints\n* Extract only the needed fields (e.g., `lastPrice`, `volume`)\n* Help prepare data for Telegram message formatting\n\n**n8n setup notes:**\n\n* No API call, just an **AI Tool** node.\n* Connect upstream API results → Think → Report Agent."
      },
      "typeVersion": 1.1
    },
    {
      "id": "883e49b1-ec6b-4865-9595-7d6890022d6d",
      "name": "付箋15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 836,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Calculator**\n\n**Purpose:**\n\n* Perform **math operations** inside the workflow.\n* Supports add/subtract/multiply/divide, percentages, rounding, etc.\n\n**Use cases:**\n\n* Calculate spreads (ask – bid)\n* Compute % changes from open vs. last price\n* Normalize volumes or confidence scores\n\n**n8n setup notes:**\n\n* Node: `Calculator` (n8n built-in)\n* Input fields can come from Binance API JSON\n* Output can be chained into Think → Final Report\n"
      },
      "typeVersion": 1
    },
    {
      "id": "aad0c76e-5a27-41c7-847e-8fa03d078db4",
      "name": "付箋16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        512
      ],
      "parameters": {
        "color": 6,
        "height": 932,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### **Think**\n\n**Purpose:**\n\n* Lightweight **reasoning helper**.\n* Lets the AI Agent process intermediate logic, format outputs, or decide how to combine multiple API results before sending the final report.\n* Does not fetch data itself.\n\n**Use cases:**\n\n* Clean/reshape JSON from Binance endpoints\n* Extract only the needed fields (e.g., `lastPrice`, `volume`)\n* Help prepare data for Telegram message formatting\n\n**n8n setup notes:**\n\n* No API call, just an **AI Tool** node.\n* Connect upstream API results → Think → Report Agent."
      },
      "typeVersion": 1
    },
    {
      "id": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
      "name": "Upbit AIエージェント",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -96,
        240
      ],
      "parameters": {
        "text": "={{ $json.message }}",
        "options": {
          "systemMessage": "You are the **Upbit Spot Market Data Agent**.\n\nYou have **HTTP GET access** to the official Upbit REST API and must **fetch and present market data only** for requested Upbit Spot markets. You do **not** analyze, predict, or recommend.\n\n#### API base\n\n* `https://api.upbit.com`\n\n#### Request/format rules\n\n* All requests are **HTTP GET** returning **JSON**.\n* Query strings for params (e.g., `?markets=KRW-BTC`).\n* Market codes are uppercase with a hyphen (e.g., `KRW-BTC`, `USDT-ETH`).\n* If anything fails or is missing, show `N/A`.\n\n#### Available endpoints\n\n1. **Market list** – `GET /v1/market/all`\n2. **Tickers (price + 24h stats)** – `GET /v1/ticker?markets=KRW-BTC[,…]`\n3. **Tickers by quote** – `GET /v1/tickers?quote_currencies=KRW|BTC|USDT`\n4. **Order book** – `GET /v1/orderbook?markets=KRW-BTC`\n5. **Supported levels** – `GET /v1/orderbook/supported_levels?markets=KRW-BTC`\n6. **Recent trades** – `GET /v1/trades/ticks?market=KRW-BTC&count=100`\n7. **Candles (dynamic)** – `GET /v1/candles/{seconds | minutes/{unit} | days | weeks | months | years}`\n\n#### Dynamic candles (single tool, auto-select path)\n\n* Input `tf` decides the path:\n\n  * `1s, 30s` → `seconds`\n  * `1m,3m,5m,10m,15m,30m,60m,240m` → `minutes/{unit}`\n  * `1h,2h,4h` → map to `minutes/60`, `minutes/120`, `minutes/240`\n  * `1d` → `days`, `1w` → `weeks`, `1M` → `months`, `1y` → `years`\n* Common params: `market` (e.g., `KRW-BTC`), `count`/`limit` (default 100, max 200), optional `to` ISO8601.\n\n#### Utility tools\n\n* **Calculator**: spreads, % changes, lightweight math.\n* **Think**: reshape/clean JSON, select fields, prepare text.\n\n#### Output style\n\nReturn **clean, structured text** (no HTML). Example:\n\n```\nKRW-BTC — Upbit Spot Data\n\nPrice\n• Last: 95,800,000 KRW\n• Change (24h): +2.3%\n\n24h Stats\n• Open: 93,500,000 • High: 96,200,000 • Low: 92,800,000 • Volume: 12,345 BTC\n\nOrder Book (Top 5)\n• Bids: [95,790,000 x 0.50], [95,780,000 x 1.20], …\n• Asks: [95,810,000 x 0.80], [95,820,000 x 1.50], …\n\nKlines (15m, latest 5)\n• O/H/L/C: 95,700,000 / 95,820,000 / 95,600,000 / 95,800,000\n```\n\n#### Rules\n\n* Always call the correct Upbit endpoint for the user’s request.\n* Never fabricate values (formatting/math only).\n* No strategies, advice, or sentiment.\n* Prefer concise, human-readable values over raw JSON.\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "052801e0-4631-4466-bd04-84ea68320d28",
      "name": "24時間統計",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -704,
        592
      ],
      "parameters": {
        "url": "https://api.upbit.com/v1/ticker",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "markets",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `KRW-BTC`, 'string') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **24h Stats**\n\n**Endpoint:** `GET /v1/ticker`\n**What it does:** Real-time price and 24-hour rolling stats for one or more markets: **open/high/low/last**, **24h change**, **base/quote volume**, etc.\n\n**Params:**\n\n* `markets` (STRING, required) — one or more market codes, comma-separated. Examples: `KRW-BTC`, `USDT-BTC`, `KRW-BTC,KRW-ETH`.\n\n**Returns (key fields):** `trade_price` (last), `opening_price`, `high_price`, `low_price`, `signed_change_rate`, `signed_change_price`, `acc_trade_volume_24h`, `acc_trade_price_24h`, `prev_closing_price`, `timestamp`, etc.\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Market codes are uppercase with a hyphen (e.g., `KRW-BTC`).\n* Multiple markets are supported via comma separation."
      },
      "typeVersion": 4.2
    },
    {
      "id": "54bdf0b7-4d92-4a86-a5fe-99f7fd283a09",
      "name": "オーダーブック深度",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -400,
        592
      ],
      "parameters": {
        "url": "https://api.upbit.com/v1/orderbook",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "markets",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `KRW-BTC`, 'string') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **Order Book Depth**\n\n**Endpoint:** `GET /v1/orderbook`\n**What it does:** Returns **order book** with bids/asks and total sizes.\n\n**Params:**\n\n* `markets` (STRING, required) — market code, e.g., `KRW-BTC`.\n\n**Returns:** `orderbook_units` array with `ask_price`, `bid_price`, `ask_size`, `bid_size` (top ~15 levels by default).\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Upbit does not support arbitrary `limit` — it returns a fixed number of levels (usually 15).\n* Market codes use hyphen format (e.g., `KRW-BTC`)."
      },
      "typeVersion": 4.2
    },
    {
      "id": "cbcbba24-d5a8-4229-a043-d0bced05ae06",
      "name": "価格(最新)",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -112,
        592
      ],
      "parameters": {
        "url": "https://api.upbit.com/v1/ticker",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "markets",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `KRW-BTC`, 'string') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **Price (Latest)**\n\n**Endpoint:** `GET /v1/ticker`\n**What it does:** Returns the **latest trade price** (and more stats) for a market.\n\n**Params:**\n* `markets` (STRING, required) — market code (e.g., `KRW-BTC`, `USDT-ETH`).\n\n**Returns:** Array with objects including `trade_price` (last price), `opening_price`, `high_price`, `low_price`, `prev_closing_price`, `acc_trade_volume`, `acc_trade_price`, `change`, `signed_change_rate`, etc.\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Always use **hyphenated format** (e.g., `KRW-BTC`).\n* Returns **more than just price** — can also be used instead of 24h stats."
      },
      "typeVersion": 4.2
    },
    {
      "id": "79da9179-4725-470a-a729-d064d41d074f",
      "name": "最良気配値",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        208,
        592
      ],
      "parameters": {
        "url": "https://api.upbit.com/v1/orderbook",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "markets",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `KRW-BTC`, 'string') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **Best Bid/Ask (Orderbook Snapshot)**\n\n**Endpoint:** `GET /v1/orderbook`\n**What it does:** Returns the **best bid/ask** and order book depth for the given market.\n\n**Params:**\n* `markets` (STRING, required) — market code (e.g., `KRW-BTC`, `USDT-ETH`).\n\n**Returns:** Array with objects:\n* `orderbook_units`: [{ \"ask_price\", \"bid_price\", \"ask_size\", \"bid_size\" }, ...]\n* Top unit = **best bid/ask**.\n\n**n8n query mapping:**\n\n```txt\nmarkets = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\n```\n\n**Notes:**\n* Use the first element of `orderbook_units` for **best bid/ask**.\n* You can expand to show more levels if needed."
      },
      "typeVersion": 4.2
    },
    {
      "id": "9d926768-3fee-450f-8b92-bc51d1c0c309",
      "name": "平均価格(VWAP)",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        880,
        592
      ],
      "parameters": {
        "url": "https://api.upbit.com/v1/trades/ticks",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "market",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `KRW-BTC`, 'string') }}"
            },
            {
              "name": "count",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', `30`, 'number') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **Average Price (VWAP)**\n\n**Endpoint:** `GET /v1/trades/ticks`\n**What it does:** Retrieves recent trades and can be used to calculate a rolling **average price (VWAP)** for a market.\n\n**Params:**\n* `market` (STRING, required) — e.g., `KRW-BTC`\n* `count` (INT, optional) — number of trades to fetch (default 30, max 200)\n\n**Returns:** Array of trades (`trade_price`, `trade_volume`, `timestamp`, etc.).\n\n**n8n mapping:**\n```txt\nmarket = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\ncount  = $fromAI('parameters1_Value', 30, 'number')\n```\n\n**Notes:** Upbit doesn’t provide a direct avgPrice endpoint. Instead, VWAP or mean trade price is derived from the latest trades."
      },
      "typeVersion": 4.2
    },
    {
      "id": "7edfe1df-567c-4a7a-8d09-d87f1cd9031f",
      "name": "直近取引",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        1216,
        592
      ],
      "parameters": {
        "url": "https://api.upbit.com/v1/trades/ticks",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "market",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `KRW-BTC`, 'string') }}"
            },
            {
              "name": "count",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters1_Value', `30`, 'number') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **Recent Trades**\n\n**Endpoint:** `GET /v1/trades/ticks`\n**What it does:** Fetches the **most recent trades** for a market.\n\n**Params:**\n\n* `market` (STRING, required) — Upbit market ID (e.g., `KRW-BTC`, `USDT-ETH`).\n* `count` (INT, optional, default 30, max 200) — number of trades to fetch.\n\n**Returns:** array of trade objects `{trade_price, trade_volume, ask_bid, timestamp, sequential_id, ...}`\n\n**n8n query mapping:**\n\n```txt\nmarket = $fromAI('parameters0_Value', 'KRW-BTC', 'string')\ncount  = $fromAI('parameters1_Value', 30, 'number')\n```"
      },
      "typeVersion": 4.2
    },
    {
      "id": "2f16acde-faa2-4869-8b75-a5e5d5f003c4",
      "name": "Upbit Klines(動的)",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        544,
        592
      ],
      "parameters": {
        "url": "={{ (function(){\n  const base = 'https://api.upbit.com/v1/candles/';\n  const tf = $fromAI('tf', '15m', 'string');\n  const m = (tf || '').trim();\n\n  // seconds (e.g., 1s, 30s)\n  if (/^\\d+s$/i.test(m)) {\n    return base + 'seconds';\n  }\n\n  // minutes direct (e.g., 1m, 3m, 5m, 10m, 15m, 30m, 60m, 240m)\n  const minMatch = m.match(/^(\\d+)m$/i);\n  if (minMatch) {\n    const unit = minMatch[1];\n    return base + 'minutes/' + unit;\n  }\n\n  // hours mapped to minutes\n  const hourMap = { '1':'60', '2':'120', '4':'240' };\n  const hrMatch = m.match(/^(\\d+)h$/i);\n  if (hrMatch && hourMap[hrMatch[1]]) {\n    return base + 'minutes/' + hourMap[hrMatch[1]];\n  }\n\n  // days, weeks, months, years\n  if (/^\\d+d$/i.test(m)) return base + 'days';\n  if (/^\\d+w$/i.test(m)) return base + 'weeks';\n  if (/^\\d+M$/i.test(m)) return base + 'months';\n  if (/^\\d+y$/i.test(m)) return base + 'years';\n\n  // fallback: 15m\n  return base + 'minutes/15';\n})() }}",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "market",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('market', `KRW-BTC`, 'string') }}"
            },
            {
              "name": "count",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('limit', `100`, 'number') }}"
            },
            {
              "name": "to",
              "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('to', ``, 'string') }}"
            }
          ]
        },
        "toolDescription": "### 🏷 Tool: **Dynamic Klines (All Timeframes in One Node)**\n\n**Endpoint (dynamic):** `GET /v1/candles/{seconds|minutes/{unit}|days|weeks|months|years}`\n**What it does:** Returns OHLCV candles for the requested Upbit market using **one node**. The path segment is chosen automatically from your `tf` (timeframe) input.\n\n**Accepted `tf` examples:**\n- `1s`, `30s` → **seconds**\n- `1m`, `3m`, `5m`, `10m`, `15m`, `30m`, `60m`, `240m` → **minutes/{unit}**\n- `1h`, `2h`, `4h` → mapped to **minutes/60**, **minutes/120**, **minutes/240**\n- `1d` → **days**\n- `1w` → **weeks**\n- `1M` → **months**\n- `1y` → **years**\n\n**Params:**\n* `market` (STRING, required) — e.g., `KRW-BTC`, `USDT-ETH`\n* `tf` (STRING, required) — timeframe token as above (default `15m`)\n* `limit` (INT, optional, default 100, max 200) — number of candles\n* `to` (STRING, optional) — ISO8601 end time (exclusive), e.g. `2025-09-15T09:00:00Z`\n\n**Notes:**\n* Upbit hours are done via minutes (e.g., `1h` → `minutes/60`).\n* Seconds endpoint exists but is limited in historical depth.\n* Response is an array of candles with fields like `opening_price`, `high_price`, `low_price`, `trade_price` (close), `candle_acc_trade_volume`, `timestamp`.\n"
      },
      "typeVersion": 4.2
    },
    {
      "id": "28fa8e05-0d29-4776-adea-459515f1ea00",
      "name": "付箋17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2112,
        -1248
      ],
      "parameters": {
        "width": 1440,
        "height": 4256,
        "content": "# 🧠 Upbit Spot Market Data AI Agent – Full System Documentation\n\nA production-ready AI automation that fetches and presents **Upbit spot market data** (no analysis or advice). It retrieves **tickers, order books, recent trades, and multi-timeframe candles** via Upbit’s public REST API and formats clean, Telegram-friendly text outputs.\n\n---\n\n## 🧩 Included Workflows\n\n> Install/activate all of the following for the system to work end-to-end:\n\n| ✅ Workflow Name              | 📌 Function Description                                                |\n| ---------------------------- | ---------------------------------------------------------------------- |\n| Upbit Spot Market Data Agent | Core orchestrator. Parses user asks, calls data tools, formats output. |\n| Upbit Price/Ticker Tool      | Fetches single-market ticker (last, change, acc volumes).              |\n| Upbit Order Book Tool        | Fetches order book with adjustable `count` (top-N levels).             |\n| Upbit Recent Trades Tool     | Fetches recent trade prints (price, size, side, time).                 |\n| Upbit Candles Tool (Unified) | Fetches candles across seconds/minutes/days/weeks/months/years.        |\n| Think (JSON Shaper)          | Optional: normalizes API JSON to simplified fields for output.         |\n| Calculator                   | Optional: spread, midpoint, percentage change calculations.            |\n\n---\n\n## 🔧 Installation Instructions\n\n### 1) Import Workflows\n\n* Open **n8n Editor UI**\n* Import each JSON workflow file\n* Ensure the **Upbit Spot Market Data Agent** can call the data tools (use *Execute Workflow* or direct connections)\n\n### 2) Credentials\n\n* Upbit public market endpoints require **no auth**\n* (If you later add private endpoints, configure API Key/Secret separately)\n\n### 3) Environment / Params (Recommended)\n\n* `DEFAULT_MARKET`: `KRW-BTC` (Upbit standard format: `QUOTE-BASE`, e.g., `KRW-BTC`, `USDT-BTC`)\n* `DEFAULT_CANDLE_UNIT`: `15` (for minutes candles)\n* `DEFAULT_CANDLE_KIND`: `minutes` (one of: `seconds|minutes|days|weeks|months|years`)\n* `DEFAULT_LIMIT`: `20` (typical count for lists and candles)\n\n### 4) Telegram (Optional)\n\n* If triggering from Telegram, add your bot credentials and chat ID check node\n* The agent can accept plain text like: `upbit KRW-BTC 15m` or `upbit KRW-BTC candles 1h`\n\n---\n\n## 🌐 Upbit REST – Public Market Endpoints (Used)\n\n**Base URL:** `https://api.upbit.com/v1`\n\n* **Tickers (single or multiple)**\n  `GET /ticker?markets=KRW-BTC`\n  Returns last trade price, 24h change, accumulated volumes, etc.\n\n* **Orderbook**\n  `GET /orderbook?markets=KRW-BTC`\n  Use `orderbook_units` array. Top-of-book is index 0. (If you need only top-1, read first unit.)\n\n* **Recent Trades**\n  `GET /trades/ticks?market=KRW-BTC&count=100`\n  Returns recent trades with price, volume, side (ask/bid), and timestamp.\n\n* **Candles (Unified)**\n  Same path pattern, AI chooses the correct noun by timeframe:\n\n  * `GET /candles/seconds/{unit}?market=KRW-BTC&count=20`\n  * `GET /candles/minutes/{unit}?market=KRW-BTC&count=20`\n  * `GET /candles/days?market=KRW-BTC&count=20`\n  * `GET /candles/weeks?market=KRW-BTC&count=20`\n  * `GET /candles/months?market=KRW-BTC&count=20`\n  * `GET /candles/years?market=KRW-BTC&count=20`\n\n**How the agent chooses candle route from user input:**\n\n* If user says `1s, 5s` → **seconds** (`/candles/seconds/{unit}`)\n* `1m, 3m, 5m, 15m, 30m, 60m, 240m` → **minutes** (`/candles/minutes/{unit}` where `unit` is the number of minutes)\n* `1d` → **days** (`/candles/days`)\n* `1w` → **weeks** (`/candles/weeks`)\n* `1M` (months) → **months** (`/candles/months`)\n* `1y` → **years** (`/candles/years`)\n\n> Notes\n>\n> * Upbit markets are **`QUOTE-BASE`** (dash separated, uppercase), e.g., `KRW-BTC`, `USDT-BTC`.\n> * `count` default is often 1–200 depending on endpoint. We recommend `20–100`.\n> * For minute candles, provide `unit` (1, 3, 5, 10, 15, 30, 60, 240). For seconds, typical units include 1, 5, 10, 15, 30.\n> * Historical ranges can be paged using `to=` timestamp (KST in ISO8601), if needed.\n\n---\n\n## ▶️ How the Agent Works (Flow)\n\n```\n[Trigger: text/telegram/webhook]\n→ Parse: market, data type(s), timeframe, limit\n→ Parallel HTTP calls:\n   - /ticker\n   - /orderbook\n   - /trades/ticks\n   - /candles/<kind> (AI selects: seconds/minutes/days/weeks/months/years)\n→ Think: normalize + validate fields (fallback N/A)\n→ Calculator: optional midpoint/spread/%change\n→ Format: clean, human-readable text (no HTML required)\n→ Return to caller (Telegram or UI)\n```\n\n---\n\n## 📨 Output Style (Text)\n\n```\nKRW-BTC — Upbit Spot Data\n\nPrice\n• Last: 88,750,000\n• 24h Change: +2.1%\n\n24h Stats (Ticker)\n• Acc Vol (Base): 1,234 BTC\n• Acc Vol (Quote): 109,000,000,000 KRW\n\nOrder Book (Top 5)\n• Bids: [88,740,000 x 0.50], [88,730,000 x 1.20], …\n• Asks: [88,760,000 x 0.80], [88,770,000 x 1.50], …\n\nCandles (15m, latest 20)\n• O/H/L/C: 88,100,000 / 88,820,000 / 87,950,000 / 88,750,000\n\nRecent Trades (latest 5)\n• 88,760,000 x 0.015 (bid) at 09:33:12\n• 88,755,000 x 0.002 (ask) at 09:33:10\n```\n\n> If any field is missing or a request fails, show **`N/A`** and continue.\n\n---\n\n## 🧠 System Message (Agent Behavior)\n\n* You are the **Upbit Spot Market Data Agent**.\n* You have HTTP GET access to Upbit’s public REST API.\n* Your job is to **fetch and present data only**. No analysis, no predictions, no recommendations.\n* Always call the correct endpoint for the requested data type and timeframe.\n* Respect Upbit market format `QUOTE-BASE` (e.g., `KRW-BTC`).\n* Present **clean text**, grouped by Price / 24h Stats / Order Book / Candles / Trades.\n* On error or missing data, return `N/A` and proceed.\n\n---\n\n## 🧮 Think & Calculator Usage (Optional)\n\n* **Think:** flatten / rename fields (e.g., `trade_price → last`, `acc_trade_price_24h → quoteVol`, etc.)\n* **Calculator:**\n\n  * `midpoint = (bestBid + bestAsk) / 2`\n  * `spread = bestAsk - bestBid`\n  * `%change = ((last - open) / open) * 100`\n\n---\n\n## 🔎 Troubleshooting\n\n* **Empty order book or trades:** Verify market code (must be `QUOTE-BASE`).\n* **Wrong candles route:** Ensure the agent maps user timeframe to the correct noun (`seconds|minutes|days|weeks|months|years`) and, for minutes/seconds, that `unit` is valid.\n* **Rate limits:** Space calls or reduce `count`. Consider caching the last response for the same market/timeframe during a session.\n\n---\n\n## 🧾 Example User Prompts\n\n* `upbit KRW-BTC`\n  → Returns ticker, order book (top 5), recent trades (20), candles (15m x 20)\n\n* `upbit USDT-BTC 1h 50`\n  → Chooses minutes candles with `unit=60`, `count=50`, plus the other datasets\n\n* `upbit KRW-ETH trades 100`\n  → Only recent trades (count=100)\n\n* `upbit KRW-XRP orderbook 20`\n  → Only order book (top 20 levels)\n\n---\n\n## 🚀 Support & Licensing\n\n**Author:** Don Jayamaha\n**Company:** Treasurium Capital Limited Company\n[linkedin.com/in/donjayamahajr](http://linkedin.com/in/donjayamahajr)\n\n© 2025 Treasurium Capital Limited Company. All rights reserved.\nSystem architecture, prompts, and workflow design are proprietary. Reuse/resale prohibited without license.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "99f3c302-0f14-4e73-a185-0aebffb3dcb3",
  "connections": {
    "c5fc3093-d51e-430e-bd5b-59a79d07c835": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "052801e0-4631-4466-bd04-84ea68320d28": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "9adcbbd2-1f62-4779-b1bd-0c3792042110": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "79da9179-4725-470a-a729-d064d41d074f": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "7edfe1df-567c-4a7a-8d09-d87f1cd9031f": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "907b0af3-b626-46da-90dd-6d58f219bfa9": {
      "ai_memory": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "cbcbba24-d5a8-4229-a043-d0bced05ae06": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d": {
      "main": [
        [
          {
            "node": "e802f5c0-2645-479b-bed4-501dedbb416f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "469fd8a2-b369-493c-87e6-30ad1ecac215": {
      "main": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "54bdf0b7-4d92-4a86-a5fe-99f7fd283a09": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "041e4483-e29f-4ba6-b733-7eac06085aaf": {
      "main": [
        [
          {
            "node": "4f3f7bdb-8e94-46be-8e57-2c2931d1b99b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65f5a5f3-53ae-4ec5-ba47-f97678991d8a": {
      "ai_languageModel": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "9d926768-3fee-450f-8b92-bc51d1c0c309": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "2f16acde-faa2-4869-8b75-a5e5d5f003c4": {
      "ai_tool": [
        [
          {
            "node": "3c3cad01-5bfd-475a-9ab1-ae790be6bd4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "4f3f7bdb-8e94-46be-8e57-2c2931d1b99b": {
      "main": [
        [
          {
            "node": "469fd8a2-b369-493c-87e6-30ad1ecac215",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e802f5c0-2645-479b-bed4-501dedbb416f": {
      "main": [
        [
          {
            "node": "1c8b1d16-6133-4346-8b57-7de7c7728d2c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - 仮想通貨取引, AIチャットボット, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数35
カテゴリー3
ノードタイプ11
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Don Jayamaha Jr

Don Jayamaha Jr

@don-the-gem-dealer

With 12 years of experience as a Blockchain Strategist and Web3 Architect, I specialize in bridging the gap between traditional industries and decentralized technologies. My expertise spans tokenized assets, crypto payment integrations, and blockchain-driven market solutions.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34