{"adoption": {"forks": 794, "observed_at": "2026-08-28T04:08:15.085241+00:00", "stars": 3707}, "canonical_url": "https://ross.abutalabs.com/products/ziwei-doushu", "card": {"archived": false, "artifact_type": "library", "description": "紫微斗数开源排盘引擎 — 基于倪海夏《天纪》体系，含完整排盘算法、四化系统、格局知识库、古籍原文数据", "domain": ["artificial-intelligence", "education", "tutorials"], "enriched": true, "function": ["data-science", "nlp", "rag", "data-generation", "sdk"], "health_score": 92, "homepage": "https://metisziwei.com/", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Renhuai123/ziwei-doushu"], "name": "Renhuai123/ziwei-doushu", "platform": ["cross-platform"], "pushed_at": "2026-06-24T07:24:36+00:00", "repo": "Renhuai123/ziwei-doushu", "stars": 3707, "tags": ["zi-wei-dou-shu", "chinese-astrology", "divination", "fortune-telling", "bazi", "nextjs", "dataset", "chart-generation", "classical-texts", "natural-language-processing", "typescript", "nodejs", "web-server"], "topics": ["bazi", "chinese-astrology", "divination", "fortune-telling", "nextjs", "open-source", "purple-star-astrology", "typescript", "zi-wei-dou-shu", "ziwei-doushu"], "urls": [], "use_cases": ["generate a zi wei dou shu natal chart from a birth date and time", "fine-tune a small language model on fortune-telling input-output pairs", "build a RAG retrieval source for Chinese astrology chatbots", "compare chart pattern rules after modifying the patterns knowledge base", "research purple star astrology chart combinations statistically", "read and search classical zi wei dou shu texts", "compare two people's charts for relationship analysis"], "what_it_is": "An open-source Zi Wei Dou Shu (Purple Star Astrology) chart calculation engine based on Ni Haixia's Tianji system, written in TypeScript with a Next.js frontend. It includes complete charting algorithms, the Si Hua flying-star system, a pattern knowledge base, classical text data, and a 518,400-sample chart dataset for AI fine-tuning and RAG.", "when_to_avoid": ["you need Western astrology or BaZi-only charting", "you need the hosted AI interpretation prompts, backend APIs, or user/payment systems, which are not open-sourced", "you need a non-TypeScript/JavaScript implementation"], "when_to_choose": ["you need a programmatic Zi Wei Dou Shu charting engine with a permissive MIT license", "you want a large labeled chart dataset for LLM fine-tuning or RAG", "you want to build a Chinese astrology web app on Next.js"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ziwei-doushu", "repo": "Renhuai123/ziwei-doushu", "role": "main", "score": 60}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "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:15.085241+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.085241+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:30:58.298127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b313542ef2c2e182d6cf91be93e105b1d46e2ca5e517b2148253cad107a3d464", "fetched_at": "2026-08-28T04:08:15.085241+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Renhuai123/ziwei-doushu"}, {"content_hash": "b6764dc36cc73624584b180de79d9390ef95bc1b5075c09b47225672988a5b01", "fetched_at": "2026-08-29T09:24:48.414481+00:00", "kind": "homepage", "missing": false, "url": "https://metisziwei.com/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 8, "rhythm": 51}, "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": 124, "days_push": 70, "days_rel": 118, "gap_med": null, "n_releases_24m": 1}, "score": 60, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}