Communitygithub.com

NoneLinear Image – Génération et édition d'images

Compétences officielles NoneLinear Agent pour la génération, l'édition et la fusion multi‑image.

Qu'est-ce que NoneLinear Image – Génération et édition d'images ?

Cette compétence permet à un agent IA (Claude Code, Cursor, Codex, etc.) de générer, éditer ou fusionner des images via l'API NoneLinear, en exécutant un script Node.js local sans dépendances. Elle centralise la logique d’appel aux modèles supportés (gemini-2.5-flash-image, gpt-image-2, doubao-seedream-5-0-pro-260628) en respectant les capacités exactes documentées dans des fichiers de référence. L’agent sélectionne l’opération (génération, édition avec une image de référence, fusion avec deux images ou plus) à partir de l’intention de l’utilisateur, extrait les paramètres (prompt, modèle, ratio, taille, qualité, nombre) et invoque un script dédié. Le pipeline garantit que les données brutes des images (chemins locaux, base64) ne transitent pas dans le contexte de l’agent : le script enfant gère lui‑même le téléversement et les encodages, et seuls les URLs de sortie sont renvoyés. Un mode transparent est intégré pour les demandes de fond transparent, avec des paramètres automatiques (modèle gpt-image-2, format PNG, background transparent). La compétence gère aussi les clés API via variables d’environnement ou le paramètre --api-key, avec des avertissements sur la sécurité des clés passées dans le chat.

Compatible avec✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add Fitnessnlp/nonelinear-skills

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

NoneLinear Image

Générer ou transformer des images en exécutant le script Node.js fourni, sans dépendances externes. N'appelez pas la CLI nonelinear ou nl, et n'utilisez pas le générateur d'images intégré de l'agent hôte pour une requête NoneLinear.

Workflow

  1. Traitez toute demande explicite de génération ou transformation d'image comme une autorisation pour effectuer une requête API facturable. N'effectuez pas de requête API lorsque l'utilisateur demande simplement des informations sur les capacités ou l'installation.
  2. Sélectionnez l'opération en fonction de l'intention de l'utilisateur :
    • generate : aucune image de référence.
    • edit : exactement un chemin d'image local ou une URL HTTPS publique de référence.
    • fuse : au moins deux chemins locaux ou URLs HTTPS publiques de référence.
  3. Extrayez le prompt et les paramètres optionnels : modèle, ratio, taille, qualité et nombre. Si l'utilisateur demande une image transparente, appliquez les réglages du présélecteur transparent ci-dessous. Pour gpt-image-2, la qualité par défaut est low sauf si l'utilisateur demande une autre valeur prise en charge.
  4. Pour les autres requêtes, utilisez gemini-2.5-flash-image. Demandez toujours une sortie sous forme d'URL.
  5. Lisez references/models.md et, lorsque les limites exactes sont importantes, references/model-capabilities.json avant de sélectionner un modèle non par défaut ou d'ajouter des paramètres spécifiques au modèle. N'inventez jamais d'ID de modèle ni de paramètre non pris en charge.
  6. Localisez le fichier scripts/generate-image.mjs par rapport à ce SKILL.md et invoquez-le avec Node.js 18 ou plus récent. Dans Claude Code, ${CLAUDE_SKILL_DIR} désigne le répertoire de la compétence. Dans d'autres hôtes, utilisez le chemin absolu depuis lequel cette compétence a été chargée.
  7. Analysez l'objet JSON unique écrit sur stdout. Ne considérez la réussite que lorsque status est completed et que images contient au moins un champ url.
  8. Renvoyez les URLs des images sous forme de liens cliquables. Ne renvoyez ni n'affichez jamais de données base64.

Images transparentes

Toute demande d'image transparente, de fond transparent, de détourage ou d'absence de fond est traitée comme une intention de sortie transparente. L'utilisateur n'a pas besoin de nommer les paramètres de l'API. En interne :

  • Utilisez gpt-image-2.
  • Passez les arguments --background transparent et --output-format png.
  • Assurez-vous que le prompt demande explicitement un fond transparent. Ajoutez cette formulation si l'intention de l'utilisateur est claire mais que le prompt ne la contient pas déjà.
  • Excluez la scène, le sol, le socle, les reflets et les ombres lorsque l'utilisateur souhaite un détourage net.

N'affirmez pas que le modèle manque de transparence en vous basant uniquement sur un arrière-plan d'aperçu. Validez le canal alpha du PNG original téléchargé lorsque la vérification est nécessaire ; les visualiseurs d'images peuvent afficher les pixels transparents en blanc ou en damier.

Lorsque l'utilisateur fournit un chemin d'image local, passez cette chaîne directement à --image-file. N'utilisez pas Read, n'attachez pas l'image, ne l'inspectez pas et ne l'encodez pas dans l'agent. Le script enfant lit et encode en base64 le fichier dans son propre processus, le téléverse vers le point de terminaison fixé de NoneLinear, et ne passe que l'URL renvoyée à l'API image. Les octets base64 n'apparaissent jamais sur stdout ni dans le contexte du modèle.

Invocation du script

Génération texte‑vers‑image avec les paramètres par défaut :

node "<skill-directory>/scripts/generate-image.mjs" \
  --prompt "白色陶瓷马克杯放在胡桃木桌面上,清晨自然光,真实摄影风格"

Spécifiez les options prises en charge uniquement lorsqu'elles sont demandées ou requises par le modèle choisi :

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "gemini-2.5-flash-image" \
  --prompt "未来城市天际线,电影感广角摄影,日落自然光" \
  --aspect-ratio "16:9" \
  --response-format "url"

Éditer une image :

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "edit" \
  --image "https://example.com/source.png" \
  --prompt "把背景替换为浅灰色摄影棚,保留主体不变" \
  --aspect-ratio "1:1"

Éditer une image locale sans la charger dans le contexte de l'agent :

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "edit" \
  --image-file "/absolute/path/to/source.png" \
  --prompt "把背景替换为浅灰色摄影棚,保留主体不变"

Fusionner plusieurs images en répétant --image dans l'ordre de référence souhaité :

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "fuse" \
  --image "https://example.com/product.png" \
  --image "https://example.com/scene.png" \
  --prompt "把图一的产品自然放入图二的场景,保持产品外观"

Les fichiers locaux et les URLs peuvent être mélangés. Respectez leur ordre sur la ligne de commande :

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "fuse" \
  --image-file "/absolute/path/to/product.png" \
  --image "https://example.com/scene.png" \
  --prompt "把图一的产品自然放入图二的场景,保持产品外观"

Utilisation de quality et size avec gpt-image-2 :

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "gpt-image-2" \
  --prompt "白色陶瓷马克杯产品图,浅灰摄影棚背景" \
  --size "2048x1152" \
  --quality "high"

Générer un PNG transparent avec gpt-image-2 :

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "gpt-image-2" \
  --prompt "一瓶高端植物精华液概念瓶,主体完整,透明背景,不要场景、地面、底座、投影和倒影" \
  --size "1024x1024" \
  --background "transparent" \
  --output-format "png"

Utiliser Seedream 5 Pro pour la génération texte‑vers‑image :

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "doubao-seedream-5-0-pro-260628" \
  --prompt "透明玻璃茶壶放在胡桃木桌面上,1:1 构图,真实产品摄影" \
  --size "1K" \
  --output-format "png" \
  --watermark "false" \
  --optimize-prompt-mode "standard"

Arguments du script pris en charge :

  • --prompt <texte> : obligatoire.
  • --operation <generate|edit|fuse> : optionnel ; déduit du nombre d'images de référence si omis.
  • --image <https-url-publique> : répéter pour chaque image de référence ; respecter l'ordre de l'utilisateur.
  • --image-file <chemin-local> : répéter pour les images locales ; peut être mélangé avec --image dans l'ordre.
  • --model <id> : optionnel ; par défaut gemini-2.5-flash-image.
  • --aspect-ratio <ratio> : optionnel ; par exemple 1:1 ou 16:9.
  • --size <taille> : optionnel ; utiliser uniquement pour un modèle documenté comme le supportant.
  • --quality <low|medium|high|auto> : optionnel et valide uniquement pour gpt-image-2 ; cette compétence utilise low par défaut.
  • --api-key <clé> : paramètre optionnel pour l'invocation en cours lorsque l'utilisateur fournit directement la clé à l'agent hôte. Préférez les variables d'environnement lorsqu'elles sont disponibles.
  • --n <nombre> : nombre entier optionnel de 1 à 10 ; omettre si le modèle ne le supporte pas.
  • --response-format <url> : argument de compatibilité optionnel ; seul url est accepté.
  • --output-format <png|jpeg|webp> : spécifique au modèle ; consulter le registre des capacités avant utilisation.
  • --background <auto|opaque|transparent> : uniquement pour la génération avec gpt-image-2.
  • --watermark <true|false> : uniquement pour Seedream 5 Pro.
  • --optimize-prompt-mode <standard|fast> : uniquement pour Seedream 5 Pro.

Transmettre une clé API via le chat ou une commande peut l'exposer dans l'historique de conversation, les listes de processus ou les journaux d'outils. Avertissez l'utilisateur de ce risque, mais ne refusez pas la requête uniquement parce que l'utilisateur a donné la clé directement à l'agent hôte. Utilisez --api-key uniquement pour l'invocation en cours ; ne l'affichez pas, ne l'incluez pas dans la réponse finale et ne la persistez pas sauf si l'utilisateur demande explicitement à l'hôte de la configurer. Ne construisez pas la requête avec curl ou un script ad hoc ; le script fourni garantit la sécurité du point de terminaison et de la sortie.

Pour le modèle par défaut, n'utilisez pas plus de trois images de référence. Transmettez chaque URL ou chemin local directement au script. N'utilisez pas Read, WebFetch, curl, les outils navigateur ou une autre commande pour récupérer, inspecter, télécharger ou encoder en base64 une image d'entrée avant d'appeler le script.

Sécurité du contexte

Gardez les octets d'image en dehors du contexte de l'agent :

  • N'attachez jamais d'octets d'image locale à un appel d'outil pour ce workflow.
  • Ne placez jamais de base64, d'URL de données ou de contenu binaire d'image dans le prompt, la commande, stdout ou la réponse.
  • Transmettez les références locales sous forme de chaînes de chemin avec --image-file ; le processus enfant gère le téléversement.
  • Le base64 n'existe brièvement qu'à l'intérieur du processus enfant et du corps HTTP du téléversement. Il n'est jamais imprimé, renvoyé, journalisé ou repassé via l'agent.
  • Si l'utilisateur a déjà attaché une image à la conversation, expliquez que l'hôte a peut-être déjà compté cette image dans le contexte avant l'exécution de cette compétence ; la compétence ne peut pas la supprimer.
  • Si l'API renvoie de manière inattendue uniquement b64_json, signalez base64_output_blocked. N'affichez pas la charge utile et n'effectuez pas de nouvelle tentative automatique.

Pour gpt-image-2, utilisez size, pas aspect_ratio. Une quality plus élevée augmente généralement la latence, les tokens de sortie et le coût. Consultez references/models.md pour les contraintes de taille complètes avant de choisir une résolution personnalisée.

Cette compétence expose actuellement les fonds transparents uniquement pour la génération texte‑vers‑image.

Pour doubao-seedream-5-0-pro-260628, utilisez size, jamais aspect_ratio ou n. Il supporte la génération texte‑vers‑image, l'édition d'une image et la fusion avec jusqu'à dix références. Conservez les balises <point> et <bbox> dans les prompts. N'essayez pas la sortie groupée et ne passez pas sequential_image_generation ; ce modèle ne le supporte pas. Son délai d'expiration est de 600 secondes.

Identifiants

Le script accepte les identifiants dans cet ordre :

  1. --api-key, lorsque l'utilisateur donne directement la clé à l'agent hôte pour la requête en cours
  2. NONELINEAR_API_KEY
  3. Nonelinear_API_KEY
  4. OPENAI_API_KEY, uniquement lorsque OPENAI_BASE_URL est une URL HTTPS dont le nom d'hôte exact est api.nonelinear.com
  5. ANTHROPIC_AUTH_TOKEN ou ANTHROPIC_API_KEY, uniquement lorsque ANTHROPIC_BASE_URL est une URL HTTPS dont le nom d'hôte exact est api.nonelinear.com

Ne lisez pas les fichiers .env, les bases de données cc-switch, ni les fichiers de configuration Claude/Codex. Ces outils peuvent injecter des identifiants dans l'environnement du processus agent. Si le script renvoie missing_api_key, proposez les deux choix : configurer une variable d'environnement, ou fournir une clé pour l'invocation en cours après avoir expliqué que le chat et les journaux d'outils peuvent la conserver.

Les destinations des requêtes sont fixées à https://nonelinear.com/api/upload-file pour les entrées locales et https://api.nonelinear.com/v1/images/generations pour la génération d'images. Les variables d'environnement ne peuvent pas les rediriger.

Gestion des résultats

Le succès a cette forme :

{
  "status": "completed",
  "operation": "edit",
  "model": "gemini-2.5-flash-image",
  "images": [{ "url": "https://example.com/image.png" }],
  "request_id": "request-id-or-null"
}

L'échec a cette forme :

{
  "status": "failed",
  "error": "Message lisible par un humain",
  "code": "stable_error_code"
}

Gemini peut renvoyer un succès HTTP avec data: [], du texte uniquement, IMAGE_RECITATION ou NO_IMAGE. Traitez toutes ces réponses comme un échec sauf si un élément contient un url non vide. Bloquez une réponse uniquement base64 au lieu de l'émettre. En cas de no_image_output, expliquez que le fournisseur n'a renvoyé aucune image et suggérez de réviser le prompt. N'effectuez pas de nouvelle tentative automatique, car chaque requête peut entraîner un coût. En cas de missing_api_key, fournissez des instructions de configuration des variables d'environnement. Pour tous les autres échecs, signalez uniquement error et code ; n'affichez jamais les en-têtes de requête, une valeur d'autorisation, un objet de requête complet ou des valeurs d'identifiants.

N'utilisez pas cette compétence pour la génération vidéo, la liste des modèles, le téléversement de fichiers à usage général ou le téléchargement de fichiers de sortie. Le téléversement d'image locale n'est qu'une étape de prétraitement interne pour les requêtes d'édition et de fusion.

Skills associés