{"adoption": {"forks": 170, "observed_at": "2026-08-28T04:03:47.499793+00:00", "stars": 1153}, "canonical_url": "https://ross.abutalabs.com/products/web-server", "card": {"archived": false, "artifact_type": "service", "description": "Core backend services for StreamerHelper", "domain": ["backend", "media", "self-hosted", "apis"], "enriched": true, "function": ["http-server", "api-framework", "message-queue", "orm", "object-storage", "video-processing", "speech-recognition", "scheduling", "workflow-automation", "webhook"], "health_score": 79, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["StreamerHelper/web-server"], "name": "StreamerHelper/web-server", "platform": ["self-hosted"], "pushed_at": "2026-08-21T17:20:19+00:00", "repo": "StreamerHelper/web-server", "stars": 1153, "tags": ["livestream-recording", "ffmpeg", "bilibili", "bullmq", "midwayjs", "danmaku", "task-scheduling", "s3", "video", "automation", "nodejs", "docker", "web-server"], "topics": [], "urls": [], "use_cases": ["record livestreams from bilibili huya douyu douyin automatically", "auto-upload recorded streams to bilibili", "generate subtitles from livestream audio with ASR", "schedule and monitor recording jobs via a queue", "capture danmaku and render ASS subtitles for recordings", "self-host a livestream archiving pipeline with S3 storage"], "what_it_is": "The backend service for StreamerHelper, a self-hosted livestream recording system. It polls live status from platforms like Bilibili, Huya, Douyu, and Douyin, records streams with FFmpeg, processes media (subtitles, ASR, transcoding), and uploads finished videos to Bilibili.", "when_to_avoid": ["you only need a simple one-off stream capture without media processing or uploads", "you record from platforms not supported (Bilibili, Huya, Douyu, Douyin)", "you need a frontend UI - this is only the backend service"], "when_to_choose": ["you want an automated pipeline to record and archive live streams from Chinese platforms", "you need scheduled recording with transcoding, subtitles, and Bilibili upload in one system", "you want a self-hosted backend with queue-based job management and observability"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/web-server", "repo": "StreamerHelper/web-server", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "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:03:47.499793+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:47.499793+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:33:26.422204+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d7fa70b4350e179279d2abe6c3c2c4f4c433e5c34dc562c9912b6679c1255e1", "fetched_at": "2026-08-28T04:03:47.499793+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StreamerHelper/web-server"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2570, "days_push": 12, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}