{"adoption": {"forks": 377, "observed_at": "2026-08-28T04:08:36.462486+00:00", "stars": 4150}, "canonical_url": "https://ross.abutalabs.com/products/streamcap", "card": {"archived": false, "artifact_type": "application", "description": "Multi-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 · 基于FFmpeg · 支持监控/定时/转码", "domain": ["media", "self-hosted", "cross-platform"], "enriched": true, "function": ["video-processing", "scheduling", "workflow-automation", "cli", "gui"], "health_score": 97, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["ihmily/StreamCap"], "name": "ihmily/StreamCap", "platform": ["windows", "python", "cross-platform"], "pushed_at": "2026-08-08T08:52:10+00:00", "repo": "ihmily/StreamCap", "stars": 4150, "tags": ["live-stream-recording", "ffmpeg", "streamlink-alternative", "douyin", "bilibili", "twitch", "youtube", "batch-recording", "transcoding", "notification-push", "video", "automation", "macos", "linux", "docker", "web-server"], "topics": ["douyin", "ffmpeg", "live-streaming", "tiktok", "twitch", "video-recording", "youtube", "huya", "bilibili", "douyu", "recording", "stream-capture", "cross-platform"], "urls": [], "use_cases": ["record live streams from douyin and bilibili automatically", "monitor twitch channels and record when they go live", "batch download live streams to mp4", "schedule recordings of youtube live streams", "self-hosted live stream recorder with docker", "get notified when a streamer starts broadcasting", "record tiktok live streams"], "what_it_is": "StreamCap is a Python-based client that automatically records live streams from 40+ domestic and international platforms (Douyin, Bilibili, Twitch, YouTube, TikTok, etc.) using FFmpeg and StreamGet. It supports batch recording, continuous monitoring, scheduled checks, automatic transcoding to mp4, and live status push notifications, running as a desktop app, web UI, or Docker container.", "when_to_avoid": ["you only need a simple one-off stream download rather than ongoing monitoring", "you require a GUI-native non-Python solution", "the target platform is not among the supported 40+ sites"], "when_to_choose": ["you need to record from many Chinese and international live platforms in one tool", "you want loop monitoring that starts recording the moment a stream goes live", "you prefer a self-hosted recorder with desktop, web, and Docker deployment options", "you need automatic transcoding and multiple output formats"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/streamcap", "repo": "ihmily/StreamCap", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "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:08:36.462486+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:36.462486+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:54.301747+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f53ecc24ee4b837cdc17e33302dff8012bb4978dae893dbc41d539c8d4ac7a2", "fetched_at": "2026-08-28T04:08:36.462486+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ihmily/StreamCap"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 38, "rhythm": 71}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 538, "days_push": 25, "days_rel": 112, "gap_med": 85, "n_releases_24m": 4}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}