{"adoption": {"forks": 87, "observed_at": "2026-08-28T04:04:40.577826+00:00", "stars": 1421}, "canonical_url": "https://ross.abutalabs.com/products/hometube", "card": {"archived": false, "artifact_type": "application", "description": "HomeTube is a friendly video downloader managing single video URL into organized content structure for automatic home media server experience.", "domain": ["media", "self-hosted", "web-development"], "enriched": true, "function": ["video-processing", "web-framework", "developer-tools"], "health_score": 100, "homepage": null, "language": "Python", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["EgalitarianMonkey/hometube"], "name": "EgalitarianMonkey/hometube", "platform": ["self-hosted", "python", "cross-platform"], "pushed_at": "2026-08-26T18:55:39+00:00", "repo": "EgalitarianMonkey/hometube", "stars": 1421, "tags": ["yt-dlp", "media-server", "plex", "jellyfin", "emby", "sponsorblock", "homelab", "video-downloader", "streamlit", "playlist-sync", "automation", "docker", "web-server"], "topics": ["docker", "homelab", "jellyfin", "open-source", "plex", "selfhosted", "sponsorblock", "youtube-downloader", "yt-dlp"], "urls": [], "use_cases": ["download youtube videos to my plex library", "self-hosted video downloader with web ui", "sync a youtube playlist to jellyfin automatically", "download videos without ads and sponsor segments", "organize downloaded videos for my homelab media server", "embed subtitles when downloading videos", "download videos from tiktok vimeo reddit to local media server"], "what_it_is": "HomeTube is a self-hosted web UI (built on Streamlit and yt-dlp) for downloading single videos and playlists from YouTube and 1800+ other platforms. It organizes downloads into media-server-friendly structures with ad/sponsor blocking, quality control, subtitle embedding, and playlist sync for Plex, Jellyfin, or Emby.", "when_to_avoid": ["you only need a lightweight CLI downloader without a web interface", "you need a full *arr-style automated subscription pipeline rather than on-demand downloads", "you cannot run Docker or a Python 3.11+ environment", "you need to download from platforms requiring DRM circumvention"], "when_to_choose": ["you run a Plex, Jellyfin, or Emby server and want YouTube content integrated automatically", "you want a friendly web UI over yt-dlp instead of CLI commands", "you need playlist synchronization with resilient tracking", "you want native ad and sponsor blocking via SponsorBlock", "you want network-accessible downloads from any device"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hometube", "repo": "EgalitarianMonkey/hometube", "role": "main", "score": 84}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "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:04:40.577826+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:40.577826+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:37:43.534240+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d52fab18a527ecd76e32ae0aa5ce5e959f0abbaca62fab10816b70c2ae85b6fa", "fetched_at": "2026-08-28T04:04:40.577826+00:00", "kind": "readme", "missing": false, "url": "https://github.com/EgalitarianMonkey/hometube"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 25, "rhythm": 99}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 352, "days_push": 7, "days_rel": 7, "gap_med": 1.0, "n_releases_24m": 41}, "score": 84, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}