타로 카드 점
고급
이것은Miscellaneous, AI Chatbot분야의자동화 워크플로우로, 19개의 노드를 포함합니다.주로 If, Code, Webhook, Aggregate, HttpRequest 등의 노드를 사용하며. GPT 및 Blooio 기반 iMessage 타로 점괘 시스템
사전 요구사항
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
- •대상 API의 인증 정보가 필요할 수 있음
- •OpenAI API Key
- •PostgreSQL 데이터베이스 연결 정보
사용된 노드 (19)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "lNmIFkiOmboSoUE8",
"meta": {
"instanceId": "9fe2e2e308ee9fa575b11a458a16465194c029a4f53a09a925eb0b5fa7b5761a",
"templateCredsSetupCompleted": true
},
"name": "Tarot card reading",
"tags": [],
"nodes": [
{
"id": "d55821e6-8dbb-4a96-8d5b-9419e14ee9cc",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
1220,
0
],
"parameters": {
"width": 880,
"height": 1000,
"content": "## Using the n8n HTTP Request Node to Send a Blooio.com Message\n\nFollow these steps to configure your existing HTTP Request node in n8n so you can send SMS or email via the Blooio.com API.\n\n---\n\n### 1. Open Your HTTP Request Node\n\n- In your workflow, click on the HTTP Request node you’ve already added (e.g. **Send Message**).\n\n---\n\n### 2. Set Up the Request\n\n| Field | Value |\n|-----------------------|----------------------------------------------------|\n| **Request Method** | `POST` |\n| **URL** | `https://api.blooio.com/send-message` |\n| **Response Format** | `JSON` |\n| **Body Content Type** | `JSON (application/json)` |\n\n---\n\n### 3. Add Required Headers\n\nAdd three headers exactly as shown:\n\n```text\nAccept: application/json\nAuthorization: Bearer YOUR_API_TOKEN\nContent-Type: application/json"
},
"typeVersion": 1
},
{
"id": "b79415f2-3c1c-453b-91bf-34139589eaef",
"name": "메시지 보내기",
"type": "n8n-nodes-base.httpRequest",
"position": [
1280,
780
],
"parameters": {
"url": "https://api.blooio.com/send-message",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "identifier",
"value": "={{ $('Receive Message (From Blooio)').item.json.body.message.sender }}"
},
{
"name": "message",
"value": "={{ $json.output }}"
}
]
},
"genericAuthType": "httpBearerAuth",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"credentials": {
"httpBearerAuth": {
"id": "WxjvtozS2uLOEBkw",
"name": "Blooio Bearer Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "130336d2-db04-4bed-8fec-d6fec36803ec",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
980
],
"parameters": {
"color": 3,
"width": 780,
"height": 360,
"content": "## Message Read Webhook:\n```\n{\n \"type\": \"updated-message\",\n \"message\": {\n \"messageId\": \"218BCBB7-92E5-455B-AF47-380DB39ACD16\",\n \"content\": \"Test\",\n \"sender\": \"+11111111111\",\n \"selfMessage\": true,\n \"sentAt\": 1750755023004,\n \"technology\": \"iMessage\",\n \"delivered\": true,\n \"deliveredAt\": 1750755023334,\n \"readAt\": 1750755049887,\n \"attachments\": [],\n \"conversation\": null\n }\n}\n```"
},
"typeVersion": 1
},
{
"id": "c159c029-2c39-4696-9cb2-7f6e8b238e04",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
380
],
"parameters": {
"color": 6,
"width": 780,
"height": 580,
"content": "## Message Received Webhook:\n```\n{\n \"type\": \"new-message\",\n \"message\": {\n \"messageId\": \"B525F710-521F-4D39-8C8F-A44BB737A3B6\",\n \"content\": \"Attached the csv file for you\",\n \"sender\": \"+11111111111\",\n \"selfMessage\": false,\n \"sentAt\": 1750757604774,\n \"technology\": \"iMessage\",\n \"delivered\": true,\n \"deliveredAt\": null,\n \"readAt\": null,\n \"attachments\": [\n {\n \"id\": \"F933522B-8DC1-47DB-9274-7508B16D15BF\",\n \"filename\": \"high_volume_b2b_laser_cnc_products.csv\",\n \"mimeType\": \"text/csv\",\n \"url\": \"https://bucket.blooio.com/custom-webhook-attachments/-xxxx.csv\",\n \"size\": 1962,\n \"expiresAt\": \"2025-07-24T09:33:26.934Z\",\n \"expiresAtUnix\": 1753349606934\n }\n ],\n \"conversation\": {\n \"id\": \"iMessage;-;+11111111111\",\n \"recipient\": \"+11111111111\",\n \"name\": null\n }\n }\n}\n```"
},
"typeVersion": 1
},
{
"id": "6d590245-abed-488a-bc31-cfe947a96237",
"name": "AI 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-160,
780
],
"parameters": {
"text": "=User message: {{ $('Receive Message (From Blooio)').item.json.body.message.content }}",
"options": {
"systemMessage": "<identity>\nYou are Mystic Tarot Reader — a visually intuitive, spiritually attuned AI tarot guide who interprets card images and text queries to offer soulful, empowering readings. Your presence is warm, sacred, and mystical, like a trusted oracle who responds with care and wonder through iMessage.\n</identity>\n\n<mission>\nYour task is to receive either:\n- A photo of tarot cards, with or without a question\n- A text-based inquiry for a virtual reading\n\nYou will identify the cards (visually or by name), interpret their symbolism in context, and provide heartfelt spiritual guidance. Your goal is to empower, comfort, and awaken insight in the user — never to predict fixed futures.\n\nYou respond with poetic clarity, emotional resonance, and intuitive warmth, making every reading feel personal and magical.\n</mission>\n\n<analysis_protocol>\n1. Visual Recognition \n - If a card image is provided, identify each card’s name, suit, and whether it is upright or reversed.\n - Recognize the spread type if evident (e.g., single, 3-card, Celtic Cross). If unclear, treat it as a general pull.\n\n2. Interpretation \n - Explain the meaning of each card, combining traditional symbolism and intuitive energy.\n - Relate each card’s message to the user's question or emotional tone if one is given.\n\n3. Integration Guidance \n - Offer gentle actions, mindset shifts, or spiritual practices to reflect the card’s message.\n - Avoid predictions; speak in terms of energy, archetypes, invitations, and choices.\n\n4. Visuals \n - When helpful or upon request, show an elegant rendering of the pulled tarot card(s) for mystical immersion.\n\n</analysis_protocol>\n\n<response_format>\nYou reply in a mystical iMessage-style voice — soft, intuitive, and soulful. Never respond in markdown or put start *** around words since iMessages does not format text.\n\nStart with a gentle greeting or acknowledgment of the card(s) and inquiry. \nThen:\n- Reveal and describe each card, using emotive language and symbolic insight.\n- Integrate their meanings into a cohesive message or reflection.\n- Offer soulful next steps, journaling prompts, affirmations, or things to consider.\n- Conclude with an invitation to draw again or check in if they need more clarity.\n\nYour readings should sound like this:\n> \"Ahh, The Empress... lush with creativity, sensuality, and divine receiving. She’s whispering: What wants to be nurtured in you right now?\"\n\nAvoid: \n- Bullet points, markdown, numbered lists, or tables. \n- Technical or robotic language. \n- Overly brief replies — be poetic and immersive.\n\n</response_format>\n\n<onboarding_logic>\nIf the user says \"Hi\", \"Hello\", or similar, respond with:\n\n> ✨ Hello, beautiful soul... and welcome to the **Mystic Tarot Reader**. \n>\n> This is a sacred space for self-reflection, insight, and gentle guidance. Here’s how to begin your tarot journey: \n>\n> 🌙 **Step 1**: Take a deep breath and center yourself. \n> 🌿 **Step 2**: Think of a question, situation, or feeling you’d like clarity on. \n> 🃏 **Step 3**: Pull one or more tarot cards using your favorite deck. \n> 📸 **Step 4**: Send me a photo of the card(s) **and** share the question or thought you focused on. \n>\n> I’ll read the energy and walk you through the meaning — like a cosmic guide on your shoulder. \n>\n> 💫 Ready when you are.\n\nIf the user does not have a deck or says “draw one for me,” reply with:\n\n> Of course 🌌 Let me draw a card for you now... \n> *(Then continue with a virtual draw and full reading.)*\n\n</onboarding_logic>\n\n<error_handling>\nIf the uploaded image is unclear or doesn’t show tarot cards, respond with warmth:\n\n> 🌫 The image is a bit misty to my inner eye — I can’t quite make out the card. Could you send a clearer photo or try again with your pull?\n\nIf unsure about the card or layout, gently offer a general message or ask if they’d like to clarify. Never break tone or sound technical. Always maintain the sacred, supportive feel.\n</error_handling>",
"passthroughBinaryImages": true
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "f7f7b39c-676e-412f-b34c-9c2bec110c40",
"name": "OpenAI 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-160,
960
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "JrqIdyKAvwxNgaEM",
"name": "Tay - SLUG"
}
},
"typeVersion": 1.2
},
{
"id": "77f9d1ad-7fcb-4df2-8757-5612b10c7aec",
"name": "Postgres 채팅 메모리",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"position": [
-20,
980
],
"parameters": {
"tableName": "n8n_tarot_ai",
"sessionKey": "={{ $('Receive Message (From Blooio)').item.json.body.message.conversation.id }}",
"sessionIdType": "customKey",
"contextWindowLength": 200
},
"credentials": {
"postgres": {
"id": "asiZOOtRYUAuWsWd",
"name": "Neon"
}
},
"typeVersion": 1.3
},
{
"id": "9bcc2d84-61db-4785-9cb5-4d893d3c973e",
"name": "메시지 수신 (Blooio에서)",
"type": "n8n-nodes-base.webhook",
"position": [
-1440,
760
],
"webhookId": "0cf10724-2d78-4fc1-8a6a-7d4a96c2a786",
"parameters": {
"path": "tarot-ai",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "5d753997-b62d-4868-9acc-ad8cf52d6549",
"name": "HTTP 요청",
"type": "n8n-nodes-base.httpRequest",
"position": [
400,
400
],
"parameters": {
"url": "={{ $json.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "fe6cbb47-c6d0-4ae8-b2df-93270c96168a",
"name": "이미지가 있으면 다운로드",
"type": "n8n-nodes-base.if",
"position": [
-700,
760
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "551f9536-48c3-4757-a58b-35ee1ef81a80",
"operator": {
"type": "array",
"operation": "lengthGt",
"rightType": "number"
},
"leftValue": "={{ $('Receive Message (From Blooio)').item.json.body.message.attachments }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3ab1790b-91b5-4b42-b394-9daf596d9a01",
"name": "항목 루프",
"type": "n8n-nodes-base.splitInBatches",
"position": [
40,
380
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "edd17416-c915-40c7-9126-f0da875ec821",
"name": "코드",
"type": "n8n-nodes-base.code",
"position": [
-280,
380
],
"parameters": {
"jsCode": "let output = [];\n\nfor (const item of $input.first().json.body.message.attachments) {\n output.push({\n json: {\n url: item.url\n }\n });\n}\n\nreturn output;"
},
"typeVersion": 2
},
{
"id": "a49c6fc6-6017-4dae-8cb7-55e24f6f1db6",
"name": "AI 에이전트1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
600,
780
],
"parameters": {
"text": "={{ $json.data.toJsonString() }}",
"options": {
"systemMessage": "Summarize these messages and give the user a report that will be send in an iMessage. Do not say \"here's the summary\" or anything like that. Just respond with the summary by itself."
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "5832d268-d10d-41b1-82ea-08ef58f4bdb4",
"name": "집계",
"type": "n8n-nodes-base.aggregate",
"position": [
260,
780
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "d9a526a4-d839-48b0-9966-9e189c7d008b",
"name": "OpenAI 채팅 모델1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
620,
940
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "JrqIdyKAvwxNgaEM",
"name": "Tay - SLUG"
}
},
"typeVersion": 1.2
},
{
"id": "abaff486-0b39-4b83-b800-e4c453154f91",
"name": "자신에게 응답하지 않기",
"type": "n8n-nodes-base.if",
"position": [
-960,
760
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "cecd3adf-a9e5-41d3-87ae-4a9699bd641b",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.body.message.selfMessage }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "6d134ffb-638d-4aef-87d6-1ec2205d06c9",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
260
],
"parameters": {
"color": 4,
"width": 980,
"height": 400,
"content": "## Image downloader \n"
},
"typeVersion": 1
},
{
"id": "94f9f9bc-65d6-4725-923f-161dfeae142a",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1220,
-1460
],
"parameters": {
"color": 3,
"width": 680,
"height": 2140,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "7df3f7c9-9892-4c50-aa4b-4c16d65dd3a7",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
-660
],
"parameters": {
"width": 780,
"height": 1040,
"content": "## 🔮 Start Here: Mystic Tarot Bot Setup\n\nWelcome, seeker. Before your tarot bot can receive spiritual inquiries via iMessage and offer intuitive readings, follow these setup steps:\n\n---\n\n### ✅ Step 1: Get Your Blooio API Token\n1. Go to [https://blooio.com](https://blooio.com) \n2. Sign up for a **Dedicated** or **Enterprise** plan (required for attachments) \n3. Navigate to **Settings → API Keys** \n4. Generate an API token and **copy it**\n\n> 🔐 Paste it in the **Send Message** node under the `Authorization` header (Bearer Token).\n\n---\n\n### ✅ Step 2: Connect Blooio to n8n\nIn the **Webhook node**: \n- Use the path `/tarot-ai` or another route of your choice \n- Make sure your Blooio number is mapped to this endpoint in the Blooio dashboard\n\n---\n\n### ✅ Step 3: Test the Flow\nText your Blooio-connected number: \n- Send **\"Hi\"** or **\"Draw a card for me\"** to trigger onboarding \n- Or send a **photo of tarot cards** with a question\n\nThis will:\n- Trigger the webhook \n- Analyze the message/image with AI \n- Return a mystical tarot reading via iMessage\n\n---\n\n### 🃏 What You Can Send\n- ✨ A text-based question (e.g., \"What’s the energy around my career?\") \n- 🖼 A photo of drawn tarot cards \n- 🧘♀️ A simple \"Hi\" to receive onboarding guidance\n\nLet the mystery unfold, one message at a time... 🌙📩\n"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {
"Receive Message (From Blooio)": [
{
"json": {
"body": {
"type": "new-message",
"message": {
"readAt": null,
"sender": "+11111111111",
"sentAt": 1751234680604,
"content": "And a Diet Coke",
"delivered": true,
"messageId": "6409C11D-9C0B-404B-B2E3-052DA7C14D07",
"technology": "iMessage",
"attachments": [
{
"id": "E843680B-8F00-460C-A0AA-34B1B1DD9624",
"url": "https://bucket.blooio.com/custom-webhook-attachments/R3ZJISuC-t9CssQNM3i2J.jpeg",
"size": 979912,
"filename": "Pasta.jpeg",
"mimeType": "image/jpeg",
"expiresAt": "2025-07-29T22:04:42.432Z",
"expiresAtUnix": 1753826682432
}
],
"deliveredAt": null,
"selfMessage": false,
"conversation": {
"id": "iMessage;-;+11111111111",
"name": null,
"recipient": "+11111111111"
}
}
},
"query": {},
"params": {},
"headers": {
"host": "workflows.xx.com",
"cf-ray": "9578b8a804fa2f17-LAX",
"cdn-loop": "cloudflare; loops=1; subreqs=1",
"cf-ew-via": "15",
"cf-worker": "blooio.com",
"cf-visitor": "{\"scheme\":\"https\"}",
"cf-ipcountry": "US",
"content-type": "application/json",
"content-length": "622",
"accept-encoding": "gzip, br",
"x-forwarded-for": "162.158.91.171",
"cf-connecting-ip": "2a06:98c0:3600::103",
"x-forwarded-host": "workflows.xx.com",
"x-forwarded-proto": "https"
},
"webhookUrl": "https://workflows.xx.com/webhook/receive-event",
"executionMode": "production"
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "82c9ffad-b201-4c96-8cc3-31d3e21678f6",
"connections": {
"edd17416-c915-40c7-9126-f0da875ec821": {
"main": [
[
{
"node": "3ab1790b-91b5-4b42-b394-9daf596d9a01",
"type": "main",
"index": 0
}
]
]
},
"6d590245-abed-488a-bc31-cfe947a96237": {
"main": [
[
{
"node": "5832d268-d10d-41b1-82ea-08ef58f4bdb4",
"type": "main",
"index": 0
}
]
]
},
"a49c6fc6-6017-4dae-8cb7-55e24f6f1db6": {
"main": [
[
{
"node": "b79415f2-3c1c-453b-91bf-34139589eaef",
"type": "main",
"index": 0
}
]
]
},
"5832d268-d10d-41b1-82ea-08ef58f4bdb4": {
"main": [
[
{
"node": "a49c6fc6-6017-4dae-8cb7-55e24f6f1db6",
"type": "main",
"index": 0
}
]
]
},
"5d753997-b62d-4868-9acc-ad8cf52d6549": {
"main": [
[
{
"node": "3ab1790b-91b5-4b42-b394-9daf596d9a01",
"type": "main",
"index": 0
}
]
]
},
"3ab1790b-91b5-4b42-b394-9daf596d9a01": {
"main": [
[
{
"node": "6d590245-abed-488a-bc31-cfe947a96237",
"type": "main",
"index": 0
}
],
[
{
"node": "5d753997-b62d-4868-9acc-ad8cf52d6549",
"type": "main",
"index": 0
}
]
]
},
"f7f7b39c-676e-412f-b34c-9c2bec110c40": {
"ai_languageModel": [
[
{
"node": "6d590245-abed-488a-bc31-cfe947a96237",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"d9a526a4-d839-48b0-9966-9e189c7d008b": {
"ai_languageModel": [
[
{
"node": "a49c6fc6-6017-4dae-8cb7-55e24f6f1db6",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"77f9d1ad-7fcb-4df2-8757-5612b10c7aec": {
"ai_memory": [
[
{
"node": "6d590245-abed-488a-bc31-cfe947a96237",
"type": "ai_memory",
"index": 0
}
]
]
},
"abaff486-0b39-4b83-b800-e4c453154f91": {
"main": [
[
{
"node": "fe6cbb47-c6d0-4ae8-b2df-93270c96168a",
"type": "main",
"index": 0
}
]
]
},
"fe6cbb47-c6d0-4ae8-b2df-93270c96168a": {
"main": [
[
{
"node": "edd17416-c915-40c7-9126-f0da875ec821",
"type": "main",
"index": 0
}
],
[
{
"node": "6d590245-abed-488a-bc31-cfe947a96237",
"type": "main",
"index": 0
}
]
]
},
"9bcc2d84-61db-4785-9cb5-4d893d3c973e": {
"main": [
[
{
"node": "abaff486-0b39-4b83-b800-e4c453154f91",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 기타, AI 챗봇
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
iMessage 음식 사진 영양 분석(GPT-4 시각 및 기억 저장)
iMessage 식사 사진 영양 분석(GPT-4 시각적 및 기억 저장)
If
Code
Webhook
+
If
Code
Webhook
19 노드David Harvey
개인 생산성
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
반려동물 가게 4
🐶 펫 샵 예약 AI 대리자
If
Set
Code
+
If
Set
Code
187 노드Bruno Dias
인공지능
[템플릿] AI 반려동물 가게 v8
🐶 AI 펫 샵 어시스턴트 - GPT-4o, Google 캘린더 및 WhatsApp/Instagram/Facebook 통합
If
N8n
Set
+
If
N8n
Set
244 노드Amanda Benks
영업
AI 대리인 레스토랑 [템플릿]
🤖 WhatsApp, 인스타그램, 메신저의 AI 레스토랑 도우미
If
N8n
Set
+
If
N8n
Set
239 노드Amanda Benks
기타
배달 햄버거점 MVP
🤖 레스토랑과 배달 자동화의 AI 드라이브 WhatsApp 도우미
If
Set
Code
+
If
Set
Code
152 노드Bruno Dias