8
n8n 한국어amn8n.com

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
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수21
카테고리2
노드 유형14
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34