PTENES
CLI · audio · Suno vía Kie

Pásame el enlace. Entiende la música antes de rehacer.

Clonar una pista y crear una desde cero son caminos diferentes. musicaclone los separa y bloquea todo lo que suele salir mal en el proceso.

Portada del proyecto musicaclone
Qué es

Un CLI de una línea por etapa, con un control antes de lo costoso

Pasas un enlace (YouTube, Facebook, TikTok, cualquier cosa que yt-dlp pueda abrir). Descarga el audio, le pregunta a Gemini si realmente es música, extrae el estilo y la letra, prepara una spec, te la muestra — y solo entonces genera en Suno mediante la API de Kie.

🎧 Clon real

Usa el audio original como referencia (upload-cover), entonces la melodía y la estructura se mantienen. No es «una canción parecida».

🛑 Puertas de cordura

¿No es música? Se bloquea. ¿La letra llegó truncada? Avísame. ¿La fuente es un teaser de 29 s? Muestra la duración antes de que gastes crédito.

📁 Estado en disco

Cada pista se convierte en una carpeta con spec.json: taskId guardado antes del poll, costo medido de verdad, y regen para ajustar sin volver a analizar.

Cómo funciona

Dos caminos, un control en medio

El camino de arriba es el clon (parte de un enlace). El de abajo es la creación (parte de una idea). Ambos pasan por la misma puerta antes de gastar crédito.

enlace→ yt-dlp: resuelve + descarga→ Gemini: ¿es música?→ estilo + letra→ spec.json→ 🛑 tu aprobación→ carga de la referencia→ Suno (Kie)→ poll→ 2 pistas MP3

Clonación — prep + clone

El audio original se convierte en referencia en Kie. El peso --audio-weight decide cuánto se parece la nueva pista al original: 0.9 es casi el mismo arreglo, 0.4 solo está inspirado.

Creación — cria + regen

Sin referencia. Entregas etiquetas de estilo y la letra; el modelo hace el resto. Es el camino para una banda sonora, un jingle o un tema original.

Requisitos previos

Tres claves y dos binarios

Nada se ejecuta como servicio. Es un script bash con curl, jq, yt-dlp y un python de análisis.

Binarios

yt-dlp para la descarga, jq para el estado, ffmpeg para la extracción de audio.

# debian/ubuntu
sudo apt install jq ffmpeg
pipx install yt-dlp

Clave de Kie

Es quien genera la música. Consíguela en kie.ai/api-key y ponla en un .env — el script lo lee en tiempo de ejecución, nunca lo versiona.

# .env al lado del script
KIE_API_KEY=sk-...

Clave de Gemini

Es quien escucha el audio y dice si es música, cuál es el estilo y cuál es la letra.

# mismo .env
GOOGLE_API_KEY=...
Guía de uso · paso a paso

Del enlace al MP3

Comandos reales. El único paso que consume créditos es el 3, y solo se ejecuta después de que revises el paso 2.

1

Preparar la pista

Resuelve el enlace, descarga el audio, lo clasifica y lo analiza. No gasta crédito de Kie.

bash musica.sh prep "https://youtube.com/watch?v=..." minha-faixa
2

Revisar la puerta

Aquí compruebas lo que entendió. Si la duración es de teaser o la letra está incompleta, detente y corrígelo antes.

bash musica.sh spec minha-faixa

--- viking-gods  [clone] ---
fuente:    «Viking Gods» by Bob Dominator
duración:  29.07s          <- teaser, no es la música entera
modo:     cover
style:    epic pop, cinematic, female lead vocals, nordic, driving rhythm
letra completa? false  (75 palabras)
3

Generar (esto consume créditos)

Sube la referencia, inicia el job y guarda el taskId antes de cualquier poll — si se cae la conexión, retomas en lugar de volver a pagar.

bash musica.sh clone minha-faixa --audio-weight 0.85
4

Seguir y descargar

Las URL de Suno caducan, así que get la descarga de inmediato y además calcula el costo real de la generación.

bash musica.sh status minha-faixa   # PENDING → TEXT_SUCCESS → FIRST_SUCCESS → SUCCESS
bash musica.sh get minha-faixa      # faixa-1.mp3, faixa-2.mp3, creditos gastos: 12
5

Crear desde cero (el otro camino)

Sin enlace. Escribes el estilo en etiquetas y entregas la letra en un archivo con [Verse] / [Chorus].

bash musica.sh cria meu-tema \
  --style "epic cinematic pop, powerful female belt vocals, war drums, 118bpm" \
  --title "Se Paga" --voz f --letra letra.txt
bash musica.sh regen meu-tema
Ajustes

Qué puedes ajustar cuando el resultado sale torcido

Todo está en el spec.json, entonces regen vuelve a hacerlo con el ajuste sin repetir la descarga ni el análisis.

FlagQué haceCuándo ajustar
--styleetiquetas de sonido (género, instrumento, voz, tempo)el timbre salió mal
--negativequé evitarsalió acústica y tú querías algo pesado
--voz m|fgénero de la vozla voz llegó intercambiada
--audio-weightsolo en el clon: cuánto influye la referencia0.85–0.95 se apega al original; 0.4 solo sirve de inspiración
--style-weightadhesión al estilo descritoignoró las etiquetas
--weirdnessdesvío creativoquedó demasiado obvio
--modelV4 … V5_5 (default V5)V5_5 es el único con --duration
--instrumentalsin vozpista y BGM

Un buen estilo es una etiqueta corta en inglés, separada por comas: nordic folk metal, epic, male gang vocals, war drums, low brass, 140bpm. Las frases corridas funcionan peor.

Costos

Medido, no estimado

El script registra el saldo antes de generar y escribe el gasto real en el spec.json. El número de abajo salió de una generación real el 2026-08-05, no de una tabla de terceros.

ServicioPrecio¿Clona audio?
Suno vía Kie (este proyecto)12 créditos por generación de 2 pistas ≈ US$ 0,06 (~US$ 0,03/pista)Sí — upload-cover
Suno directo (suscripción)5 créditos/canción; Pro US$ 10/mes ≈ 500 cancionesSolo en la web, sin API oficial
ElevenLabs Music~US$ 0,30–0,40 por minuto generado (3 min ≈ US$ 1,00–1,20)No
Udiocréditos por generación; Standard US$ 10/mes = 2.400 créditosSin una API pública madura

Resumen: Kie gana aquí por ser el único de los tres que clona a partir de audio de referencia y porque cuesta ~17–20× menos que ElevenLabs por pista.

Roadmap

Lo que existe y lo que viene

Lo que aparece como listo se ejecutó de principio a fin, incluida una generación real de pago.

Listo
Clonación y creación, con controlesprep, spec, clone, cria, regen, status, get, saldo. Costo medido automáticamente.
Listo
Entrega en Telegramenviar.sh envía el MP3 directamente al bot.
Siguiente
PersonaReutiliza la misma voz entre pistas. Aún hay que confirmar el endpoint en la API de Kie.
Siguiente
Extender y stemsExtender una buena pista y separar el instrumental de la voz.
Después
VideoclipConectar la salida al pipeline de video de INEMA.