{"adoption": {"forks": 0, "observed_at": "2026-08-28T04:03:37.951033+00:00", "stars": 1112}, "canonical_url": "https://ross.abutalabs.com/products/chatlog_alpha", "card": {"archived": false, "artifact_type": "application", "description": "原 [chatlog]项目（一个微信数据库解密读取及提供mcp服务、http服务的开源软件），现已支持通过微信clawbot接口推送消息，可以实时转发全部或指定消息到clawbot", "domain": ["messaging-platforms", "privacy", "developer-tools", "self-hosted"], "enriched": true, "function": ["database", "http-server", "cli", "search-engine", "webhook", "developer-tools"], "health_score": 77, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "active", "member_repos": ["teest114514/chatlog_alpha"], "name": "teest114514/chatlog_alpha", "platform": ["windows", "cli", "self-hosted"], "pushed_at": "2026-08-01T04:08:24+00:00", "repo": "teest114514/chatlog_alpha", "stars": 1112, "tags": ["wechat", "chat-export", "database-decryption", "message-forwarding", "local-api", "tui", "closed-source", "automation", "macos", "desktop"], "topics": [], "urls": [], "use_cases": ["decrypt and read my wechat chat database locally", "export wechat messages to csv or excel", "search wechat chat history across databases", "forward wechat messages in real time to another service", "query wechat contacts and group members via api", "extract wechat images videos and voice messages", "feed wechat chat logs into an llm"], "what_it_is": "Chatlog Alpha is a local tool for WeChat 4.x that discovers local WeChat accounts, extracts database keys, decrypts and reads chat data (messages, contacts, media) in read-only mode, and exposes it via TUI, web console, structured CLI, and a local HTTP JSON API. It also supports forwarding messages to external push services like clawbot/Hermes endpoints.", "when_to_avoid": ["you need the source code - the GitHub repo no longer publishes code or releases", "you want MCP, semantic search, or native message sending - those features were removed", "you use WeChat versions other than 4.x", "you cannot run software on the machine where WeChat stores its data"], "when_to_choose": ["you need local, read-only access to your own WeChat 4.x chat data on macOS or Windows", "you want a structured HTTP API or CLI over decrypted WeChat data", "you need to forward or push WeChat messages to automation pipelines"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/chatlog_alpha", "repo": "teest114514/chatlog_alpha", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "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:37.951033+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.951033+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:42:53.229205+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9838e5c03cef8862617f17d486bd01b4bfb35f1e55c04e7d157d4cc8a7b9df8b", "fetched_at": "2026-08-28T04:03:37.951033+00:00", "kind": "readme", "missing": false, "url": "https://github.com/teest114514/chatlog_alpha"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 18, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 263, "days_push": 32, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}