JinaAI 및 Gemini-GPT를 사용하여 기사를 Bluesky 스레드 게시물로 변환
고급
이것은AI Summarization, Multimodal AI분야의자동화 워크플로우로, 21개의 노드를 포함합니다.주로 If, Set, Code, Wait, JinaAi 등의 노드를 사용하며. JinaAI 및 Gemini/GPT를 사용한 기사를 Bluesky 스레드 게시물로 변환
사전 요구사항
- •Telegram Bot Token
- •OpenAI API Key
- •Google Gemini API Key
사용된 노드 (21)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "a5fd400c6ce3e6fce31bb31916a9cfa04e30e08115d80423a7e69507457fa5bb",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "3209ae09-810e-4b97-84fa-7a6a55c2bc51",
"name": "Gemini",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
672,
448
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "1j4LpZni96FuQhiY",
"name": "DevUratelier"
}
},
"typeVersion": 1
},
{
"id": "9ab04e86-e205-4771-ade5-854fa6f1aa07",
"name": "포스트 생성",
"type": "n8n-nodes-bluesky-enhanced.bluesky",
"position": [
2144,
128
],
"parameters": {
"postText": "={{ $json.data }}"
},
"credentials": {
"blueskyApi": {
"id": "wMptX8gmJ4XyHZcj",
"name": "khaisastudio"
}
},
"typeVersion": 2
},
{
"id": "388e2b67-29a7-449d-9adf-3efb4040d4f3",
"name": "Telegram 입력 트리거",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
0,
0
],
"webhookId": "0356d21b-18e9-4b55-88b5-e417446d7a7d",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "9Dco5JlAC7OO3zas",
"name": "Khaisa Develompen Bot"
}
},
"typeVersion": 1.2
},
{
"id": "ffd5f23b-9692-46f8-bbbf-3d636541a3c6",
"name": "RSS 피드 - AI 트렌드",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
0,
576
],
"parameters": {
"feedUrl": "https://www.aitrends.com/feed/",
"pollTimes": {
"item": [
{
"hour": 0
}
]
}
},
"typeVersion": 1
},
{
"id": "c83fb2d3-d1e9-4adf-b194-0c0fcb33c698",
"name": "RSS 피드 - Machine Learning Mastery",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
0,
384
],
"parameters": {
"feedUrl": "https://machinelearningmastery.com/blog/feed/",
"pollTimes": {
"item": [
{
"hour": 18
}
]
}
},
"typeVersion": 1
},
{
"id": "2ca69e66-0349-48c5-a631-148a1852c831",
"name": "RSS 피드 - Technology Review",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
0,
192
],
"parameters": {
"feedUrl": "https://www.technologyreview.com/feed/",
"pollTimes": {
"item": [
{
"hour": 22
}
]
}
},
"typeVersion": 1
},
{
"id": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
"name": "입력 URL 준비",
"type": "n8n-nodes-base.set",
"position": [
224,
288
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5f28758b-5440-44da-af94-0a3c7f53db32",
"name": "inputUrl",
"type": "string",
"value": "={{ $json.link || $json.message.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b168e57e-5af2-48dd-8442-8bf09b46a2fa",
"name": "웹 콘텐츠 추출 (JinaAI)",
"type": "n8n-nodes-base.jinaAi",
"position": [
448,
288
],
"parameters": {
"url": "={{ $json.inputUrl }}",
"options": {},
"requestOptions": {}
},
"credentials": {
"jinaAiApi": {
"id": "2WpVyhvkXlQ9CB1x",
"name": "AI for Motu"
}
},
"typeVersion": 1
},
{
"id": "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e",
"name": "콘텐츠를 스레드로 변환",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
672,
288
],
"parameters": {
"text": "=Title: {{ $json.title }}\nDescription: {{ $json.description }}\n\nContent: {{ $json.content }}",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=You are a social media strategist crafting high-performing Threads posts.\nYour mission: take the input content and turn it into a captivating, scroll-stopping Threads thread. Follow these principles:\n\n1. Hook Like a Pro\nOpen with a post that makes people stop scrolling—create intrigue without lying.\n\nUse curiosity-driven hooks such as:\n\n\"This changes everything about…\"\n\n\"Most people don’t realize that…\"\n\nA bold but truthful statement.\n\nPose questions or statements that leave a knowledge gap people want to fill.\n\nKeep it authentic—never trick your audience.\n\n2. Make It Flow\nBreak the content into short, clear, and connected posts.\n\nEvery post should push the reader to the next one.\n\nKeep language simple and conversational (unless technical accuracy is critical).\n\n3. Engage Without Overdoing It\nUse humor lightly—only if it fits naturally.\n\nAvoid emojis unless they genuinely enhance the point.\n\nKeep the core message intact while optimizing for retention and shareability.\n\n4. Exact Output Rules\nFormat:\nNever use a dash or em dash, consider substituting it with other punctuation like commas or rephrase the sentence to eliminate the interruption entirely\n\nWrap the entire thread in [THREADSTART] and [THREADEND].\n\nSeparate each post with -cutthread-.\nA post is maximum of 300 character\n\n\nExample:\n\n[THREADSTART]\nFirst post content here\n-cutthread-\nSecond post content here\n-cutthread-\nThird post content here\n-cutthread-\nlastpost must be:\n\"Read more on: {{ $('Prepare Input URL').item.json.inputUrl }}\n\nGet AI automation to make life easier on https://khaisa.studio\"\n[THREADEND]\n\n\n\nOutput only the transformed thread. No greetings, explanations, or meta-notes.\n"
}
]
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "a7846af1-bfd9-480d-bfcf-822b1b0c3954",
"name": "다음 포스트로 답장",
"type": "n8n-nodes-bluesky-enhanced.bluesky",
"position": [
2144,
320
],
"parameters": {
"cid": "={{ $('Store Post URI and CID').first(0, $runIndex).json.cid }}",
"uri": "={{ $('Store Post URI and CID').first(0, $runIndex).json.uri }}",
"operation": "reply",
"replyText": "={{ $json.data }}"
},
"credentials": {
"blueskyApi": {
"id": "wMptX8gmJ4XyHZcj",
"name": "khaisastudio"
}
},
"typeVersion": 2
},
{
"id": "d19235e2-1afb-432d-a67c-54e2be4b4196",
"name": "다음 답장 전 대기",
"type": "n8n-nodes-base.wait",
"position": [
2368,
320
],
"webhookId": "7eedbf8e-f9d5-4e57-9460-731adb238217",
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "f25c81e6-e51d-49c0-88b5-8a6b5c05c549",
"name": "다음 포스트 전 대기 (초기)",
"type": "n8n-nodes-base.wait",
"position": [
2368,
128
],
"webhookId": "7eedbf8e-f9d5-4e57-9460-731adb238217",
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "42f0a200-6ab7-4b14-a106-96d3cd5c53d6",
"name": "포스트 URI 및 CID 저장",
"type": "n8n-nodes-base.set",
"position": [
2592,
320
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "917b7937-db3d-4cc8-974d-d294e99f6b2f",
"name": "uri",
"type": "string",
"value": "={{ $json.uri }}"
},
{
"id": "94914b8d-8def-4bcf-8882-6423c878b347",
"name": "cid",
"type": "string",
"value": "={{ $json.cid }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "daa3032f-45c7-425f-87b8-5e9f813152c2",
"name": "첫 번째 포스트 조건 확인",
"type": "n8n-nodes-base.if",
"position": [
1920,
224
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "233a4b45-8983-42a1-9c18-5922cebc69ee",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $runIndex }}",
"rightValue": 1
}
]
}
},
"executeOnce": false,
"typeVersion": 2.2,
"alwaysOutputData": false
},
{
"id": "696904d2-25f1-4ae2-9a30-c97ee39109dd",
"name": "스레드를 포스트로 분할",
"type": "n8n-nodes-base.splitOut",
"position": [
1472,
288
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "a291587b-eb4d-43e6-b167-37249a0d9fc1",
"name": "스레드 텍스트 정리",
"type": "n8n-nodes-base.code",
"position": [
1248,
288
],
"parameters": {
"jsCode": "// Mengambil teks dari input menggunakan sintaks yang Anda tentukan.\nconst fullText = $input.first().json.data\n\n// Regex untuk mengekstrak blok thread.\nconst regex = /\\[THREADSTART\\]([\\s\\S]*?)\\[THREADEND\\]/;\nconst match = fullText.match(regex);\n\n// Variabel untuk menampung hasil akhir.\nlet finalArray = [];\n\n// Jika blok thread ditemukan, proses isinya.\nif (match && match[1]) {\n const contentBlock = match[1];\n\n // Pisahkan string menjadi array, lalu bersihkan setiap elemen.\n finalArray = contentBlock\n .split('-cutthread-')\n .map(thread => thread.trim())\n .filter(thread => thread.length > 0);\n}\n\n// Kembalikan satu item baru dengan format yang Anda inginkan.\n// Stuktur { json: { ... } } adalah format standar n8n untuk item.\nreturn [{\n json: {\n data: finalArray\n }\n}];"
},
"typeVersion": 2
},
{
"id": "7bb36ded-ac68-4b04-803d-de3606a01bd1",
"name": "스레드 데이터 준비",
"type": "n8n-nodes-base.set",
"position": [
1024,
288
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4b70d452-77d7-4880-86a1-efa589defdec",
"name": "data",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ccfde7ea-492e-4e60-8512-99a9975d08a2",
"name": "스레드 포스트 순환",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1696,
288
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "e45bae01-92bb-492d-b57d-5cd946bb39b3",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
608
],
"parameters": {
"width": 528,
"height": 208,
"content": "## 📌 How to Get Credentials\n\n- **Telegram Bot** → Create a bot via [@BotFather](https://t.me/botfather), copy the *API Token*. \n- **JinaAI** → Sign up at [jina.ai](https://jina.ai), get your *API Key* from the dashboard. \n- **Google Gemini** → Enable the API at [Google AI Studio](https://makersuite.google.com/), generate an *API Key*. \n- **Bluesky** → Log in at [Bluesky](https://bsky.app), create an *App Password* in settings. \n"
},
"typeVersion": 1
},
{
"id": "ce910a82-f680-4712-be9b-430dfffafb7b",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
608
],
"parameters": {
"width": 528,
"height": 208,
"content": "## Error Handling\n\n- If JinaAI fails → check URL is valid & accessible. \n- If Gemini times out → reduce prompt size or simplify input. \n- If Bluesky rejects post → check App Password validity or rate limits. \n- Always test with a small sample before running full automation. \n"
},
"typeVersion": 1
},
{
"id": "d7bb0bac-1edc-4e23-aa24-0bd58624aa43",
"name": "Alt",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
816,
448
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "4CbQgQZVTRffRYMp",
"name": "Khaisa: aiformotu"
}
},
"typeVersion": 1.2
}
],
"pinData": {},
"connections": {
"3209ae09-810e-4b97-84fa-7a6a55c2bc51": {
"ai_languageModel": [
[
{
"node": "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"9ab04e86-e205-4771-ade5-854fa6f1aa07": {
"main": [
[
{
"node": "f25c81e6-e51d-49c0-88b5-8a6b5c05c549",
"type": "main",
"index": 0
}
]
]
},
"a291587b-eb4d-43e6-b167-37249a0d9fc1": {
"main": [
[
{
"node": "696904d2-25f1-4ae2-9a30-c97ee39109dd",
"type": "main",
"index": 0
}
]
]
},
"64fe0144-f553-442a-9c74-e61fcb0e2a0c": {
"main": [
[
{
"node": "b168e57e-5af2-48dd-8442-8bf09b46a2fa",
"type": "main",
"index": 0
}
]
]
},
"7bb36ded-ac68-4b04-803d-de3606a01bd1": {
"main": [
[
{
"node": "a291587b-eb4d-43e6-b167-37249a0d9fc1",
"type": "main",
"index": 0
}
]
]
},
"ffd5f23b-9692-46f8-bbbf-3d636541a3c6": {
"main": [
[
{
"node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
"type": "main",
"index": 0
}
]
]
},
"a7846af1-bfd9-480d-bfcf-822b1b0c3954": {
"main": [
[
{
"node": "d19235e2-1afb-432d-a67c-54e2be4b4196",
"type": "main",
"index": 0
}
]
]
},
"42f0a200-6ab7-4b14-a106-96d3cd5c53d6": {
"main": [
[
{
"node": "ccfde7ea-492e-4e60-8512-99a9975d08a2",
"type": "main",
"index": 0
}
]
]
},
"388e2b67-29a7-449d-9adf-3efb4040d4f3": {
"main": [
[
{
"node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
"type": "main",
"index": 0
}
]
]
},
"d19235e2-1afb-432d-a67c-54e2be4b4196": {
"main": [
[
{
"node": "42f0a200-6ab7-4b14-a106-96d3cd5c53d6",
"type": "main",
"index": 0
}
]
]
},
"696904d2-25f1-4ae2-9a30-c97ee39109dd": {
"main": [
[
{
"node": "ccfde7ea-492e-4e60-8512-99a9975d08a2",
"type": "main",
"index": 0
}
]
]
},
"ccfde7ea-492e-4e60-8512-99a9975d08a2": {
"main": [
[],
[
{
"node": "daa3032f-45c7-425f-87b8-5e9f813152c2",
"type": "main",
"index": 0
}
]
]
},
"daa3032f-45c7-425f-87b8-5e9f813152c2": {
"main": [
[
{
"node": "9ab04e86-e205-4771-ade5-854fa6f1aa07",
"type": "main",
"index": 0
}
],
[
{
"node": "a7846af1-bfd9-480d-bfcf-822b1b0c3954",
"type": "main",
"index": 0
}
]
]
},
"d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e": {
"main": [
[
{
"node": "7bb36ded-ac68-4b04-803d-de3606a01bd1",
"type": "main",
"index": 0
}
]
]
},
"b168e57e-5af2-48dd-8442-8bf09b46a2fa": {
"main": [
[
{
"node": "d3a5a132-8ae6-4c8c-bb6c-f010b7ed2b7e",
"type": "main",
"index": 0
}
]
]
},
"2ca69e66-0349-48c5-a631-148a1852c831": {
"main": [
[
{
"node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
"type": "main",
"index": 0
}
]
]
},
"f25c81e6-e51d-49c0-88b5-8a6b5c05c549": {
"main": [
[
{
"node": "42f0a200-6ab7-4b14-a106-96d3cd5c53d6",
"type": "main",
"index": 0
}
]
]
},
"c83fb2d3-d1e9-4adf-b194-0c0fcb33c698": {
"main": [
[
{
"node": "64fe0144-f553-442a-9c74-e61fcb0e2a0c",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - AI 요약, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
WordPress + 소셜 미디어
GPT/Gemini 및 WordPress 기반 자동화된 블로그 생성 및 다중 플랫폼 게시
If
Set
Switch
+
If
Set
Switch
44 노드Khairul Muhtadin
콘텐츠 제작
Rag를 사용한 작업 자동 재게시
RAG, Jina AI, OpenAI에서 WordPress로의 자동 채용 공고 추출 및 게시
If
Set
Code
+
If
Set
Code
56 노드Khairul Muhtadin
인사
GPT-4와 Airtable을 사용한 작업 기록 및 백업 워크플로 자동화
GPT-4와 Airtable로 워크플로우 자동 기록 및 백업
If
N8n
Set
+
If
N8n
Set
38 노드Guillaume Duvernay
AI 요약
Google Maps, GPT-4, WhatsApp을 사용한 비즈니스 파트너 확장 자동화
Google Maps, GPT-4, WhatsApp을 사용한 비즈니스 파트너 확장 자동화
If
Set
Code
+
If
Set
Code
64 노드Khairul Muhtadin
AI 챗봇
자동 채용 공고 추출 및 게시 템플릿
자동 채용 공고 추출 및 게시 템플릿
If
Set
Code
+
If
Set
Code
53 노드Khairul Muhtadin
인사
매일 WhatsApp 그룹 지능형 분석: GPT-4.1 분석 및 음성 메시지 변환
매일 WhatsApp 그룹 지능 분석: GPT-4.1 분석 및 음성 메시지 트랜스크립션
If
Set
Code
+
If
Set
Code
52 노드Daniel Lianes
기타