릴레이를 통한 이미지 생성
이 스킬 폴더(SKILL.md와 같은 폴더)에 있는 relay.sh 스크립트를 사용하세요. 스크립트는 같은 위치에 있는 relay.env에서 릴레이 URL과 토큰을 읽거나(또는 IMAGE_RELAY_URL / IMAGE_RELAY_TOKEN 환경 변수가 설정된 경우 이를 사용), 릴레이를 호출하고 이미지를 파일로 저장합니다. 전체 경로를 사용하여 bash로 실행하세요.
절대 토큰이나 relay.env를 출력, 표시, 읽지 말고, 토큰을 명령줄에 포함시키지 마세요.
생성
bash /path/to/image-gen/relay.sh generate "눈 덮인 숲속의 수채화 여우" --aspect 16:9
옵션:
--aspect R: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 중 하나--n N: 이미지 수 (1-4)--model M: 사용자가 특정 모델을 요청한 경우에만 사용; 허용된 모델 목록은relay.sh models실행--out DIR: 저장 위치 (기본값:/mnt/user-data/outputs디렉토리가 존재하면 해당 경로, 그렇지 않으면 현재 디렉토리)
출력 결과는 saved: /path/abc123.jpg (512345 bytes, relay file: abc123.jpg) 형식입니다. 저장된 파일을 사용자에게 보여주거나 첨부하세요. 후속 편집을 위해 relay file 이름을 유지하세요.
결과 대기
생성에는 시간이 걸릴 수 있으므로 릴레이는 백그라운드 작업으로 실행합니다. relay.sh generate는 작업을 제출하고 약 30초(릴레이가 요청하는 간격)마다 최대 90초 동안 확인합니다. 이미지가 준비되면 평소와 같이 saved: 줄이 출력됩니다.
pending: job <id> ...가 출력되면 작업이 여전히 릴레이에서 실행 중이며 손실되지 않은 것입니다. 명시된 초(예: sleep 30)만큼 기다린 후 다음을 실행하세요:
bash /path/to/image-gen/relay.sh result <id>
기다리는 동안 스크립트가 작업이 "확인 중"(릴레이가 요청을 계속 검토 중) 또는 "수락됨, 생성 중"이라고 말할 수 있습니다. saved: 줄이나 오류가 출력될 때까지 반복하세요. 작업이 보류 중인 동안 프롬프트를 다시 제출하지 마세요. 그러면 두 번째 이미지가 생성되어 비용이 청구됩니다. --wait SECONDS는 한 번 호출 시 대기 시간을 변경합니다(기본값 90).
참조 이미지 편집 또는 사용
사용자의 이미지 파일을 --image로 전달하세요(최대 4번까지 반복 가능, PNG, JPEG, WebP 또는 GIF, 각 10MB 이하):
bash /path/to/image-gen/relay.sh generate "하늘을 보라색으로 만들고, 나머지는 그대로 유지" --image /path/to/photo.jpg
대화 중 이전에 생성된 이미지를 개선하려면 --ref에 릴레이 파일 이름을 전달하세요(재업로드보다 빠름, 릴레이 파일은 24시간 후 만료):
bash /path/to/image-gen/relay.sh generate "오른쪽 상단에 작은 달 추가" --ref abc123.jpg
--ref는 https:// 이미지 URL도 허용합니다.
프롬프트 작성
주제, 스타일, 구도, 조명 및 색상을 다루는 구체적인 프롬프트를 작성하세요. 편집의 경우 무엇을 변경하고 무엇을 유지할지 명시하세요.
오류
스크립트는 error: HTTP <code> <code_name>: <message> 형식으로 출력합니다:
rate_limited: 명시된 초만큼 기다린 후 한 번 재시도하세요.model_not_allowed,invalid_aspect_ratio,invalid_n: 옵션을 수정하고 재시도하세요.invalid_input_images/ 413: 이미지가 지원되는 유형이 아니거나 너무 큽니다. 변환하거나 크기를 줄이세요.upstream_error(예: "제 시간에 응답하지 않음"): 릴레이가 자체적으로 이미 재시도했습니다. 사용자에게 알린 후 한 번 재제출하세요. 다시 실패하면 중단하고 보고하세요.request_rejected: 릴레이가 요청을 수락하지 않았습니다(이유를 제공하지 않음). 사용자에게 거부되었음을 알리세요. 원인을 추측하거나, 프롬프트나 이미지를 수정/위장하거나, 재제출하지 마세요.prompt_rejected: 릴레이의 콘텐츠 정책이 프롬프트를 차단했습니다. 사용자에게 알리세요. 필터를 우회하기 위해 프롬프트를 다시 작성하지 마세요.image_rejected: 참조 이미지가 콘텐츠 정책에 의해 차단되었습니다. 사용자에게 알리세요. 동일한 이미지로 재시도하거나 위장하려 하지 마세요.no_image: 이미지가 생성되지 않았습니다. 프롬프트를 다시 작성하세요.job_not_found/job_lost: 작업 ID가 만료되었거나 서버가 중단했습니다. 프롬프트를 다시 제출하세요.could not reach: 릴레이 도메인에 대한 네트워크 접근이 차단되었습니다. 사용자에게 설정 → 기능(네트워크 이그레스)에서 도메인을 허용하도록 알리세요.unauthorized: 토큰이 없거나, 잘못되었거나, 만료되었습니다. 사용자에게 알리세요. 다른 토큰을 찾으려 시도하지 마세요.