> ## Documentation Index
> Fetch the complete documentation index at: https://docs.localmind.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Automate Basics

> Nodes, Trigger und Expressions: Ihr erster Automate-Workflow von Konzept bis Aktivierung.

**Automate** ist die Workflow-Automatisierungsplattform von Localmind. Sie erstellen damit visuelle Workflows, die externe Dienste, APIs und Ihre Localmind-Agenten miteinander verbinden — durch das Verbinden von Nodes, ohne Code zu schreiben. Hunderte Integrationen (Slack, Google Sheets, beliebige APIs) stehen bereit, und Ihre Localmind-Agenten binden Sie direkt in Workflows ein. Automate läuft in Ihrem Localmind-Deployment; welche Varianten es gibt, lesen Sie unter [Hosting-Optionen](/pricing/Hosting-Options).

## Erste Schritte

1. **Öffnen Sie die App „Automatisierung"** in Ihrem Space.
2. **Klicken Sie auf „Neuer Workflow"**, um Ihren ersten Workflow zu erstellen.
3. **Wählen Sie eine Vorlage** oder starten Sie mit einem leeren Workflow — wenn Sie neu bei Automate sind, helfen die vorgefertigten Vorlagen beim Verstehen der Konzepte.

## Grundkonzepte

### Nodes

**Nodes** sind die Bausteine Ihrer Workflows. Jeder Node repräsentiert eine Aktion oder einen Schritt im Automatisierungsprozess.

**Trigger Nodes** starten Ihren Workflow automatisch:

* **Webhook:** empfängt HTTP-Anfragen
* **Schedule:** zeitbasierte Ausführung (Cron)
* **Manual:** manuelle Ausführung
* **Email:** E-Mail-basierte Trigger

**Action Nodes** führen Operationen aus:

* **HTTP Request:** API-Aufrufe — darüber rufen Sie auch Localmind-Agenten auf
* **Set:** Daten setzen/transformieren
* **IF:** bedingte Logik
* **Switch:** Multi-Branch-Logik

### Localmind-Agenten aufrufen

Einen dedizierten Agent-Node gibt es nicht — Sie rufen Localmind-Agenten über die **HTTP Request Node** auf:

* **Endpoint:** `POST https://<deine-instanz>-api.localmind.ai/v1/chat/completions`
* **Auth:** Header `Authorization: Bearer <LOCALMIND_API_KEY>` (als n8n-Credential vom Typ Header Auth)
* **Agent-Auswahl:** das `model`-Feld im Body trägt die Agent-UUID aus `GET /v1/models`

```json Request-Body theme={null}
{
  "model": "<agent_uuid>",
  "messages": [
    { "role": "user", "content": "{{ $json.userQuery }}" }
  ],
  "stream": false
}
```

Die Antwort lesen Sie in Folge-Nodes über `{{ $json.choices[0].message.content }}` aus, den Token-Verbrauch über `{{ $json.usage.total_tokens }}`. Die vollständige Anleitung inklusive Stolperfallen finden Sie unter [Localmind Agent in n8n einbinden](/automate/Localmind-Agent).

### Workflow-Struktur

Ein typischer Workflow folgt diesem Muster:

```
Trigger → Datenverarbeitung → Agent-Aufruf → Aktion → Ausgabe
```

<Steps>
  <Step title="Workflow erstellen">
    Klicken Sie auf **„Neuer Workflow"**, vergeben Sie einen Namen (z.B. „Kundenanfrage verarbeiten") und wählen Sie einen Trigger-Node — für Tests zunächst einen **Manual Trigger**, später stellen Sie auf einen automatischen Trigger um.
  </Step>

  <Step title="Nodes hinzufügen">
    Über das **„+"**-Symbol suchen Sie den gewünschten Node (z.B. „HTTP Request"), ziehen ihn auf das Canvas und verbinden Nodes durch Ziehen von den Ausgängen zu den Eingängen. Achten Sie darauf, dass die Datenformate zwischen Nodes kompatibel sind — zur Umwandlung nutzen Sie Set-Nodes.
  </Step>

  <Step title="Node konfigurieren">
    Klicken Sie auf einen Node, füllen Sie die erforderlichen Felder aus und testen Sie mit **„Execute Node"**. Für dynamische Werte verwenden Sie **Expressions** (`{{ }}`):

    ```javascript Expression Beispiel theme={null}
    // Zugriff auf vorherige Node-Daten
    {{ $json.fieldName }}

    // Zugriff auf Workflow-Daten
    {{ $workflow.staticData.value }}

    // Funktionen verwenden
    {{ $now.toISO() }}
    {{ $json.text.toUpperCase() }}

    // JSON Stringify - Objekte in Strings umwandeln
    {{ JSON.stringify($json) }}
    {{ JSON.stringify($json.user) }}
    ```
  </Step>

  <Step title="Workflow aktivieren">
    Testen Sie den Workflow gründlich (siehe [Testing](/automate/testing)), bevor Sie den **„Active"**-Toggle oben rechts einschalten. Für Production konfigurieren Sie einen automatischen Trigger und überwachen Ausführungen im **„Executions"**-Tab.
  </Step>
</Steps>

## Praktisches Beispiel: E-Mail-zu-Agent-Workflow

Ein Workflow, der E-Mails empfängt, sie an einen Localmind-Agenten weiterleitet und eine Antwort sendet:

```
Email Trigger → Set Node → HTTP Request (Localmind Agent) → HTTP Request (Send Email)
```

### 1. Email Trigger konfigurieren

Fügen Sie einen **IMAP Email**-Node hinzu, konfigurieren Sie die Credentials (IMAP-Server, Benutzername, Passwort) und setzen Sie das Polling-Intervall (z.B. jede Minute). Optional filtern Sie auf bestimmte Absender.

### 2. Daten vorbereiten (Set Node)

Strukturieren Sie mit einem **Set**-Node die Daten für den Agenten:

* `emailSubject`: `{{ $json.subject }}`
* `emailBody`: `{{ $json.textPlain }}`
* `senderEmail`: `{{ $json.from.value[0].address }}`
* `timestamp`: `{{ $now.toISO() }}`

### 3. Localmind Agent aufrufen (HTTP Request)

Konfigurieren Sie einen **HTTP Request**-Node: Methode **POST**, URL `https://<deine-instanz>-api.localmind.ai/v1/chat/completions`, Authentication über ein Header-Auth-Credential mit `Authorization: Bearer <LOCALMIND_API_KEY>`. Im Body trägt `model` die Agent-UUID aus `GET /v1/models`:

```json Request-Body theme={null}
{
  "model": "<agent_uuid>",
  "messages": [
    {
      "role": "system",
      "content": "Du bist ein hilfreicher E-Mail-Assistent. Analysiere die folgende E-Mail und erstelle eine professionelle Antwort."
    },
    {
      "role": "user",
      "content": "Betreff: {{ $json.emailSubject }}\nNachricht: {{ $json.emailBody }}\nAbsender: {{ $json.senderEmail }}"
    }
  ],
  "stream": false
}
```

Details zu Auth, Base-URL und Stolperfallen: [Localmind Agent in n8n einbinden](/automate/Localmind-Agent).

### 4. Antwort senden (HTTP Request)

Ein zweiter **HTTP Request**-Node sendet die Antwort per **POST** an Ihre E-Mail-API (z.B. SendGrid, Mailgun). Mit `$('NodeName')` greifen Sie auf Daten früherer Nodes zu:

```json theme={null}
{
  "to": "{{ $('Set').item.json.senderEmail }}",
  "subject": "Re: {{ $('Set').item.json.emailSubject }}",
  "text": "{{ $json.choices[0].message.content }}"
}
```

## Häufige Patterns

### Pattern 1: Bedingte Verarbeitung

Verwenden Sie **IF Nodes** für bedingte Logik:

```
Trigger → IF (Bedingung) → [True Branch] → [False Branch]
```

```javascript IF Bedingung Beispiel theme={null}
// Prüfe ob E-Mail wichtig ist
{{ $json.importance === 'high' }}

// Prüfe ob Betreff bestimmtes Keyword enthält
{{ $json.subject.includes('URGENT') }}

// Prüfe ob Absender in Whitelist
{{ ['admin@company.com', 'support@company.com'].includes($json.senderEmail) }}
```

### Pattern 2: Verzweigte Verarbeitung

Ein Node kann mehrere ausgehende Verbindungen haben. n8n führt die Branches **nacheinander** aus (nicht parallel) — jeder Branch erhält aber dieselben Input-Daten und arbeitet unabhängig weiter:

```
Trigger → [Branch 1] → Agent 1
       → [Branch 2] → Agent 2
       → [Branch 3] → Agent 3
```

### Pattern 3: Error Handling

Implementieren Sie in jedem Produktiv-Workflow eine Fehlerbehandlung — der **Error Trigger**-Node ist dafür der zentrale Baustein (siehe [Retry Logic](/automate/Retry-Logic)):

```
Workflow → Try/Catch → Error Trigger → Notification
```

### Pattern 4: Daten stringifyen

Wenn eine API oder ein Textfeld einen **String** statt eines JSON-Objekts erwartet, wandeln Sie Objekte mit `JSON.stringify()` um — und mit `JSON.parse()` wieder zurück. Für einfache Werte (Strings, Zahlen) ist das unnötig; nutzen Sie es gezielt dort, wo eine Gegenstelle JSON-Strings erwartet — etwa HTTP-Request-Bodies, Logging oder Webhook-Payloads:

```javascript Expression-Beispiele theme={null}
// Objekt als JSON-String übergeben (z.B. im HTTP Request Body)
{{ JSON.stringify($json) }}

// Einzelnes Feld stringifyen
{{ JSON.stringify($json.user) }}

// String zurück in ein Objekt wandeln
{{ JSON.parse($json.jsonString) }}
```

## Best Practices

### 1. Use Case First, Workflow Second

Beginnen Sie mit der Problemdefinition, nicht mit der Implementierung — der Workflow passt sich an Ihre Anforderungen an, nicht umgekehrt:

1. **Geschäftsproblem definieren** — z.B. „Automatische Kategorisierung von Support-E-Mails mit Weiterleitung dringender Anfragen an das Support-Team."
2. **Input und Output spezifizieren** — Input: E-Mail mit Betreff, Absender, Inhalt. Output: Kategorisierung (dringend/normal) mit entsprechender Weiterleitung.
3. **Logische Schritte identifizieren** — den Prozess in 3–5 Verarbeitungsschritte zerlegen (E-Mail empfangen → mit Agent analysieren → kategorisieren → bei „dringend" benachrichtigen).
4. **Nodes auswählen** — basierend auf den definierten Schritten.

Starten Sie mit einer einfachen Implementierung und iterieren Sie anhand der Ergebnisse.

### 2. Vorlagen und bestehende Lösungen nutzen

Durchsuchen Sie vor der Implementierung die Automate-Vorlagenbibliothek und Community-Beispiele für ähnliche Use Cases. Das beschleunigt die Entwicklung durch bewährte Patterns, zeigt Ihnen neue Nodes und Implementierungsansätze und vermeidet bekannte Fehlerquellen.

### 3. Data Flow Principle verstehen

Jeder Automate-Workflow folgt dem Prinzip **Input → Transform → Output**. Häufige Datenquellen sind eigene Datenbanken (Airtable, Google Sheets, Supabase) und öffentliche APIs (HTTP Request Node, dedizierte API-Nodes).

Für HTTP Request Nodes hat sich dieser Ablauf bewährt: cURL-Befehl aus der API-Dokumentation kopieren, in Postman importieren und mit realen Parametern testen, Funktionalität für Ihren Use Case verifizieren — und erst dann den validierten Request nach Automate übertragen. Postman erleichtert Testen und Debugging von API-Requests erheblich.

### 4. Kern-Nodes beherrschen

Die meisten Workflows kommen mit wenigen Nodes aus:

* **Set/Edit Fields:** Spalten extrahieren, Datentypen konvertieren, Datenstrukturen anpassen
* **Filter:** ungültige Datensätze entfernen (null-Werte, Duplikate, Formatfehler)
* **Merge:** Spalten hinzufügen oder Datensätze kombinieren
* **Code:** komplexe Transformationen, die mit Standard-Nodes nicht möglich sind — KI-Assistenten können den Code aus Input-Struktur und gewünschtem Output generieren
* **IF:** bedingte Verarbeitungslogik
* **HTTP Request (Localmind Agent):** für die meisten KI-basierten Aufgaben — der Agent-Aufruf läuft über `POST /v1/chat/completions`, siehe [Localmind Agent in n8n einbinden](/automate/Localmind-Agent)

Typisches Workflow-Pattern:

```
HTTP Request → Set (Datenbereinigung) → Filter (Validierung) → 
Agent (Analyse) → Set (Output-Formatierung) → Datenbank-Insert
```

### 5. Node-Outputs pinnen für effizientes Testing

Führen Sie den Workflow einmal vollständig aus, pinnen Sie die Outputs über das Pin-Icon und testen Sie nachgelagerte Nodes ohne erneute API-Calls oder KI-Verarbeitung. Gepinnte Daten können Sie bearbeiten, um verschiedene Szenarien inklusive Edge Cases zu simulieren.

<Warning>
  **Kostenoptimierung:** Jeder Test eines Agent-Aufrufs ohne Pinning verbraucht Credits. Bei wiederholten Tests summiert sich das erheblich. Pinnen Sie Outputs immer für Testzwecke.
</Warning>

### 6. Sub-Workflows für modulare Architektur

Teilen Sie komplexe Workflows in wiederverwendbare Sub-Workflows auf: Haupt-Workflows enthalten maximal 4–6 Nodes, häufig verwendete Funktionalität (Datenbereinigung und Validierung, Error Handling und Retry-Logik, Benachrichtigungen) wandert in Sub-Workflows in einem dedizierten Components-Ordner. Das macht Fehler schnell auf einen Sub-Workflow eingrenzbar, Komponenten in verschiedenen Workflows wiederverwendbar und Haupt-Workflows übersichtlich.

### 7. Umfassendes Error Logging implementieren

Loggen Sie bei Fehlern alle relevanten Informationen: Fehlermeldung und Fehlertyp, Fehlerstelle (Node-Name, Execution-ID), Input-Daten, die den Fehler verursacht haben, Zeitstempel und Workflow-Kontext sowie Retry-Versuche und deren Ergebnisse. Loggen Sie auch erfolgreiche Executions — das ermöglicht Berichte über Workflow-Performance und macht Trends sichtbar.

### 8. Credit-Verbrauch überwachen

Agent-Aufrufe werden in Localmind in **Credits** abgerechnet. Damit Automatisierungen kalkulierbar bleiben: Prüfen Sie den Token-Verbrauch pro Execution (`usage.total_tokens` der Agent-Antwort), identifizieren Sie Verbrauchstreiber (lange Prompts, große Kontexte, unnötige Wiederholungs-Aufrufe) und pinnen Sie beim Testen die Outputs (Best Practice 5). Loggen Sie den Token-Verbrauch von Anfang an mit — unerwarteter Credit-Verbrauch beeinträchtigt das Vertrauen in Automatisierungen.

Weiterführend: [Testing](/automate/testing) (jeden Node einzeln testen), [Performance](/automate/performance) (API-Calls, Caching, Timeouts) und [Sicherheit](/automate/security) (Credentials sicher speichern, Environment Variables für sensible Daten).

## Debugging

Die häufigsten Probleme in Kürze — mehr in der [Debugging-Anleitung](/automate/debugging):

* **Workflow läuft nicht** — „Active"-Toggle, Trigger-Konfiguration und Credentials prüfen.
* **Daten kommen nicht korrekt an** — Expression-Syntax (`{{ $json.fieldName }}`) und Datenformate zwischen Nodes prüfen.
* **Agent antwortet nicht** — Agent-UUID im `model`-Feld gegen `GET /v1/models` abgleichen, Base-URL (`-api`-Host statt `-app`) und API-Key-Scope prüfen — Details unter [Localmind Agent in n8n einbinden](/automate/Localmind-Agent#stolperfallen).

Zur Analyse nutzen Sie die Execution Logs: Im **„Executions"**-Tab eine fehlgeschlagene Execution auswählen, auf jeden Node klicken, um Input/Output zu sehen, und die Error-Messages lesen.

<Tip>
  Aktivieren Sie „Save Data on Error" in den Workflow-Einstellungen, um Debugging zu erleichtern.
</Tip>

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Custom Nodes" icon="puzzle" href="/automate/Custom-Nodes">
    Erstellen Sie eigene Nodes für spezifische Anwendungsfälle.
  </Card>

  <Card title="Localmind API" icon="code" href="/api-reference/introduction">
    Endpoint-Referenz und Code-Beispiele für Integrationen.
  </Card>
</CardGroup>

Bei Fragen zur Einrichtung Ihrer ersten Workflows hilft unser Support-Team unter [support@localmind.ai](mailto:support@localmind.ai).
