{"adoption": {"forks": 1075, "observed_at": "2026-08-28T04:06:34.781946+00:00", "stars": 2289}, "canonical_url": "https://ross.abutalabs.com/products/decotv", "card": {"archived": false, "artifact_type": "application", "description": "基于最新版LunaTV二次开发的一个开箱即用的、跨平台的影视聚合播放站。【原KatelyaTV】", "domain": ["media", "web-development", "self-hosted", "entertainment"], "enriched": true, "function": ["http-server", "search-engine", "video-processing", "streaming", "web-scraping", "self-hosted", "chat-interface"], "health_score": 95, "homepage": "https://v.katelya.eu.org", "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["Decohererk/DecoTV"], "name": "Decohererk/DecoTV", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-07-16T13:02:33+00:00", "repo": "Decohererk/DecoTV", "stars": 2289, "tags": ["video-aggregator", "streaming-site", "nextjs", "hls", "artplayer", "danmaku", "douban", "tmdb", "pwa", "media-server", "live-tv", "cloud-drive-search", "video", "web-server", "docker", "nodejs"], "topics": [], "urls": [], "use_cases": ["aggregate multiple video sources into one searchable streaming site", "self-host a personal movie and TV show streaming portal", "watch videos online with danmaku comments and multi-audio-track support", "sync watch progress and favorites across devices", "search cloud drives for video content", "stream my own Emby/Jellyfin/Alist media library through a web UI", "watch live TV streams in the browser", "deploy a PWA video player installable on mobile"], "what_it_is": "DecoTV is a self-hosted, cross-platform video aggregation and playback web application built on Next.js, Tailwind CSS, and TypeScript. It aggregates multiple video sources into one searchable streaming site with features like favorites sync, watch history, danmaku comments, live TV, and private media library integration.", "when_to_avoid": ["you need built-in content sources — the project ships empty and requires you to configure your own sources", "you need a native mobile or TV app rather than a web/PWA experience", "you cannot legally host or proxy third-party video sources in your jurisdiction", "you want a simple single-source video player without aggregation"], "when_to_choose": ["you want an out-of-the-box self-hosted video aggregation site with multi-source search", "you need cross-device sync of favorites and playback progress", "you want danmaku, live TV, and private media library support in one app", "you prefer a Docker or Vercel deployment with no mandatory database"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/decotv", "repo": "Decohererk/DecoTV", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "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:34.781946+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:34.781946+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:40:42.932085+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e6ed506de0ba750eaf66dd42a68717ee6a5b6bb16c90fc378a3ca4d9c2278c80", "fetched_at": "2026-08-28T04:06:34.781946+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Decohererk/DecoTV"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 25, "rhythm": 87}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 358, "days_push": 48, "days_rel": 86, "gap_med": 10.5, "n_releases_24m": 15}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}