NoneLinear 이미지은(는) 무엇을 하나요?
번들된 종속성 없는 Node.js 스크립트를 실행하여 이미지를 생성하거나 변환합니다. nonelinear 또는 nl CLI를 호출하지 말고, NoneLinear 요청에 호스트 에이전트의 내장 이미지 생성기를 사용하지 마십시오.
워크플로우
- 이미지 생성 또는 변환에 대한 명시적 요청을 과금 가능한 API 요청 1회로 간주합니다. 사용자가 기능이나 설정에 대해서만 물을 때는 API 요청을 하지 마십시오.
- 사용자의 의도에서 작업을 선택합니다:
generate: 참조 이미지 없음.edit: 정확히 하나의 로컬 이미지 경로 또는 공개 HTTPS 참조 이미지 URL.fuse: 최소 두 개의 로컬 경로 또는 공개 HTTPS 참조 이미지 URL.
- 프롬프트와 선택적 모델, 종횡비, 크기, 품질, 개수를 추출합니다. 사용자가 투명 이미지를 요청하면 아래 transparent-image 프리셋을 적용합니다.
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}이 스킬 디렉토리입니다. 다른 호스트에서는 이 스킬이 로드된 절대 디렉토리를 사용하십시오. - stdout에 쓰인 단일 JSON 객체를 파싱합니다.
status가completed이고images에 최소 하나의url필드가 있을 때만 성공을 선언합니다. - 이미지 URL을 클릭 가능한 링크로 반환합니다. base64 이미지 데이터를 반환하거나 표시하지 마십시오.
투명 이미지
투명 이미지, 투명 배경, 컷아웃, 또는 배경 없음에 대한 요청은 투명 출력 의도로 처리합니다. 사용자가 API 파라미터를 지정할 필요는 없습니다. 내부적으로:
gpt-image-2를 사용합니다.--background transparent및--output-format png를 전달합니다.- 프롬프트에 투명 배경을 명시적으로 요청하도록 합니다. 사용자의 의도는 분명하지만 프롬프트에 해당 내용이 아직 없는 경우 해당 문구를 추가합니다.
- 사용자가 깔끔한 컷아웃을 원할 때는 장면, 바닥, 베이스, 반사, 그림자를 제외합니다.
미리보기 배경만 보고 모델에 투명도가 없다고 주장하지 마십시오. 검증이 필요한 경우 다운로드한 원본 PNG의 알파 채널을 확인하십시오. 이미지 뷰어는 투명 픽셀을 흰색 또는 체커보드로 표시할 수 있습니다.
사용자가 로컬 이미지 경로를 제공하면 해당 경로 문자열을 --image-file에 직접 전달합니다. Read를 사용하거나, 이미지를 첨부하거나, 검사하거나, 에이전트에서 인코딩하지 마십시오. 하위 스크립트가 자체 프로세스에서 파일을 읽고 base64로 인코딩하여 고정된 NoneLinear 업로드 엔드포인트에 업로드한 후 반환된 URL만 이미지 API에 전달합니다. Base64 바이트는 stdout이나 모델 컨텍스트에 절대 들어가지 않습니다.
스크립트 호출
기본값으로 텍스트-이미지 생성:
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이나 임시 스크립트로 요청을 구성하지 마십시오. 번들된 스크립트가 엔드포인트 및 출력 안전성을 보장합니다.
기본 모델의 경우 참조 이미지를 3개 이하로 사용하십시오. 각 URL 또는 로컬 경로 문자열을 스크립트에 직접 전달합니다. 스크립트를 호출하기 전에 Read, WebFetch, curl, 브라우저 도구 또는 다른 명령을 사용하여 입력 이미지를 가져오거나, 검사하거나, 다운로드하거나, base64로 인코딩하지 마십시오.
컨텍스트 안전성
이미지 바이트를 에이전트 컨텍스트 밖에 유지:
- 이 워크플로우를 위해 로컬 이미지 바이트를 도구 호출에 절대 첨부하지 마십시오.
- base64, 데이터 URL 또는 바이너리 이미지 콘텐츠를 프롬프트, 명령, stdout 또는 응답에 넣지 마십시오.
- 로컬 참조는
--image-file로 경로 문자열을 전달합니다. 하위 프로세스가 업로드를 처리합니다. - Base64는 하위 프로세스 내부와 업로드 HTTP 본문에만 잠시 존재합니다. 절대 출력되거나, 반환되거나, 기록되거나, 에이전트를 통해 다시 전달되지 않습니다.
- 사용자가 이미 대화에 이미지를 첨부한 경우, 호스트가 이 스킬이 실행되기 전에 이미 해당 이미지를 컨텍스트에 반영했을 수 있음을 설명하십시오. 이 스킬이 이를 제거할 수 없습니다.
- API가 예기치 않게
b64_json만 반환하는 경우,base64_output_blocked를 보고합니다. 페이로드를 출력하거나 자동으로 재시도하지 마십시오.
gpt-image-2의 경우 aspect_ratio가 아닌 size를 사용하십시오. 더 높은 quality는 일반적으로 지연 시간, 출력 토큰 및 비용을 증가시킵니다. 사용자 정의 해상도를 선택하기 전에 references/models.md에서 전체 크기 제약 조건을 읽으십시오.
이 스킬은 현재 텍스트-이미지 생성에 대해서만 투명 배경을 노출합니다.
doubao-seedream-5-0-pro-260628의 경우 aspect_ratio나 n 대신 size를 사용하십시오. 이 모델은 텍스트-이미지, 단일 이미지 편집, 최대 10개의 참조 이미지 합성을 지원합니다. 프롬프트에서 <point> 및 <bbox> 태그를 유지하십시오. 그룹화된 출력을 시도하거나 sequential_image_generation을 전달하지 마십시오. 이 모델은 이를 지원하지 않습니다. 요청 시간 제한은 600초입니다.
자격 증명
스크립트는 다음 순서로 자격 증명을 받아들입니다:
--api-key, 사용자가 현재 요청을 위해 호스트 에이전트에 키를 직접 제공하는 경우NONELINEAR_API_KEYNonelinear_API_KEYOPENAI_API_KEY,OPENAI_BASE_URL의 정확한 호스트명이api.nonelinear.com인 HTTPS URL인 경우에만ANTHROPIC_AUTH_TOKEN또는ANTHROPIC_API_KEY,ANTHROPIC_BASE_URL의 정확한 호스트명이api.nonelinear.com인 HTTPS URL인 경우에만
.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": "사람이 읽을 수 있는 메시지",
"code": "stable_error_code"
}
Gemini는 data: [], 텍스트 전용, IMAGE_RECITATION 또는 NO_IMAGE와 함께 HTTP 성공을 반환할 수 있습니다. 항목에 비어 있지 않은 url이 포함되지 않는 한 이러한 모든 응답을 실패로 처리하십시오. base64 전용 응답은 내보내는 대신 차단하십시오.
no_image_output의 경우 제공자가 이미지를 반환하지 않았다고 설명하고 프롬프트 수정을 제안하십시오. 각 요청에 비용이 발생할 수 있으므로 자동으로 재시도하지 마십시오. missing_api_key의 경우 환경 설정 지침을 제공하십시오. 다른 모든 실패의 경우 error와 code만 보고하십시오. 요청 헤더, Authorization 값, 완전한 요청 객체 또는 자격 증명 값을 절대 표시하지 마십시오.
이 스킬을 비디오 생성, 모델 목록 표시, 범용 파일 업로드 또는 출력 파일 다운로드에 사용하지 마십시오. 로컬 이미지 업로드는 편집 및 합성 요청을 위한 내부 전처리 단계일 뿐입니다.