Un corto de ~38 segundos hecho solo con la suscripción Kling AI vía el CLI oficial: tu rostro real en el primer cuadro, 4 clips encadenados, el efecto de congelamiento y el montaje con sonido.

Pollo en el horno → café → abre el horno → el pollo sale vivo → todo se congela y la cámara pasea por la escena → el tiempo vuelve y llega el desastre.
La gallina sale en el instante en que se abre la puerta. En el congelamiento todo se detiene, tú también, y solo la cámara se mueve. Cuando el tiempo vuelve, el movimiento avanza un poquito y se traba, avanza y se traba de nuevo — 4 paradas, cada una más corta, con el sonido cortándose en cada trabada — y recién entonces sigue a la velocidad natural. Sin cámara lenta: son cuadros reales sostenidos en ffmpeg (montar_paradas.sh).
Tienes el plato en la mano y abres el microondas para meter la comida, y sale un gato vivo y asustado. Del susto, el plato se te escapa. Dos momentos congelados, en 4K y sin desenfoque: el gato en el aire con la comida volando, y el plato haciéndose añicos en el piso con trozos y arroz suspendidos. Después tiras toda la cocina. Cada congelamiento es una foto 4K nítida (nitido.sh) con el movimiento de cámara hecho en ffmpeg (freeze.sh), así nada en ella se mueve ni se desenfoca. Prompts k4, N1, N3, F2, N5.
No es una app, es una receta probada: 3 scripts de shell + prompts en texto. Cada pieza se puede cambiar para contar otra historia.
El primer cuadro se genera a partir de una foto real de tu rostro (Nano Banana Pro, dentro de la propia Kling). El resto de la película hereda ese rostro.
Cada clip empieza en el último cuadro del anterior. Mismo personaje, misma cocina, misma luz, sin "saltos" entre escenas.
Kling 3.0 con enable_audio: puertas, pasos, café, el cacareo y el silencio del congelamiento salen junto con la imagen. El ffmpeg solo une y normaliza.
Todo con tu cuenta Kling AI (CLI kling). Nada de Magnific, RunComfy u otro revendedor: es tu suscripción, tus créditos.
| Clip | Qué pasa | Duración | Créditos Kling |
|---|---|---|---|
| k1 | Still: tú colocando el pollo en el horno | imagen 2k | 20 |
| A | Empuja la bandeja, cierra el horno, gira la perilla | 5s | 60 |
| B | Sirve el café, toma un sorbo, vuelve y toca la puerta | 8s | 96 |
| C | Pollo vivo salta, el tiempo se congela, la cámara orbita, el tiempo vuelve | 15s | 180 |
| D | El desastre a velocidad normal: harina, ollas, resbalón, fuga por la ventana | 10s | 120 |
Medido en la cuenta (plan Pro): Kling 3.0 a 1080p con audio sale por 12 créditos/segundo. La película completa costó cerca de 476 créditos.
Tres cosas: el CLI oficial de Kling con sesión iniciada en tu cuenta, ffmpeg y Python 3.
CLI oficial, cliente del MCP de Kling. Inicio de sesión vía navegador (OAuth).
npm i -g @klingai/cli-global kling login kling account # plan + créditos
Para extraer el último cuadro, generar contact sheets y montar el video final.
sudo apt install ffmpegUsados por los scripts para leer el JSON de Kling y descargar los archivos.
python3 --version curl --version
Los comandos de abajo son exactamente los que generaron el video. Ejecútalos dentro de la carpeta del repo.
El who_am_i lista los modelos y parámetros que tu suscripción habilita. Presta atención a los valores por defecto: Kling 3.0 viene con 4k, audio apagado y multi-shot activado, y los scripts sobrescriben los tres.
kling who_am_i -q > who_am_i.json kling account
Una foto tuya + el prompt de la escena. Sale un still 2k 16:9 que se convierte en el primer cuadro de la película.
./keyframe.sh ref/nei.jpg prompts/k1.txt # → keyframes/k1.png
Cada clip.sh genera el clip, lo descarga, mide el audio, hace un contact sheet y guarda el último cuadro, que es el inicio del siguiente.
./clip.sh A keyframes/k1.png 5 # pollo en el horno ./clip.sh B keyframes/A_last.png 8 # café y vuelta al horno ./clip.sh C keyframes/B_last.png 15 # pollo vivo + TIME FREEZE ./clip.sh D keyframes/C_last.png 10 # el desastre
Abre clips/X_sheet.png (8 cuadros a lo largo del clip). Si algo salió mal, rehaz solo ese clip: los siguientes parten de su último cuadro.
xdg-open clips/C_sheet.png
Estandariza en 1920×1080/24fps, corta el cuadro repetido de cada empalme, une con el audio nativo y normaliza en -14 LUFS.
./montar.sh A B C D # → congelou_final.mp4
Están en prompts/. El del congelamiento (C) fue adaptado de la plantilla freeze_effect_template_en.md, que es un esqueleto de escena, congelamiento, cámara congelada, reanudación y continuidad.
Photorealistic cinematic film still, 35mm, natural warm daylight. The man from image 1 (same face, bald head with short white hair on the sides, white stubble beard, black rectangular glasses, plain dark green t-shirt) stands in a cozy rustic home kitchen with exposed brick walls and dark wooden ceiling beams. He is bending slightly and sliding a metal roasting pan with a whole raw seasoned chicken (pale skin, herbs, garlic, lemon halves) into an open built-in stainless steel oven at waist height. [...]
ACTION: The man pulls the oven door open, holding his white coffee mug in his other hand. Hot steam pours out. Suddenly the whole plucked, half-roasted golden chicken jumps up ALIVE from the roasting pan and leaps out of the oven straight toward his face [...] droplets of hot grease, sprigs of rosemary, a lemon slice and a garlic clove fly out of the pan. [...] TIME FREEZE: At the peak of the chicken's leap, time stops completely. The chicken hangs motionless in mid-air [...] Nothing moves except the camera. FROZEN CAMERA: The camera slowly glides around the frozen scene [...] RESUME: Time resumes instantly at normal speed with no effect. The chicken crashes onto the kitchen counter [...] Sound: [...] during the freeze total silence with only a low high-pitched ringing tone [...]
Prompts completos: github.com/inematds/congelou/prompts.
Todo objeto suspendido necesita una causa. El romero vuela porque el pollo saltó de la bandeja; el café vuela porque la taza se volcó del susto.
Pide "nothing moves except the camera" y describe el recorrido de la cámara entre los objetos suspendidos.
Describe el audio del freeze ("total silence with a low ringing tone"). El audio nativo acompaña el cambio.
Contact sheets reales generados por fetch.sh.




El pipeline no sabe nada de pollos. Para hacer otro video, reescribes los prompts y ejecutas los mismos tres scripts.
Presentación → preparación → lo imposible (freeze) → consecuencia. Cada golpe se convierte en un clip de 5 a 15s. Ejemplo: "lavo el auto → voy a buscar la manguera → el auto se va solo → se congela en el aire sobre el charco → aterriza y me salpica de barro".
mkdir ~/projetos/meu-freeze && cd ~/projetos/meu-freeze cp ~/projetos/congelou/{keyframe,clip,fetch,montar}.sh . mkdir prompts ref && cp minha-foto.jpg ref/
prompts/k1.txt es el primer cuadro, y A.txt, B.txt… son los clips. En el clip del congelamiento, copia el esqueleto de freeze_effect_template_en.md y cambia solo el contenido. Pon siempre una línea Sound: al final.
./keyframe.sh ref/minha-foto.jpg prompts/k1.txt ./clip.sh A keyframes/k1.png 5 ./clip.sh B keyframes/A_last.png 8 ./clip.sh C keyframes/B_last.png 15 OUT=meu_filme.mp4 ./montar.sh A B C
Se puede pedir en lenguaje natural. Di "usa mi suscripción klingai" para que use el CLI kling, y pasa la historia y el archivo de plantilla del freeze.
# ejemplo de solicitud "usa el klingai directo y crea esta historia: ... congelo como este prompt ~/projetos/congelou/prompts/freeze_effect_template_en.md; júntalo con sonido"
Detalles que ahorran créditos la próxima vez.
enable_audio true y prefer_multi_shots false.fetch.sh descarga en cuanto el clip termina.