Upbit AI-Agent v1.02
Dies ist ein Crypto Trading, AI Chatbot, Multimodal AI-Bereich Automatisierungsworkflow mit 35 Nodes. Hauptsächlich werden Set, Code, Telegram, Agent, HttpRequestTool und andere Nodes verwendet. Zugriff auf Kryptowährungsmärkte Upbit in Telegram mit GPT-4o-mini
- •Telegram Bot Token
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •OpenAI API Key
Verwendete Nodes (35)
{
"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": "Benutzerauthentifizierung (Ersetze 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": "Fügt \"SessionId\" hinzu",
"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": "Teilt Nachricht bei über 4000 Zeichen",
"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": "Notizzettel",
"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": "Notizzettel1",
"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": "Notizzettel2",
"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": "Notizzettel3",
"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": "Notizzettel4",
"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": "Notizzettel5",
"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": "Notizzettel6",
"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": "Notizzettel7",
"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": "Notizzettel8",
"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": "Notizzettel9",
"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": "Einfacher Speicher",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-992,
736
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "6c479a7a-ff73-4b8d-9f8a-079a60f80af7",
"name": "Notizzettel10",
"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": "Notizzettel11",
"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": "Notizzettel12",
"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": "Notizzettel13",
"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": "Notizzettel14",
"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": "Rechner",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
1520,
592
],
"parameters": {},
"typeVersion": 1
},
{
"id": "c5fc3093-d51e-430e-bd5b-59a79d07c835",
"name": "Denken",
"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": "Notizzettel15",
"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": "Notizzettel16",
"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 KI-Agent",
"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": "24h-Statistiken",
"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": "Orderbuch-Tiefe",
"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": "Preis (aktuell)",
"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": "Bestes Geld/Brief",
"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": "Durchschnittspreis (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": "Letzte Trades",
"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 Kerzen (dynamisch)",
"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": "Notizzettel17",
"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
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Krypto-Handel, KI-Chatbot, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Don Jayamaha Jr
@don-the-gem-dealerWith 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.
Diesen Workflow teilen