Was macht NoneLinear Bild?
Generiere oder transformiere Bilder mit dem gebündelten, abhängigkeitsfreien Node.js-Skript. Rufe nicht die
nonelinear- oder nl-CLI auf und verwende nicht den integrierten Bildgenerator des Host-Agenten für eine
NoneLinear-Anfrage.
Arbeitsablauf
- Betrachte eine explizite Aufforderung zum Generieren oder Transformieren eines Bildes als Autorisierung für eine kostenpflichtige API-Anfrage. Stelle keine API-Anfrage, wenn der Benutzer nur nach Funktionen oder Einrichtung fragt.
- Wähle die Operation basierend auf der Absicht des Benutzers aus:
generate: keine Referenzbilder.edit: genau ein lokaler Bildpfad oder eine öffentliche HTTPS-Referenzbild-URL.fuse: mindestens zwei lokale Pfade oder öffentliche HTTPS-Referenzbild-URLs.
- Extrahiere die Eingabeaufforderung und optionale Angaben zu Modell, Seitenverhältnis, Größe, Qualität und Anzahl. Falls der Benutzer
ein transparentes Bild wünscht, wende die folgende Voreinstellung für transparente Bilder an. Für
gpt-image-2ist die Qualität standardmäßiglow, es sei denn, der Benutzer fordert einen anderen unterstützten Wert an. - Standardmäßig werden andere Anfragen auf
gemini-2.5-flash-imagegesetzt. Fordere immer URL-Ausgabe an. - Lies references/models.md und, wenn genaue Grenzen wichtig sind, references/model-capabilities.json, bevor du ein nicht standardmäßiges Modell auswählst oder modellspezifische Parameter hinzufügst. Erfinde niemals eine Modell-ID oder einen nicht unterstützten Parameter.
- Finde
scripts/generate-image.mjsrelativ zu dieserSKILL.mdund führe es mit Node.js 18 oder neuer aus. In Claude Code ist${CLAUDE_SKILL_DIR}das Skill-Verzeichnis. In anderen Hosts verwende das absolute Verzeichnis, aus dem dieser Skill geladen wurde. - Analysiere das einzelne JSON-Objekt, das auf stdout ausgegeben wird. Betrachte den Vorgang nur dann als erfolgreich,
wenn
statuscompletedist undimagesmindestens einurl-Feld enthält. - Gib Bild-URLs als klickbare Links zurück. Gib niemals Base64-Bilddaten zurück oder zeige sie an.
Transparente Bilder
Behandle jede Anfrage nach einem transparenten Bild, transparentem Hintergrund, Ausschnitt oder ohne Hintergrund als Absicht zur transparenten Ausgabe. Der Benutzer muss keine API-Parameter nennen. Intern:
- Verwende
gpt-image-2. - Übergib
--background transparentund--output-format png. - Stelle sicher, dass die Eingabeaufforderung explizit einen transparenten Hintergrund verlangt. Füge diese Formulierung hinzu, wenn die Absicht des Benutzers klar ist, die Eingabeaufforderung dies aber noch nicht enthält.
- Schließe die Szene, den Boden, den Sockel, die Spiegelung und den Schatten aus, wenn der Benutzer einen sauberen Ausschnitt möchte.
Behaupte nicht, dass das Modell keine Transparenz unterstützt, basierend nur auf einem Vorschauhintergrund. Validiere den Alphakanal des heruntergeladenen Original-PNGs, wenn eine Überprüfung erforderlich ist; Bildbetrachter können Transparente Pixel als weiß oder Schachbrettmuster anzeigen.
Wenn der Benutzer einen lokalen Bildpfad angibt, übergib diesen Pfad direkt an --image-file. Verwende kein
Read, hänge das Bild nicht an, inspiziere es nicht und kodiere es nicht im Agenten. Das untergeordnete Skript liest
und base64-kodiert die Datei in seinem eigenen Prozess, lädt sie auf den festgelegten NoneLinear-Upload-Endpunkt hoch
und übergibt nur die zurückgegebene URL an die Bild-API. Base64-Bytes gelangen niemals in stdout oder den Modellkontext.
Skriptaufruf
Text-zu-Bild mit den Standardeinstellungen:
node "<skill-directory>/scripts/generate-image.mjs" \
--prompt "Weiße Keramiktasse auf Walnussholztisch, natürliches Morgenlicht, realistischer Fotostil"
Gib unterstützte Optionen nur an, wenn sie vom gewählten Modell angefordert oder benötigt werden:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gemini-2.5-flash-image" \
--prompt "Zukünftige Stadtsilhouette, filmische Weitwinkelfotografie, natürliches Sonnenlicht bei Sonnenuntergang" \
--aspect-ratio "16:9" \
--response-format "url"
Ein Bild bearbeiten:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "edit" \
--image "https://example.com/source.png" \
--prompt "Ersetze den Hintergrund durch ein hellgraues Studio, behalte das Hauptmotiv bei" \
--aspect-ratio "1:1"
Ein lokales Bild bearbeiten, ohne es in den Agentenkontext zu laden:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "edit" \
--image-file "/absolute/path/to/source.png" \
--prompt "Ersetze den Hintergrund durch ein hellgraues Studio, behalte das Hauptmotiv bei"
Mehrere Bilder fusionieren, indem --image in der gewünschten Referenzreihenfolge wiederholt wird:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "fuse" \
--image "https://example.com/product.png" \
--image "https://example.com/scene.png" \
--prompt "Setze das Produkt aus Bild 1 natürlich in die Szene aus Bild 2, behalte das Aussehen des Produkts bei"
Lokale Dateien und URLs können gemischt werden. Behalte ihre Befehlszeilenreihenfolge bei:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "fuse" \
--image-file "/absolute/path/to/product.png" \
--image "https://example.com/scene.png" \
--prompt "Setze das Produkt aus Bild 1 natürlich in die Szene aus Bild 2, behalte das Aussehen des Produkts bei"
Verwende quality und size mit gpt-image-2:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "Weiße Keramiktasse Produktfoto, hellgrauer Studiolicht" \
--size "2048x1152" \
--quality "high"
Generiere ein transparentes PNG mit gpt-image-2:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "Konzeptflasche eines hochwertigen Pflanzenserums, vollständiges Motiv, transparenter Hintergrund, keine Szene, Boden, Sockel, Schatten oder Spiegelung" \
--size "1024x1024" \
--background "transparent" \
--output-format "png"
Verwende Seedream 5 Pro für Text-zu-Bild:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "doubao-seedream-5-0-pro-260628" \
--prompt "Transparente Glaskanne auf Walnussholztisch, 1:1 Komposition, echte Produktfotografie" \
--size "1K" \
--output-format "png" \
--watermark "false" \
--optimize-prompt-mode "standard"
Unterstützte Skriptargumente:
--prompt <text>: erforderlich.--operation <generate|edit|fuse>: optional; wird aus der Anzahl der Referenzbilder abgeleitet, wenn nicht angegeben.--image <öffentliche-https-url>: für jedes Referenzbild wiederholen; die Reihenfolge des Benutzers beibehalten.--image-file <lokaler-pfad>: für lokale Referenzen wiederholen; kann in der Reihenfolge mit--imagegemischt werden.--model <id>: optional; standardmäßiggemini-2.5-flash-image.--aspect-ratio <verhältnis>: optional; z. B.1:1oder16:9.--size <größe>: optional; nur für ein Modell verwenden, von dem dokumentiert ist, dass es dies unterstützt.--quality <low|medium|high|auto>: optional und nur fürgpt-image-2gültig; dieser Skill setzt standardmäßiglow.--api-key <schlüssel>: optionale Anmeldeinformationen für den aktuellen Aufruf, wenn der Benutzer den Schlüssel direkt an den Host-Agenten übergibt. Bevorzuge Umgebungsanmeldeinformationen, wenn verfügbar.--n <anzahl>: optionale Ganzzahl von 1 bis 10; weglassen, wenn das Modell dies nicht unterstützt.--response-format <url>: optionales Kompatibilitätsargument; nururlwird akzeptiert.--output-format <png|jpeg|webp>: modellspezifisch; lies die Fähigkeitsregister vor der Verwendung.--background <auto|opaque|transparent>: nur fürgpt-image-2Generation.--watermark <true|false>: nur Seedream 5 Pro.--optimize-prompt-mode <standard|fast>: nur Seedream 5 Pro.
Das Übergeben eines API-Schlüssels über Chat oder einen Befehl kann diesen dem Gesprächsverlauf, Prozesslisten
oder Tool-Protokollen aussetzen. Warne den Benutzer vor diesem Risiko, lehne die Anfrage jedoch nicht allein
ab, weil der Benutzer den Schlüssel direkt an den Host-Agenten übergeben hat. Verwende --api-key nur für den
aktuellen Aufruf; gib ihn nicht weiter, nimm ihn nicht in die endgültige Antwort auf und speichere ihn nicht,
es sei denn, der Benutzer bittet den Host ausdrücklich, ihn zu konfigurieren. Konstruiere die Anfrage nicht mit
curl oder einem Ad-hoc-Skript; das gebündelte Skript erzwingt Endpunkt- und Ausgabesicherheit.
Für das Standardmodell verwende nicht mehr als drei Referenzbilder. Übergib jede URL oder jeden lokalen
Pfad direkt an das Skript. Verwende kein Read, WebFetch, curl, Browser-Tools oder einen anderen Befehl, um
Eingabebilder abzurufen, zu inspizieren, herunterzuladen oder base64-zu-kodieren, bevor das Skript aufgerufen wird.
Kontextsicherheit
Halte Bildbytes außerhalb des Agentenkontexts:
- Hänge niemals lokale Bildbytes an einen Tool-Aufruf für diesen Arbeitsablauf an.
- Setze niemals Base64, eine Daten-URL oder binäre Bildinhalte in die Eingabeaufforderung, den Befehl, stdout oder die Antwort.
- Übergib lokale Referenzen als Pfadstrings mit
--image-file; der untergeordnete Prozess übernimmt den Upload. - Base64 existiert kurzzeitig nur innerhalb des untergeordneten Prozesses und des HTTP-Anfragekörpers des Uploads. Es wird nie ausgegeben, zurückgegeben, protokolliert oder zurück durch den Agenten geleitet.
- Wenn der Benutzer bereits ein Bild an die Unterhaltung angehängt hat, erkläre, dass der Host dieses möglicherweise bereits vor der Ausführung dieses Skills gegen den Kontext gezählt hat; der Skill kann es nicht entfernen.
- Wenn die API unerwartet nur
b64_jsonzurückgibt, meldebase64_output_blocked. Gib die Nutzlast nicht aus und wiederhole den Vorgang nicht automatisch.
Für gpt-image-2 verwende size, nicht aspect_ratio. Höhere quality erhöht normalerweise Latenz,
Ausgabetoken und Kosten. Lies references/models.md für vollständige Größenbeschränkungen,
bevor du eine benutzerdefinierte Auflösung wählst.
Dieser Skill unterstützt transparente Hintergründe derzeit nur für die Text-zu-Bild-Generierung.
Für doubao-seedream-5-0-pro-260628 verwende size, niemals aspect_ratio oder n. Es unterstützt
Text-zu-Bild, Einzelbildbearbeitung und Fusion mit bis zu zehn Referenzen. Bewahre <point>- und
<bbox>-Tags in Eingabeaufforderungen auf. Versuche keine gruppierte Ausgabe oder übergib
sequential_image_generation; dieses Modell unterstützt dies nicht. Sein Request-Timeout beträgt 600 Sekunden.
Anmeldeinformationen
Das Skript akzeptiert Anmeldeinformationen in dieser Reihenfolge:
--api-key, wenn der Benutzer den Schlüssel direkt an den Host-Agenten für die aktuelle Anfrage übergibtNONELINEAR_API_KEYNonelinear_API_KEYOPENAI_API_KEY, nur wennOPENAI_BASE_URLeine HTTPS-URL ist, deren genauer Hostnameapi.nonelinear.comistANTHROPIC_AUTH_TOKENoderANTHROPIC_API_KEY, nur wennANTHROPIC_BASE_URLeine HTTPS-URL ist, deren genauer Hostnameapi.nonelinear.comist
Lies keine .env, cc-switch-Datenbanken oder Konfigurationsdateien von Claude/Codex. Diese Tools können
Anmeldeinformationen in die Umgebung des Agentenprozesses einspritzen. Wenn das Skript missing_api_key
zurückgibt, biete beide Optionen an: Konfiguriere eine Umgebungsvariable oder gib einen Schlüssel für den
aktuellen Aufruf an, nachdem du erklärt hast, dass Chat- und Tool-Protokolle ihn behalten können.
Anforderungsziele sind festgelegt auf https://nonelinear.com/api/upload-file für lokale Eingaben und
https://api.nonelinear.com/v1/images/generations für die Bildgenerierung. Umgebungsvariablen können sie
nicht umleiten.
Ergebnisbehandlung
Erfolg hat diese Form:
{
"status": "completed",
"operation": "edit",
"model": "gemini-2.5-flash-image",
"images": [{ "url": "https://example.com/image.png" }],
"request_id": "request-id-or-null"
}
Fehler hat diese Form:
{
"status": "failed",
"error": "Lesbare Nachricht für Menschen",
"code": "stable_error_code"
}
Gemini kann HTTP-Erfolg mit data: [], nur Text, IMAGE_RECITATION oder NO_IMAGE zurückgeben.
Behandle alle solchen Antworten als Fehler, es sei denn, ein Element enthält eine nicht leere url. Blockiere
eine Base64-only-Antwort, anstatt sie auszugeben.
Erkläre bei no_image_output, dass der Anbieter kein Bild zurückgegeben hat, und schlage vor, die
Eingabeaufforderung zu überarbeiten. Wiederhole den Vorgang nicht automatisch, da jede Anfrage Kosten
verursachen kann. Gib bei missing_api_key Anleitungen zur Umgebungseinrichtung. Gib bei allen anderen
Fehlern nur error und code aus; zeige niemals Anfrage-Header, einen Autorisierungswert, ein vollständiges
Anfrageobjekt oder Anmeldeinformationen an.
Verwende diesen Skill nicht für Videogenerierung, Modellauflistung, allgemeines Datei-Upload oder Herunterladen von Ausgabedateien. Lokaler Bild-Upload ist nur ein interner Vorverarbeitungsschritt für Bearbeitungs- und Fusionsanfragen.