n8n × PopNow

KI-Bilder und -Videos in n8n erzeugen

Nichts zu installieren: Der eingebaute HTTP-Request-Node von n8n ruft die PopNow API direkt auf, in n8n Cloud genauso wie selbst gehostet. Workflow einfügen, Schlüssel eintragen, starten.

In vier Schritten eingerichtet

  1. Leg in n8n ein Header-Auth-Credential an. Name: Authorization. Value: Bearer, ein Leerzeichen, dann dein sk-popnow--Schlüssel.
  2. Kopier den Workflow unten und füg ihn mit Strg + V (Cmd + V auf dem Mac) auf einer leeren Arbeitsfläche ein.
  3. Öffne den Node Create task, wähl das Credential aus und ändere dann Modell und Prompt.
  4. Starte ihn. Der letzte Node liefert die Datei-URL; häng einen Google-Drive-, Slack- oder S3-Node dahinter, um die Datei zu behalten.

Der Workflow

Task anlegen, warten, prüfen, wiederholen, bis er fertig ist, dann den Datei-Link an den nächsten Node übergeben.

  1. Start
  2. Create task
  3. Wait 5 seconds
  4. Check task
  5. Done?
  6. File URL

↺ Done? → Wait 5 seconds

popnow-workflow.json
{
  "name": "PopNow: generate and get the file",
  "nodes": [
    {
      "id": "b1f0c1a2-0001-4c55-9a10-000000000001",
      "name": "Start",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ],
      "parameters": {}
    },
    {
      "id": "b1f0c1a2-0002-4c55-9a10-000000000002",
      "name": "Create task",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        220,
        0
      ],
      "parameters": {
        "method": "POST",
        "url": "https://api.popnow.ai/api/v1/jobs/createTask",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Idempotency-Key",
              "value": "={{ $execution.id }}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"model\": \"google/nano-banana-2.1/text-to-image\",\n  \"input\": {\n    \"prompt\": \"A ceramic teapot on a linen cloth, soft window light, muted palette\",\n    \"aspect_ratio\": \"16:9\",\n    \"resolution\": \"1k\",\n    \"output_format\": \"png\"\n  }\n}",
        "options": {}
      }
    },
    {
      "id": "b1f0c1a2-0003-4c55-9a10-000000000003",
      "name": "Wait 5 seconds",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        440,
        0
      ],
      "parameters": {
        "amount": 5
      },
      "webhookId": "4d3c2b1a-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
    },
    {
      "id": "b1f0c1a2-0004-4c55-9a10-000000000004",
      "name": "Check task",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        660,
        0
      ],
      "parameters": {
        "url": "https://api.popnow.ai/api/v1/jobs/recordInfo",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "taskId",
              "value": "={{ $('Create task').item.json.data.taskId }}"
            }
          ]
        },
        "options": {}
      }
    },
    {
      "id": "b1f0c1a2-0005-4c55-9a10-000000000005",
      "name": "Done?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        880,
        0
      ],
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose"
          },
          "conditions": [
            {
              "id": "c0ffee00-0000-4000-8000-000000000001",
              "leftValue": "={{ ['succeeded','failed','canceled','expired'].includes($json.data.state) && !($json.data.output?.assets ?? []).some(a => a.pending && !a.unavailable) }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      }
    },
    {
      "id": "b1f0c1a2-0006-4c55-9a10-000000000006",
      "name": "File URL",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1100,
        -100
      ],
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "c0ffee00-0000-4000-8000-000000000002",
              "name": "state",
              "value": "={{ $json.data.state }}",
              "type": "string"
            },
            {
              "id": "c0ffee00-0000-4000-8000-000000000003",
              "name": "fileUrl",
              "value": "={{ $json.data.output?.assets?.[0]?.url ?? '' }}",
              "type": "string"
            },
            {
              "id": "c0ffee00-0000-4000-8000-000000000004",
              "name": "error",
              "value": "={{ $json.data.errorMessage ?? '' }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      }
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Create task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create task": {
      "main": [
        [
          {
            "node": "Wait 5 seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 5 seconds": {
      "main": [
        [
          {
            "node": "Check task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check task": {
      "main": [
        [
          {
            "node": "Done?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Done?": {
      "main": [
        [
          {
            "node": "File URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 5 seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

Reines n8n-JSON. Modell und input kommen von dieser Seite und bestehen die Prüfung so, wie sie sind.

Was du anpasst

Ausgaben im Griff behalten. Gib dem n8n-Schlüssel in der Konsole ein eigenes Tageslimit und erlaubte Modelle. Eine außer Kontrolle geratene Schleife stoppt dann am Limit, statt dein Guthaben zu leeren.

model
Der Modellname. Jede Modellseite im API-Bereich zeigt ihn, mit Kopier-Button.
input
Prompt und Optionen für dieses Modell. Die API-Seite des Modells listet jedes Feld mit Bereich und Standardwert.
callBackUrl
Optional. Zeig damit auf einen n8n-Webhook-Node und spar dir die Warteschleife: Wir schicken den fertigen Task dorthin.
Idempotency-Key
Ist schon auf die Ausführungs-ID gesetzt, damit ein wiederholter Node für denselben Lauf nie doppelt zahlt.

Gute Modelle für den Anfang

Schnelle, günstige Kandidaten für Automationen. Jeder Link zeigt Modellname, Parameter und Preis.

Fragen zu n8n

Brauche ich einen PopNow-Community-Node?

Nein. Der Workflow nutzt nur Nodes, die mit n8n mitkommen: Manual Trigger, HTTP Request, Wait, If und Edit Fields. Er läuft in n8n Cloud ebenso wie selbst gehostet.

Wie nutze ich Bilder aus vorherigen Nodes?

Gib im Bildfeld einen öffentlichen https-Link an. Liegt die Datei nur in n8n, lad sie zuerst über die API hoch und nutz die zurückgegebene popnow://-Referenz.

Was kostet ein Lauf?

Dieselben Credits wie auf der Website, pro Aufruf. Ein Nano-Banana-Bild kostet ein paar Credits, Video wird pro Sekunde abgerechnet. Fehlgeschlagene Tasks werden erstattet.

Wie lange dauert ein Lauf?

Bilder sind meist in unter einer Minute fertig, Videos in ein paar Minuten. Die Warteschleife prüft alle fünf Sekunden; mit einer callBackUrl wartest du gar nicht.