This workflow follows the Error Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"updatedAt": "2026-04-02T15:15:21.611Z",
"createdAt": "2026-04-02T15:00:48.965Z",
"id": "rNLTPrZvDUKi2UBP",
"name": "GNCA AI News Pipeline",
"description": null,
"active": true,
"isArchived": false,
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 12
}
]
}
},
"id": "sched-12h",
"name": "Her 12 Saatte",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {},
"id": "manual",
"name": "Manuel Test",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
200
]
},
{
"parameters": {
"url": "https://techcrunch.com/category/artificial-intelligence/feed/",
"options": {}
},
"id": "rss1",
"name": "RSS TechCrunch",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
260,
-100
]
},
{
"parameters": {
"url": "https://www.theverge.com/rss/ai-artificial-intelligence/index.xml",
"options": {}
},
"id": "rss2",
"name": "RSS Verge",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
260,
100
]
},
{
"parameters": {
"url": "https://feeds.feedburner.com/venturebeat/SZYF",
"options": {}
},
"id": "rss3",
"name": "RSS VBeat",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
260,
300
]
},
{
"parameters": {
"mode": "append"
},
"id": "merge",
"name": "Birle\u015ftir",
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
520,
100
]
},
{
"parameters": {
"jsCode": "const allItems = $input.all();\nallItems.sort((a, b) => {\n const dateA = new Date(a.json.pubDate || a.json.isoDate || a.json.date || 0);\n const dateB = new Date(b.json.pubDate || b.json.isoDate || b.json.date || 0);\n return dateB - dateA;\n});\nconst top5 = allItems.slice(0, 5);\nconst newsSummary = top5.map((item, i) => {\n const title = item.json.title || 'No title';\n const desc = (item.json.contentSnippet || item.json.content || item.json.description || '').replace(/<[^>]*>/g, '').substring(0, 300);\n const link = item.json.link || '';\n return (i+1) + '. ' + title + '\\n\u00d6zet: ' + desc + '\\nLink: ' + link;\n}).join('\\n\\n');\n\nconst openaiBody = {\n model: \"gpt-4o-mini\", temperature: 0.7, max_tokens: 2000,\n messages: [\n {role: \"system\", content: \"Sen GNCA (Gaziantep Enerji & Otomasyon) \u015firketinin sosyal medya uzman\u0131s\u0131n. T\u00fcrk\u00e7e, profesyonel ama samimi Instagram postlar\u0131 \u00fcretirsin.\"},\n {role: \"user\", content: \"A\u015fa\u011f\u0131daki AI haberlerinden Instagram postu olu\u015ftur:\\n\\n\" + newsSummary + \"\\n\\nKURALLAR: 1) Ba\u015fl\u0131k: emoji max 60 karakter 2) Caption: T\u00fcrk\u00e7e \u00f6zet max 1500 karakter 3) Her habere 2-3 c\u00fcmle 4) Hashtag: #AI #YapayZeka #Teknoloji #GNCA #Otomasyon +5 5) imagePrompt: DALL-E \u0130ngilizce prompt 6) CTA\\n\\nJSON: {\\\"title\\\",\\\"caption\\\",\\\"imagePrompt\\\",\\\"hashtags\\\"}\\nSadece JSON d\u00f6nd\u00fcr.\"}\n ]\n};\nreturn [{ json: { newsCount: top5.length, newsSummary, openaiBody } }];"
},
"id": "sort",
"name": "S\u0131rala & Haz\u0131rla",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
760,
100
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.openai.com/v1/chat/completions",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_OPENAI_API_KEY"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.openaiBody) }}",
"options": {
"timeout": 60000
}
},
"id": "openai",
"name": "OpenAI",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1000,
100
]
},
{
"parameters": {
"jsCode": "const response = $input.first().json;\nlet rawText = '';\nif (response.choices && response.choices[0]) {\n rawText = response.choices[0].message.content;\n} else { throw new Error('OpenAI yanit vermedi'); }\n\n// Remove markdown code fences robustly\nlet cleaned = rawText;\nif (cleaned.indexOf('```') !== -1) {\n const firstBrace = cleaned.indexOf('{');\n const lastBrace = cleaned.lastIndexOf('}');\n if (firstBrace !== -1 && lastBrace !== -1) {\n cleaned = cleaned.substring(firstBrace, lastBrace + 1);\n }\n}\n\nlet content;\ntry {\n content = JSON.parse(cleaned);\n} catch(e) {\n throw new Error('JSON parse hatasi. Temizlenen metin: ' + cleaned.substring(0, 300));\n}\n\nif (!content.title || !content.caption) throw new Error('title/caption eksik');\n\nconst dalleBody = {\n model: \"dall-e-3\",\n prompt: (content.imagePrompt || \"Modern AI technology\") + \". Clean modern professional Instagram square post. No text overlay.\",\n n: 1, size: \"1024x1024\", quality: \"standard\"\n};\n\nreturn [{ json: {\n title: content.title,\n caption: content.caption,\n imagePrompt: content.imagePrompt || 'Modern AI technology social media post',\n hashtags: content.hashtags || '#AI #YapayZeka #GNCA',\n newsSummary: $('S\u0131rala & Haz\u0131rla').first().json.newsSummary,\n newsCount: $('S\u0131rala & Haz\u0131rla').first().json.newsCount,\n generatedAt: new Date().toISOString(),\n dalleBody: dalleBody\n} }];"
},
"id": "parse",
"name": "Parse Et",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1240,
100
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.openai.com/v1/images/generations",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_OPENAI_API_KEY"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.dalleBody) }}",
"options": {
"timeout": 120000
}
},
"id": "dalle",
"name": "DALL-E",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1480,
100
]
},
{
"parameters": {
"jsCode": "const dalleRes = $input.first().json;\nconst parsed = $('Parse Et').first().json;\nlet imageUrl = '';\nif (dalleRes.data && dalleRes.data[0]) imageUrl = dalleRes.data[0].url;\n\nconst pkg = {\n title: parsed.title, caption: parsed.caption, imagePrompt: parsed.imagePrompt,\n imageUrl, hashtags: parsed.hashtags, newsSummary: parsed.newsSummary,\n newsCount: parsed.newsCount, generatedAt: parsed.generatedAt, status: 'pending'\n};\n\nawait this.helpers.httpRequest({\n method: 'PUT',\n url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(pkg)\n});\n\nreturn [{ json: pkg }];"
},
"id": "save",
"name": "Kaydet",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1720,
100
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "=\ud83e\udd16 *GNCA AI Haber B\u00fclteni*\n\ud83d\udcc5 {{ $now.format('dd.MM.yyyy HH:mm') }}\n\n\ud83d\udccc *{{ $json.title }}*\n\n{{ $json.caption.substring(0, 800) }}\n\n---\n\ud83d\uddbc\ufe0f G\u00f6rsel: {{ $json.imageUrl ? '\u2705 \u00dcretildi' : '\u274c Yok' }}\n\n\u2705 /onayla \u2192 Yay\u0131nla\n\u274c /reddet \u2192 Reddet\n\ud83d\udcca /durum \u2192 Durum",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-preview",
"name": "Telegram \u00d6nizleme",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1960,
100
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "seconds",
"secondsInterval": 30
}
]
}
},
"id": "sched-30s",
"name": "Telegram Poll (30s)",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
600
]
},
{
"parameters": {
"url": "https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/getUpdates?timeout=5&limit=10&allowed_updates=[\"message\"]",
"options": {
"timeout": 10000
}
},
"id": "tg-poll",
"name": "Telegram API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
260,
600
]
},
{
"parameters": {
"jsCode": "const result = $input.first().json;\n\n// Read offset from blob\nlet offsetData;\ntry {\n offsetData = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec3-5fb1-7729-93fd-f2e5c4018268',\n headers: { 'Accept': 'application/json' }\n });\n} catch(e) { offsetData = { offset: 0 }; }\n\nconst currentOffset = offsetData.offset || 0;\n\nif (!result.ok || !result.result || result.result.length === 0) return [];\n\nconst messages = [];\nlet maxId = currentOffset;\n\nfor (const update of result.result) {\n // Skip already-processed updates\n if (update.update_id < currentOffset) continue;\n if (update.update_id >= maxId) maxId = update.update_id + 1;\n \n const msg = update.message;\n if (!msg || String(msg.chat.id) !== '2099378542') continue;\n const text = (msg.text || '').trim().toLowerCase();\n if (text === '/onayla' || text === 'onayla') messages.push({ json: { action: 'approve' } });\n else if (text === '/reddet' || text === 'reddet') messages.push({ json: { action: 'reject' } });\n else if (text === '/durum' || text === 'durum') messages.push({ json: { action: 'status' } });\n}\n\n// Save new offset to blob\nif (maxId > currentOffset) {\n await this.helpers.httpRequest({\n method: 'PUT', url: 'https://jsonblob.com/api/jsonBlob/019d4ec3-5fb1-7729-93fd-f2e5c4018268',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ offset: maxId })\n });\n \n // Confirm to Telegram \u2014 discard processed messages\n await this.helpers.httpRequest({\n method: 'GET',\n url: 'https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/getUpdates?offset=' + maxId + '&limit=0'\n });\n}\n\nreturn messages.length > 0 ? messages : [];"
},
"id": "tg-parse",
"name": "Komut Ayr\u0131\u015ft\u0131r",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
520,
600
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "approve",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "Onayla"
},
{
"conditions": {
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "reject",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "Reddet"
},
{
"conditions": {
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "status",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "Durum"
}
]
}
},
"id": "switch",
"name": "Aksiyon",
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
760,
600
]
},
{
"parameters": {
"jsCode": "const content = await this.helpers.httpRequest({\n method: 'GET',\n url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n});\n\nif (!content || content.status === 'empty') throw new Error('\u0130\u00e7erik bulunamad\u0131! \u00d6nce i\u00e7erik \u00fcretin.');\nif (content.status === 'published') throw new Error('Zaten yay\u0131nland\u0131!');\nif (content.status === 'rejected') throw new Error('Zaten reddedildi!');\nif (!content.imageUrl) throw new Error('G\u00f6rsel URL yok!');\n\nreturn [{ json: content }];"
},
"id": "load",
"name": "\u0130\u00e7erik Y\u00fckle",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
500
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "\u23f3 Instagram'a y\u00fckleniyor...",
"additionalFields": {}
},
"id": "tg-loading",
"name": "Y\u00fckleniyor",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1000,
380
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://graph.facebook.com/v19.0/17841436005649126/media",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ image_url: $json.imageUrl, caption: $json.caption, access_token: \"YOUR_INSTAGRAM_ACCESS_TOKEN\" }) }}",
"options": {
"timeout": 30000
}
},
"id": "ig-create",
"name": "IG Container",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1240,
500
]
},
{
"parameters": {
"amount": 15,
"unit": "seconds"
},
"id": "wait-ig",
"name": "15s Bekle",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1480,
500
]
},
{
"parameters": {
"method": "POST",
"url": "https://graph.facebook.com/v19.0/17841436005649126/media_publish",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ creation_id: $('IG Container').first().json.id, access_token: \"YOUR_INSTAGRAM_ACCESS_TOKEN\" }) }}",
"options": {
"timeout": 30000
}
},
"id": "ig-pub",
"name": "IG Yay\u0131nla",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1720,
500
]
},
{
"parameters": {
"jsCode": "const content = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n});\ncontent.status = 'published';\ncontent.publishedAt = new Date().toISOString();\ncontent.postId = $input.first().json.id || 'unknown';\nawait this.helpers.httpRequest({\n method: 'PUT', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(content)\n});\nreturn [{ json: { success: true, postId: content.postId, title: content.title } }];"
},
"id": "mark-pub",
"name": "Yay\u0131n Kayd\u0131",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1960,
500
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "=\u2705 *Yay\u0131nland\u0131!*\n\ud83c\udf89 Post ID: {{ $json.postId }}\n\ud83d\udccc {{ $json.title }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-ok",
"name": "Ba\u015far\u0131",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
2200,
500
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "try {\n const content = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n });\n if (content && content.status !== 'empty') {\n content.status = 'rejected';\n content.rejectedAt = new Date().toISOString();\n await this.helpers.httpRequest({\n method: 'PUT', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(content)\n });\n }\n} catch(e) {}\nreturn [{ json: { rejected: true } }];"
},
"id": "mark-rej",
"name": "Red Kayd\u0131",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
700
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "\u274c *Reddedildi.* Yeni i\u00e7erik 12 saat sonra veya manuel \u00fcretilir.",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-rej",
"name": "Red Bildir",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1240,
700
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "let s = 'Hen\u00fcz i\u00e7erik \u00fcretilmemi\u015f.';\ntry {\n const c = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n });\n if (c && c.status !== 'empty') {\n const m = {'pending':'\u23f3 Onay bekliyor','published':'\u2705 Yay\u0131nland\u0131','rejected':'\u274c Reddedildi'};\n s = '\ud83d\udcca *Durum*\\n\ud83d\udccc ' + (c.title||'?') + '\\n\ud83d\udd04 ' + (m[c.status]||c.status) + '\\n\ud83d\udcc5 ' + (c.generatedAt||'?');\n }\n} catch(e) {}\nreturn [{ json: { statusText: s } }];"
},
"id": "check-st",
"name": "Durum Kontrol",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
880
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "={{ $json.statusText }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-st",
"name": "Durum Bildir",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1240,
880
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"id": "err",
"name": "Hata Yakala",
"type": "n8n-nodes-base.errorTrigger",
"typeVersion": 1,
"position": [
0,
1100
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "=\u26a0\ufe0f *Hata!*\n{{ $json.execution?.error?.message || 'Bilinmeyen hata' }}\nn8n: http://localhost:5678",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-err",
"name": "Hata Bildir",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
260,
1100
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Her 12 Saatte": {
"main": [
[
{
"node": "RSS TechCrunch",
"type": "main",
"index": 0
},
{
"node": "RSS Verge",
"type": "main",
"index": 0
},
{
"node": "RSS VBeat",
"type": "main",
"index": 0
}
]
]
},
"Manuel Test": {
"main": [
[
{
"node": "RSS TechCrunch",
"type": "main",
"index": 0
},
{
"node": "RSS Verge",
"type": "main",
"index": 0
},
{
"node": "RSS VBeat",
"type": "main",
"index": 0
}
]
]
},
"RSS TechCrunch": {
"main": [
[
{
"node": "Birle\u015ftir",
"type": "main",
"index": 0
}
]
]
},
"RSS Verge": {
"main": [
[
{
"node": "Birle\u015ftir",
"type": "main",
"index": 1
}
]
]
},
"RSS VBeat": {
"main": [
[
{
"node": "Birle\u015ftir",
"type": "main",
"index": 2
}
]
]
},
"Birle\u015ftir": {
"main": [
[
{
"node": "S\u0131rala & Haz\u0131rla",
"type": "main",
"index": 0
}
]
]
},
"S\u0131rala & Haz\u0131rla": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"OpenAI": {
"main": [
[
{
"node": "Parse Et",
"type": "main",
"index": 0
}
]
]
},
"Parse Et": {
"main": [
[
{
"node": "DALL-E",
"type": "main",
"index": 0
}
]
]
},
"DALL-E": {
"main": [
[
{
"node": "Kaydet",
"type": "main",
"index": 0
}
]
]
},
"Kaydet": {
"main": [
[
{
"node": "Telegram \u00d6nizleme",
"type": "main",
"index": 0
}
]
]
},
"Telegram Poll (30s)": {
"main": [
[
{
"node": "Telegram API",
"type": "main",
"index": 0
}
]
]
},
"Telegram API": {
"main": [
[
{
"node": "Komut Ayr\u0131\u015ft\u0131r",
"type": "main",
"index": 0
}
]
]
},
"Komut Ayr\u0131\u015ft\u0131r": {
"main": [
[
{
"node": "Aksiyon",
"type": "main",
"index": 0
}
]
]
},
"Aksiyon": {
"main": [
[
{
"node": "\u0130\u00e7erik Y\u00fckle",
"type": "main",
"index": 0
},
{
"node": "Y\u00fckleniyor",
"type": "main",
"index": 0
}
],
[
{
"node": "Red Kayd\u0131",
"type": "main",
"index": 0
}
],
[
{
"node": "Durum Kontrol",
"type": "main",
"index": 0
}
]
]
},
"\u0130\u00e7erik Y\u00fckle": {
"main": [
[
{
"node": "IG Container",
"type": "main",
"index": 0
}
]
]
},
"IG Container": {
"main": [
[
{
"node": "15s Bekle",
"type": "main",
"index": 0
}
]
]
},
"15s Bekle": {
"main": [
[
{
"node": "IG Yay\u0131nla",
"type": "main",
"index": 0
}
]
]
},
"IG Yay\u0131nla": {
"main": [
[
{
"node": "Yay\u0131n Kayd\u0131",
"type": "main",
"index": 0
}
]
]
},
"Yay\u0131n Kayd\u0131": {
"main": [
[
{
"node": "Ba\u015far\u0131",
"type": "main",
"index": 0
}
]
]
},
"Red Kayd\u0131": {
"main": [
[
{
"node": "Red Bildir",
"type": "main",
"index": 0
}
]
]
},
"Durum Kontrol": {
"main": [
[
{
"node": "Durum Bildir",
"type": "main",
"index": 0
}
]
]
},
"Hata Yakala": {
"main": [
[
{
"node": "Hata Bildir",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": false
},
"staticData": {
"node:Her 12 Saatte": {
"recurrenceRules": []
},
"node:Telegram Poll (30s)": {
"recurrenceRules": []
},
"global": {
"tgOffset": "294347649"
}
},
"meta": null,
"versionId": "8d6456cc-a38e-412a-990c-fe0e47b12670",
"activeVersionId": "8d6456cc-a38e-412a-990c-fe0e47b12670",
"versionCounter": 41,
"triggerCount": 2,
"shared": [
{
"updatedAt": "2026-04-02T15:00:48.966Z",
"createdAt": "2026-04-02T15:00:48.966Z",
"role": "workflow:owner",
"workflowId": "rNLTPrZvDUKi2UBP",
"projectId": "OaRgGzcKoxgAmXgy",
"project": {
"updatedAt": "2026-04-02T14:01:51.860Z",
"createdAt": "2026-04-02T14:00:22.118Z",
"id": "OaRgGzcKoxgAmXgy",
"name": "Osman Baran Tekin <tekinosmanbaran@gmail.com>",
"type": "personal",
"icon": null,
"description": null,
"creatorId": "6b30529f-4650-4270-99e7-95f467bb8d04"
}
}
],
"tags": [],
"activeVersion": {
"updatedAt": "2026-04-02T15:15:21.611Z",
"createdAt": "2026-04-02T15:15:21.611Z",
"versionId": "8d6456cc-a38e-412a-990c-fe0e47b12670",
"workflowId": "rNLTPrZvDUKi2UBP",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 12
}
]
}
},
"id": "sched-12h",
"name": "Her 12 Saatte",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
0
]
},
{
"parameters": {},
"id": "manual",
"name": "Manuel Test",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
200
]
},
{
"parameters": {
"url": "https://techcrunch.com/category/artificial-intelligence/feed/",
"options": {}
},
"id": "rss1",
"name": "RSS TechCrunch",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
260,
-100
]
},
{
"parameters": {
"url": "https://www.theverge.com/rss/ai-artificial-intelligence/index.xml",
"options": {}
},
"id": "rss2",
"name": "RSS Verge",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
260,
100
]
},
{
"parameters": {
"url": "https://feeds.feedburner.com/venturebeat/SZYF",
"options": {}
},
"id": "rss3",
"name": "RSS VBeat",
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.1,
"position": [
260,
300
]
},
{
"parameters": {
"mode": "append"
},
"id": "merge",
"name": "Birle\u015ftir",
"type": "n8n-nodes-base.merge",
"typeVersion": 3,
"position": [
520,
100
]
},
{
"parameters": {
"jsCode": "const allItems = $input.all();\nallItems.sort((a, b) => {\n const dateA = new Date(a.json.pubDate || a.json.isoDate || a.json.date || 0);\n const dateB = new Date(b.json.pubDate || b.json.isoDate || b.json.date || 0);\n return dateB - dateA;\n});\nconst top5 = allItems.slice(0, 5);\nconst newsSummary = top5.map((item, i) => {\n const title = item.json.title || 'No title';\n const desc = (item.json.contentSnippet || item.json.content || item.json.description || '').replace(/<[^>]*>/g, '').substring(0, 300);\n const link = item.json.link || '';\n return (i+1) + '. ' + title + '\\n\u00d6zet: ' + desc + '\\nLink: ' + link;\n}).join('\\n\\n');\n\nconst openaiBody = {\n model: \"gpt-4o-mini\", temperature: 0.7, max_tokens: 2000,\n messages: [\n {role: \"system\", content: \"Sen GNCA (Gaziantep Enerji & Otomasyon) \u015firketinin sosyal medya uzman\u0131s\u0131n. T\u00fcrk\u00e7e, profesyonel ama samimi Instagram postlar\u0131 \u00fcretirsin.\"},\n {role: \"user\", content: \"A\u015fa\u011f\u0131daki AI haberlerinden Instagram postu olu\u015ftur:\\n\\n\" + newsSummary + \"\\n\\nKURALLAR: 1) Ba\u015fl\u0131k: emoji max 60 karakter 2) Caption: T\u00fcrk\u00e7e \u00f6zet max 1500 karakter 3) Her habere 2-3 c\u00fcmle 4) Hashtag: #AI #YapayZeka #Teknoloji #GNCA #Otomasyon +5 5) imagePrompt: DALL-E \u0130ngilizce prompt 6) CTA\\n\\nJSON: {\\\"title\\\",\\\"caption\\\",\\\"imagePrompt\\\",\\\"hashtags\\\"}\\nSadece JSON d\u00f6nd\u00fcr.\"}\n ]\n};\nreturn [{ json: { newsCount: top5.length, newsSummary, openaiBody } }];"
},
"id": "sort",
"name": "S\u0131rala & Haz\u0131rla",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
760,
100
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.openai.com/v1/chat/completions",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_OPENAI_API_KEY"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.openaiBody) }}",
"options": {
"timeout": 60000
}
},
"id": "openai",
"name": "OpenAI",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1000,
100
]
},
{
"parameters": {
"jsCode": "const response = $input.first().json;\nlet rawText = '';\nif (response.choices && response.choices[0]) {\n rawText = response.choices[0].message.content;\n} else { throw new Error('OpenAI yanit vermedi'); }\n\n// Remove markdown code fences robustly\nlet cleaned = rawText;\nif (cleaned.indexOf('```') !== -1) {\n const firstBrace = cleaned.indexOf('{');\n const lastBrace = cleaned.lastIndexOf('}');\n if (firstBrace !== -1 && lastBrace !== -1) {\n cleaned = cleaned.substring(firstBrace, lastBrace + 1);\n }\n}\n\nlet content;\ntry {\n content = JSON.parse(cleaned);\n} catch(e) {\n throw new Error('JSON parse hatasi. Temizlenen metin: ' + cleaned.substring(0, 300));\n}\n\nif (!content.title || !content.caption) throw new Error('title/caption eksik');\n\nconst dalleBody = {\n model: \"dall-e-3\",\n prompt: (content.imagePrompt || \"Modern AI technology\") + \". Clean modern professional Instagram square post. No text overlay.\",\n n: 1, size: \"1024x1024\", quality: \"standard\"\n};\n\nreturn [{ json: {\n title: content.title,\n caption: content.caption,\n imagePrompt: content.imagePrompt || 'Modern AI technology social media post',\n hashtags: content.hashtags || '#AI #YapayZeka #GNCA',\n newsSummary: $('S\u0131rala & Haz\u0131rla').first().json.newsSummary,\n newsCount: $('S\u0131rala & Haz\u0131rla').first().json.newsCount,\n generatedAt: new Date().toISOString(),\n dalleBody: dalleBody\n} }];"
},
"id": "parse",
"name": "Parse Et",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1240,
100
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.openai.com/v1/images/generations",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer YOUR_OPENAI_API_KEY"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json.dalleBody) }}",
"options": {
"timeout": 120000
}
},
"id": "dalle",
"name": "DALL-E",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1480,
100
]
},
{
"parameters": {
"jsCode": "const dalleRes = $input.first().json;\nconst parsed = $('Parse Et').first().json;\nlet imageUrl = '';\nif (dalleRes.data && dalleRes.data[0]) imageUrl = dalleRes.data[0].url;\n\nconst pkg = {\n title: parsed.title, caption: parsed.caption, imagePrompt: parsed.imagePrompt,\n imageUrl, hashtags: parsed.hashtags, newsSummary: parsed.newsSummary,\n newsCount: parsed.newsCount, generatedAt: parsed.generatedAt, status: 'pending'\n};\n\nawait this.helpers.httpRequest({\n method: 'PUT',\n url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(pkg)\n});\n\nreturn [{ json: pkg }];"
},
"id": "save",
"name": "Kaydet",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1720,
100
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "=\ud83e\udd16 *GNCA AI Haber B\u00fclteni*\n\ud83d\udcc5 {{ $now.format('dd.MM.yyyy HH:mm') }}\n\n\ud83d\udccc *{{ $json.title }}*\n\n{{ $json.caption.substring(0, 800) }}\n\n---\n\ud83d\uddbc\ufe0f G\u00f6rsel: {{ $json.imageUrl ? '\u2705 \u00dcretildi' : '\u274c Yok' }}\n\n\u2705 /onayla \u2192 Yay\u0131nla\n\u274c /reddet \u2192 Reddet\n\ud83d\udcca /durum \u2192 Durum",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-preview",
"name": "Telegram \u00d6nizleme",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1960,
100
],
"credentials": {
"telegramApi": {
"id": "9VDqFtkbrcHS1LG9",
"name": "Telegram Bot - GNCA"
}
},
"webhookId": "90d72b9c-e848-4ab9-9a8a-1d961223a94d"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "seconds",
"secondsInterval": 30
}
]
}
},
"id": "sched-30s",
"name": "Telegram Poll (30s)",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
0,
600
]
},
{
"parameters": {
"url": "https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/getUpdates?timeout=5&limit=10&allowed_updates=[\"message\"]",
"options": {
"timeout": 10000
}
},
"id": "tg-poll",
"name": "Telegram API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
260,
600
]
},
{
"parameters": {
"jsCode": "const result = $input.first().json;\n\n// Read offset from blob\nlet offsetData;\ntry {\n offsetData = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec3-5fb1-7729-93fd-f2e5c4018268',\n headers: { 'Accept': 'application/json' }\n });\n} catch(e) { offsetData = { offset: 0 }; }\n\nconst currentOffset = offsetData.offset || 0;\n\nif (!result.ok || !result.result || result.result.length === 0) return [];\n\nconst messages = [];\nlet maxId = currentOffset;\n\nfor (const update of result.result) {\n // Skip already-processed updates\n if (update.update_id < currentOffset) continue;\n if (update.update_id >= maxId) maxId = update.update_id + 1;\n \n const msg = update.message;\n if (!msg || String(msg.chat.id) !== '2099378542') continue;\n const text = (msg.text || '').trim().toLowerCase();\n if (text === '/onayla' || text === 'onayla') messages.push({ json: { action: 'approve' } });\n else if (text === '/reddet' || text === 'reddet') messages.push({ json: { action: 'reject' } });\n else if (text === '/durum' || text === 'durum') messages.push({ json: { action: 'status' } });\n}\n\n// Save new offset to blob\nif (maxId > currentOffset) {\n await this.helpers.httpRequest({\n method: 'PUT', url: 'https://jsonblob.com/api/jsonBlob/019d4ec3-5fb1-7729-93fd-f2e5c4018268',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ offset: maxId })\n });\n \n // Confirm to Telegram \u2014 discard processed messages\n await this.helpers.httpRequest({\n method: 'GET',\n url: 'https://api.telegram.org/botYOUR_TELEGRAM_BOT_TOKEN/getUpdates?offset=' + maxId + '&limit=0'\n });\n}\n\nreturn messages.length > 0 ? messages : [];"
},
"id": "tg-parse",
"name": "Komut Ayr\u0131\u015ft\u0131r",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
520,
600
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "approve",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "Onayla"
},
{
"conditions": {
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "reject",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "Reddet"
},
{
"conditions": {
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "status",
"operator": {
"type": "string",
"operation": "equals"
}
}
]
},
"renameOutput": true,
"outputKey": "Durum"
}
]
}
},
"id": "switch",
"name": "Aksiyon",
"type": "n8n-nodes-base.switch",
"typeVersion": 3.2,
"position": [
760,
600
]
},
{
"parameters": {
"jsCode": "const content = await this.helpers.httpRequest({\n method: 'GET',\n url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n});\n\nif (!content || content.status === 'empty') throw new Error('\u0130\u00e7erik bulunamad\u0131! \u00d6nce i\u00e7erik \u00fcretin.');\nif (content.status === 'published') throw new Error('Zaten yay\u0131nland\u0131!');\nif (content.status === 'rejected') throw new Error('Zaten reddedildi!');\nif (!content.imageUrl) throw new Error('G\u00f6rsel URL yok!');\n\nreturn [{ json: content }];"
},
"id": "load",
"name": "\u0130\u00e7erik Y\u00fckle",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
500
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "\u23f3 Instagram'a y\u00fckleniyor...",
"additionalFields": {}
},
"id": "tg-loading",
"name": "Y\u00fckleniyor",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1000,
380
],
"credentials": {
"telegramApi": {
"id": "9VDqFtkbrcHS1LG9",
"name": "Telegram Bot - GNCA"
}
},
"webhookId": "a2857179-58f1-4c10-a607-2defcf845353"
},
{
"parameters": {
"method": "POST",
"url": "https://graph.facebook.com/v19.0/17841436005649126/media",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ image_url: $json.imageUrl, caption: $json.caption, access_token: \"YOUR_INSTAGRAM_ACCESS_TOKEN\" }) }}",
"options": {
"timeout": 30000
}
},
"id": "ig-create",
"name": "IG Container",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1240,
500
]
},
{
"parameters": {
"amount": 15,
"unit": "seconds"
},
"id": "wait-ig",
"name": "15s Bekle",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
1480,
500
],
"webhookId": "341a7fff-ee08-434b-9d9a-9a1533edc34b"
},
{
"parameters": {
"method": "POST",
"url": "https://graph.facebook.com/v19.0/17841436005649126/media_publish",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ creation_id: $('IG Container').first().json.id, access_token: \"YOUR_INSTAGRAM_ACCESS_TOKEN\" }) }}",
"options": {
"timeout": 30000
}
},
"id": "ig-pub",
"name": "IG Yay\u0131nla",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1720,
500
]
},
{
"parameters": {
"jsCode": "const content = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n});\ncontent.status = 'published';\ncontent.publishedAt = new Date().toISOString();\ncontent.postId = $input.first().json.id || 'unknown';\nawait this.helpers.httpRequest({\n method: 'PUT', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(content)\n});\nreturn [{ json: { success: true, postId: content.postId, title: content.title } }];"
},
"id": "mark-pub",
"name": "Yay\u0131n Kayd\u0131",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1960,
500
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "=\u2705 *Yay\u0131nland\u0131!*\n\ud83c\udf89 Post ID: {{ $json.postId }}\n\ud83d\udccc {{ $json.title }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-ok",
"name": "Ba\u015far\u0131",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
2200,
500
],
"credentials": {
"telegramApi": {
"id": "9VDqFtkbrcHS1LG9",
"name": "Telegram Bot - GNCA"
}
},
"webhookId": "a9ded165-fc2a-4a2d-b2fc-50f68612af86"
},
{
"parameters": {
"jsCode": "try {\n const content = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n });\n if (content && content.status !== 'empty') {\n content.status = 'rejected';\n content.rejectedAt = new Date().toISOString();\n await this.helpers.httpRequest({\n method: 'PUT', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(content)\n });\n }\n} catch(e) {}\nreturn [{ json: { rejected: true } }];"
},
"id": "mark-rej",
"name": "Red Kayd\u0131",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
700
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "\u274c *Reddedildi.* Yeni i\u00e7erik 12 saat sonra veya manuel \u00fcretilir.",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-rej",
"name": "Red Bildir",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1240,
700
],
"credentials": {
"telegramApi": {
"id": "9VDqFtkbrcHS1LG9",
"name": "Telegram Bot - GNCA"
}
},
"webhookId": "093bbb6e-c2da-40f1-9131-5cc8bebaa8b1"
},
{
"parameters": {
"jsCode": "let s = 'Hen\u00fcz i\u00e7erik \u00fcretilmemi\u015f.';\ntry {\n const c = await this.helpers.httpRequest({\n method: 'GET', url: 'https://jsonblob.com/api/jsonBlob/019d4ec1-0cb3-7f05-9073-1fcc4d8da68b',\n headers: { 'Accept': 'application/json' }\n });\n if (c && c.status !== 'empty') {\n const m = {'pending':'\u23f3 Onay bekliyor','published':'\u2705 Yay\u0131nland\u0131','rejected':'\u274c Reddedildi'};\n s = '\ud83d\udcca *Durum*\\n\ud83d\udccc ' + (c.title||'?') + '\\n\ud83d\udd04 ' + (m[c.status]||c.status) + '\\n\ud83d\udcc5 ' + (c.generatedAt||'?');\n }\n} catch(e) {}\nreturn [{ json: { statusText: s } }];"
},
"id": "check-st",
"name": "Durum Kontrol",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1000,
880
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "={{ $json.statusText }}",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-st",
"name": "Durum Bildir",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1240,
880
],
"credentials": {
"telegramApi": {
"id": "9VDqFtkbrcHS1LG9",
"name": "Telegram Bot - GNCA"
}
},
"webhookId": "2ddb73a3-36d2-4c13-9834-5a6769c7f349"
},
{
"parameters": {},
"id": "err",
"name": "Hata Yakala",
"type": "n8n-nodes-base.errorTrigger",
"typeVersion": 1,
"position": [
0,
1100
]
},
{
"parameters": {
"chatId": "2099378542",
"text": "=\u26a0\ufe0f *Hata!*\n{{ $json.execution?.error?.message || 'Bilinmeyen hata' }}\nn8n: http://localhost:5678",
"additionalFields": {
"parse_mode": "Markdown"
}
},
"id": "tg-err",
"name": "Hata Bildir",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
260,
1100
],
"credentials": {
"telegramApi": {
"id": "9VDqFtkbrcHS1LG9",
"name": "Telegram Bot - GNCA"
}
},
"webhookId": "831bf7d6-b334-4b00-a05f-9b30fbd2fa58"
}
],
"connections": {
"Her 12 Saatte": {
"main": [
[
{
"node": "RSS TechCrunch",
"type": "main",
"index": 0
},
{
"node": "RSS Verge",
"type": "main",
"index": 0
},
{
"node": "RSS VBeat",
"type": "main",
"index": 0
}
]
]
},
"Manuel Test": {
"main": [
[
{
"node": "RSS TechCrunch",
"type": "main",
"index": 0
},
{
"node": "RSS Verge",
"type": "main",
"index": 0
},
{
"node": "RSS VBeat",
"type": "main",
"index": 0
}
]
]
},
"RSS TechCrunch": {
"main": [
[
{
"node": "Birle\u015ftir",
"type": "main",
"index": 0
}
]
]
},
"RSS Verge": {
"main": [
[
{
"node": "Birle\u015ftir",
"type": "main",
"index": 1
}
]
]
},
"RSS VBeat": {
"main": [
[
{
"node": "Birle\u015ftir",
"type": "main",
"index": 2
}
]
]
},
"Birle\u015ftir": {
"main": [
[
{
"node": "S\u0131rala & Haz\u0131rla",
"type": "main",
"index": 0
}
]
]
},
"S\u0131rala & Haz\u0131rla": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"OpenAI": {
"main": [
[
{
"node": "Parse Et",
"type": "main",
"index": 0
}
]
]
},
"Parse Et": {
"main": [
[
{
"node": "DALL-E",
"type": "main",
"index": 0
}
]
]
},
"DALL-E": {
"main": [
[
{
"node": "Kaydet",
"type": "main",
"index": 0
}
]
]
},
"Kaydet": {
"main": [
[
{
"node": "Telegram \u00d6nizleme",
"type": "main",
"index": 0
}
]
]
},
"Telegram Poll (30s)": {
"main": [
[
{
"node": "Telegram API",
"type": "main",
"index": 0
}
]
]
},
"Telegram API": {
"main": [
[
{
"node": "Komut Ayr\u0131\u015ft\u0131r",
"type": "main",
"index": 0
}
]
]
},
"Komut Ayr\u0131\u015ft\u0131r": {
"main": [
[
{
"node": "Aksiyon",
"type": "main",
"index": 0
}
]
]
},
"Aksiyon": {
"main": [
[
{
"node": "\u0130\u00e7erik Y\u00fckle",
"type": "main",
"index": 0
},
{
"node": "Y\u00fckleniyor",
"type": "main",
"index": 0
}
],
[
{
"node": "Red Kayd\u0131",
"type": "main",
"index": 0
}
],
[
{
"node": "Durum Kontrol",
"type": "main",
"index": 0
}
]
]
},
"\u0130\u00e7erik Y\u00fckle": {
"main": [
[
{
"node": "IG Container",
"type": "main",
"index": 0
}
]
]
},
"IG Container": {
"main": [
[
{
"node": "15s Bekle",
"type": "main",
"index": 0
}
]
]
},
"15s Bekle": {
"main": [
[
{
"node": "IG Yay\u0131nla",
"type": "main",
"index": 0
}
]
]
},
"IG Yay\u0131nla": {
"main": [
[
{
"node": "Yay\u0131n Kayd\u0131",
"type": "main",
"index": 0
}
]
]
},
"Yay\u0131n Kayd\u0131": {
"main": [
[
{
"node": "Ba\u015far\u0131",
"type": "main",
"index": 0
}
]
]
},
"Red Kayd\u0131": {
"main": [
[
{
"node": "Red Bildir",
"type": "main",
"index": 0
}
]
]
},
"Durum Kontrol": {
"main": [
[
{
"node": "Durum Bildir",
"type": "main",
"index": 0
}
]
]
},
"Hata Yakala": {
"main": [
[
{
"node": "Hata Bildir",
"type": "main",
"index": 0
}
]
]
}
},
"authors": "Osman Baran Tekin",
"name": null,
"description": null,
"autosaved": false,
"workflowPublishHistory": [
{
"createdAt": "2026-04-02T15:15:21.628Z",
"id": 7,
"workflowId": "rNLTPrZvDUKi2UBP",
"versionId": "8d6456cc-a38e-412a-990c-fe0e47b12670",
"event": "activated",
"userId": "6b30529f-4650-4270-99e7-95f467bb8d04"
}
]
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
telegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
GNCA AI News Pipeline. Uses rssFeedRead, httpRequest, telegram, errorTrigger. Scheduled trigger; 29 nodes.
Source: https://github.com/obtein/gnca/blob/36498f183770ccc025f0bb3ca4d87c2c48fa813e/n8n/workflow-original.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Apollo Data Enrichment Using Company Id to automatically finds contacts for companies listed in your Google Sheet, enriches each person with emails and phone numbers via Apollo’s API, and writes verif
Graceful Content Sparks — RSS → Notion (n8n)
clients kept booking meetings during my prayer times. i'd either miss a prayer or scramble to reschedule. the problem wasn't the clients — it was that my calendar had no blocked windows for salah. i n
This workflow is an AI-assisted clean plate and object removal pipeline built for modern VFX production environments. It transforms a single plate image and removal brief into multiple high-quality cl
This workflow is an AI-powered roto matte generation and first-pass compositing pipeline designed for VFX production. It transforms structured roto requests into multiple high-precision matte passes u