El plan de las tres partes se escribe antes de gastar un centavo. Lo lees, ajustas lo que quieras, apruebas parte por parte y solo entonces generas. La portada y el clip salen gratis con Agnes; solo la música consume créditos.

Pedirle a un agente genérico «haz una canción sobre X» da como resultado cualquier pista, una portada que no tiene relación con ella y ningún clip. Las tres partes quedan desconectadas porque nunca hubo un plan común. Aquí, el plan es el producto.
Un plano.json de esquema cerrado decide junto con la estructura de la música, el concepto de la portada y el desglose del videoclip, consultando una base de estilos medidos a partir de material real (BPM, tono, instrumentación, tipo de voz).
Cada parte tiene su propio ciclo: ver → ajusta → ok → faz. Puedes parar después de aprobar la portada y volver tres días después: el estado.json retoma desde donde lo dejaste.
Proveedor conectable con el patrón adapter + models.json declarativo. Sin clave, aparece no disponible con el motivo — nunca se dispara el costo al generar. Cambiar es una flag.
La investigación es opt-in. El plan es gratis. La ejecución es por partes, con el costo estimado en pantalla antes de cualquier llamada. La entrega es automática cuando las tres están listas.
Solo con --pesquisa. Consulta la web para ver referencias del nicho y si el tema tiene tracción; se convierte en pesquisa.md y se incorpora como contexto del planificador. Nunca sobrescribe lo que pediste.
Costo cero de API de medios. Sale plano.json (el contrato) y PLANO.md (para que lo leas). La letra puede ser tuya: como borrador, termina y muestra el diff; como final, es ley y ni siquiera lo modifica.
faz solo ejecuta lo que se aprobó. Si un proveedor falla, la ejecución no se detiene: esa parte pasa a ser erro con el mensaje y las demás siguen (exit 2).
Cero dependencias de pip: todo está en stdlib. Las claves se leen en tiempo de ejecución desde .env autorizados y nunca se copian al repo.
python3 (3.10+) e ffmpeg, se usa para concatenar los shots del clip.
# Debian/Ubuntu sudo apt install ffmpeg
AGNES_API_KEY ofrece imágenes y videos a costo cero. Es el valor predeterminado de ambas partes y la razón por la que funciona en cualquier VPS.
# leída en tiempo de ejecución desde: ~/projetos/openpcbotv2/.env
KIE_API_KEY (Suno v4.5), ~US$ 0,08 por generación — que ya incluye dos pistas.
# leída en tiempo de ejecución desde: ~/projetos/wifi/.env
Comandos reales. El camino normal tiene una puerta; al final está el atajo sin puerta para cuando confías en el plan.
Clona y listo — no hay build ni pip install.
git clone https://github.com/inematds/musicavideo.git && cd musicavideo
Solicitud en texto libre. El plan de las tres partes sale junto, y el PLANO.md aparece en pantalla.
bash musicavideo.sh plano "música de virada, rock feminino, sobre quem constrói em silêncio e agora cobra"
Sin argumento, muestra el plan completo. Con la parte, solo muestra su sección: estilo y letra, concepto y prompt de la portada o el desglose shot a shot.
bash musicavideo.sh ver agora-eu-cobro # el plan completo bash musicavideo.sh ver agora-eu-cobro clipe # solo el desglose
Vuelve a planificar solo esa parte e imprime el diff de lo que cambió. Cuantas veces quieras: todavía no se generó nada.
bash musicavideo.sh ajusta agora-eu-cobro musica "mais lento, e o refrão sobe uma oitava"
Parte sin ok no genera. Aprobar una no aprueba las demás.
bash musicavideo.sh ok agora-eu-cobro musica
Muestra el costo estimado por parte y el total antes de llamar a cualquier API. Sin esa parte, ejecuta todo lo que esté aprobado. --sim omite la confirmación.
bash musicavideo.sh faz agora-eu-cobro musica # costo estimado: # música US$ 0.0800 (kie:suno-v4.5) # total US$ 0.0800 # ¿confirmar? [s/N]
Como borrador, el planificador termina y muestra el diff. Con --letra-final, la letra va verbatim y nadie la modifica — ni el ajusta.
bash musicavideo.sh plano "sertanejo" --letra rascunho.txt bash musicavideo.sh plano "sertanejo" --letra final.txt --letra-final
Planifica, aprueba las tres partes y ejecuta. El límite evita que te excedas: lo que alcanzó queda listo, el resto sigue aprobado y se reanuda con faz.
bash musicavideo.sh tudo "balada pop sobre recomeço" --teto 2 --sim
El motor está en el plan, nunca en el código. La flag sobrescribe en plano, ajusta o faz.
bash musicavideo.sh faz agora-eu-cobro clipe --motor clipe=kling:kling-2.5
Cada slug se convierte en una línea en el index.jsonl, se reescribe con cada cambio de estado. El catálogo crece con cada uso y alimenta al propio planificador.
bash musicavideo.sh lista 10 bash musicavideo.sh busca "rock" bash musicavideo.sh custo agora-eu-cobro # estimado vs. gastado
Son dos paneles, y es a propósito. El panel local es la mesa de trabajo: ahí se escucha, se compara, se envía a la papelera y donde se aprueba lo que sale de la máquina. A vitrina es lo que ve el público. Publicar no es consecuencia de que esté listo: la producción lista es material de trabajo.
Un servicio de systemd mantiene el banco de trabajo en línea desde el arranque, en la red local. Quedarse sin servicio por olvidar ejecutar el comando es el defecto, no el ahorro.
systemctl --user enable --now musicavideo-painelO publica-hf sube solo lo que cambió, escribe el manifiesto en el repo de la vitrina y hace commit — publicar termina con el push, no a mitad del proceso.
bash musicavideo.sh publica-hf # 0 producciones si nada cambió
Los archivos están en un dataset público en Hugging Face, que sirve range request — la barra del video navega directamente, sin proxy ni almacenamiento de pago. La vitrina solo lee el manifiesto.
bash musicavideo.sh likes # vuelve el ♥ del público
Los valores predeterminados de portada y clip cuestan US$ 0 a propósito: eso permite que el proyecto funcione en cualquier VPS sin tener una cuenta en ningún lado.
kie:suno-v4.5 — ~US$ 0,08 por generación, trae 2 pistas. La única parte de pago hoy.
agnes:agnes-image-2.1-flash — US$ 0. Alternativa: inemaimg:flux2-klein, servidor local en el DGX.
agnes:agnes-video-v2.0 — US$ 0, los shots se concatenan con ffmpeg. Alternativas pagas: kling:kling-2.5 e fal:kling-video-v2.5-turbo-pro.
Agregar un proveedor requiere dos archivos: providers/<nome>.py implementando disponivel/estimar_custo/gerar, e providers/<nome>.models.json declarando modelos, costo y params aceptados. Nada más cambia en el proyecto.
# salida de un slug ~/projetos/output/musicavideo/<slug>/ ├── plano.json # el contrato ├── PLANO.md # el mismo plan, para leer y aprobar ├── estado.json # fuente de verdad: fases, costo, errores, historial ├── faixa.mp3 capa.png clipe.mp4 ├── PACOTE.md # entrega (completa o parcial, con lo que falta) └── raw/ # respuestas sin procesar de los proveedores
El núcleo está cerrado y probado. Lo que falta es amplitud de proveedores y el acabado del clip.
plano.json es un contrato cerrado precisamente para que otros proyectos lo consuman sin saber cómo se hizo.