CLI · áudio · Suno via Kie

Manda o link. Ele entende a música antes de refazer.

Clonar uma faixa e criar uma do zero são caminhos diferentes. O musicaclone separa os dois e trava tudo que costuma dar errado no meio.

Capa do projeto musicaclone
O que é

Um CLI de uma linha por etapa, com portão antes do caro

Você passa um link (YouTube, Facebook, TikTok, qualquer coisa que o yt-dlp abra). Ele baixa o áudio, pergunta ao Gemini se aquilo é mesmo música, extrai estilo e letra, monta um spec, mostra pra você — e só então gera no Suno pela API do Kie.

🎧 Clone de verdade

Usa o áudio original como referência (upload-cover), então melodia e estrutura ficam. Não é "uma música parecida".

🛑 Portões de sanidade

Não é música? Trava. Letra veio truncada? Avisa. Fonte é um teaser de 29 s? Mostra a duração antes de você gastar crédito.

📁 Estado em disco

Cada faixa vira uma pasta com spec.json: taskId gravado antes do poll, custo medido de verdade, e regen pra ajustar sem reanalisar.

Como funciona

Dois caminhos, um portão no meio

O caminho de cima é o clone (parte de um link). O de baixo é a criação (parte de uma ideia). Os dois passam pelo mesmo portão antes de gastar crédito.

link yt-dlp: resolve + baixa Gemini: é música? estilo + letra spec.json 🛑 seu ok upload da referência Suno (Kie) poll 2 faixas MP3

Clone — prep + clone

Áudio original vira referência no Kie. O peso --audio-weight decide o quanto a faixa nova gruda no original: 0.9 é quase o mesmo arranjo, 0.4 é só inspirado.

Criação — cria + regen

Sem referência. Você entrega tags de estilo e a letra; o modelo faz o resto. É o caminho pra trilha, jingle, tema original.

Pré-requisitos

Três chaves e dois binários

Nada roda como serviço. É um script bash com curl, jq, yt-dlp e um python de análise.

Binários

yt-dlp para o download, jq para o estado, ffmpeg para a extração de áudio.

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

Chave do Kie

É quem gera a música. Pegue em kie.ai/api-key e ponha num .env — o script lê em runtime, nunca versiona.

# .env ao lado do script
KIE_API_KEY=sk-...

Chave do Gemini

É quem escuta o áudio e diz se é música, qual o estilo e qual a letra.

# mesmo .env
GOOGLE_API_KEY=...
Guia de uso · passo a passo

Do link ao MP3

Comandos reais. O único passo que gasta crédito é o 3 — e ele só roda depois que você olhou o passo 2.

1

Preparar a faixa

Resolve o link, baixa o áudio, classifica e analisa. Não gasta crédito do Kie.

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

Olhar o portão

Aqui você confere o que ele entendeu. Se a duração for de teaser ou a letra vier incompleta, pare e arrume antes.

bash musica.sh spec minha-faixa

--- viking-gods  [clone] ---
fonte:    «Viking Gods» by Bob Dominator
duracao:  29.07s          <- teaser, nao e a musica inteira
modo:     cover
style:    epic pop, cinematic, female lead vocals, nordic, driving rhythm
letra completa? false  (75 palavras)
3

Gerar (isto gasta crédito)

Sobe a referência, dispara o job e grava o taskId antes de qualquer poll — se a conexão cair, você retoma em vez de pagar de novo.

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

Acompanhar e baixar

As URLs do Suno expiram, então get baixa na hora e ainda calcula o custo real da geração.

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

Criar do zero (o outro caminho)

Sem link. Você escreve o estilo em tags e entrega a letra num arquivo com [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

O que dá pra girar quando o resultado sai torto

Tudo vive no spec.json, então regen refaz com o ajuste sem repetir download nem análise.

FlagO que fazQuando mexer
--styletags de som (gênero, instrumento, vocal, andamento)timbre saiu errado
--negativeo que evitarsaiu acústico e você queria pesado
--voz m|fgênero do vocalvocal veio trocado
--audio-weightsó no clone: quanto puxa a referência0.85–0.95 cola no original, 0.4 só inspira
--style-weightadesão ao estilo descritoignorou as tags
--weirdnessdesvio criativoficou óbvio demais
--modelV4 … V5_5 (default V5)V5_5 é o único com --duration
--instrumentalsem vocaltrilha e BGM

Estilo bom é tag curta em inglês, separada por vírgula: nordic folk metal, epic, male gang vocals, war drums, low brass, 140bpm. Frase corrida funciona pior.

Custos

Medido, não estimado

O script grava o saldo antes de gerar e escreve o gasto real no spec.json. O número abaixo saiu de uma geração de verdade em 2026-08-05, não de tabela de terceiro.

ServiçoPreçoFaz clone de áudio?
Suno via Kie (este projeto)12 créditos por geração de 2 faixas ≈ US$ 0,06 (~US$ 0,03/faixa)Sim — upload-cover
Suno direto (assinatura)5 créditos/música; Pro US$ 10/mês ≈ 500 músicasSó na web, sem API oficial
ElevenLabs Music~US$ 0,30–0,40 por minuto gerado (3 min ≈ US$ 1,00–1,20)Não
Udiocrédito por geração; Standard US$ 10/mês = 2.400 créditosSem API pública madura

Resumo: o Kie ganha aqui por ser o único dos três com clone a partir de áudio de referência, e por sair ~17–20× mais barato que o ElevenLabs por faixa.

Roadmap

O que existe e o que vem

O que está marcado como pronto foi rodado ponta a ponta, incluindo uma geração paga real.

Pronto
Clone e criação, com portõesprep, spec, clone, cria, regen, status, get, saldo. Custo medido automaticamente.
Pronto
Entrega no Telegramenviar.sh manda o MP3 direto no bot.
Próximo
PersonaReusar a mesma voz entre faixas. O endpoint ainda precisa ser confirmado na API do Kie.
Próximo
Extend e stemsEsticar uma faixa boa e separar instrumental de vocal.
Depois
VideoclipeLigar a saída no pipeline de vídeo do INEMA.