O que NoneLinear Image faz?
Gere ou transforme imagens executando o script Node.js integrado e livre de dependências. Não chame a CLI nonelinear ou nl e não use o gerador de imagens integrado do agente host para uma solicitação NoneLinear.
Fluxo de Trabalho
- Trate uma solicitação explícita para gerar ou transformar uma imagem como autorização para fazer uma requisição de API faturada. Não faça uma requisição de API quando o usuário apenas perguntar sobre capacidades ou configuração.
- Selecione a operação a partir da intenção do usuário:
generate: nenhuma imagem de referência.edit: exatamente um caminho de imagem local ou URL de imagem de referência HTTPS pública.fuse: pelo menos dois caminhos locais ou URLs de imagem de referência HTTPS públicas.
- Extraia o prompt e opcionais: modelo, proporção, tamanho, qualidade e quantidade. Se o usuário pedir uma imagem transparente, aplique a predefinição de imagem transparente abaixo. Para
gpt-image-2, a qualidade padrão élowa menos que o usuário solicite outro valor suportado. - Padrão para outras solicitações:
gemini-2.5-flash-image. Sempre solicite saída em URL. - Leia references/models.md e, quando limites exatos importarem, references/model-capabilities.json antes de selecionar um modelo não padrão ou adicionar parâmetros específicos do modelo. Nunca invente um ID de modelo ou parâmetro não suportado.
- Localize
scripts/generate-image.mjsrelativo a esteSKILL.mde o invoque com Node.js 18 ou superior. No Claude Code,${CLAUDE_SKILL_DIR}é o diretório do skill. Em outros hosts, use o diretório absoluto de onde este skill foi carregado. - Analise o único objeto JSON escrito em stdout. Reivindique sucesso apenas quando
statusforcompletedeimagescontiver pelo menos um campourl. - Retorne URLs de imagem como links clicáveis. Nunca retorne ou exiba dados de imagem em base64.
Imagens Transparentes
Trate qualquer solicitação de imagem transparente, fundo transparente, recorte ou sem fundo como intenção de saída transparente. O usuário não precisa nomear parâmetros da API. Internamente:
- Use
gpt-image-2. - Passe
--background transparente--output-format png. - Garanta que o prompt solicite explicitamente um fundo transparente. Adicione essa redação quando a intenção do usuário for clara, mas o prompt ainda não a contiver.
- Exclua cena, chão, base, reflexo e sombra quando o usuário quiser um recorte limpo.
Não afirme que o modelo não tem transparência baseando-se apenas em um fundo de pré-visualização. Valide o canal alfa do PNG original baixado quando a verificação for necessária; visualizadores de imagem podem exibir pixels transparentes como branco ou um padrão xadrez.
Quando o usuário fornecer um caminho de imagem local, passe esse string de caminho diretamente para --image-file. Não use Read, anexe a imagem, inspecione-a ou codifique-a no agente. O script filho lê e codifica em base64 o arquivo em seu próprio processo, faz o upload para o endpoint fixo de upload da NoneLinear e passa apenas a URL retornada para a API de imagem. Bytes base64 nunca entram no stdout ou no contexto do modelo.
Invocação do Script
Texto para imagem com os padrões:
node "<skill-directory>/scripts/generate-image.mjs" \
--prompt "白色陶瓷马克杯放在胡桃木桌面上,清晨自然光,真实摄影风格"
Especifique opções suportadas apenas quando solicitado ou exigido pelo modelo escolhido:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gemini-2.5-flash-image" \
--prompt "未来城市天际线,电影感广角摄影,日落自然光" \
--aspect-ratio "16:9" \
--response-format "url"
Editar uma imagem:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "edit" \
--image "https://example.com/source.png" \
--prompt "把背景替换为浅灰色摄影棚,保留主体不变" \
--aspect-ratio "1:1"
Editar uma imagem local sem carregá-la no contexto do agente:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "edit" \
--image-file "/caminho/absoluto/para/source.png" \
--prompt "把背景替换为浅灰色摄影棚,保留主体不变"
Fundir múltiplas imagens repetindo --image na ordem de referência pretendida:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "fuse" \
--image "https://example.com/product.png" \
--image "https://example.com/scene.png" \
--prompt "把图一的产品自然放入图二的场景,保持产品外观"
Arquivos locais e URLs podem ser misturados. Preserve sua ordem na linha de comando:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "fuse" \
--image-file "/caminho/absoluto/para/product.png" \
--image "https://example.com/scene.png" \
--prompt "把图一的产品自然放入图二的场景,保持产品外观"
Use quality e size com gpt-image-2:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "白色陶瓷马克杯产品图,浅灰摄影棚背景" \
--size "2048x1152" \
--quality "high"
Gerar um PNG transparente com gpt-image-2:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "一瓶高端植物精华液概念瓶,主体完整,透明背景,不要场景、地面、底座、投影和倒影" \
--size "1024x1024" \
--background "transparent" \
--output-format "png"
Usar Seedream 5 Pro para texto para imagem:
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"
Argumentos suportados do script:
--prompt <texto>: obrigatório.--operation <generate|edit|fuse>: opcional; inferido a partir da quantidade de imagens de referência quando omitido.--image <url-https-publica>: repita para cada imagem de referência; preserve a ordem do usuário.--image-file <caminho-local>: repita para referências locais; pode ser misturado com--imageem ordem.--model <id>: opcional; padrão égemini-2.5-flash-image.--aspect-ratio <proporcao>: opcional; por exemplo1:1ou16:9.--size <tamanho>: opcional; use apenas para um modelo documentado como suportando.--quality <low|medium|high|auto>: opcional e válido apenas paragpt-image-2; este Skill o padroniza comolow.--api-key <chave>: credencial opcional para a invocação atual quando o usuário fornece a chave diretamente ao Agente host. Prefira credenciais de ambiente quando disponíveis.--n <quantidade>: inteiro opcional de 1 a 10; omita quando o modelo não suportar.--response-format <url>: argumento opcional de compatibilidade; apenasurlé aceito.--output-format <png|jpeg|webp>: específico do modelo; leia o registro de capacidades antes de usar.--background <auto|opaque|transparent>: apenas para geração comgpt-image-2.--watermark <true|false>: apenas Seedream 5 Pro.--optimize-prompt-mode <standard|fast>: apenas Seedream 5 Pro.
Passar uma chave de API através do chat ou de um comando pode expô-la ao histórico da conversa, listas de processos ou logs de ferramentas. Alerte o usuário sobre esse risco, mas não recuse a solicitação apenas porque o usuário forneceu a chave diretamente ao Agente host. Use --api-key apenas para a invocação atual; não a repita, inclua na resposta final ou persista a menos que o usuário peça explicitamente ao host para configurá-la. Não construa a requisição com curl ou um script ad hoc; o script integrado impõe segurança no endpoint e na saída.
Para o modelo padrão, use no máximo três imagens de referência. Passe cada URL ou string de caminho local diretamente para o script. Não use Read, WebFetch, curl, ferramentas de navegador ou outro comando para buscar, inspecionar, baixar ou codificar em base64 uma imagem de entrada antes de chamar o script.
Segurança de Contexto
Mantenha bytes de imagem fora do contexto do agente:
- Nunca anexe bytes de imagem local a uma chamada de ferramenta para este fluxo de trabalho.
- Nunca coloque base64, uma URL de dados ou conteúdo de imagem binário no prompt, comando, stdout ou resposta.
- Passe referências locais como strings de caminho com
--image-file; o processo filho lida com o upload. - Base64 existe brevemente apenas dentro do processo filho e do corpo HTTP do upload. Nunca é impresso, retornado, registrado ou passado de volta pelo agente.
- Se o usuário já anexou uma imagem à conversa, explique que o host pode já ter contado essa imagem contra o contexto antes deste Skill ser executado; o Skill não pode removê-la.
- Se a API retornar inesperadamente apenas
b64_json, reportebase64_output_blocked. Não imprima o payload nem tente novamente automaticamente.
Para gpt-image-2, use size, não aspect_ratio. quality mais alta geralmente aumenta latência, tokens de saída e custo. Leia references/models.md para restrições completas de tamanho antes de escolher uma resolução personalizada.
Este Skill atualmente expõe fundos transparentes apenas para geração de texto para imagem.
Para doubao-seedream-5-0-pro-260628, use size, nunca aspect_ratio ou n. Ele suporta texto para imagem, edição de uma imagem e fusão com até dez referências. Preserve tags <point> e <bbox> nos prompts. Não tente saída agrupada ou passe sequential_image_generation; este modelo não suporta. Seu tempo limite de requisição é de 600 segundos.
Credenciais
O script aceita credenciais nesta ordem:
--api-key, quando o usuário fornece diretamente a chave ao Agente host para a requisição atualNONELINEAR_API_KEYNonelinear_API_KEYOPENAI_API_KEY, apenas quandoOPENAI_BASE_URLfor uma URL HTTPS cujo nome de host exato sejaapi.nonelinear.comANTHROPIC_AUTH_TOKENouANTHROPIC_API_KEY, apenas quandoANTHROPIC_BASE_URLfor uma URL HTTPS cujo nome de host exato sejaapi.nonelinear.com
Não leia .env, bancos de dados cc-switch ou arquivos de configuração do Claude/Codex. Essas ferramentas podem injetar credenciais no ambiente do processo do agente. Se o script retornar missing_api_key, ofereça ambas as opções: configurar uma variável de ambiente ou fornecer uma chave para a invocação atual após explicar que logs de chat e ferramentas podem retê-la.
Os destinos da requisição são fixos em https://nonelinear.com/api/upload-file para entradas locais e https://api.nonelinear.com/v1/images/generations para geração de imagens. Variáveis de ambiente não podem redirecioná-los.
Tratamento de Resultado
Sucesso tem 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"
}
Falha tem esta forma:
{
"status": "failed",
"error": "Mensagem legível para humanos",
"code": "stable_error_code"
}
Gemini pode retornar sucesso HTTP com data: [], apenas texto, IMAGE_RECITATION ou NO_IMAGE. Trate todas essas respostas como falha a menos que um item contenha uma url não vazia. Bloqueie uma resposta apenas com base64 em vez de emiti-la.
Para no_image_output, explique que o provedor não retornou imagem e sugira revisar o prompt. Não tente novamente automaticamente, porque cada requisição pode incorrer em custo. Para missing_api_key, forneça orientações de configuração de ambiente. Para todas as outras falhas, reporte apenas error e code; nunca mostre cabeçalhos de requisição, um valor de Autorização, um objeto de requisição completo ou valores de credenciais.
Não use este Skill para geração de vídeo, listagem de modelos, upload de arquivos de uso geral ou download de arquivos de saída. Upload de imagem local é apenas uma etapa de pré-processamento interno para requisições de edição e fusão.