{"adoption": {"forks": 1346, "observed_at": "2026-08-28T04:10:42.219348+00:00", "stars": 10521}, "canonical_url": "https://ross.abutalabs.com/products/keymousego", "card": {"archived": false, "artifact_type": "application", "description": "类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input", "domain": ["developer-tools", "desktop-applications", "cross-platform"], "enriched": true, "function": ["workflow-automation", "gui", "cli", "developer-tools"], "health_score": 84, "homepage": "http://taojy123.github.io/KeymouseGo", "language": "Python", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["taojy123/KeymouseGo"], "name": "taojy123/KeymouseGo", "platform": ["windows", "python", "cli"], "pushed_at": "2026-06-07T08:09:08+00:00", "repo": "taojy123/KeymouseGo", "stars": 10521, "tags": ["macro-recorder", "mouse-automation", "keyboard-automation", "input-simulation", "autohotkey-alternative", "rpa", "automation", "linux", "macos", "desktop"], "topics": ["python", "keyboard", "mouse", "simulation", "automate"], "urls": [], "use_cases": ["record and replay mouse clicks and keyboard input", "automate repetitive clicking tasks", "simulate keyboard typing automatically", "run a recorded macro multiple times", "automate boring repetitive desktop work", "replay input scripts from the command line"], "what_it_is": "KeymouseGo is a lightweight, open-source mouse and keyboard recorder and automation tool, similar to a simplified version of AutoHotkey/按键精灵. Users record clicks and keystrokes once, then replay them any number of times via a desktop GUI or command line with configurable hotkeys and repeat counts.", "when_to_avoid": ["you need image-based or OCR-driven automation that adapts to changing UIs", "you need to record mouse movement trajectories, not just clicks and keys", "you need complex scripting with conditionals, variables, or window targeting", "you need web-browser-specific automation"], "when_to_choose": ["you need a simple, lightweight macro recorder that works on Windows, Linux, and macOS", "you want to record actions once and replay them with hotkeys or a CLI", "you prefer editable JSON5 scripts over complex automation tools", "you need a free alternative to commercial tools like 按键精灵 or TinyTask"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/keymousego", "repo": "taojy123/KeymouseGo", "role": "main", "score": 68}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "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:10:42.219348+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:42.219348+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:18:34.893957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9bcd05a0b15f98985246257115e986c55239ba84e18d0c13cc2b2aa704080bb6", "fetched_at": "2026-08-28T04:10:42.219348+00:00", "kind": "readme", "missing": false, "url": "https://github.com/taojy123/KeymouseGo"}, {"content_hash": "0e88909159ee4ba68871b2266f93c89f6c7d61e2f6791703e09b470169371c3c", "fetched_at": "2026-08-29T08:17:55.890855+00:00", "kind": "homepage", "missing": false, "url": "http://taojy123.github.io/KeymouseGo"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 86, "longevity": 100, "rhythm": 28}, "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": 4232, "days_push": 87, "days_rel": 501, "gap_med": 37, "n_releases_24m": 2}, "score": 68, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}