{"adoption": {"forks": 433, "observed_at": "2026-08-28T04:06:51.195686+00:00", "stars": 2433}, "canonical_url": "https://ross.abutalabs.com/products/nudenet", "card": {"archived": false, "artifact_type": "library", "description": "Lightweight nudity detection", "domain": ["machine-learning", "image-processing", "privacy"], "enriched": true, "function": ["machine-learning", "image-processing", "computer-vision"], "health_score": 79, "homepage": "https://nudenet.notai.tech/", "language": "Python", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["notAI-tech/NudeNet"], "name": "notAI-tech/NudeNet", "platform": ["python", "cross-platform"], "pushed_at": "2026-06-09T14:32:18+00:00", "repo": "notAI-tech/NudeNet", "stars": 2433, "tags": ["nsfw-detection", "nudity-detection", "object-detection", "yolo", "onnx", "content-moderation", "censoring", "docker"], "topics": ["nsfw-recognition", "censorship", "object-detection", "keras", "nsfw-data", "machinelearning", "nudity-detection", "nudity-detector", "nudity", "javascript", "nsfw", "onnxruntime"], "urls": [], "use_cases": ["detect nudity in uploaded images", "moderate user-generated content for NSFW images", "censor exposed body parts in images before publishing", "classify images as safe or unsafe for a platform", "run nudity detection locally without sending images to a server", "batch-scan a folder of images for explicit content"], "what_it_is": "NudeNet is a lightweight Python library for nudity detection in images, built on YOLOv8 models running via ONNX Runtime. It detects exposed and covered body parts with bounding boxes and can censor flagged regions, with an optional Docker-based inference server.", "when_to_avoid": ["you need video or live-stream moderation rather than still images", "you need text-based NSFW classification", "you require a commercially permissive license - the repo is AGPL-3.0", "you need actively developed features - the project is seeking maintainers"], "when_to_choose": ["you need fast, lightweight NSFW image detection with fine-grained body-part labels", "you want local/on-premise detection so images never leave your infrastructure", "you need both detection and automatic censoring in one package", "you want a simple pip-installable model with ONNX and PyTorch weights available"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nudenet", "repo": "notAI-tech/NudeNet", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/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:06:51.195686+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.195686+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:31:09.821442+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a15d65e81cbde1d3e70b25ae7184f6f29c41f7bdbe6dfc386fb9788a285289f", "fetched_at": "2026-08-28T04:06:51.195686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/notAI-tech/NudeNet"}, {"content_hash": "f6c7b67568f3e3e0666e4a7d3edfaddbce12e9f2b4ffa52769600eb50eca6880", "fetched_at": "2026-08-29T10:12:35.117006+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/nudenet/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 86, "longevity": 100, "rhythm": 8}, "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": 2743, "days_push": 85, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}