{"adoption": {"forks": 108, "observed_at": "2026-08-28T04:06:22.057330+00:00", "stars": 2175}, "canonical_url": "https://ross.abutalabs.com/products/soulsync", "card": {"archived": false, "artifact_type": "application", "description": "Intelligent Music & Video Automation Platform", "domain": ["media", "self-hosted", "audio"], "enriched": true, "function": ["workflow-automation", "search-engine", "scheduling", "webhook"], "health_score": 100, "homepage": "https://ssync.net/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Nezreka/SoulSync"], "name": "Nezreka/SoulSync", "platform": ["self-hosted", "python"], "pushed_at": "2026-08-26T04:55:49+00:00", "repo": "Nezreka/SoulSync", "stars": 2175, "tags": ["music-downloader", "soulseek", "plex", "jellyfin", "navidrome", "playlist-generator", "metadata-enrichment", "acoustid", "lidarr-alternative", "media-server", "metadata", "automation", "video", "docker", "web-server", "linux"], "topics": [], "urls": [], "use_cases": ["automatically download new releases from artists I follow into my Plex music library", "generate Spotify-style discovery weekly and release radar playlists from my self-hosted library", "import my Spotify playlists and match tracks to files on my Navidrome server", "verify downloaded music files are correct with audio fingerprinting", "manage and organize a self-hosted movie and TV show collection", "scrobble plays from Jellyfin to Last.fm and ListenBrainz", "find albums by my favorite artists that are missing from my library", "automatically tag and organize downloaded music with consistent metadata"], "what_it_is": "SoulSync is a self-hosted Python application that automates music and video library management, bridging streaming services to self-hosted media servers. It monitors artists for new releases, generates personalized playlists, downloads tracks from sources like Soulseek, Deezer, Tidal, and YouTube, verifies them via AcoustID fingerprinting, and enriches metadata before organizing files into Plex, Jellyfin, or Navidrome.", "when_to_avoid": ["you only want streaming playback without downloading or library management", "you need a lightweight CLI-only downloader without a web interface", "you are unwilling to run Docker or maintain a self-hosted service", "you do not use any media server and do not want SoulSync's standalone library either"], "when_to_choose": ["you self-host music with Plex, Jellyfin, or Navidrome and want automated discovery and downloads", "you want streaming-quality playlist curation (release radar, discovery weekly) for local files", "you need multi-source downloading (Soulseek, Deezer, Tidal, Qobuz, YouTube) with fallback and verification", "you want one tool covering both music and video library automation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/soulsync", "repo": "Nezreka/SoulSync", "role": "main", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "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:06:22.057330+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:22.057330+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:48:54.148112+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "00ccdba141317d97a2f4c6ca9152739276fe4c19e3088ed3ac58261eeca407cc", "fetched_at": "2026-08-28T04:06:22.057330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Nezreka/SoulSync"}, {"content_hash": "11c460701bfb60cbe5a5176ac525a12150cd9586bdf2d05e535e3e1e5f886ed7", "fetched_at": "2026-08-29T10:28:56.515345+00:00", "kind": "homepage", "missing": false, "url": "https://ssync.net/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 30, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 420, "days_push": 7, "days_rel": 7, "gap_med": 1, "n_releases_24m": 80}, "score": 81, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}