NoneLinear Image
Genera o transforma imágenes ejecutando el script Node.js integrado, sin dependencias externas. No invoques la CLI nonelinear o nl, y no uses el generador de imágenes nativo del agente anfitrión para una solicitud NoneLinear.
Flujo de trabajo
- Trata una solicitud explícita de generar o transformar una imagen como autorización para realizar una solicitud facturable a la API. No realices una solicitud API cuando el usuario solo pregunte por capacidades o configuración.
- Selecciona la operación según la intención del usuario:
generate: sin imágenes de referencia.edit: exactamente una ruta de imagen local o URL de imagen de referencia HTTPS pública.fuse: al menos dos rutas locales o URLs de imágenes de referencia HTTPS públicas.
- Extrae el prompt y, opcionalmente, el modelo, la relación de aspecto, el tamaño, la calidad y la cantidad. Si el usuario solicita una imagen transparente, aplica el preset de imagen transparente a continuación. Para
gpt-image-2, la calidad por defecto eslowa menos que el usuario solicite otro valor compatible. - Por defecto, otras solicitudes usan
gemini-2.5-flash-image. Siempre solicita la salida como URL. - Lee references/models.md y, cuando los límites exactos importen, references/model-capabilities.json antes de seleccionar un modelo no predeterminado o añadir parámetros específicos de modelo. Nunca inventes un ID de modelo o un parámetro no compatible.
- Localiza
scripts/generate-image.mjsrelativo a esteSKILL.mde invócalo con Node.js 18 o superior. En Claude Code,${CLAUDE_SKILL_DIR}es el directorio del skill. En otros anfitriones, usa el directorio absoluto desde el que se cargó este skill. - Analiza el objeto JSON único escrito en stdout. Declara éxito solo cuando
statusseacompletedyimagescontenga al menos un campourl. - Devuelve las URLs de las imágenes como enlaces cliqueables. Nunca devuelvas ni muestres datos de imagen en base64.
Imágenes transparentes
Trata cualquier solicitud de imagen transparente, fondo transparente, recorte o sin fondo como intención de salida transparente. El usuario no necesita nombrar parámetros de API. Internamente:
- Usa
gpt-image-2. - Pasa
--background transparenty--output-format png. - Asegúrate de que el prompt solicite explícitamente un fondo transparente. Agrega esa redacción cuando la intención del usuario sea clara pero el prompt no la contenga.
- Excluye la escena, el suelo, la base, el reflejo y la sombra cuando el usuario quiera un recorte limpio.
No afirmes que el modelo carece de transparencia basándote únicamente en un fondo de previsualización. Valida el canal alfa del PNG original descargado cuando se requiera verificación; los visores de imágenes pueden mostrar los píxeles transparentes como blanco o un patrón de tablero.
Cuando el usuario proporcione una ruta de archivo local, pásala directamente como --image-file. No uses Read, adjuntes la imagen, la inspecciones ni la codifiques en el agente. El script hijo lee y codifica en base64 el archivo en su propio proceso, lo sube al punto de subida fijo de NoneLinear y pasa solo la URL devuelta a la API de imágenes. Los bytes base64 nunca entran en stdout ni en el contexto del modelo.
Invocación del script
Texto a imagen con los valores predeterminados:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--prompt "白色陶瓷马克杯放在胡桃木桌面上,清晨自然光,真实摄影风格"
Especifica opciones compatibles solo cuando sean solicitadas o requeridas por el modelo elegido:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--model "gemini-2.5-flash-image" \
--prompt "未来城市天际线,电影感广角摄影,日落自然光" \
--aspect-ratio "16:9" \
--response-format "url"
Editar una imagen:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--operation "edit" \
--image "https://example.com/source.png" \
--prompt "把背景替换为浅灰色摄影棚,保留主体不变" \
--aspect-ratio "1:1"
Editar una imagen local sin cargarla en el contexto del agente:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--operation "edit" \
--image-file "/ruta/absoluta/a/source.png" \
--prompt "把背景替换为浅灰色摄影棚,保留主体不变"
Fusiona múltiples imágenes repitiendo --image en el orden de referencia previsto:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--operation "fuse" \
--image "https://example.com/producto.png" \
--image "https://example.com/escena.png" \
--prompt "把图一的产品自然放入图二的场景,保持产品外观"
Se pueden mezclar archivos locales y URLs. Conserva su orden en la línea de comandos:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--operation "fuse" \
--image-file "/ruta/absoluta/a/producto.png" \
--image "https://example.com/escena.png" \
--prompt "把图一的产品自然放入图二的场景,保持产品外观"
Usa quality y size con gpt-image-2:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "白色陶瓷马克杯产品图,浅灰摄影棚背景" \
--size "2048x1152" \
--quality "high"
Genera un PNG transparente con gpt-image-2:
node "<directorio-del-skill>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "一瓶高端植物精华液概念瓶,主体完整,透明背景,不要场景、地面、底座、投影和倒影" \
--size "1024x1024" \
--background "transparent" \
--output-format "png"
Usa Seedream 5 Pro para texto a imagen:
node "<directorio-del-skill>/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"
Argumentos del script compatibles:
--prompt <texto>: obligatorio.--operation <generate|edit|fuse>: opcional; se deduce de la cantidad de imágenes de referencia cuando se omite.--image <url-https-pública>: repite para cada imagen de referencia; conserva el orden del usuario.--image-file <ruta-local>: repite para referencias locales; puede mezclarse con--imageen orden.--model <id>: opcional; por defectogemini-2.5-flash-image.--aspect-ratio <relación>: opcional; por ejemplo1:1o16:9.--size <tamaño>: opcional; úsalo solo para un modelo documentado que lo soporte.--quality <low|medium|high|auto>: opcional y válido solo paragpt-image-2; este skill lo predetermina alow.--api-key <clave>: credencial opcional para la invocación actual cuando el usuario da la clave directamente al agente anfitrión. Prefiere credenciales de entorno cuando estén disponibles.--n <cantidad>: entero opcional de 1 a 10; omítelo si el modelo no lo soporta.--response-format <url>: argumento opcional de compatibilidad; solo se aceptaurl.--output-format <png|jpeg|webp>: específico del modelo; lee el registro de capacidades antes de usarlo.--background <auto|opaque|transparent>: solo para generación congpt-image-2.--watermark <true|false>: solo para Seedream 5 Pro.--optimize-prompt-mode <standard|fast>: solo para Seedream 5 Pro.
Pasar una clave API a través del chat o un comando puede exponerla al historial de la conversación, listas de procesos o registros de herramientas. Advierte al usuario sobre este riesgo, pero no rechaces la solicitud únicamente porque el usuario haya dado la clave directamente al agente anfitrión. Usa --api-key solo para la invocación actual; no la repitas, la incluyas en la respuesta final ni la persistas a menos que el usuario solicite explícitamente que el anfitrión la configure. No construyas la solicitud con curl ni un script ad hoc; el script integrado impone la seguridad del punto final y la salida.
Para el modelo predeterminado, usa no más de tres imágenes de referencia. Pasa cada URL o ruta de archivo local directamente al script. No uses Read, WebFetch, curl, herramientas del navegador u otro comando para obtener, inspeccionar, descargar o codificar en base64 una imagen de entrada antes de llamar al script.
Seguridad del contexto
Mantén los bytes de imagen fuera del contexto del agente:
- Nunca adjuntes bytes de imagen local a una llamada de herramienta para este flujo de trabajo.
- Nunca pongas base64, una URL de datos ni contenido de imagen binario en el prompt, comando, stdout o respuesta.
- Pasa las referencias locales como cadenas de ruta con
--image-file; el proceso hijo maneja la subida. - El base64 existe brevemente solo dentro del proceso hijo y el cuerpo HTTP de la subida. Nunca se imprime, devuelve, registra ni se pasa de vuelta a través del agente.
- Si el usuario ya adjuntó una imagen a la conversación, explica que el anfitrión puede haber contado esa imagen en el contexto antes de que este skill se ejecutara; el skill no puede eliminarla.
- Si la API devuelve inesperadamente solo
b64_json, reportabase64_output_blocked. No imprimas el payload ni reintentes automáticamente.
Para gpt-image-2, usa size, no aspect_ratio. Una quality más alta generalmente aumenta la latencia, los tokens de salida y el costo. Lee references/models.md para conocer las restricciones de tamaño completas antes de elegir una resolución personalizada.
Este skill actualmente expone fondos transparentes solo para generación de texto a imagen.
Para doubao-seedream-5-0-pro-260628, usa size, nunca aspect_ratio ni n. Soporta texto a imagen, edición de una imagen y fusión con hasta diez referencias. Conserva las etiquetas <point> y <bbox> en los prompts. No intentes salida agrupada ni pases sequential_image_generation; este modelo no lo soporta. Su tiempo de espera de solicitud es de 600 segundos.
Credenciales
El script acepta credenciales en este orden:
--api-key, cuando el usuario da la clave directamente al agente anfitrión para la solicitud actualNONELINEAR_API_KEYNonelinear_API_KEYOPENAI_API_KEY, solo cuandoOPENAI_BASE_URLes una URL HTTPS cuyo nombre de host exacto esapi.nonelinear.comANTHROPIC_AUTH_TOKENoANTHROPIC_API_KEY, solo cuandoANTHROPIC_BASE_URLes una URL HTTPS cuyo nombre de host exacto esapi.nonelinear.com
No leas .env, bases de datos de cc-switch ni archivos de configuración de Claude/Codex. Esas herramientas pueden inyectar credenciales en el entorno del proceso del agente. Si el script devuelve missing_api_key, ofrece ambas opciones: configurar una variable de entorno o proporcionar una clave para la invocación actual después de explicar que el chat y los registros de herramientas pueden retenerla.
Los destinos de las solicitudes son fijos: https://nonelinear.com/api/upload-file para entradas locales y https://api.nonelinear.com/v1/images/generations para generación de imágenes. Las variables de entorno no pueden redirigirlos.
Manejo de resultados
El éxito tiene esta forma:
{
"status": "completed",
"operation": "edit",
"model": "gemini-2.5-flash-image",
"images": [{ "url": "https://example.com/image.png" }],
"request_id": "request-id-or-null"
}
El fallo tiene esta forma:
{
"status": "failed",
"error": "Mensaje legible para humanos",
"code": "stable_error_code"
}
Gemini puede devolver éxito HTTP con data: [], solo texto, IMAGE_RECITATION o NO_IMAGE. Trata todas esas respuestas como fallo a menos que un elemento contenga un url no vacío. Bloquea una respuesta solo base64 en lugar de emitirla.
Para no_image_output, explica que el proveedor no devolvió ninguna imagen y sugiere revisar el prompt. No reintentes automáticamente, porque cada solicitud puede incurrir en costos. Para missing_api_key, proporciona orientación para configurar el entorno. Para todos los demás fallos, reporta solo error y code; nunca muestres los encabezados de la solicitud, un valor de Autorización, un objeto de solicitud completo ni valores de credenciales.
No uses este Skill para generación de video, listado de modelos, carga de archivos de propósito general ni descarga de archivos de salida. La subida de imágenes locales es solo un paso de preprocesamiento interno para solicitudes de edición y fusión.