NoneLinear Image
透過執行附帶的無依賴 Node.js 腳本來生成或轉換圖片。請勿呼叫 nonelinear 或 nl CLI,也請勿為主機代理的內建圖片生成器處理 NoneLinear 請求。
工作流程
- 將明確要求生成或轉換圖片的請求視為授權進行一次計費的 API 呼叫。當使用者僅詢問功能或設定時,請勿進行 API 呼叫。
- 根據使用者的意圖選擇操作:
generate:無參考圖片。edit:恰好一個本地圖片路徑或公開 HTTPS 參考圖片 URL。fuse:至少兩個本地路徑或公開 HTTPS 參考圖片 URL。
- 提取提示詞以及可選的模型、長寬比、尺寸、品質與數量。若使用者要求透明圖片,則套用下方的透明圖片預設。對於
gpt-image-2,除非使用者要求其他支援的值,否則品質預設為low。 - 將其他請求預設為
gemini-2.5-flash-image。一律要求 URL 格式的輸出。 - 在選擇非預設模型或加入模型特定參數前,請閱讀 references/models.md;若確切限制很重要,則請閱讀 references/model-capabilities.json。切勿自行編造模型 ID 或不支援的參數。
- 找到相對於此
SKILL.md的scripts/generate-image.mjs,並使用 Node.js 18 或更新版本來執行它。在 Claude Code 中,${CLAUDE_SKILL_DIR}即為技能目錄。在其他主機環境中,請使用載入此技能時的絕對目錄。 - 解析輸出到標準輸出的單一 JSON 物件。僅當
status為completed且images包含至少一個url欄位時,才宣告成功。 - 將圖片 URL 作為可點擊的連結回傳。切勿回傳或顯示 Base64 圖片資料。
透明圖片
將任何要求透明圖片、透明背景、去背或無背景的請求視為透明輸出意圖。使用者不需要指定 API 參數名稱。內部處理如下:
- 使用
gpt-image-2。 - 傳遞
--background transparent與--output-format png。 - 確保提示詞明確要求透明背景。當使用者的意圖明確但提示詞中尚未包含此要求時,請加入該文字。
- 當使用者想要乾淨的去背圖時,請排除場景、地板、底座、倒影與陰影。
僅根據預覽背景不能聲稱模型缺乏透明度功能。當需要驗證時,請檢查下載的原始 PNG 的 Alpha 通道;圖片檢視器可能會將透明像素顯示為白色或棋盤格。
當使用者提供本地圖片路徑時,請直接將該路徑字串傳遞給 --image-file。請勿使用 Read、附加圖片、檢查圖片或在代理中對其進行編碼。子腳本會在其自己的程序中讀取檔案並進行 Base64 編碼,將其上傳到固定的 NoneLinear 上傳端點,並僅將回傳的 URL 傳遞給圖片 API。Base64 位元組絕不會進入標準輸出或模型上下文。
腳本呼叫
使用預設值進行文字轉圖片:
node "<skill-directory>/scripts/generate-image.mjs" \
--prompt "白色陶瓷马克杯放在胡桃木桌面上,清晨自然光,真实摄影风格"
僅在要求或所選模型需要時指定支援的選項:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gemini-2.5-flash-image" \
--prompt "未来城市天际线,电影感广角摄影,日落自然光" \
--aspect-ratio "16:9" \
--response-format "url"
編輯單張圖片:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "edit" \
--image "https://example.com/source.png" \
--prompt "把背景替换为浅灰色摄影棚,保留主体不变" \
--aspect-ratio "1:1"
在不將圖片載入代理上下文的情況下編輯本地圖片:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "edit" \
--image-file "/absolute/path/to/source.png" \
--prompt "把背景替换为浅灰色摄影棚,保留主体不变"
透過按預期參考順序重複 --image 來融合多張圖片:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "fuse" \
--image "https://example.com/product.png" \
--image "https://example.com/scene.png" \
--prompt "把图一的产品自然放入图二的场景,保持产品外观"
本地檔案與 URL 可以混合使用。請保留它們的命令列順序:
node "<skill-directory>/scripts/generate-image.mjs" \
--operation "fuse" \
--image-file "/absolute/path/to/product.png" \
--image "https://example.com/scene.png" \
--prompt "把图一的产品自然放入图二的场景,保持产品外观"
搭配 gpt-image-2 使用 quality 與 size:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "白色陶瓷马克杯产品图,浅灰摄影棚背景" \
--size "2048x1152" \
--quality "high"
使用 gpt-image-2 生成透明 PNG:
node "<skill-directory>/scripts/generate-image.mjs" \
--model "gpt-image-2" \
--prompt "一瓶高端植物精华液概念瓶,主体完整,透明背景,不要场景、地面、底座、投影和倒影" \
--size "1024x1024" \
--background "transparent" \
--output-format "png"
使用 Seedream 5 Pro 進行文字轉圖片:
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"
支援的腳本參數:
--prompt <text>:必需。--operation <generate|edit|fuse>:可選;若省略則根據參考圖片數量推斷。--image <public-https-url>:每個參考圖片重複一次;保留使用者指定的順序。--image-file <local-path>:本地參考路徑可重複;可與--image混合使用,依序傳遞。--model <id>:可選;預設為gemini-2.5-flash-image。--aspect-ratio <ratio>:可選;例如1:1或16:9。--size <size>:可選;僅用於有文件支援的模型。--quality <low|medium|high|auto>:可選,僅對gpt-image-2有效;此技能預設為low。--api-key <key>:可選,當使用者直接向主機代理提供金鑰時,用於當前呼叫的憑證。若有環境憑證,優先使用。--n <count>:可選,整數 1 到 10;若模型不支援則省略。--response-format <url>:可選的相容性參數;僅接受url。--output-format <png|jpeg|webp>:模型特定;使用前請查閱能力註冊表。--background <auto|opaque|transparent>:僅gpt-image-2生成用。--watermark <true|false>:僅 Seedream 5 Pro 用。--optimize-prompt-mode <standard|fast>:僅 Seedream 5 Pro 用。
透過聊天或命令傳遞 API 金鑰可能會將其暴露於對話歷史、行程列表或工具日誌中。請警告使用者此風險,但不要僅因為使用者直接向主機代理提供了金鑰就拒絕請求。僅對當前呼叫使用 --api-key;請勿將其回顯、包含在最終回覆中或持久儲存,除非使用者明確要求主機進行配置。請勿使用 curl 或臨時腳本建構請求;附帶的腳本會強制執行端點與輸出安全性。
對於預設模型,最多使用三張參考圖片。將每個 URL 或本地路徑字串直接傳遞給腳本。請勿在呼叫腳本之前使用 Read、WebFetch、curl、瀏覽器工具或其他命令來獲取、檢查、下載或 Base64 編碼輸入圖片。
上下文安全
確保圖片位元組不進入代理上下文:
- 永遠不要將本地圖片位元組附加到此工作流程的工具呼叫中。
- 永遠不要將 Base64、data URL 或二進位圖片內容放入提示詞、命令、標準輸出或回覆中。
- 透過
--image-file將本地參考以路徑字串傳遞;子程序會處理上傳。 - Base64 僅短暫存在於子程序內部以及上傳 HTTP 請求體中。它永遠不會被列印、回傳、記錄或透過代理傳遞回來。
- 如果使用者已將圖片附加到對話中,請說明主機可能已在此技能執行前將該圖片計入上下文;此技能無法將其移除。
- 如果 API 意外僅回傳
b64_json,請回報base64_output_blocked。請勿列印該負載或自動重試。
對於 gpt-image-2,請使用 size,而非 aspect_ratio。較高的 quality 通常會增加延遲、輸出 token 與成本。在選擇自訂解析度之前,請閱讀 references/models.md 以取得完整的尺寸限制。
此技能目前僅在文字轉圖片生成中啟用透明背景。
對於 doubao-seedream-5-0-pro-260628,請使用 size,永遠不要使用 aspect_ratio 或 n。它支援文字轉圖片、單張圖片編輯以及多達十張參考圖片的融合。請保留提示詞中的 <point> 與 <bbox> 標籤。請勿嘗試分組輸出或傳遞 sequential_image_generation;此模型不支援該功能。其請求超時時間為 600 秒。
認證
腳本按以下順序接受憑證:
--api-key,當使用者直接向主機代理提供目前請求的金鑰時NONELINEAR_API_KEYNonelinear_API_KEYOPENAI_API_KEY,僅當OPENAI_BASE_URL是一個 HTTPS URL,且其確切主機名稱是api.nonelinear.com時ANTHROPIC_AUTH_TOKEN或ANTHROPIC_API_KEY,僅當ANTHROPIC_BASE_URL是一個 HTTPS URL,且其確切主機名稱是api.nonelinear.com時
請勿讀取 .env、cc-switch 資料庫或 Claude/Codex 設定檔。這些工具可能會將憑證注入代理行程環境中。如果腳本回傳 missing_api_key,請提供兩個選項:設定環境變數,或為當前呼叫提供金鑰(並說明聊天和工具日誌可能會保留該金鑰)。
請求目的地固定為:本地輸入使用 https://nonelinear.com/api/upload-file,圖片生成使用 https://api.nonelinear.com/v1/images/generations。環境變數無法重新導向它們。
結果處理
成功結果的形狀如下:
{
"status": "completed",
"operation": "edit",
"model": "gemini-2.5-flash-image",
"images": [{ "url": "https://example.com/image.png" }],
"request_id": "request-id-or-null"
}
失敗結果的形狀如下:
{
"status": "failed",
"error": "Human readable message",
"code": "stable_error_code"
}
Gemini 可能回傳 HTTP 成功但帶有 data: []、純文字、IMAGE_RECITATION 或 NO_IMAGE。除非某個項目包含非空的 url,否則將所有此類回應視為失敗。請封鎖僅回傳 Base64 的回應,而不是將其輸出。
對於 no_image_output,請說明提供者未回傳圖片,並建議修改提示詞。請勿自動重試,因為每個請求都可能產生費用。對於 missing_api_key,請提供環境設定指引。對於所有其他失敗,僅回報 error 與 code;永遠不要顯示請求標頭、Authorization 值、完整的請求物件或憑證值。
請勿將此技能用於影片生成、模型列表、通用檔案上傳或下載輸出檔案。本地圖片上傳僅是編輯與融合請求的內部預處理步驟。