Kapitel 10/Premium Rohtext.md aktualisiert
This commit is contained in:
@@ -717,3 +717,138 @@ Diese Ausgabe kann direkt an den **Text Manipulation Node** weitergegeben oder m
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## KI-Erweiterung des bestehenden Workflows
|
||||||
|
|
||||||
|
Der im Free-Kapitel erstellte Workflow **„Stream-Reminder + Social Post“** übernimmt bereits die Planung und Veröffentlichung automatischer Stream-Ankündigungen.
|
||||||
|
Er verarbeitet Streamdaten, erstellt daraus Beiträge und veröffentlicht sie über die angebundenen Plattformen.
|
||||||
|
|
||||||
|
In diesem Premium-Abschnitt erweitern wir genau diesen Workflow um **eine KI-basierte Textoptimierung** über den Node **`n8n-nodes-openrouter`**.
|
||||||
|
Damit kann n8n künftig selbstständig aus vorhandenen Daten (z. B. Streamtitel, Kategorie, Datum) automatisch ansprechende Formulierungen, passende Hashtags und prägnante Kurztexte erzeugen – vollautomatisch und ohne manuelles Eingreifen.
|
||||||
|
|
||||||
|
Diese KI-Erweiterung ersetzt keine bestehenden Bestandteile, sondern ergänzt sie direkt an einer definierten Stelle im bestehenden Ablauf:
|
||||||
|
- Der **OpenRouter-Node** wird **nach der Datenermittlung** eingefügt, um aus den Streaminformationen optimierte Social-Posts zu generieren.
|
||||||
|
- Die erzeugten Texte können anschließend direkt an die bestehenden Veröffentlichungs-Nodes übergeben werden.
|
||||||
|
|
||||||
|
👉 Screenshot geeignet: *Workflow-Übersicht mit zusätzlich eingefügtem OpenRouter-Node hinter der Datenermittlung.*
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Der bestehende Aufbau bleibt unverändert.
|
||||||
|
> Wir fügen ausschließlich den OpenRouter-Node hinzu und konfigurieren ihn so, dass er bestehende Felder automatisch weiterverarbeitet und optimiert.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Diese Erweiterung ist ein erster Schritt zur vollständigen KI-Automatisierung von Social-Media-Abläufen.
|
||||||
|
> Spätere Kapitel bauen darauf auf und erweitern die Integration um kontextabhängige Textgenerierung und mehrsprachige Posts.
|
||||||
|
|
||||||
|
### Schritt 1 – OpenRouter-Node hinzufügen und konfigurieren
|
||||||
|
|
||||||
|
Der **OpenRouter-Node** wird direkt hinter dem IF-Node *„Stream prüfen“* eingefügt.
|
||||||
|
Er erzeugt aus den Twitch-Daten (`title`, `startIso`, `kategroie`) automatisch einen passenden Social-Media-Post.
|
||||||
|
|
||||||
|
| Einstellung | Wert |
|
||||||
|
|--------------|------|
|
||||||
|
| **Credential to connect with** | *OpenRouter account* |
|
||||||
|
| **Operation** | *Chat* |
|
||||||
|
| **Model Name or ID** | `OpenAI: GPT-5` |
|
||||||
|
| **System Prompt** | `You are a helpful assistant...` *(Standardtext belassen)* |
|
||||||
|
| **Message** | Siehe unten |
|
||||||
|
| **Temperature** | `0.9` |
|
||||||
|
|
||||||
|
**Prompt im Feld „Message“:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Erstelle einen Social-Media-Post auf Deutsch für folgendes Event.
|
||||||
|
Stil: freundlich, prägnant. Maximal 5 Hashtags mit größter Wirkung nach Analyse
|
||||||
|
|
||||||
|
Titel: {{$json["title"]}}
|
||||||
|
Datum: {{ $json.startIso }} -> Umwandeln in Datum und Uhrzeit in Lokale Deutsche Zeit. Du brauchst nur die Uhrzeit nennen.
|
||||||
|
Kategorie: {{ $json.kategroie }}
|
||||||
|
|
||||||
|
Gib nur den fertigen Posttext zurück.
|
||||||
|
```
|
||||||
|
|
||||||
|
👉 **Screenshot geeignet:** Node-Editor mit eingetragenem Prompt und Modell „OpenAI: GPT-5“
|
||||||
|
|
||||||
|
Der Node erzeugt eine einzige Ausgabevariable:
|
||||||
|
`{{$json["response"]}}` – sie enthält den vollständigen Text, der anschließend an die If-Prüfung übergeben wird.
|
||||||
|
|
||||||
|
|
||||||
|
### Schritt 2 – KI-Antwort prüfen
|
||||||
|
|
||||||
|
Direkt hinter dem OpenRouter-Node wird ein **IF-Node** eingefügt, um leere Antworten abzufangen.
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|------|------|
|
||||||
|
| **Left Value** | `={{ $json.response }}` |
|
||||||
|
| **Operator** | *String → Is Empty* |
|
||||||
|
|
||||||
|
Damit prüft n8n, ob das Feld `response` leer ist.
|
||||||
|
Nur wenn es wirklich Text enthält, läuft der KI-Zweig weiter.
|
||||||
|
|
||||||
|
👉 **Screenshot geeignet:** IF-Node mit Bedingung „response is empty“
|
||||||
|
|
||||||
|
- **TRUE (leer):** → *Download a file* (Fallback)
|
||||||
|
- **FALSE (Text vorhanden):** → *Edit Fields* (KI-Text übernehmen)
|
||||||
|
|
||||||
|
|
||||||
|
### Schritt 3 – KI-Text übernehmen
|
||||||
|
|
||||||
|
Der **Set-Node „Edit Fields“** wandelt die KI-Antwort in das vom Rest des Workflows genutzte Feld `postText` um.
|
||||||
|
|
||||||
|
| Feldname | Wert |
|
||||||
|
|-----------|------|
|
||||||
|
| **postText** | `={{ $json.response }}` |
|
||||||
|
|
||||||
|
Damit erhält der nächste Node dieselbe Datenstruktur wie zuvor.
|
||||||
|
|
||||||
|
👉 **Screenshot geeignet:** Node-Editor mit Feldzuweisung `postText = {{$json.response}}`
|
||||||
|
|
||||||
|
|
||||||
|
### Schritt 4 – Fallback-Zweig
|
||||||
|
|
||||||
|
Wenn der IF-Node auf „TRUE“ schaltet (also keine KI-Antwort vorhanden ist),
|
||||||
|
führt der Workflow den bekannten Pfad aus dem Free-Kapitel weiter:
|
||||||
|
|
||||||
|
- **Nextcloud-Node „Download a file“** lädt `posts.txt`.
|
||||||
|
- **Code-Node „Posttext auswählen“** wählt einen passenden Text oder Fallback-Satz.
|
||||||
|
|
||||||
|
👉 **Screenshot geeignet:** TRUE-Pfad mit Nextcloud- und Code-Node
|
||||||
|
|
||||||
|
|
||||||
|
### Schritt 5 – Merge-Node
|
||||||
|
|
||||||
|
Der **Merge-Node** führt die beiden Pfade (KI und Fallback) wieder zusammen,
|
||||||
|
sodass der folgende *X-Node* immer ein gültiges Feld `postText` erhält.
|
||||||
|
|
||||||
|
| Einstellung | Wert |
|
||||||
|
|--------------|------|
|
||||||
|
| **Mode** | *Append* |
|
||||||
|
| **Eingänge** | *2* |
|
||||||
|
|
||||||
|
Damit werden die Ausgaben beider Pfade zusammengeführt.
|
||||||
|
Da beide Nodes (`Edit Fields` und `Posttext auswählen`) dasselbe Feld `postText` besitzen,
|
||||||
|
übernimmt n8n automatisch den jeweils vorhandenen Wert — unabhängig davon, welcher Pfad aktiv war.
|
||||||
|
|
||||||
|
👉 **Screenshot geeignet:** Merge-Node mit beiden Eingängen (1 = Fallback, 2 = KI-Zweig)
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Durch diesen Aufbau bleibt der Workflow stabil:
|
||||||
|
> - Fällt der KI-Dienst aus → Fallback aus Nextcloud
|
||||||
|
> - Antwort vorhanden → KI-Text aus OpenRouter
|
||||||
|
> Beide Fälle liefern dasselbe Datenformat für den abschließenden Veröffentlichungs-Node.
|
||||||
|
|
||||||
|
### Schritt 6 – Post veröffentlichen
|
||||||
|
|
||||||
|
Der **X-Node „Post veröffentlichen“** nutzt schließlich das Feld:
|
||||||
|
|
||||||
|
```
|
||||||
|
={{ $json.postText }}
|
||||||
|
```
|
||||||
|
|
||||||
|
Dadurch bleibt der Workflow robust:
|
||||||
|
- Wenn die KI funktioniert, wird ihr Text gepostet.
|
||||||
|
- Wenn sie ausfällt, nutzt der Workflow automatisch den bestehenden Zufallstext.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> Diese Integration erhöht die Automatisierung, ohne Abhängigkeiten zu erzwingen.
|
||||||
|
> Sie lässt sich später auf weitere Plattformen (z. B. Discord, Threads, WhatsApp) erweitern,
|
||||||
|
> indem dieselbe Logik für zusätzliche „Publish“-Nodes übernommen wird.
|
||||||
Reference in New Issue
Block a user