{"adoption": {"forks": 368, "observed_at": "2026-08-28T04:04:37.882145+00:00", "stars": 1404}, "canonical_url": "https://ross.abutalabs.com/products/91", "card": {"archived": false, "artifact_type": "application", "description": "nine one", "domain": ["media", "self-hosted", "web-development"], "enriched": true, "function": ["http-server", "web-scraping", "video-processing", "self-hosted", "file-upload"], "health_score": 100, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["nianzhibai/91"], "name": "nianzhibai/91", "platform": ["self-hosted", "go"], "pushed_at": "2026-08-26T14:51:46+00:00", "repo": "nianzhibai/91", "stars": 1404, "tags": ["private-video-site", "cloud-drive", "302-redirect", "webdav", "video-streaming", "short-video", "115", "pikpak", "onedrive", "google-drive", "video", "linux", "docker", "web-server"], "topics": ["115", "123pan", "91", "google-drive", "guangya", "localstorage", "onedrive", "pikpak", "quark-drive", "webdav", "private-video-site", "wopan"], "urls": [], "use_cases": ["build a private video site from my cloud drives", "stream videos from 115 and pikpak without using server bandwidth", "host a personal netflix-like video library", "share a video with a one-time burn-after-watching link", "scroll videos in a tiktok-style feed from my own collection", "mount onedrive and google drive videos into one web player", "deploy a video site with docker compose"], "what_it_is": "A self-hosted private video site written in Go that aggregates videos from multiple cloud drives (115, PikPak, 123pan, OneDrive, Google Drive, WebDAV, etc.) and streams them with 302 redirect playback that doesn't consume server bandwidth. It includes an admin panel, TikTok-style short-video mode, one-time share links, and support for custom spider scripts.", "when_to_avoid": ["you need a multi-user public video platform with accounts and monetization", "you want to host and transcode your own video files rather than link cloud drives", "you require iOS short-video mode, which is explicitly not recommended"], "when_to_choose": ["you want a personal, self-hosted video portal backed by cloud storage", "you need 302-redirect playback to avoid proxying video traffic", "you want short-video or multi-screen viewing modes for your own library"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/91", "repo": "nianzhibai/91", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "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:37.882145+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:37.882145+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:51.733148+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5912dd75c54ef44c5654743c480147c6b8f9a4602297c3494b9be8fc8d3b9d00", "fetched_at": "2026-08-28T04:04:37.882145+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nianzhibai/91"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 8, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 115, "days_push": 7, "days_rel": 19, "gap_med": 1, "n_releases_24m": 30}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}