{"adoption": {"forks": 99, "observed_at": "2026-08-28T04:03:27.050242+00:00", "stars": 1066}, "canonical_url": "https://ross.abutalabs.com/products/synthid-text", "card": {"archived": false, "artifact_type": "library", "description": null, "domain": ["large-language-models", "artificial-intelligence", "security"], "enriched": true, "function": ["nlp", "machine-learning", "security", "sdk"], "health_score": 86, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "experimental", "member_repos": ["google-deepmind/synthid-text"], "name": "google-deepmind/synthid-text", "platform": ["python"], "pushed_at": "2026-07-17T21:40:04+00:00", "repo": "google-deepmind/synthid-text", "stars": 1066, "tags": ["watermarking", "ai-generated-text-detection", "synthid", "huggingface-transformers", "pytorch", "llm-watermark", "text-detection", "deepmind", "natural-language-processing", "research", "gpu"], "topics": [], "urls": [], "use_cases": ["watermark text generated by LLMs like Gemma or GPT-2", "detect whether text was generated by an AI model", "reproduce results from the SynthID Text research paper", "experiment with LLM watermarking techniques in PyTorch", "train a Bayesian detector for watermark detection", "integrate watermarking into Hugging Face Transformers pipelines"], "what_it_is": "A reference Python implementation of Google DeepMind's SynthID Text watermarking and detection technology for identifying AI-generated text. It extends Hugging Face Transformers models like Gemma and GPT-2 with watermarking mixins and provides both weighted mean and Bayesian detectors.", "when_to_avoid": ["you need a production-ready watermarking solution (use the official SynthID Text implementation in Hugging Face Transformers instead)", "you require cryptographic security guarantees for the hashing functions used", "you are not working with PyTorch or Hugging Face Transformers"], "when_to_choose": ["you need a reference implementation for research or reproducibility of the SynthID Text paper", "you want to experiment with watermarking and detection on Gemma or GPT-2 models", "you are exploring AI-generated text detection techniques in Python"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/synthid-text", "repo": "google-deepmind/synthid-text", "role": "main", "score": 65}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "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:03:27.050242+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.050242+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:24.248657+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "78a12861f1abb3cc532a0cc44e41d84283eeea619b382dc1b64eb5fcc4d7173b", "fetched_at": "2026-08-28T04:03:27.050242+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google-deepmind/synthid-text"}, {"content_hash": "644429156885221941141195081e298462cba7291c02759c50d6a000e9cdfd35", "fetched_at": "2026-08-29T12:57:23.714900+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/synthid-text/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 48, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["prerelease_only"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 679, "days_push": 47, "days_rel": 657, "gap_med": 0, "n_releases_24m": 4}, "score": 65, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}