{"adoption": {"forks": 1269, "observed_at": "2026-08-28T04:10:36.263398+00:00", "stars": 9609}, "canonical_url": "https://ross.abutalabs.com/products/bilingual_book_maker", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Make bilingual epub books Using AI translate", "domain": ["large-language-models", "files", "pdf"], "enriched": true, "function": ["machine-learning", "llm-inference", "nlp", "cli", "pdf", "file-system"], "health_score": 88, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["yihong0618/bilingual_book_maker"], "name": "yihong0618/bilingual_book_maker", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2026-08-19T14:06:52+00:00", "repo": "yihong0618/bilingual_book_maker", "stars": 9609, "tags": ["epub-translation", "bilingual-books", "chatgpt", "deepl", "ebook-tools", "translation", "natural-language-processing", "localization", "automation"], "topics": [], "urls": [], "use_cases": ["translate an epub book into another language with AI", "make a bilingual edition of a public domain book", "translate txt or markdown files using ChatGPT", "create side-by-side translated srt subtitles", "batch translate books with multiple OpenAI API keys", "use DeepL or Gemini to translate an ebook"], "what_it_is": "A Python CLI tool that uses AI translation services (ChatGPT, Claude, Gemini, DeepL, and others) to create bilingual versions of epub, txt, md, srt, and pdf books. It is intended for public domain works and offers multiple model providers and translation services.", "when_to_avoid": ["you need to translate copyrighted works (explicitly disallowed)", "you want a GUI-based translation workflow", "you need offline translation without API keys or internet access"], "when_to_choose": ["you want AI-assisted bilingual translations of epub/txt/md/srt/pdf files", "you need flexible choice among LLM and translation providers", "you are translating public domain works and want a ready-made CLI"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bilingual_book_maker", "repo": "yihong0618/bilingual_book_maker", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "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:36.263398+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:36.263398+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:21:52.882789+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "908c55391636e990657b4151bb288d35984f8bda3bc33c6e73a6370d4fd5dd86", "fetched_at": "2026-08-28T04:10:36.263398+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yihong0618/bilingual_book_maker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 91, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1281, "days_push": 14, "days_rel": 665, "gap_med": 16, "n_releases_24m": 2}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}