{"adoption": {"forks": 70, "observed_at": "2026-08-28T04:06:05.060065+00:00", "stars": 2010}, "canonical_url": "https://ross.abutalabs.com/products/wechat-dump", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Analyzing your wechat message history from android", "domain": ["messaging-platforms", "android-tools", "data-science", "privacy"], "enriched": true, "function": ["parser", "data-science", "developer-tools", "file-system", "audio-processing", "image-processing", "video-processing"], "health_score": 72, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ppwwyyxx/wechat-dump"], "name": "ppwwyyxx/wechat-dump", "platform": ["python", "cli"], "pushed_at": "2026-02-23T04:31:54+00:00", "repo": "ppwwyyxx/wechat-dump", "stars": 2010, "tags": ["wechat", "message-history", "chat-export", "rooted-android", "html-rendering", "adb", "sqlite-database", "chat-statistics", "interoperability", "automation", "android", "linux", "macos"], "topics": ["wechat", "android"], "urls": [], "use_cases": ["export wechat chat history from android", "analyze my wechat message statistics", "render wechat conversations to html with media", "backup wechat voice messages and images", "parse wechat EnMicroMsg database", "convert wechat messages for other analysis tools", "read wechat chat logs without the app"], "what_it_is": "A Python-based tool that extracts and parses WeChat message history from a rooted Android phone, decoding the local message database and media resources. It renders chats into self-contained HTML files with voice, images, emojis, and videos, and provides scripts for message statistics and custom analysis.", "when_to_avoid": ["Your Android device is not rooted, since the tool requires root filesystem access to pull the database and resources", "You want a one-click GUI backup solution; this is a command-line workflow with manual steps and Python dependencies", "You target iOS or desktop WeChat clients; the tool is specific to the Android WeChat app", "You expect ongoing guaranteed compatibility, since WeChat updates can break parsing and verification is periodic"], "when_to_choose": ["You have a rooted Android device and want to extract and analyze your own WeChat message history", "You need to export WeChat chats to self-contained HTML files with voice, images, emojis, and videos", "You want to compute statistics over your WeChat conversations or build custom analysis on the parsed data", "You need interoperability between WeChat messages and other data analysis tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/wechat-dump", "repo": "ppwwyyxx/wechat-dump", "role": "main", "score": 54}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "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:06:05.060065+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.060065+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:01:14.712211+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "37d3c8e81e58328c95ed4221e4522cb0459d0c6bc5317466e945087a8cb5672d", "fetched_at": "2026-08-28T04:06:05.060065+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ppwwyyxx/wechat-dump"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 69, "longevity": 100, "rhythm": 8}, "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": 4303, "days_push": 191, "days_rel": 581, "gap_med": null, "n_releases_24m": 1}, "score": 54, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}