{"adoption": {"forks": 51, "observed_at": "2026-08-28T04:05:52.710347+00:00", "stars": 1908}, "canonical_url": "https://ross.abutalabs.com/products/idonthavespotify", "card": {"archived": false, "artifact_type": "application", "description": "Effortlessly convert music links between streaming services", "domain": ["audio", "web-development"], "enriched": true, "function": ["web-scraping", "parser", "search-engine", "http-client", "web-framework"], "health_score": 84, "homepage": "https://idonthavespotify.sjdonado.com", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["sjdonado/idonthavespotify"], "name": "sjdonado/idonthavespotify", "platform": ["bun", "self-hosted"], "pushed_at": "2026-04-08T05:43:30+00:00", "repo": "sjdonado/idonthavespotify", "stars": 1908, "tags": ["music-link-converter", "streaming-services", "htmx", "raycast-extension", "spotify", "apple-music", "youtube-music", "automation", "web-server", "typescript"], "topics": ["spotify", "tailwindcss", "deezer-api", "bun", "htmx", "stimulus"], "urls": [], "use_cases": ["convert spotify link to apple music", "find a track on youtube music from a tidal link", "share a song link that works on any streaming service", "convert music links between streaming platforms", "look up an album on deezer from a spotify url", "find a podcast on other platforms"], "what_it_is": "A web app that converts music links between streaming services like Spotify, Apple Music, YouTube Music, Tidal, and Deezer. It parses the source link's metadata, searches other platforms, and returns matching track, album, artist, or podcast links.", "when_to_avoid": ["you need playlist conversion - playlists are out of scope", "you need guaranteed exact matches - results are search-based and may be imprecise", "you need a native mobile app"], "when_to_choose": ["you need to share music links with people on different streaming services", "you want a quick web tool or Raycast extension for cross-platform music lookup", "you want to self-host a lightweight link converter"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/idonthavespotify", "repo": "sjdonado/idonthavespotify", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "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:05:52.710347+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.710347+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:11:13.950296+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7fbd3eeae42f3f8b71b081c0ded47495676462cb7090c69fa4b6de67c841790", "fetched_at": "2026-08-28T04:05:52.710347+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sjdonado/idonthavespotify"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 76, "longevity": 89, "rhythm": 66}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1257, "days_push": 147, "days_rel": 147, "gap_med": 58.5, "n_releases_24m": 9}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}