使用 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": "Create a post",
"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 Input Trigger",
"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 Feed - AI Trends",
"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 Feed - 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 Feed - 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": "Prepare Input 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": "Extract Web Content (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": "Transform Content to Thread",
"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": "Reply with Next Post",
"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": "Wait Before Next Reply",
"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": "Wait Before Next Post (Initial)",
"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": "Store Post URI and 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": "Check First Post Condition",
"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": "Split Thread into Posts",
"type": "n8n-nodes-base.splitOut",
"position": [
1472,
288
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "a291587b-eb4d-43e6-b167-37249a0d9fc1",
"name": "Clean Thread Text",
"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": "Prepare Thread Data",
"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": "Loop Through Thread Posts",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1696,
288
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "e45bae01-92bb-492d-b57d-5cd946bb39b3",
"name": "Sticky Note",
"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": "Sticky Note1",
"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
杂项