Generación de imágenes mediante relay
Usa el script relay.sh en la carpeta de esta habilidad (la misma carpeta donde se encuentra este SKILL.md). Lee la URL y el token del relay desde relay.env al lado (o desde IMAGE_RELAY_URL / IMAGE_RELAY_TOKEN si están configurados), llama al relay y guarda las imágenes como archivos. Ejecútalo con bash, usando su ruta completa.
Nunca imprimas, hagas eco o muestres el token o relay.env, y nunca pongas el token en la línea de comandos.
Generar
bash /ruta/a/image-gen/relay.sh generate "Un zorro acuarela en un bosque nevado" --aspect 16:9
Opciones:
--aspect R: uno de 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9--n N: número de imágenes (1-4)--model M: solo si el usuario pide un modelo específico; ejecutarelay.sh modelspara listar los permitidos--out DIR: donde guardar (por defecto:/mnt/user-data/outputscuando existe, si no, el directorio actual)
Las líneas de salida tienen el formato saved: /ruta/abc123.jpg (512345 bytes, relay file: abc123.jpg). Muestra o adjunta los archivos guardados al usuario. Conserva los nombres de relay file para ediciones posteriores.
Esperando resultados
La generación puede llevar minutos, por lo que el relay lo ejecuta como un trabajo en segundo plano. relay.sh generate envía el trabajo y verifica cada ~30 segundos (el intervalo que pide el relay) hasta 90 segundos. Si la imagen está lista, recibes las líneas saved: como de costumbre.
Si imprime pending: job <id> ..., el trabajo aún se está ejecutando en el relay y no se ha perdido. Espera el número de segundos indicado (ej. sleep 30), luego ejecuta:
bash /ruta/a/image-gen/relay.sh result <id>
Mientras esperas, el script puede decir que el trabajo está "siendo revisado" (el relay aún está revisando la solicitud) o "aceptado, generando". Repite hasta que imprima líneas saved: o un error. No vuelvas a enviar el prompt mientras un trabajo esté pendiente: eso generaría (y facturaría) una segunda imagen. --wait SEGUNDOS cambia cuánto espera una llamada (por defecto 90).
Editar o usar imágenes de referencia
Pasa los archivos de imagen del usuario con --image (repetible, hasta 4 en total; PNG, JPEG, WebP o GIF, máximo 10 MB cada uno):
bash /ruta/a/image-gen/relay.sh generate "Haz el cielo púrpura, mantén todo lo demás igual" --image /ruta/a/foto.jpg
Para refinar una imagen generada anteriormente en la conversación, pasa su nombre de archivo relay con --ref (más rápido que volver a subir; los archivos relay caducan después de 24 horas):
bash /ruta/a/image-gen/relay.sh generate "Agrega una pequeña luna en la esquina superior derecha" --ref abc123.jpg
--ref también acepta una URL de imagen https://.
Cómo redactar el prompt
Escribe un prompt específico que cubra el sujeto, estilo, composición, iluminación y colores. Para ediciones, indica qué cambiar y qué mantener.
Errores
El script imprime error: HTTP <código> <nombre_código>: <mensaje>:
rate_limited: espera los segundos indicados, luego reintenta una vez.model_not_allowed,invalid_aspect_ratio,invalid_n: corrige la opción y reintenta.invalid_input_images/ 413: la imagen no es de un tipo soportado o es demasiado grande; conviértela o redúcela.upstream_error(ej. "no respondió a tiempo"): el relay ya reintentó por su cuenta. Informa al usuario, luego reenvía una vez; si falla de nuevo, detente y repórtalo.request_rejected: el relay no aceptó la solicitud (no da razón). Informa al usuario que fue rechazada; no adivines la causa, ni reescribas ni disfraces el prompt o las imágenes para evadirlo, ni reenvíes.prompt_rejected: la política de contenido del relay bloqueó el prompt. Informa al usuario; no reformules el prompt para evadir el filtro.image_rejected: una imagen de referencia fue bloqueada por la política de contenido. Informa al usuario; no reintentes con la misma imagen ni intentes disfrazarla.no_image: no se produjo ninguna imagen; reformula el prompt.job_not_found/job_lost: el ID del trabajo expiró o el servidor lo abortó; vuelve a enviar el prompt.could not reach: el acceso de red al dominio del relay está bloqueado. Indica al usuario que permita el dominio en Configuración → Capacidades (egreso de red).unauthorized: el token falta, es incorrecto o ha expirado. Informa al usuario; no intentes encontrar otro token.