migratify plan
Lee la playlist de origen, puntúa cada candidato en el destino y escribe un reporte. Una corrida interrumpida sigue donde quedó.
solo lecturaSpotify YouTube Music
Una herramienta de línea de comandos gratuita y open source que mueve playlists en los dos sentidos entre Spotify y YouTube Music: canciones, portada y Me gusta. Cuando no sabe qué versión es la correcta, pregunta en vez de adivinar.
$ git clone https://github.com/DecoudJuan/Migratify
Licencia MIT · Python 3.10+ · Windows, macOS y Linux · sin cuenta, sin servidor, sin API key
01 El problema de la canción equivocada
El mismo título existe como cover, como karaoke, como versión en vivo, como remix, como edit acelerado — y como una canción distinta de un artista distinto.
La mayoría agarra el primer resultado y te entrega una playlist que está silenciosamente 15% mal. Migratify puntúa cada candidato, y uno con el artista equivocado queda por debajo del piso de revisión — así que nunca puede llegar a ofrecerse.
02 Cómo funciona
Decidir está separado de hacer. Corré la migración entera, leé el reporte, cambiá de opinión — ninguna de las dos cuentas se enteró.
migratify planLee la playlist de origen, puntúa cada candidato en el destino y escribe un reporte. Una corrida interrumpida sigue donde quedó.
solo lecturamigratify reviewSolo las canciones que el puntaje no pudo resolver. Cinco candidatos cada una, con duración, puntaje y el motivo de cada número.
solo localmigratify applyCrea la playlist y agrega lo aceptado — nombrando la cuenta de destino antes de preguntar. Corrélo dos veces y nada se duplica.
el único que escribemigratify > apply
Continue? [Y/n]: y Created https://music.youtube.com/playlist?list=PLxK… in juan@gmail.com Added 94 tracks Cover not uploaded — YouTube Music has no API for playlist artwork. The original is at ~/.migratify/covers/a3f1c9b2e5d4.jpg if you want to set it by hand. Done. url: https://music.youtube.com/playlist?list=PLxK… account: juan@gmail.com on YouTube Music
03 Qué se lleva
Spotify → YouTube Music y de vuelta. La dirección sale de la URL que pegás.
Tu biblioteca guardada migra como cualquier playlist — y llega como una. Nunca se escribe dentro de una biblioteca.
Viaja la playlist, no solo su contenido. La portada se sube donde el destino lo permite.
migratify sync busca solo lo que nunca llegó, en la playlist que ya existe.
Sin app de desarrollador, sin client ID, sin API key. Funciona con una cuenta gratuita de Spotify.
Markdown, CSV o JSON por corrida: qué coincidió, con qué puntaje, qué faltó.
Las coincidencias se guardan localmente por dirección, así volver a correr no cuesta búsquedas nuevas.
Builds independientes para Windows y macOS. Doble clic y se abre el prompt.
Corre en tu máquina y habla solo con los dos servicios. Todo queda en ~/.migratify.
04 El motor de coincidencias
Cada candidato que vuelve se puntúa de 0 a 100. El artista y la duración se llevan el peso, porque son lo que un cover no puede falsear.
Veto de artista — un parecido menor a 0.5 deja al candidato con un tope de 40, debajo del piso de revisión, no importa lo perfecto que se vea el título.
Penalización de versión — 25 puntos por cada etiqueta distinta: en vivo, remix, acústico, instrumental, karaoke, radio edit, acelerado.
Atajo por ISRC — un ISRC exacto puntúa 100 al instante. Identidad de grabación, no parecido.
La duración es el mejor detector de covers que existe. Una regrabación casi nunca cae dentro de los cinco segundos del original. Cuando un servicio no informa la duración, puntúa un 0.5 neutro: la ausencia no es evidencia.
La regla del casi empate importa tanto como los umbrales: si los dos primeros quedan a menos de cuatro puntos, la canción va a revisión incluso con puntaje alto. Quedarse con el número más alto sería tirar una moneda disfrazada de decisión. Todos los umbrales se pueden configurar.
05 Comandos
| Comando | Qué hace | ¿Escribe? |
|---|---|---|
migratify |
Abre el prompt interactivo — el banner de arriba. Los comandos se escriben sin el prefijo. | no |
migratify login |
Conecta los dos servicios iniciando sesión. Importa una sesión del navegador cuando puede y abre una ventana de login cuando no. | no |
migratify auth status |
Qué está conectado y qué navegadores encontró en esta máquina. | no |
migratify playlists spotify |
Lista tus playlists de un servicio, con la cantidad de canciones. Incluye tus Me gusta. | no |
migratify plan <url> |
Compara la playlist entera y escribe un reporte. Se puede correr todas las veces que quieras. | no |
migratify review |
Resuelve las coincidencias dudosas. Tus decisiones quedan guardadas localmente. | no |
migratify apply |
Crea la playlist de destino y agrega lo aceptado. Pregunta primero, y nombra la cuenta. | sí |
migratify migrate <url> |
plan → review → apply, guiado, en un solo comando. | sí |
migratify migrate liked --to ytmusic |
Migra tu biblioteca guardada. También --to spotify para el otro sentido. |
sí |
migratify sync <url> |
Agrega solo las canciones que nunca llegaron al destino, dentro de la playlist que creó la primera corrida. | sí |
migratify runs |
Las corridas anteriores con su ID, para revisar o reportar una vieja. | no |
migratify report --format csv |
Vuelve a generar el reporte de cualquier corrida en Markdown, CSV o JSON. | no |
06 Descargar
Sin Python. Descomprimir y listo. ~70 MB.
Python 3.10 o más nuevo, en cualquier sistema.
$ git clone https://github.com/DecoudJuan/Migratify
$ cd Migratify && pip install -e ".[login]"
$ migratify login
login es la automatización del navegador, lo que te deja conectar iniciando sesión.migratify auth status para confirmar que funcionó.migratify auth ytmusic --paste
07 Preguntas
Instalá Migratify, ejecutá migratify login una vez para iniciar sesión en los dos servicios y después migratify migrate con la URL de la playlist. Migratify detecta la dirección a partir del link, busca cada canción en YouTube Music, te pregunta por las que no puede decidir y solo entonces crea la playlist.
Sí. Es el mismo motor en los dos sentidos y la dirección se toma de la URL que pegás: un link de Spotify migra hacia YouTube Music y un link de YouTube Music migra hacia Spotify. El matching no cambia en nada.
Sí, en cualquier dirección: migratify migrate liked --to ytmusic, o --to spotify. Tu biblioteca guardada llega como una playlist normal del otro lado. Migratify nunca escribe dentro de una biblioteca guardada: una playlist que no querías se borra con un clic, y varios cientos de canciones agregadas a tu biblioteca no.
No. Iniciás sesión como lo hacés siempre, en una ventana del navegador, y Migratify guarda esa sesión localmente. No hay nada que registrar ni nada que pegar.
Sí, y por eso iniciar sesión es el camino por defecto. Desde 2025 Spotify exige una suscripción Premium para que una app recién registrada pueda usar la Web API, así que el flujo clásico de registrar una app no está disponible en una cuenta gratuita. Iniciar sesión no pasa por esa puerta.
Ese es exactamente el error que Migratify existe para evitar. Cada candidato se puntúa por artista, título, duración, álbum y tipo de resultado. Un candidato con el artista equivocado queda vetado por debajo del piso de revisión, así que ni siquiera puede ofrecerse. Cada etiqueta de versión distinta (en vivo, remix, acústico, karaoke, acelerado) cuesta 25 puntos. Una canción se acepta sola solo con 88 o más, sin diferencia de versión y sin un segundo candidato pegado; cualquier cosa menos clara te espera en la cola de revisión.
El nombre y la descripción viajan en los dos sentidos, y la portada se sube cuando el destino es Spotify. YouTube Music no tiene ninguna API para la portada de una playlist, así que en ese sentido Migratify descarga la imagen original a tu máquina y te dice dónde quedó, por si querés subirla a mano.
Ejecutá migratify sync con la misma URL. Busca solo las canciones que nunca llegaron al destino y las agrega a la playlist que creó la primera migración, en vez de crear una segunda. El vínculo se recuerda por servicio de destino.
Migratify es gratis y tiene licencia MIT. Corre entero en tu máquina y habla solamente con Spotify y con YouTube Music. Las sesiones, el caché de coincidencias y los reportes viven en la carpeta .migratify de tu carpeta personal. No hay servidor de Migratify ni cuenta que crear.
No, a propósito. Una versión alojada necesitaría tus credenciales de Spotify y de YouTube en el servidor de otra persona, y el matcher depende de librerías que no tienen lugar en un content script. Una herramienta local de línea de comandos es la forma honesta de resolver esto, y también es la razón por la que nada de lo que migrás pasa por un tercero.
Corré plan todas las veces que quieras: nunca toca una cuenta.
No se crea nada hasta que decís apply.
$ migratify migrate https://open.spotify.com/playlist/…