HTTP Request Node gibt HTML statt Audio Binary nach Loop durch Gemini JSON Array zurück

Beschreibe das Problem/den Fehler/die Frage

Was ist das Problem?

Ich versuche, einen automatisierten Workflow zur Videoinhalterstellung zu erstellen. Mein Basic LLM Chain-Knoten (Google Gemini) generiert ein Videoskript im JSON-Array-Format. Ich parse dieses Array mit dem Edit Fields (Set)-Knoten mithilfe von {{ JSON.parse($json.text) }} und übergebe es dann an einen Loop Over Items-Knoten, um jede Szene sequenziell zu verarbeiten.

Innerhalb der Schleife befindet sich ein HTTP Request-Knoten, der jeden Szenentext an eine kostenlose TTS-API (StreamElements) senden und die Audio als Binärdatei herunterladen soll. Statt jedoch eine .mp3-Wiedergabeschaltfläche/Binärdatei zu erhalten, lädt der HTTP Request-Knoten den HTML-Quellcode der Website herunter (data.html, text/html), oder es tritt ein incorrect host / domain value-/Invalid URL-Fehler auf, wenn ich versuche, auf die dynamischen Daten zu verweisen.


Meine Workflow-Struktur

  1. Chat Trigger :right_arrow: Startet den Flow.

  2. Basic LLM Chain (Gemini) :right_arrow: Generiert JSON-Array-Skriptzeichenfolge.

  3. Edit Fields (Set) :right_arrow: Verwendet {{ JSON.parse($json.text) }}, um ein verwertbares Array namens sahneler zu erstellen.

  4. Loop Over Items :right_arrow: Teilt das Array in einzelne Elemente auf (Batch Size: 1).

  5. HTTP Request (Ses Üretici) :right_arrow: Auf GET-Methode eingestellt, Response Format ist auf File eingestellt. Loop-Ausgabe zeigt zurück auf den Loop-Knoten.

Der Fehler & aktueller Status

Wenn ich versuche, den dynamischen Text in der URL-Zeichenfolge wie folgt zu verwenden:
https://streamelements.com{{ encodeURIComponent($json.sahneler.metin) }}

Zeigt die Knotenvorschau undefined an oder wirft einen Invalid URL-Fehler. Es scheint, dass der HTTP Request-Knoten den Überblick über die Datenstruktur aus dem Loop-Knoten verliert oder die Kodierung nicht richtig handhaben kann, was dazu führt, dass der HTML-Code der Basis-Domain statt der Audio-Nutzlast heruntergeladen wird.

Womit ich Hilfe benötige:

Wie kann ich korrekt auf die text-Eigenschaft des aktuellen Loop-Elements in der HTTP Request-URL verweisen, damit die Skript-Absätze dynamisch übergeben werden und der .mp3-Dateidownload korrekt ausgelöst wird?

Vielen Dank im Voraus!



(Wähle die Knoten auf deinem Canvas aus und verwende die Tastaturkürzel CMD+C/STRG+C und CMD+V/STRG+V, um den Workflow zu kopieren und einzufügen.)

Teile die Ausgabe des letzten Knotens mit

Informationen zu deinem n8n-Setup

  • n8n-Version:
  • Datenbank (Standard: SQLite):
  • n8n EXECUTIONS_PROCESS-Einstellung (Standard: own, main):
  • n8n läuft über (Docker, npm, n8n cloud, Desktop-App):
  • Betriebssystem:

Versuchen Sie diese URL einfach im HTTP-Request-Node https://api.streamelements.com/kappa/v2/speech?voice=Brian&text={{ encodeURIComponent($json.metin) }}
Ich hoffe, das behebt Ihr Problem

Willkommen @Engin_Keser!

SE-automations hat den URL-Fix perfekt hinbekommen. Eine Sache, die auf der Expression-Seite der Klarstellung bedarf: In deinem Set-Node speicherst du das geparste Array in einem Feld namens sahneler. Wenn Loop Over Items es verarbeitet, gibt dir jede Iteration ein einzelnes Element direkt aus diesem Array als $json — wenn deine Array-Elemente also wie {"metin": "some text"} aussehen, greifst du auf den Text mit $json.metin zu, nicht mit $json.sahneler.metin. Die finale URL sollte so aussehen:

https://api.streamelements.com/kappa/v2/speech?voice=Brian&text={{ encodeURIComponent($json.metin) }}

Stelle auch sicher, dass Response Format im HTTP Request-Node auf File gesetzt ist, um die binäre .mp3 zurückzubekommen statt geparster JSON.

Willkommen bei der n8n-Community @Engin_Keser
du musst die Audio-URL vor der HTTP-Anfrage normalisieren und im Binärmodus herunterladen.
Learn how to use binary data in n8n (video included) | n8n workflow template

:slightly_smiling_face: Behebt das das Problem