kie · v0.5
Documentación
Todo lo que hace la CLI, en una página. JSON en stdout al hacer pipe, tablas en la terminal, códigos de salida para bifurcar.
Instalación
Node ≥ 20. El paquete tiene cero dependencias en runtime y se publica desde GitHub Actions con provenance de npm.
npm i -g @uxdata-co/kie
kie version
npm audit signatures # opcional: verifica que el tarball salió del repo
Desde el código: clona julio-daza/kie-cli y luego cd kie && npm install && npm run build && npm link.
API key
Crea una key dedicada para agentes en kie.ai/api-key y ponle ahí topes por hora/día más una lista blanca de IPs — KIE los aplica aunque alguien se salte esta CLI. KIE es prepago: mantén un saldo moderado.
kie key set— pega la key, la entrada está oculta.kie key check— origen, key enmascarada, validez, saldo.kie key delete— la elimina del almacén.
kie key set
kie key check
Orden de resolución: KIE_API_KEY solo con KIE_ALLOW_ENV_KEY=1 → Keychain de macOS (servicio kie-cli) → ~/.config/kie/key (0600). KIE_DISABLE_KEYCHAIN=1 fuerza el archivo. La key nunca aparece en stdout, stderr, el ledger ni la config.
Comandos
Los comandos de generación esperan la tarea, descargan el resultado y cierran el ledger, salvo que pases --no-wait.
| kie key set|check|delete | Guardar la API key (Keychain / archivo 0600), verificarla, eliminarla. |
| kie credits | Saldo más el gasto de hoy contra el presupuesto diario. |
| kie models [--kind image|video] | Catálogo curado con los flags que soporta cada modelo. |
| kie image <modelo> --prompt … [opts] | Generar una imagen, esperar, descargar. |
| kie video <modelo> --prompt … [opts] | Generar un video, esperar, descargar. |
| kie run <model-id> --input '{…}' --max-credits N | Vía de escape para cualquier modelo del Market de KIE. |
| kie status <taskId> | Una consulta, sin descarga. |
| kie wait <taskId> [--out dir] | Consultar hasta terminar, descargar, cerrar el ledger. |
| kie upload <archivo> | Archivo local → URL temporal para --ref / --image (KIE lo borra a los ~3 días). |
| kie ledger [--limit 20] | Registro local de gasto con creditsConsumed reales. |
| kie config set <clave> <valor> | dailyBudget · maxCreditsPerTask · outDir · pollSeconds · waitTimeoutSeconds |
| kie skill install [--agent claude|codex|cursor|gemini|all] | Instalar el skill kie-media (--project para el repo actual). |
Flags de generación
El catálogo traduce los flags genéricos a los campos de entrada de cada modelo; --set pasa cualquier campo crudo.
| --prompt <texto> | El prompt. |
| --ref <url> | Imagen de referencia, repetible (edición / estilo / referencia multimodal). |
| --image <url> / --end-image <url> | Primer y último frame para video. |
| --aspect, --resolution, --duration | 16:9 · 1K|2K|4K|720p · segundos |
| --sound, --fast, --format | Audio nativo · variante barata · png|jpg |
| --set clave=valor | Campo crudo del modelo, repetible. callBackUrl se rechaza. |
| --max-credits <n> | Aceptar gastar hasta n créditos en esta tarea. |
| --dry-run | Imprime el request exacto, no envía nada. |
| --out <dir>, --name <base>, --no-wait | Dónde van los archivos · nombre base · enviar y volver. |
| --json, --pretty, --no-color, --quiet | Control de salida. JSON es automático al hacer pipe. |
Catálogo de modelos
Alias que escribes → ids de modelo en KIE. Solo nano-banana-2 tiene estimación de créditos verificada; el resto exige --max-credits.
| nano-banana-2 | imagen | Google Nano Banana 2 — genera + edita con hasta 14 referencias. Est. 1K=8 · 2K=12 · 4K=18 créditos. |
| seedream-v4 | imagen | ByteDance Seedream V4 — texto a imagen, pasa a edición con --ref. |
| kling-3.0 | video | Kling 3.0 — 3–15 s, audio nativo, --set mode=pro. |
| seedance-2.5 | video | ByteDance Seedance 2.5 — frames o referencias multimodales, 4–30 s. |
| minimax-h3 | video | MiniMax H3 — elige el submodelo según tus flags (texto / imagen / referencia). |
| veo3 | video | Google Veo 3 — endpoint propio, --fast para veo3_fast. |
Cualquier modelo del Market de KIE que no esté en el catálogo:
kie run <vendor>/<modelo> --input '{"prompt":"…"}' --max-credits 30 --dry-run
kie run <vendor>/<modelo> --input '{"prompt":"…"}' --max-credits 30
Guardia de gasto y códigos de salida
Se evalúa antes de que cualquier request salga de la máquina. Si bloquea, el código de salida es 3 y no se envió nada.
- 01Tope por tarea — los modelos con estimación verificada se comparan con
maxCreditsPerTask; el resto necesita un--max-creditsexplícito. - 02Presupuesto diario —
~/.config/kie/ledger.jsonlregistra cada tarea; al completarse se escribe elcreditsConsumedreal. Las pendientes cuentan por su tope. - 03Saldo — la estimación (o el tope) debe caber en los créditos restantes de la cuenta.
Códigos de salida
| 0 | éxito |
| 1 | la tarea falló del lado de KIE (no se cobra) |
| 2 | error de uso |
| 3 | bloqueado por la guardia de gasto — no se envió nada |
| 4 | tiempo agotado — la tarea sigue corriendo; kie wait |
| 5 | error de API / autenticación |
Configuración
~/.config/kie/config.json (o $KIE_CONFIG_DIR). Se lee con kie config y se cambia con kie config set .
| dailyBudget | 200 | Créditos máximos por día UTC entre todas las ejecuciones (≈ US$1 a $0.005/crédito) |
| maxCreditsPerTask | 50 | Tope por tarea para modelos con estimación conocida |
| outDir | ./kie-media | Dónde se descargan los resultados |
| pollSeconds | 5 | Intervalo de consulta mientras espera |
| waitTimeoutSeconds | 900 | Deja de esperar tras esto; la tarea sigue en KIE |
kie config
kie config set dailyBudget 300
Skill de agente (kie-media)
El paquete incluye un skill (spec Agent Skills) que enseña a los agentes de código a usar la CLI: revisar el presupuesto primero, imágenes antes que video, siempre acotar el gasto en video, devolver rutas de archivo y nunca tocar la key. Un comando lo instala para los agentes que uses.
kie skill install # los cuatro
kie skill install --agent claude # uno de: claude | codex | cursor | gemini
kie skill install --project # en el repo actual, para el equipo
kie skill install --force # sobrescribe una copia vieja
Claude Code
- path
~/.claude/skills/kie-media- invoke
/kie-media
CLI, app de escritorio y extensión de IDE. Los skills se detectan al iniciar la sesión.
Codex
- path
~/.agents/skills/kie-media- invoke
$kie-media · /skills
CLI, extensión de IDE y app de escritorio.
Cursor
- path
~/.cursor/skills/kie-media- invoke
/ en el chat del Agente
Cursor 2.4+. También lee ~/.agents/skills.
Gemini CLI
- path
~/.gemini/skills/kie-media- invoke
auto (activate_skill) · /skills list
Pide consentimiento la primera vez. También lee ~/.agents/skills.
Sin la CLI: npx skills add julio-daza/kie-cli (skills.sh) instala la misma carpeta para cualquier agente soportado.
Contrato de salida
Si stdout es una terminal ves tablas, paneles y un spinner en vivo. Con pipe, o con --json, stdout es estrictamente JSON y los mensajes van a stderr — eso es lo que deben usar los agentes. --pretty fuerza la vista humana; --no-color o NO_COLOR quita el ANSI.
kie image nano-banana-2 --prompt "…" --json
{
"taskId": "task_…",
"model": "nano-banana-2",
"state": "success",
"creditsConsumed": 8,
"files": ["kie-media/nano-banana-2-c0ffee12.png"]
}
Notas de seguridad
- La CLI solo habla con
api.kie.ai,kieai.redpandaai.co(host de subida de KIE) y las URLs de resultado que KIE devuelve. - Nunca envía
callBackUrl;--set callBackUrl=…y--input {"callBackUrl":…}se rechazan. - Los resultados siempre se descargan — las URLs de KIE expiran en ~24 h — y la CLI devuelve rutas, no enlaces.
- Las subidas con
kie uploadvan al almacenamiento temporal de KIE y se borran a los ~3 días. - Reporta vulnerabilidades en privado por GitHub Security Advisories (ver SECURITY.md).
Preguntas frecuentes
¿Funciona en Linux o Windows?
Sí. Sin Keychain, la key se guarda en ~/.config/kie/key con permisos 0600. Todo lo demás es idéntico.
¿Cómo se construye el paquete de npm?
Cada release la publica GitHub Actions desde un tag de git, con provenance de npm: el tarball queda vinculado criptográficamente al commit que lo produjo. Cero dependencias en runtime: lo que auditas es lo que corre.
¿Y si un modelo no está en el catálogo?
kie run <model-id> --input '{…}' --max-credits N envía cualquier modelo del Market de KIE. Revisa el schema en docs.kie.ai primero, o usa --dry-run.
¿Puedo usarlo sin un agente?
Claro. En la terminal muestra tablas, paneles y un spinner en vivo; si haces pipe obtienes JSON.