{"adoption": {"forks": 205, "observed_at": "2026-08-28T04:04:50.196965+00:00", "stars": 1476}, "canonical_url": "https://ross.abutalabs.com/products/easychat", "card": {"archived": false, "artifact_type": "application", "description": "微信助手（非web微信版）：定时发送信息；群发信息；自动回复等", "domain": ["messaging-platforms", "chatbots", "developer-tools"], "enriched": true, "function": ["chatbot", "workflow-automation", "scheduling", "gui"], "health_score": 91, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["LTEnjoy/easyChat"], "name": "LTEnjoy/easyChat", "platform": ["windows", "python"], "pushed_at": "2026-06-24T11:14:22+00:00", "repo": "LTEnjoy/easyChat", "stars": 1476, "tags": ["wechat", "uiautomation", "auto-reply", "scheduled-messages", "bulk-messaging", "chat-automation", "automation", "desktop"], "topics": ["python", "wechat", "autoreply", "chatbot", "timing", "uiautomation"], "urls": [], "use_cases": ["schedule WeChat messages to send at a specific time", "bulk send messages to all my WeChat friends or groups", "automatically reply to incoming WeChat messages", "export my WeChat contact and group list", "keep WeChat from logging out while idle", "send WeChat messages with random delays to avoid rate limits"], "what_it_is": "A Windows desktop WeChat assistant (non-web WeChat) built with Python and UI automation, distributed as a ready-to-run exe with a GUI. It supports scheduled message sending, bulk messaging to contacts and groups, automatic replies, contact list extraction, and anti-logout keep-alive features.", "when_to_avoid": ["you need a headless server-side or Linux deployment - it requires the Windows WeChat desktop client", "you need official API guarantees - it relies on fragile UI automation that breaks with WeChat updates", "you need a permissively licensed library - the repo has no license"], "when_to_choose": ["you use the desktop WeChat client on Windows and want GUI-based automation without an API", "you need scheduled or bulk messaging with anti-detection features like random intervals", "you want a no-install exe that works across multiple WeChat versions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/easychat", "repo": "LTEnjoy/easyChat", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "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:50.196965+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.196965+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:34:26.449006+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fca680836e6998478da48e118092f4ba5227c38899db95d17848e083b5f95a09", "fetched_at": "2026-08-28T04:04:50.196965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LTEnjoy/easyChat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 100, "rhythm": 80}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1554, "days_push": 70, "days_rel": 137, "gap_med": 14, "n_releases_24m": 14}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}