{"adoption": {"forks": 576, "observed_at": "2026-08-28T04:10:52.001566+00:00", "stars": 12196}, "canonical_url": "https://ross.abutalabs.com/products/kiss-translator", "card": {"archived": false, "artifact_type": "plugin", "description": "A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本)", "domain": ["browser-extensions", "developer-tools"], "enriched": true, "function": ["browser-extension", "nlp"], "health_score": 100, "homepage": "https://github.com/fishjar/kiss-translator", "language": "JavaScript", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["fishjar/kiss-translator"], "name": "fishjar/kiss-translator", "platform": ["browser", "browser-extension", "cross-platform"], "pushed_at": "2026-08-25T15:44:07+00:00", "repo": "fishjar/kiss-translator", "stars": 12196, "tags": ["translation", "bilingual-translation", "userscript", "greasemonkey", "tampermonkey", "machine-translation", "deepl", "llm-translation", "youtube-subtitles", "text-selection-translation", "webdav-sync", "rule-subscription", "natural-language-processing", "localization", "android", "ios"], "topics": ["extension", "translation", "translator", "translate", "userscripts", "userscript"], "urls": [], "use_cases": ["translate foreign-language web pages while keeping the original text visible", "bilingual reading of English websites with minimal setup", "translate YouTube video subtitles in real time", "translate selected text or hovered paragraphs on any page", "translate text inside input boxes with a keyboard shortcut", "use DeepL, Google, or an LLM API as the translation backend and switch between them", "open-source alternative to proprietary page translators like Immersive Translate"], "what_it_is": "KISS Translator is an open-source browser extension (plus Greasemonkey/Tampermonkey userscript) that renders bilingual, side-by-side translations of web pages. It plugs into many translation backends—Google, Microsoft, Tencent, DeepL/DeepLX, and LLM services like OpenAI, Gemini, Claude, DeepSeek, and Ollama—across scenarios including full-page reading, input boxes, text selection, hover, and YouTube subtitles.", "when_to_avoid": ["You need fully offline translation with no external service or API keys", "You need to translate documents, PDFs, or native apps outside the browser", "You want an embeddable translation library or API for your own application rather than an end-user tool", "You require professional CAT-tool workflows like translation memories and review pipelines"], "when_to_choose": ["You want bilingual (original + translation) display while browsing foreign-language sites", "You need one tool covering full pages, selection, hover, input boxes, and video subtitles", "You want to use custom or self-hosted translation APIs, including local Ollama models, with streaming output", "You need cross-device syncing of settings and site rules via a self-hosted worker or WebDAV"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kiss-translator", "repo": "fishjar/kiss-translator", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "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:52.001566+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.001566+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:14:50.556826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3026703cec5720b48e11dc83232aaa95908dadd9e410b29c8673cf2dd57eacb6", "fetched_at": "2026-08-28T04:10:52.001566+00:00", "kind": "readme", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}, {"content_hash": "5130b9be39e7694d39ef21ceff4bd3e7e0f2e7fb0c6a637bfbf4cf4c22880006", "fetched_at": "2026-08-29T08:12:11.426873+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/fishjar/kiss-translator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 81, "rhythm": 97}, "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": 1142, "days_push": 8, "days_rel": 21, "gap_med": 4, "n_releases_24m": 36}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}