{"adoption": {"forks": 251, "observed_at": "2026-08-28T04:07:00.930558+00:00", "stars": 2561}, "canonical_url": "https://ross.abutalabs.com/products/yt-dlp-web-ui", "card": {"archived": false, "artifact_type": "application", "description": "A terrible web ui and RPC server for yt-dlp. Designed to be self-hosted.", "domain": ["self-hosted", "media", "web-development"], "enriched": true, "function": ["http-server", "rpc", "web-framework", "developer-tools"], "health_score": 98, "homepage": null, "language": "Go", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["marcopiovanello/yt-dlp-web-ui"], "name": "marcopiovanello/yt-dlp-web-ui", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-08-21T10:13:09+00:00", "repo": "marcopiovanello/yt-dlp-web-ui", "stars": 2561, "tags": ["yt-dlp", "download-manager", "video-downloader", "youtube", "golang", "rpc-server", "livestream-monitoring", "automation", "docker", "linux", "web-server"], "topics": ["youtube-dl", "yt-dlp", "webui", "yt-dlp-wrapper", "self-hosted", "download-manager", "raspberrypi", "golang", "rpc-server", "yt-dlp-rpc"], "urls": [], "use_cases": ["download youtube videos from my home server", "self-hosted yt-dlp web interface", "monitor upcoming livestreams and record them", "queue video downloads with limited concurrency", "extract audio from videos on my nas", "remote video download server with rpc api", "run yt-dlp on a raspberry pi with a web ui"], "what_it_is": "A self-hosted web UI and RPC server wrapping yt-dlp, written in Go, for downloading videos from a server or NAS and monitoring upcoming livestreams. It is lightweight, extensible, and ships as a Docker image with features like download queues, format selection, and JWT-based authentication.", "when_to_avoid": ["you need a full-featured media manager with metadata editing or library organization", "you want a desktop GUI application rather than a web interface", "you need to download from services yt-dlp itself does not support", "you require a polished, actively designed frontend - the UI is intentionally minimal"], "when_to_choose": ["you want a lightweight, self-hosted frontend for yt-dlp on a server, NAS, or Raspberry Pi", "you need a download queue with concurrency limits and format/audio extraction options", "you want an RPC API to trigger downloads programmatically with optional JWT auth", "you prefer Docker deployment with minimal resource usage"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/yt-dlp-web-ui", "repo": "marcopiovanello/yt-dlp-web-ui", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "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:07:00.930558+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.930558+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:23:30.403253+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21ae26a62878679e92ba1d23ebfa2d1fd1835a0173fc9a9d567d4374238fd9ad", "fetched_at": "2026-08-28T04:07:00.930558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcopiovanello/yt-dlp-web-ui"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 78}, "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": 1749, "days_push": 12, "days_rel": 65, "gap_med": 53, "n_releases_24m": 6}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}