GPT Image 2 API Key
Descripción general
Genera o edita imágenes con un proveedor gpt-image-2 configurado por separado ejecutando scripts/generate_image.py. Utiliza este skill cuando la generación de imágenes deba facturarse, autenticarse y aislarse de una clave API de imágenes dedicada en lugar de las credenciales actuales de OpenAI/Codex de Codex.
El skill deliberadamente no lee OPENAI_API_KEY, archivos de autenticación de Codex, ni credenciales de sesión de ChatGPT/Codex. Solo lee el archivo de configuración privado seleccionado por --config, o el archivo de configuración predeterminado documentado a continuación.
Qué soluciona
Este skill aborda un problema común del flujo de trabajo de Codex: la sesión actual de Codex puede estar autenticada con una clave API, mientras que la generación de imágenes debe usar otra clave, otra cuenta, otra cuota o un proxy compatible con OpenAI.
Utiliza este skill para:
- Mantener las credenciales de generación de imágenes separadas de las credenciales de Codex.
- Llamar a un endpoint de imágenes
gpt-image-2o compatible desde Codex sin exponer la clave en indicaciones, comandos o archivos del repositorio. - Generar imágenes a través de
/v1/images/generations. - Editar imágenes existentes a través de
/v1/images/editscon carga multipart. - Usar una o más imágenes de referencia para ediciones, cambios de estilo, tratamientos de logotipos, maquetas de productos y transformaciones de imagen a imagen.
- Opcionalmente, proporcionar una imagen de máscara para ediciones limitadas a una región.
- Guardar los resultados generados en rutas locales explícitas que Codex puede mostrar, inspeccionar o pasar a pasos posteriores.
Casos de uso
Utiliza este skill para solicitudes como:
- "Genera un logotipo con el texto exacto
JunXxxxi." - "Usa esta imagen de referencia y haz que la marca denominativa sea cursiva."
- "Cambia el texto de este logotipo a un degradado metálico de plata a negro."
- "Crea una imagen de producto usando gpt-image-2, pero usa mi clave API de imágenes separada."
- "Edita esta imagen conservando la composición original."
- "Usa un proveedor de imágenes compatible con OpenAI con una URL base personalizada."
Prefiere el procesamiento de imágenes local determinista en lugar de este skill cuando el cambio solicitado sea una transformación de píxeles simple que deba preservar la geometría exacta, como recortar, redimensionar, conversión alfa o un remapeo de color completamente determinista. Prefiere este skill cuando el usuario desee interpretación visual basada en modelos, cambios de estilo o generación.
Contenido
gpt-image-2-apikey/
├── SKILL.md
├── agents/
│ └── openai.yaml
└── scripts/
└── generate_image.py
SKILL.md: Flujo de trabajo orientado a Codex y documentación de uso legible por humanos.agents/openai.yaml: metadatos opcionales para la interfaz de usuario de Codex.scripts/generate_image.py: script de Python 3 sin dependencias que llama a los endpoints de generación o edición.
El script admite respuestas de imagen tanto en b64_json como en formato URL. Las respuestas URL se descargan inmediatamente y se escriben en la ruta de salida solicitada.
Configuración privada
Ruta de configuración predeterminada:
~/.config/gpt-image-2-apikey/config.json
La configuración debe contener la clave del proveedor de imágenes, no la clave API actual de Codex:
{
"api_key": "poner-clave-del-proveedor-de-imágenes-aquí",
"base_url": "https://api.openai.com/v1",
"model": "gpt-image-2"
}
Establece permisos privados después de crear el archivo:
chmod 600 ~/.config/gpt-image-2-apikey/config.json
Usa --config /ruta/al/config.json solo cuando el usuario solicite explícitamente otro archivo de configuración privado.
Campos de configuración
api_key: obligatorio. La clave del proveedor de imágenes. No uses la clave API actual de Codex a menos que se pretenda explícitamente.base_url: opcional. El valor predeterminado eshttps://api.openai.com/v1. Para proveedores compatibles con OpenAI, mantenlo en la raíz de la API, por ejemplo,https://example.com/v1.model: opcional. El valor predeterminado esgpt-image-2.extra_body: objeto opcional. Los valores se fusionan en el cuerpo de la solicitud para campos específicos del proveedor.
Ejemplos válidos de base_url:
{
"base_url": "https://api.openai.com/v1"
}
{
"base_url": "https://www.packyapi.com/v1"
}
No incluyas /images/generations o /images/edits en base_url a menos que estés fijando intencionadamente un endpoint exacto. El script normalmente añade el endpoint correcto automáticamente.
Uso
Ejecuta desde el directorio del skill:
python3 scripts/generate_image.py \
--prompt "Una foto de producto limpia de un teclado mecánico negro mate sobre un escritorio de nogal" \
--out /ruta/absoluta/hacia/salida.png \
--size 1024x1024 \
--quality high
Si se omite --edit-image, el script llama a:
POST <base_url>/images/generations
Edita una o más imágenes de referencia añadiendo --edit-image:
python3 scripts/generate_image.py \
--prompt "Convierte este logotipo en texto cursiva con degradado de plata a negro conservando la ortografía exacta" \
--edit-image /ruta/absoluta/hacia/entrada.png \
--out /ruta/absoluta/hacia/editada.png \
--size 1024x1024 \
--quality high
Si --edit-image está presente, el script llama a:
POST <base_url>/images/edits
Para ediciones enmascaradas, añade --mask /ruta/absoluta/hacia/mascara.png:
python3 scripts/generate_image.py \
--prompt "Solo cambia el fondo a un gris de estudio limpio, conservando el sujeto" \
--edit-image /ruta/absoluta/hacia/fuente.png \
--mask /ruta/absoluta/hacia/mascara.png \
--out /ruta/absoluta/hacia/editada.png \
--quality high
Repite --edit-image para ediciones con múltiples imágenes:
python3 scripts/generate_image.py \
--prompt "Combina el producto de la imagen 1 con el ambiente de fondo de la imagen 2" \
--edit-image /ruta/absoluta/hacia/producto.png \
--edit-image /ruta/absoluta/hacia/referencia-fondo.png \
--out /ruta/absoluta/hacia/combinada.png
Proporciona siempre una ruta --out absoluta cuando el usuario necesite el archivo en una ubicación específica. Si se omite, el script escribe un PNG con marca de tiempo en el directorio de trabajo actual.
Referencia de comandos
--prompt Descripción obligatoria de la imagen o instrucción de edición.
--out Ruta de la imagen de salida. Las salidas adicionales usan -2, -3, etc. antes de la extensión.
--config Ruta de configuración privada. Por defecto ~/.config/gpt-image-2-apikey/config.json.
--model Sobrescribe el modelo de la configuración.
--size Tamaño de imagen admitido por el proveedor. Por defecto: 1024x1024.
--quality low, medium, high o auto. Por defecto: auto.
--n Número de imágenes. Por defecto: 1.
--format png, jpeg o webp. Por defecto: png.
--edit-image Ruta de la imagen de entrada para /v1/images/edits. Repetible.
--mask Ruta opcional de la máscara PNG para ediciones.
--timeout Tiempo de espera HTTP en segundos. Por defecto: 600.
--dry-run Imprime el endpoint, el cuerpo y la lista de archivos censurados sin llamar a la API.
Usa --dry-run antes de una llamada real para verificar la configuración, el enrutamiento del endpoint o si una edición utilizará el archivo de entrada previsto:
python3 scripts/generate_image.py \
--prompt "solo simulación" \
--edit-image /ruta/absoluta/hacia/entrada.png \
--out /ruta/absoluta/hacia/salida.png \
--dry-run
La salida de simulación censura la autorización como Bearer ***redacted***.
Orientación para indicaciones
Para generación:
- Indica explícitamente el tipo de activo, sujeto, estilo, diseño y texto requerido.
- Pon el texto visible exacto entre comillas.
- Incluye "sin texto adicional, sin marca de agua" cuando trabajes en logotipos, carteles o gráficos de interfaz de usuario.
- Usa
quality highpara logotipos finales, imágenes con mucho texto, fotos de producto y entregables pulidos. - Usa
quality lowpara exploración económica y borradores rápidos.
Para ediciones:
- Describe el cambio, no la imagen completa, a menos que la imagen completa deba reinterpretarse.
- Nombra explícitamente lo que debe conservarse: ortografía del texto, diseño, composición, identidad facial, forma del producto, colores o fondo.
- Para gráficos con mucho texto, repite la ortografía exacta y las mayúsculas en la indicación.
- Usa máscaras para ediciones quirúrgicas cuando el proveedor lo admita.
Ejemplo de indicación de edición:
Edita la imagen del logotipo proporcionada. Conserva el texto exacto "JunXxxxi" y el mismo diseño de la marca denominativa. Haz que las letras sean cursivas/inclinadas hacia la derecha. Cambia el relleno de las letras a un degradado metálico de plata brillante en la parte superior/izquierda a negro profundo en la parte inferior/derecha. Mantén un fondo blanco limpio. No añadas palabras adicionales, iconos, marcas de agua, bordes o elementos decorativos.
Reglas de aislamiento
- No pases ni copies la clave API actual de Codex a este skill.
- No leas
OPENAI_API_KEY; el script lo ignora intencionadamente. - No imprimas
api_keyni el contenido de la configuración. El script solo informa de un resumen de configuración censurado en--dry-run. - Si falta la configuración, dile al usuario que cree el archivo de configuración privado. No lo crees con un secreto real en su nombre a menos que se te solicite explícitamente.
- Si un proveedor utiliza un endpoint compatible con OpenAI, establece
base_urlen la configuración privada. El script añade/images/generationspara generación y/images/editspara ediciones.
Notas de configuración
- Mantén
config.jsonfuera de Git. Nunca confirmes claves API reales. - Usa el modo de archivo
600para la configuración privada. - Mantén
base_urlen la raíz de la API (.../v1) a menos que el proveedor documente lo contrario. - Si el proveedor requiere campos de solicitud personalizados, colócalos en
extra_body. - Si el proveedor no admite
gpt-image-2, establecemodelcon el nombre del modelo compatible del proveedor. - Si el proveedor solo admite respuestas URL, el script descargará la URL devuelta.
- Si el proveedor devuelve imágenes base64 en
b64_json, el script las decodificará directamente. - Las llamadas de red pueden generar cargos en la cuenta del proveedor configurado.
Ejemplo con campos específicos del proveedor:
{
"api_key": "poner-clave-del-proveedor-de-imágenes-aquí",
"base_url": "https://example.com/v1",
"model": "gpt-image-2",
"extra_body": {
"moderation": "auto"
}
}
Manejo de fallos
- Configuración faltante o
api_keyfaltante: informa la ruta de configuración y los campos obligatorios. - Error HTTP: muestra el código de estado y el cuerpo del error del proveedor, pero nunca incluyas la clave.
- Respuesta del proveedor no compatible: informa las claves de respuesta de nivel superior y no guarda ningún archivo.
- Múltiples imágenes: la primera imagen usa
--out; las imágenes adicionales obtienen-2,-3, etc. antes de la extensión.
Limitaciones
- Este skill es un envoltorio de API, no un editor gráfico completo. Utiliza herramientas locales deterministas para recortes exactos, redimensionamientos, exportaciones vectoriales o cambios tipográficos garantizados con precisión de píxel.
- La edición de imágenes basada en modelos puede alterar el texto exacto, el interletraje o la geometría. Para logotipos y marcas denominativas, inspecciona el resultado antes de entregarlo.
- La compatibilidad de edición multipart puede variar entre proveedores compatibles con OpenAI. Si las ediciones fallan pero la generación funciona, verifica si el proveedor admite
/v1/images/editscon cargasimagemultipart. - El script actualmente envía imágenes de edición con el nombre de campo multipart
image[]para compatibilidad con múltiples imágenes. Si un proveedor requiere un nombre de campo diferente, ajustascripts/generate_image.pypara ese proveedor. - El comportamiento de fondo verdaderamente transparente depende de la compatibilidad del proveedor/modelo. Si se requieren PNG transparentes, verifica el canal alfa después de la generación.
Notas de publicación
Al publicar este skill en GitHub:
- Incluye
SKILL.md,agents/openai.yamlyscripts/generate_image.py. - No incluyas
~/.config/gpt-image-2-apikey/config.json. - No incluyas imágenes generadas a menos que sean ejemplos intencionados.
- Añade entradas
.gitignorepara configuraciones locales, salidas e imágenes temporales si este skill reside en un repositorio más grande.