Status: Geplant · Schwierigkeit: Fortgeschritten · Werkzeuge: n8n, Claude API (Anthropic), Webhook

Die Idee

↑ Zur Kapitelübersicht

Beim Gitarrespielen kommt oft der Moment: Ich suche einen Akkord, der sich nach bestimmten Gefühl anfühlt – aber ich kenne seinen Namen nicht.

Gitarrenbücher und Akkord-Apps funktionieren umgekehrt: Man kennt den Namen und sucht das Griffbild. Was fehlt, ist der entgegengesetzte Weg: eine Beschreibung eingeben – „etwas Melancholisches in Moll, nicht zu dunkel" – und sinnvolle Akkordvorschläge mit Erklärung zurückbekommen.

Genau das kann ein KI-Agent. Er versteht die natürlichsprachliche Beschreibung, schlägt passende Akkorde vor, erklärt warum sie passen und kann auf Rückfragen eingehen – ohne dass jeder Schritt vorher programmiert sein muss.

Beispiel-Dialog:

Eingabe: „Ich suche etwas Melancholisches in Moll, passend für einen ruhigen Fingerpicking-Song."

Antwort: „Für einen melancholischen Fingerpicking-Song empfehle ich Am – F – C – G als Grundgerüst. Am gibt den dunklen Einstieg, F und C schaffen eine weiche Spannung, G löst auf ohne zu hell zu klingen. Alternativ wirkt Dm – Am – Bb – F noch introvertierter. Magst du es noch düsterer, wäre Am – G – F – E eine klassische andalusische Kadenz."

Rückfrage: „Kannst du das etwas jazziger machen?"

Antwort: „Gerne – für einen jazzig-melancholischen Fingerpicking-Ansatz wären Am7 – Dm7 – G7 – Cmaj7 interessant …"

Was das Projekt können soll

↑ Zur Kapitelübersicht

Klare Anforderungen – und bewusste Nicht-Ziele.

Muss-Anforderungen

✓ Natürlichsprachliche Beschreibungen verstehen (Stimmung, Tonart, Spielstil, Genre).
✓ Passende Akkorde mit Namen und Begründung vorschlagen.
✓ Auf Rückfragen eingehen und Vorschläge anpassen.
✓ Über einen Webhook aufrufbar sein – von einer einfachen Webseite oder Testoberfläche.
✓ Antwort in lesbarem deutschen Text zurückgeben.

Bewusst nicht enthalten

✗ Keine Griffbilder oder Tabulatur-Ausgabe.
✗ Keine Audio-Ausgabe oder MIDI-Generierung.
✗ Keine Benutzerverwaltung oder gespeicherte Favoriten.
✗ Keine öffentliche API ohne Absicherung.

Die Lösung im Überblick

↑ Zur Kapitelübersicht

Ein Webhook empfängt die Anfrage, ein KI-Agent verarbeitet sie, die Antwort geht sofort zurück.

Workflow-Ablauf:

[Webhook Trigger] ← empfängt POST-Anfrage
  ↓ { "frage": "Ich suche..." }
[IF Node] Eingabe vorhanden?
  ↓ true
[AI Agent] Claude analysiert, antwortet
  ↓ Akkordvorschläge + Erklärung
[Respond to Webhook] Antwort zurücksenden

Warum ein Agent und kein einfacher LLM-Node?

Der Assistent soll Rückfragen verstehen und auf den bisherigen Gesprächsverlauf eingehen – „kannst du das jazziger machen?" setzt voraus, dass der Agent weiß, was er zuvor vorgeschlagen hat. Dafür braucht es Gedächtnis über den Konversationsverlauf, was der AI Agent Node mit Window Buffer Memory löst. Ein einfacher Basic LLM Chain Node hat kein Gedächtnis – jede Anfrage wäre ohne Kontext.

Warum Claude?

Claude (Anthropic) zeigt beim Erklären von Zusammenhängen – Akkordbeziehungen, Stimmungscharakter, Musiktheorie – besonders nuancierte und gut strukturierte Antworten. Für ein Projekt, das auf Verständnis und Erklärung setzt statt auf schnelle Einzelantworten, ist das der passende Grundcharakter.

Voraussetzungen

↑ Zur Kapitelübersicht

Was vor dem ersten Node bereit sein muss.

n8n-Instanz mit öffentlicher URL

Der Webhook muss von außen erreichbar sein – entweder über n8n Cloud, eine Docker-Instanz mit eigener Domain, oder lokal mit einem Tunnel-Dienst wie ngrok (kostenlose Stufe ausreichend für Tests).
n8n installieren

Anthropic API-Key (Claude)

Kostenpflichtig – aber günstig für gelegentliche Nutzung. Claude Haiku (das schnellste Modell) kostet deutlich weniger als 1 Cent pro typischer Anfrage.
Registrierung und Key-Erstellung unter:
console.anthropic.com
Ein Startguthaben von 5 $ reicht für hunderte Testanfragen.
API-Keys verwalten

Grundkenntnisse Musiktheorie (optional)

Nicht zwingend nötig – der Agent erklärt alles. Aber wer Begriffe wie Dur, Moll, Septakkord und Kadenzen kennt, kann präzisere Anfragen formulieren und die Antworten besser einordnen.

Schritt 1: Webhook-Trigger – auf Anfragen warten

↑ Zur Kapitelübersicht

Der Webhook-Trigger wartet auf eingehende POST-Anfragen und startet den Workflow bei jeder neuen Frage sofort.

Node-Konfiguration

Node: Webhook
Name: „Akkord-Anfrage empfangen"

HTTP Method: POST
Path: akkord-assistent

Die vollständige Webhook-URL lautet dann:
https://[deine-n8n-domain]/webhook/akkord-assistent

Response Mode: „Using 'Respond to Webhook' node"
(damit n8n wartet bis der Agent fertig ist, bevor er antwortet – nicht sofort nach Empfang).

Erwartetes Eingabeformat (JSON)

Die Anfrage wird als POST-Body gesendet:

{
  "frage": "Ich suche einen melancholischen Akkord in Moll",
  "sessionId": "user-123"
}

frage – die eigentliche Anfrage (Pflicht).
sessionId – optionaler Bezeichner für den Konversationsspeicher, damit der Agent bei Rückfragen den Verlauf kennt.

Schritt 2: Eingabe validieren

↑ Zur Kapitelübersicht

Bevor der Agent arbeitet, prüft ein IF Node ob überhaupt eine Frage vorhanden ist.

Node-Konfiguration

Node: IF
Name: „Frage vorhanden?"

Condition:
Value 1 (Expression): {{ $json.body.frage }}
Operation: Is not empty

false-Pfad: Fehlermeldung zurücksenden

Am false-Ausgang einen Respond to Webhook-Node anhängen:

Response Code: 400
Response Body:
{ "fehler": "Bitte eine Frage im Feld 'frage' mitschicken." }

So bekommt der Aufrufer eine klare Fehlermeldung statt einer leeren Antwort.

Schritt 3: KI-Agent – Akkorde analysieren

↑ Zur Kapitelübersicht

Der AI Agent Node ist das Herzstück. Er empfängt die Frage, denkt nach und formuliert eine musiktheoretisch fundierte Antwort.

Node-Konfiguration

Node: AI Agent
Name: „Akkord-Assistent"

Chat Model: Anthropic Chat Model → Credential auswählen → Model: claude-haiku-4-5 (schnell und günstig, für Akkordvorschläge ausreichend;
für detailliertere Musiktheorie-Erklärungen alternativ claude-sonnet-4-5)

Prompt (Expression):
{{ $json.body.frage }}

System Prompt: Siehe Kapitel „Der System-Prompt".

Max Iterations: 3
(Der Assistent braucht keine Werkzeuge – er antwortet aus seinem Musikwissen. Wenige Iterationen reichen, halten die Kosten gering.)

Memory: Konversationsverlauf speichern

Am Memory-Eingang des AI Agent Nodes einen Window Buffer Memory-Node anhängen:

Session ID (Expression):
{{ $json.body.sessionId ?? 'default' }}

Context Window Length: 10
(Die letzten 10 Nachrichten werden gespeichert – ausreichend für einen typischen Akkord-Dialog.)

So erinnert sich der Agent an den bisherigen Verlauf und kann „kannst du das jazziger machen?" korrekt auf den vorherigen Vorschlag beziehen.

Schritt 4: Antwort zurücksenden

↑ Zur Kapitelübersicht

Der Respond-to-Webhook-Node sendet die Antwort des Agenten sofort zurück an den Aufrufer.

Node-Konfiguration

Node: Respond to Webhook
Name: „Antwort senden"

Response Code: 200
Response Data: „First Entry JSON"

Response Body (Expression):
{{ JSON.stringify({ antwort: $json.output }) }}

Die Antwort des Agenten steht in $json.output und wird als JSON-Objekt zurückgegeben:

{ "antwort": "Für einen melancholischen Fingerpicking-Song ..." }

Der System-Prompt – Herzstück des Agenten

↑ Zur Kapitelübersicht

Der System-Prompt definiert die Persönlichkeit, das Wissen und das Verhalten des Agenten. Er ist das wichtigste Konfigurationselement – wichtiger als jeder Node-Parameter.

System-Prompt (kopierfertig)
Du bist ein erfahrener Gitarrenlehrer und Musiktheoretiker
mit Schwerpunkt auf westlicher Harmonielehre, Folk, Fingerpicking
und Singer-Songwriter-Musik.

Deine Aufgabe ist es, auf Beschreibungen von Stimmungen,
Spielstilen oder musikalischen Ideen mit konkreten
Akkordvorschlägen zu antworten.

Halte dich an folgende Regeln:
- Antworte immer auf Deutsch.
- Nenne konkrete Akkordnamen (z.B. Am, F, G7, Cmaj7).
- Erkläre kurz, warum der jeweilige Akkord zur Beschreibung passt.
- Schlage 2–3 Alternativen oder Variationen vor.
- Wenn der Nutzer nach einer Variation fragt ("jazziger",
  "düsterer", "einfacher"), beziehe dich auf deinen
  vorherigen Vorschlag und passe ihn an.
- Halte Antworten kompakt – maximal 10 Sätze.
- Wenn die Anfrage keinen Bezug zu Musik oder Gitarre hat,
  weise höflich darauf hin, dass du nur bei
  Akkord- und Musikfragen helfen kannst.

Warum der letzte Punkt wichtig ist:
Ein Webhook ohne Authentifizierung ist öffentlich erreichbar. Ohne Einschränkung im System-Prompt könnte jemand den Agenten für beliebige Anfragen nutzen – auf Kosten des eigenen API-Budgets. Die Einschränkung auf Musik-Themen ist die einfachste Form der Missbrauchs-Begrenzung. Besser wäre zusätzlich ein geheimer Token im Webhook-Header.

Workflow exportieren und importieren

↑ Zur Kapitelübersicht

Der vollständige Workflow steht als JSON-Datei zum Download bereit.

Nach dem Import anpassen

1. Anthropic-Credential hinterlegen und im AI Agent Node auswählen.
2. System-Prompt nach eigenen Vorlieben anpassen – z.B. für Blues, Jazz oder klassische Gitarre.
3. Webhook-URL notieren und in die eigene Testoberfläche oder ein einfaches HTML-Formular eintragen.
4. Mit einem POST-Request testen (z.B. über den Browser oder Hoppscotch – eine kostenlose API-Testoberfläche).

Workflow-JSON

Alternativ zum Download: Inhalt kopieren und in n8n über Workflows → Import from clipboard einfügen.


                    

Sicherheit & Credentials

↑ Zur Kapitelübersicht

Ein öffentlicher Webhook braucht eine Minimalabsicherung.

Anthropic API-Key

Credential-Typ: Anthropic API (n8n built-in)
Im Anthropic Console unter „Limits" ein monatliches Ausgabenlimit setzen – z.B. 5 $ – damit ein unerwarteter Anstieg keine hohen Kosten verursacht.

Webhook absichern (empfohlen)

Im Webhook-Node unter „Authentication"„Header Auth" aktivieren.
Name: X-Webhook-Token
Value: ein selbst gewählter, langer Zufallsstring.

Jede Anfrage muss diesen Header mitschicken. Anfragen ohne den korrekten Token werden von n8n automatisch abgewiesen – ohne den Workflow zu starten.

Rate Limiting (einfache Variante)

Für private Nutzung ausreichend: Das Ausgabenlimit im Anthropic Console verhindert unkontrollierte Kosten. Wer den Webhook öffentlich teilt, sollte zusätzlich einen IF-Node voranstellen, der die Länge der Anfrage begrenzt – z.B. maximal 500 Zeichen.

Was ich gelernt habe

↑ Zur Kapitelübersicht

Ein ehrliches Fazit – was überrascht hat, was anders lief als erwartet.

✅ Hat gut funktioniert

Die Qualität der Akkordvorschläge von Claude ist überraschend gut – auch für spezifische Anfragen wie „andalusische Kadenz auf der E-Gitarre" oder „offene Stimmungen für Slide-Gitarre". Der System-Prompt ist der wichtigste Hebel: Eine klare Rollenbeschreibung macht die Antworten deutlich fokussierter als ohne. Window Buffer Memory funktioniert zuverlässig – Rückfragen werden korrekt auf den Kontext bezogen.

⚠️ Hat länger gedauert als gedacht

Der Unterschied zwischen Response Mode: Immediately und Using 'Respond to Webhook' node im Webhook-Trigger ist nicht offensichtlich – aber entscheidend. Mit Immediately bekommt man eine leere Antwort zurück, weil der Workflow noch läuft. Erst Using 'Respond to Webhook' node wartet auf das Ergebnis des Agenten.

❌ Sackgasse

Versucht, Griffbilder als ASCII-Diagramme in die Antwort zu integrieren – der Agent produziert sie unzuverlässig und oft falsch. Besser: Akkordnamen nennen und auf externe Ressourcen wie chordbook.com oder ultimate-guitar.com verweisen lassen.

Troubleshooting

↑ Zur Kapitelübersicht

Die häufigsten Probleme beim Aufbau dieses Projekts.

Problem: Webhook antwortet sofort mit leerem Body

Ursache: Response Mode im Webhook-Node steht auf „Immediately".
Lösung: Im Webhook-Node auf „Using 'Respond to Webhook' node" umstellen.

Problem: Agent antwortet auf jede Frage gleich

Ursache: System-Prompt fehlt oder ist zu allgemein.
Lösung: Den System-Prompt aus Kapitel 9 einfügen. Konkrete Anweisungen zur Struktur der Antwort (Akkordnamen, Begründung, Alternativen) machen den größten Unterschied.

Problem: Memory funktioniert nicht – Agent kennt Kontext nicht

Ursache A: Window Buffer Memory Node nicht verbunden.
Ursache B: Session-ID ändert sich bei jeder Anfrage (z.B. weil sessionId im Body fehlt und der Fallback 'default' von mehreren Nutzern geteilt wird).
Lösung: Feste Session-ID beim Testen mitschicken: { "frage": "...", "sessionId": "test-1" }

Problem: 401 beim Anthropic API-Aufruf

Ursache: API-Key abgelaufen, gesperrt oder im Credential-Feld nicht korrekt gespeichert.
Lösung: In der Anthropic Console prüfen ob der Key aktiv ist. Credential in n8n löschen und neu anlegen.

Ideen für Weiterentwicklung

↑ Zur Kapitelübersicht

Was das Projekt in einer späteren Version können könnte.

Einfaches Web-Interface

Eine kleine HTML-Seite mit Eingabefeld und Ausgabebereich, die den Webhook aufruft. Kein Framework nötig – reines JavaScript mit fetch() reicht für den Anfang.

Tonart-Erkennung aus Beschreibung

Den Agenten mit einem Werkzeug ausstatten, das aus einer Tonart alle diatonischen Akkorde zurückgibt – als strukturierte Grundlage für die Vorschläge.

Speichern von Favoriten

Gefällt ein Vorschlag, kann er in eine Google-Sheets-Tabelle oder Airtable-Datenbank geschrieben werden – als persönliches Akkord-Notizbuch. Ein zweiter Workflow könnte die gespeicherten Akkorde auf Anfrage ausgeben.

Stimmungsbasierte Songstruktur

Statt einzelner Akkorde einen vollständigen Songaufbau vorschlagen lassen: Intro, Strophe, Refrain, Bridge – mit passenden Akkordprogressionen für jede Sektion.