{"id":23134,"date":"2026-03-13T18:02:14","date_gmt":"2026-03-13T17:02:14","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=23134"},"modified":"2026-03-13T18:02:14","modified_gmt":"2026-03-13T17:02:14","slug":"n8n-workflow-taegliches-ki-zitat-per-telegram","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=23134","title":{"rendered":"n8n Workflow: T\u00e4gliches KI-Zitat per Telegram"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat.png\" alt=\"\" width=\"2078\" height=\"782\" class=\"aligncenter size-full wp-image-23138\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat.png 2078w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat-300x113.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat-1024x385.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat-768x289.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat-1536x578.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/n8n-workflow-zitat-2048x771.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<h2>n8n Workflow: T\u00e4gliches KI-Zitat per Telegram<\/h2>\n<p>Dieser n8n-Workflow generiert t\u00e4glich automatisiert ein Zitat einer echten historischen Person und versendet es an einen Telegram-Chat. Der Workflow kombiniert einen zeitgesteuerten Trigger, JavaScript-basierte Zufallslogik, einen KI-gest\u00fctzten Agenten \u00fcber die OpenRouter-Schnittstelle sowie die Telegram Bot API.<\/p>\n<p>Der Ablauf gliedert sich in vier aufeinanderfolgende Phasen:<\/p>\n<ul>\n<li>Zeitgesteuerte Ausl\u00f6sung (t\u00e4glich um 09:17 Uhr)<\/li>\n<li>Generierung einer zuf\u00e4lligen historischen Epoche<\/li>\n<li>KI-gest\u00fctzte Zitaterstellung \u00fcber ein gro\u00dfes Sprachmodell<\/li>\n<li>Versand des Zitats als Telegram-Nachricht<\/li>\n<\/ul>\n<hr>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/zitat-n8n-ki.png\" alt=\"\" width=\"1512\" height=\"850\" class=\"aligncenter size-full wp-image-23137\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/zitat-n8n-ki.png 1512w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/zitat-n8n-ki-300x169.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/zitat-n8n-ki-1024x576.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2026\/03\/zitat-n8n-ki-768x432.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<h2>Technische Rahmenbedingungen<\/h2>\n<table>\n<thead>\n<tr>\n<th>Eigenschaft<\/th>\n<th>Wert<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Workflow-Status<\/td>\n<td>Aktiv<\/td>\n<\/tr>\n<tr>\n<td>Ausf\u00fchrungsreihenfolge<\/td>\n<td>v1<\/td>\n<\/tr>\n<tr>\n<td>MCP-Verf\u00fcgbarkeit<\/td>\n<td>Deaktiviert<\/td>\n<\/tr>\n<tr>\n<td>KI-Modell<\/td>\n<td>Nvidia Nemotron 3 Super 120B (via OpenRouter, kostenlos)<\/td>\n<\/tr>\n<tr>\n<td>KI-Plattform<\/td>\n<td>OpenRouter API<\/td>\n<\/tr>\n<tr>\n<td>Ausgabekanal<\/td>\n<td>Telegram Bot API<\/td>\n<\/tr>\n<tr>\n<td>Trigger-Zeitpunkt<\/td>\n<td>T\u00e4glich 09:17 Uhr<\/td>\n<\/tr>\n<tr>\n<td>Max. Nachrichtenl\u00e4nge<\/td>\n<td>430 Zeichen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<p><!--more--><\/p>\n<h2>Node-Beschreibungen<\/h2>\n<h3>1. T\u00e4glich \u2013 Schedule Trigger<\/h3>\n<p><strong>Typ:<\/strong> n8n-nodes-base.scheduleTrigger<\/p>\n<p>Der Einstiegspunkt des Workflows. Der Schedule Trigger l\u00f6st den gesamten Prozess t\u00e4glich um 09:17 Uhr aus. Er \u00fcbergibt keine Nutzdaten an den n\u00e4chsten Node, sondern signalisiert lediglich den Startimpuls f\u00fcr die nachfolgende Pipeline.<\/p>\n<p><strong>Konfiguration:<\/strong> triggerAtHour: 9, triggerAtMinute: 17<\/p>\n<h3>2. Code in JavaScript \u2013 Zuf\u00e4llige Epoche<\/h3>\n<p><strong>Typ:<\/strong> n8n-nodes-base.code (JavaScript, Version 2)<\/p>\n<p>Dieses Node f\u00fchrt JavaScript-Code aus und berechnet die zeitliche Grundlage f\u00fcr das sp\u00e4tere Zitat. Die Logik arbeitet wie folgt:<\/p>\n<ul>\n<li>Ein zuf\u00e4lliges Geburtsjahr wird im Bereich 1700\u20132000 ermittelt.<\/li>\n<li>Eine zuf\u00e4llige Lebensspanne von 20\u201380 Jahren wird berechnet.<\/li>\n<li>Das Sterbejahr ergibt sich als Summe, gekappt auf maximal 2025.<\/li>\n<\/ul>\n<p>Hier der JavaScript-Code:<\/p>\n<pre class=\"nums:false minimize:true lang:js decode:true \" >\/\/ Zuf\u00e4lliges Geburts- und Sterbejahr generieren\r\nconst gebJahr = Math.floor(Math.random() * (2000 - 1700 + 1)) + 1700;\r\nconst lebensspanne = 20 + Math.floor(Math.random() * 61); \/\/ 20-80 Jahre\r\nconst sterbJahr = Math.min(gebJahr + lebensspanne, 2025);\r\n\r\nreturn [{\r\n  json: {\r\n    jahre: `${gebJahr}-${sterbJahr}`,\r\n    jahrePrompt: `aus der Zeit ${gebJahr}-${sterbJahr}`\r\n  }\r\n}];<\/pre>\n<p>Das Ausgabe-Objekt enth\u00e4lt zwei Felder:<\/p>\n<ul>\n<li><strong>jahre<\/strong> \u2013 Jahreszeitraum im Format \u201e1844-1900&#8243;<\/li>\n<li><strong>jahrePrompt<\/strong> \u2013 Formulierung f\u00fcr den Prompt, z. B. \u201eaus der Zeit 1844-1900&#8243;<\/li>\n<\/ul>\n<h3>3. KI Prompt \u2013 Set Node<\/h3>\n<p><strong>Typ:<\/strong> n8n-nodes-base.set (Version 3.4)<\/p>\n<p>Dieses Set-Node konstruiert aus den berechneten Epochendaten einen vollst\u00e4ndigen deutschen LLM-Prompt. Der Prompt gibt dem Sprachmodell folgende Vorgaben:<\/p>\n<ul>\n<li>Es soll ein Zitat generiert werden, das von einer echten historischen Person aus der berechneten Epoche stammen k\u00f6nnte.<\/li>\n<li>Das Ausgabeformat ist exakt vorgegeben: \u201eZitattext.&#8220; \u2013 ECHTER Name (Jahreszahlen)<\/li>\n<li>Keine Einleitungen, Erkl\u00e4rungen oder fiktive Personen sind erlaubt.<\/li>\n<li>Die Gesamtl\u00e4nge des Ausgabetexts ist auf unter 440 Zeichen begrenzt.<\/li>\n<\/ul>\n<p>Im Prompt sind Beispielpersonen f\u00fcr verschiedene Epochen eingebettet (z. B. Voltaire, Kant, Nietzsche, Einstein), um dem Modell eine stilistische Orientierungshilfe zu geben.<\/p>\n<p><strong>Ausgabe-Feld:<\/strong> chatInput<\/p>\n<h3>4. AI Agent + Nvidia Chat Model \u2013 KI-Generierung<\/h3>\n<p><strong>Typ (Agent):<\/strong> @n8n\/n8n-nodes-langchain.agent (Version 3.1)<br \/>\n<strong>Typ (Modell):<\/strong> @n8n\/n8n-nodes-langchain.lmChatOpenRouter<br \/>\n<strong>Modell:<\/strong> nvidia\/nemotron-3-super-120b-a12b:free<\/p>\n<p>Der AI Agent empf\u00e4ngt den fertigen Prompt und sendet ihn \u00fcber die OpenRouter-API an das Nvidia Nemotron 3 Super Modell mit 120 Milliarden Parametern. Dieses Modell ist \u00fcber OpenRouter kostenlos verf\u00fcgbar und generiert das eigentliche Zitat gem\u00e4\u00df den vorgegebenen Regeln.<\/p>\n<p>Das Ergebnis wird im Ausgabefeld <code>output<\/code> gespeichert und direkt vom nachfolgenden Telegram-Node weiterverwendet. Das Modell agiert ohne zus\u00e4tzliche Tools oder Memory \u2013 die Generierung erfolgt rein auf Basis des \u00fcbergebenen Prompts.<\/p>\n<h3>5. Send Telegram Nachricht \u2013 Ausgabe<\/h3>\n<p><strong>Typ:<\/strong> n8n-nodes-base.telegram (Version 1.2)<\/p>\n<p>Das generierte Zitat wird an einen festgelegten Telegram-Chat gesendet. Der Text wird auf maximal 430 Zeichen begrenzt, um innerhalb der Telegram-Nachrichtenlimits zu bleiben.<\/p>\n<p>Besonderheiten der Konfiguration:<\/p>\n<ul>\n<li><strong>replyMarkup: forceReply<\/strong> \u2013 Der Bot signalisiert, dass eine Antwort des Nutzers erwartet wird. Dies ist in Gruppenkonversationen n\u00fctzlich, um den Gespr\u00e4chskontext zu verkn\u00fcpfen.<\/li>\n<li><strong>appendAttribution: false<\/strong> \u2013 Die automatische n8n-Signatur wird nicht an die Nachricht angeh\u00e4ngt.<\/li>\n<\/ul>\n<hr>\n<h2>Vollst\u00e4ndiger Ablauf<\/h2>\n<table>\n<thead>\n<tr>\n<th>Schritt<\/th>\n<th>Node<\/th>\n<th>Aktion<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td><strong>T\u00e4glich<\/strong><\/td>\n<td>L\u00f6st den Workflow t\u00e4glich um 09:17 Uhr aus<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td><strong>Code in JavaScript<\/strong><\/td>\n<td>Berechnet zuf\u00e4lliges Geburts- und Sterbejahr (1700\u20132025)<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td><strong>KI Prompt<\/strong><\/td>\n<td>Erstellt den deutschen LLM-Prompt mit Epochenbezug<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td><strong>AI Agent<\/strong><\/td>\n<td>Sendet Prompt an Nvidia Nemotron 3 (120B) via OpenRouter<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td><strong>Send Telegram<\/strong><\/td>\n<td>Sendet das Zitat (max. 430 Zeichen) an den Telegram-Chat<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr>\n<h2>Hinweise zur Weiterentwicklung<\/h2>\n<ul>\n<li><strong>Modellwahl:<\/strong> Das kostenlose Nvidia-Modell kann jederzeit durch ein anderes OpenRouter-Modell ersetzt werden, um Qualit\u00e4t oder Stil der Zitate anzupassen.<\/li>\n<li><strong>Epochenfilterung:<\/strong> Der JavaScript-Code kann erweitert werden, um bestimmte Zeitr\u00e4ume gezielt einzuschlie\u00dfen oder auszuschlie\u00dfen.<\/li>\n<li><strong>Fehlerbehandlung:<\/strong> Aktuell enth\u00e4lt der Workflow keine explizite Fehlerbehandlung. Ein Error-Trigger-Node k\u00f6nnte Fehlschl\u00e4ge protokollieren oder einen Neuversuch ausl\u00f6sen.<\/li>\n<li><strong>Mehrsprachigkeit:<\/strong> Der Prompt ist auf Deutsch formuliert. Eine Anpassung f\u00fcr andere Sprachen ist durch einfache \u00c4nderung des Prompt-Textes m\u00f6glich.<\/li>\n<li><strong>Archivierung:<\/strong> Generierte Zitate k\u00f6nnten zus\u00e4tzlich in einer Datenbank oder einem Google Sheet gespeichert werden, um Duplikate zu vermeiden.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>n8n Workflow: T\u00e4gliches KI-Zitat per Telegram Dieser n8n-Workflow generiert t\u00e4glich automatisiert ein Zitat einer echten historischen Person und versendet es an einen Telegram-Chat. Der Workflow kombiniert einen zeitgesteuerten Trigger, JavaScript-basierte Zufallslogik, einen KI-gest\u00fctzten Agenten \u00fcber die OpenRouter-Schnittstelle sowie die Telegram Bot API. Der Ablauf gliedert sich in vier aufeinanderfolgende Phasen: Zeitgesteuerte Ausl\u00f6sung (t\u00e4glich um 09:17 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=23134\" class=\"more-link\"><span class=\"screen-reader-text\">\u201en8n Workflow: T\u00e4gliches KI-Zitat per Telegram\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,6267],"tags":[6255,6263,5550,2450],"class_list":["post-23134","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-n8n","tag-n8n","tag-telegram","tag-workflow","tag-zitat"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=23134"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/23134\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=23134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=23134"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=23134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}