{"adoption": {"forks": 328, "observed_at": "2026-08-28T04:06:13.583746+00:00", "stars": 2101}, "canonical_url": "https://ross.abutalabs.com/products/weread-exporter", "card": {"archived": false, "artifact_type": "cli-tool", "description": "将微信读书中的书籍导出成epub、pdf、mobi等格式", "domain": ["pdf", "files", "developer-tools"], "enriched": true, "function": ["pdf", "cli", "web-scraping", "parser"], "health_score": 64, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["drunkdream/weread-exporter"], "name": "drunkdream/weread-exporter", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2026-03-21T08:57:09+00:00", "repo": "drunkdream/weread-exporter", "stars": 2101, "tags": ["weread", "ebook-export", "epub", "mobi", "kindle", "canvas-hooking", "command-line"], "topics": [], "urls": [], "use_cases": ["export wechat read books to epub", "convert weread books to pdf for desktop reading", "get wechat reading books onto my kindle as mobi", "download books from weread.qq.com offline", "extract text from weread canvas-based web reader"], "what_it_is": "A Python CLI tool that exports books from WeChat Read (微信读书) into epub, pdf, and mobi formats. It hooks into the web reader's Canvas rendering to extract text and styles, converts them to markdown, and then generates the final ebook files.", "when_to_avoid": ["you need a graphical tool or one-click export", "you want to export notes/highlights rather than full books", "you are unwilling to log in to your WeChat Read account through the tool", "you need a legally sanctioned export path, since the tool operates in a legal gray area"], "when_to_choose": ["you want offline copies of books you read on WeChat Read in epub, pdf, or mobi format", "you want to read WeChat Read books on a Kindle", "you prefer a command-line workflow with a Python tool"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/weread-exporter", "repo": "drunkdream/weread-exporter", "role": "main", "score": 64}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "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:13.583746+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.583746+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.840827+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5516a4ab209f36d11ccfdcabdb84195993832e150e24b49ba909cdcd30427a98", "fetched_at": "2026-08-28T04:06:13.583746+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drunkdream/weread-exporter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 73, "longevity": 92, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+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": 1299, "days_push": 165, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 64, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}