{
  "schema": "ldwf",
  "version": 1,
  "name": "Knowledge Base Update aus Support Tickets",
  "meta": {
    "exportedAt": "2025-11-16T16:57:28.620Z",
    "exporter": "client"
  },
  "graph": {
    "nodes": [
      {
        "type": "trigger",
        "data": {
          "comment": "📅 ZEITGESTEUERTER START\n\n🎯 Beschreibung:\nDieser Trigger startet den Workflow automatisch jeden Freitag um 17:00 Uhr, um die Support-Tickets der vergangenen Woche zu analysieren.\n\n⚙️ Setup:\n- Cron-Ausdruck: '0 17 * * 5' (Minute Stunde Tag Monat Wochentag)\n- Keine weitere Konfiguration erforderlich\n- Der Workflow läuft automatisch zur festgelegten Zeit\n\n🔧 Personalisierungsoptionen:\n- Ändern Sie die Zeit (z.B. '0 9 * * 5' für 9:00 Uhr)\n- Ändern Sie den Tag (0=Sonntag, 1=Montag, ..., 5=Freitag)\n- Täglich: '0 17 * * *'\n- Monatlich: '0 17 1 * *' (erster Tag des Monats)\n- Mehrmals täglich: '0 9,17 * * *' (9:00 und 17:00 Uhr)",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "fridayTrigger",
          "name": "Every Friday at 17:00",
          "kind": "scheduled",
          "cron": "0 17 * * 5"
        },
        "id": "618c833f-daf0-49dd-8d76-67505ef16719",
        "position": {
          "x": 20,
          "y": 3440
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "💾 NOTION SPEICHERUNG\n\n🎯 Beschreibung:\nSpeichert jeden generierten FAQ-Eintrag als neue Seite in Notion mit Draft-Status zur Überprüfung.\n\n⚙️ Setup:\n1. Notion-Verbindung ist bereits konfiguriert\n2. Seiten werden im Workspace erstellt mit Präfix \"[DRAFT]\"\n3. Icon: 📝 (Notizblock)\n4. Properties: Status=\"Draft\", Tags aus dem Generator\n5. Content: Formatiert als Markdown mit Überschrift, Antwort und Tags\n\n🔧 Personalisierungsoptionen:\n- Ziel ändern: Ersetzen Sie 'parentId' mit einer spezifischen Datenbank-ID oder Seiten-ID\n- Icon anpassen: Ändern Sie das Emoji (z.B. \"❓\", \"💡\", \"📚\")\n- Status-Werte: Passen Sie \"Draft\" an Ihre Notion-Datenbank an\n- Zusätzliche Properties: Fügen Sie Felder wie \"Category\", \"Priority\", \"Author\" hinzu\n- Content-Format: Ändern Sie die Markdown-Struktur nach Bedarf\n- Prefix ändern: \"[DRAFT]\" zu \"[REVIEW]\" oder \"[NEW]\"\n\n💡 Tipp:\nErstellen Sie in Notion eine Datenbank mit den Properties \"Status\", \"Tags\", \"Category\" für bessere Organisation.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "saveFaqToNotion",
          "actionId": "7dba4335-2c76-4648-82ab-5a731759245d",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "icon": {
                "mode": "manual",
                "value": "📝"
              },
              "title": {
                "mode": "manual",
                "value": "[DRAFT] {{faqGenerator.output.structured.title}}"
              },
              "content": {
                "mode": "manual",
                "value": "# {{faqGenerator.output.structured.question}}\n\n{{faqGenerator.output.structured.answer}}\n\n---\n**Tags:** {{faqGenerator.output.structured.tags}}"
              },
              "parentId": {
                "mode": "manual",
                "value": "workspace"
              },
              "parentType": {
                "mode": "manual",
                "value": "page_id"
              },
              "properties": {
                "mode": "manual",
                "value": "{{ {\"Status\": \"Draft\", \"Tags\": faqGenerator.output.structured.tags} }}"
              },
              "createInPersonalRoot": {
                "mode": "manual",
                "value": "false"
              }
            }
          }
        },
        "id": "809dfecf-7b28-403e-a81b-7aa963b12ce5",
        "position": {
          "x": 2800,
          "y": 3440
        }
      },
      {
        "type": "loop",
        "data": {
          "comment": "🔄 FRAGEN-SCHLEIFE\n\n🎯 Beschreibung:\nIteriert über jede identifizierte häufige Frage und verarbeitet sie einzeln, um FAQ-Einträge zu erstellen.\n\n⚙️ Setup:\n- Array-Quelle: common_questions vom Ticket Analyzer\n- Max. Iterationen: 20 (Sicherheitslimit)\n- Sequenziell: Verarbeitet Fragen nacheinander\n- Innerhalb der Schleife verfügbar: {{questionLoop}} (aktuelle Frage)\n\n🔧 Personalisierungsoptionen:\n- Parallelverarbeitung aktivieren: 'concurrency: true' für schnellere Ausführung\n- Max. Iterationen erhöhen: 'maxIterations: 50' für mehr Fragen\n- Fehlerbehandlung: Ändern Sie 'errorHandling.strategy' zu 'continue' um bei Fehlern fortzufahren\n\n💡 Hinweis:\nAlle Nodes zwischen diesem Loop-Start und dem Loop-End werden für jede Frage einmal ausgeführt.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "name": "Process Each Question",
          "slug": "questionLoop",
          "loopArrayValue": "{{ticketAnalyzer.output.structured.common_questions}}",
          "maxIterations": 20,
          "concurrency": false
        },
        "id": "78ef907b-7a42-4fa0-92b0-b707431f03ab",
        "position": {
          "x": 1680,
          "y": 3440
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "🎫 ZENDESK TICKET-ABFRAGE\n\n🎯 Beschreibung:\nRuft alle gelösten und geschlossenen Support-Tickets der letzten 7 Tage aus Zendesk ab.\n\n⚙️ Setup:\n1. Wählen Sie Ihre Zendesk-Verbindung aus (wird beim ersten Lauf abgefragt)\n2. Die Suchquery filtert automatisch nach:\n   - Status: solved ODER closed\n   - Erstellt: innerhalb der letzten 7 Tage\n3. Sortierung: Nach Erstellungsdatum (neueste zuerst)\n\n🔧 Personalisierungsoptionen:\n- Zeitraum ändern: 'created>14daysago' für 14 Tage\n- Nur gelöste: 'status:solved created>7daysago'\n- Bestimmte Priorität: 'status:solved priority:high created>7daysago'\n- Bestimmte Tags: 'status:solved tags:billing created>7daysago'\n- Kombination: 'status:solved status:closed priority:high created>7daysago'",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "findTickets",
          "actionId": "17d230a1-dda8-4e82-9994-9285106c880a",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "sortBy": {
                "mode": "manual",
                "value": "created_at"
              },
              "sortOrder": {
                "mode": "manual",
                "value": "desc"
              },
              "searchQuery": {
                "mode": "manual",
                "value": "status:solved status:closed created>7daysago"
              }
            }
          }
        },
        "id": "18a4a83b-90bc-440a-97e5-0b2d24ca4384",
        "position": {
          "x": 560,
          "y": 3440
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "✍️ FAQ-EINTRAG GENERATOR\n\n🎯 Beschreibung:\nGeneriert für jede häufige Frage einen professionellen, strukturierten FAQ-Eintrag mit Titel, Frage, Antwort und Tags.\n\n⚙️ Setup:\n- Läuft innerhalb der Schleife für jede Frage\n- Strukturierte Ausgabe: title, question, answer, tags\n- Keine zusätzliche Konfiguration erforderlich\n\n🔧 Personalisierungsoptionen:\nPassen Sie den Prompt an für:\n- Tonalität: \"Verwende einen informellen/formellen Ton\"\n- Länge: \"Halte Antworten kurz (max. 200 Wörter)\" oder \"Erstelle ausführliche Antworten\"\n- Format: \"Strukturiere Antworten mit Aufzählungen und Überschriften\"\n- Zusatzinfo: \"Füge Links zu relevanten Ressourcen hinzu\"\n- Mehrsprachig: \"Erstelle Antworten auf Deutsch und Englisch\"\n- Branding: \"Verwende unseren Firmenton: [Beschreibung]\"\n\n💡 Ausgabeformat:\nKann später in Notion als Markdown, JSON oder strukturierte Datenbank-Properties verwendet werden.",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "faqGenerator",
          "assistantId": null,
          "mode": "create",
          "name": "FAQ Generator",
          "prompt": {
            "mode": "manual",
            "value": "Erstelle einen strukturierten FAQ-Eintrag für die folgende häufige Frage aus den Support-Tickets:\n\nFrage/Problem: {{questionLoop}}\n\nDeine Aufgabe:\n1. Formuliere einen prägnanten Titel für diesen FAQ-Eintrag\n2. Formuliere die Frage klar und verständlich\n3. Erstelle eine ausführliche, hilfreiche Antwort basierend auf den Ticket-Informationen\n4. Identifiziere 3-5 relevante Tags/Schlüsselwörter für diesen Eintrag\n\nDie Antwort sollte:\n- Klar und verständlich sein\n- Alle wichtigen Informationen enthalten\n- Schritt-für-Schritt Anleitungen bieten, wenn relevant\n- Professionell und freundlich formuliert sein"
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "92e54a29-d81e-4ed4-b157-708a3a7bfd4d",
              "name": "title",
              "description": "Title of the FAQ entry",
              "type": "string",
              "required": true
            },
            {
              "id": "68a9e1e0-49a5-479a-a697-e6f384a13571",
              "name": "question",
              "description": "The question",
              "type": "string",
              "required": true
            },
            {
              "id": "01ca3d92-9ce0-47ba-a41c-4eceba2b307f",
              "name": "answer",
              "description": "The detailed answer",
              "type": "string",
              "required": true
            },
            {
              "id": "3f69f5d1-47d0-49ab-bad4-b80625f812c7",
              "name": "tags",
              "description": "Relevant tags as comma-separated string",
              "type": "string",
              "required": true
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "32b2db91-f106-4cbe-a6b9-d5f04badc1a8",
        "position": {
          "x": 2240,
          "y": 3440
        }
      },
      {
        "type": "agent",
        "data": {
          "comment": "🤖 KI-TICKET-ANALYSE\n\n🎯 Beschreibung:\nAnalysiert alle abgerufenen Support-Tickets mit KI und identifiziert die 3-10 häufigsten Fragen und Probleme.\n\n⚙️ Setup:\n- Keine zusätzliche Konfiguration erforderlich\n- Verwendet strukturierte Ausgabe für konsistente Ergebnisse\n- Ausgabefelder: common_questions (Array), total_tickets_analyzed (Zahl), summary (Text)\n\n🔧 Personalisierungsoptionen:\nPassen Sie den Prompt an, um:\n- Fokus auf bestimmte Kategorien: \"Konzentriere dich auf technische Probleme\"\n- Anzahl ändern: \"mindestens 5, maximal 15\"\n- Priorität setzen: \"Priorisiere Fragen mit hoher Dringlichkeit\"\n- Sprache ändern: Den gesamten Prompt auf Englisch umstellen\n- Zusätzliche Analyse: \"Identifiziere auch Trends und Muster\"\n- Sentiment-Analyse: \"Bewerte auch die Kundenzufriedenheit pro Thema\"",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "ticketAnalyzer",
          "assistantId": null,
          "mode": "create",
          "name": "Ticket Analyzer",
          "prompt": {
            "mode": "manual",
            "value": "Analysiere die folgenden Support-Tickets aus der vergangenen Woche und identifiziere die häufigsten Fragen und Probleme.\n\nTickets:\n{{findTickets.output}}\n\nDeine Aufgabe:\n1. Analysiere alle Tickets und deren Inhalte\n2. Identifiziere wiederkehrende Themen, Fragen und Probleme\n3. Gruppiere ähnliche Fragen zusammen\n4. Erstelle eine Liste der häufigsten Fragen (mindestens 3, maximal 10)\n5. Für jede häufige Frage, extrahiere repräsentative Beispiele aus den Tickets\n\nGib die Ergebnisse als strukturierte Liste zurück."
          },
          "attachmentIds": [],
          "output": "structured",
          "connectionOverrides": {},
          "outputSchema": [
            {
              "id": "9708d313-8907-4fe8-9ee1-2c832343ce1b",
              "name": "common_questions",
              "description": "Array of common questions identified",
              "type": "array",
              "required": true
            },
            {
              "id": "b2f6fa48-d7a0-4225-909c-fe912419f72e",
              "name": "total_tickets_analyzed",
              "description": "Total number of tickets analyzed",
              "type": "number",
              "required": true
            },
            {
              "id": "1a0d825b-ce2a-4a5e-a447-cd2d9b0c0790",
              "name": "summary",
              "description": "Summary of the most common themes",
              "type": "string",
              "required": true
            }
          ],
          "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
          "tools": [],
          "maxSteps": 25
        },
        "id": "f5333c94-fd64-417f-b72d-f5e42f4bc12e",
        "position": {
          "x": 1120,
          "y": 3440
        }
      },
      {
        "type": "loop_end",
        "data": {
          "comment": "🏁 SCHLEIFEN-ENDE\n\n🎯 Beschreibung:\nMarkiert das Ende der Fragen-Schleife. Alle FAQ-Einträge wurden erstellt und in Notion gespeichert.\n\n⚙️ Setup:\n- Verbunden mit Loop \"questionLoop\"\n- Fehlerbehandlung: 'continue' (fährt fort, auch wenn einzelne Iterationen fehlschlagen)\n- Keine Ausgabe (dient nur als Synchronisationspunkt)\n\n🔧 Personalisierungsoptionen:\n- Fehlerbehandlung: Ändern Sie zu 'stop' um bei ersten Fehler anzuhalten\n\n💡 Hinweis:\nNach diesem Node sind Loop-Variablen ({{questionLoop}}) nicht mehr verfügbar. Der Workflow fährt mit der Benachrichtigung fort.",
          "executionId": null,
          "errorHandling": {
            "strategy": "continue"
          },
          "name": "Loop End",
          "slug": "questionLoopEnd",
          "loopEndSlug": "questionLoop"
        },
        "id": "851a51bf-d3e5-424e-91c5-484e7f657ff0",
        "position": {
          "x": 3344,
          "y": 3440
        }
      },
      {
        "type": "action",
        "data": {
          "comment": "💬 SLACK TEAM-BENACHRICHTIGUNG\n\n🎯 Beschreibung:\nBenachrichtigt das Content-Team über Slack, dass neue FAQ-Drafts zur Überprüfung bereitstehen.\n\n⚙️ Setup:\n1. Slack-Verbindung wird beim ersten Lauf ausgewählt\n2. Channel-ID: KI wählt automatisch den passenden Kanal für das Content-Team\n3. Nachricht enthält:\n   - Anzahl analysierter Tickets\n   - Anzahl erstellter FAQ-Drafts\n   - Zusammenfassung der Hauptthemen\n   - Anleitung zum Finden der Drafts\n\n🔧 Personalisierungsoptionen:\n- Fester Kanal: Ändern Sie channelId.mode zu \"manual\" und setzen Sie einen Channel (z.B. \"#content-team\")\n- Nachrichtenformat: Passen Sie den Text an Ihr Team an\n- Mentions hinzufügen: \"<@USER_ID>\" oder \"<!channel>\" für @channel\n- Links einfügen: Fügen Sie direkte Notion-Links hinzu\n- Zusätzliche Metriken: Fügen Sie weitere Statistiken hinzu\n- Mehrere Kanäle: Duplizieren Sie diesen Node für verschiedene Teams\n\n💡 Beispiel für direkten Channel:\nÄndern Sie channelId zu: {\"mode\": \"manual\", \"value\": \"#faq-reviews\"}",
          "executionId": null,
          "errorHandling": {
            "strategy": "stop"
          },
          "slug": "notifyTeam",
          "actionId": "26a39d11-d5fe-4f46-b776-973dd20b8147",
          "config": {
            "connectionId": null,
            "requiresConfirmation": false,
            "modelId": "c968689a-c0d9-49de-aa76-b10ed15ebb0e",
            "fields": {
              "text": {
                "mode": "manual",
                "value": "📢 *Neue FAQ-Drafts bereit zur Überprüfung!*\n\nDie wöchentliche Ticket-Analyse ist abgeschlossen.\n\n📊 *Zusammenfassung:*\n- Analysierte Tickets: {{ticketAnalyzer.output.structured.total_tickets_analyzed}}\n- Identifizierte häufige Fragen: {{ticketAnalyzer.output.structured.common_questions.length}}\n- Neue FAQ-Drafts erstellt: {{ticketAnalyzer.output.structured.common_questions.length}}\n\n📄 *Hauptthemen:*\n{{ticketAnalyzer.output.structured.summary}}\n\nDie neuen FAQ-Einträge wurden als Drafts in Notion gespeichert und warten auf eure Überprüfung. Bitte überprüft die Einträge und gebt sie frei, sobald sie bereit sind.\n\n🔗 Sucht in Notion nach Seiten mit dem Präfix \"[DRAFT]\" um die neuen Einträge zu finden."
              },
              "channelId": {
                "mode": "prompt",
                "prompt": "Use the appropriate channel for the content team"
              }
            }
          }
        },
        "id": "24fa7c50-b383-4feb-9ed0-e366c4aa7b04",
        "position": {
          "x": 3872,
          "y": 3440
        }
      }
    ],
    "edges": [
      {
        "id": "10bc477d-d954-4b86-a9fe-5b1c03d990bd",
        "source": "618c833f-daf0-49dd-8d76-67505ef16719",
        "target": "18a4a83b-90bc-440a-97e5-0b2d24ca4384",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "6a629c47-0d2e-4c17-a1c9-d89c170f9ab8",
        "source": "18a4a83b-90bc-440a-97e5-0b2d24ca4384",
        "target": "f5333c94-fd64-417f-b72d-f5e42f4bc12e",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "8dc43d48-999f-4c7e-8ece-6afb9e062ae2",
        "source": "f5333c94-fd64-417f-b72d-f5e42f4bc12e",
        "target": "78ef907b-7a42-4fa0-92b0-b707431f03ab",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "eb1dacb2-73b4-4f93-816c-a9a04d6f53bc",
        "source": "78ef907b-7a42-4fa0-92b0-b707431f03ab",
        "target": "32b2db91-f106-4cbe-a6b9-d5f04badc1a8",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "9802bc1a-f194-4317-8bb3-81ffc676f3d2",
        "source": "32b2db91-f106-4cbe-a6b9-d5f04badc1a8",
        "target": "809dfecf-7b28-403e-a81b-7aa963b12ce5",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "acc0815b-019f-47aa-84c5-720e61ba8cf1",
        "source": "809dfecf-7b28-403e-a81b-7aa963b12ce5",
        "target": "851a51bf-d3e5-424e-91c5-484e7f657ff0",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      },
      {
        "id": "e67b12d1-480e-486e-aa10-3a8f1f512f4b",
        "source": "851a51bf-d3e5-424e-91c5-484e7f657ff0",
        "target": "24fa7c50-b383-4feb-9ed0-e366c4aa7b04",
        "animated": false,
        "sourceHandle": "output-success",
        "targetHandle": "input-default",
        "conditionId": null
      }
    ]
  }
}