{"adoption": {"forks": 362, "observed_at": "2026-08-28T04:08:54.547197+00:00", "stars": 4582}, "canonical_url": "https://ross.abutalabs.com/products/spotify_to_ytmusic", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Copy playlists and liked music from Spotify to YTMusic", "domain": ["media", "developer-tools"], "enriched": true, "function": ["cli", "gui", "web-scraping", "workflow-automation"], "health_score": 77, "homepage": null, "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["linsomniac/spotify_to_ytmusic"], "name": "linsomniac/spotify_to_ytmusic", "platform": ["python", "cross-platform", "cli"], "pushed_at": "2026-04-13T19:32:08+00:00", "repo": "linsomniac/spotify_to_ytmusic", "stars": 4582, "tags": ["spotify", "youtube-music", "playlist-migration", "music-transfer", "ytmusicapi", "automation", "desktop"], "topics": [], "urls": [], "use_cases": ["migrate my Spotify playlists to YouTube Music", "copy liked songs from Spotify to YT Music", "backup Spotify playlists before switching services", "transfer music library between streaming platforms", "bulk create YouTube Music playlists from a Spotify export"], "what_it_is": "A set of Python scripts and a GUI for copying liked songs and playlists from Spotify to YouTube Music. It uses the Spotify backup data and ytmusicapi to recreate playlists and liked tracks on the destination service.", "when_to_avoid": ["you need transfers to or from other services like Apple Music or Deezer", "you want a hosted one-click service with no setup", "you cannot obtain YouTube Music browser credentials or a Spotify data export"], "when_to_choose": ["you are moving from Spotify to YouTube Music and want to keep playlists and liked songs", "you want a free, scriptable, offline migration using a Spotify data backup", "you prefer a simple GUI or CLI over paid transfer services"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/spotify_to_ytmusic", "repo": "linsomniac/spotify_to_ytmusic", "role": "main", "score": 63}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:54.547197+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:53.579618+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dd804077c856ad545e8d29d30150d6f49ec8da8092d203042a9f670d848e7b0f", "fetched_at": "2026-08-28T04:08:54.547197+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linsomniac/spotify_to_ytmusic"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 70, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 985, "days_push": 142, "days_rel": 578, "gap_med": 0, "n_releases_24m": 2}, "score": 63, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}