{"adoption": {"forks": 116, "observed_at": "2026-08-28T04:04:36.757782+00:00", "stars": 1397}, "canonical_url": "https://ross.abutalabs.com/products/blocktube", "card": {"archived": false, "artifact_type": "plugin", "description": "YouTube™ content blocker", "domain": ["browser-extensions", "privacy", "media"], "enriched": true, "function": ["browser-extension", "privacy"], "health_score": 77, "homepage": null, "language": "JavaScript", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["amitbl/blocktube"], "name": "amitbl/blocktube", "platform": ["browser", "browser-extension"], "pushed_at": "2026-02-07T07:10:47+00:00", "repo": "amitbl/blocktube", "stars": 1397, "tags": ["youtube", "content-blocker", "webextension", "content-filtering", "ad-blocking-adjacent", "filtering", "android"], "topics": ["webextension", "youtube-blocker", "chrome-extension", "firefox-addon", "youtube", "youtube-video-blocker"], "urls": [], "use_cases": ["block specific youtube videos or channels", "hide comments from certain users on youtube", "filter youtube content by keyword or regex", "remove trending section from youtube", "block youtube videos on mobile firefox", "password-protect my content filter settings"], "what_it_is": "BlockTube is a WebExtension for Chrome and Firefox that filters and blocks unwanted YouTube content such as videos, channels, and comments using titles, IDs, keywords, or regex. Filtering happens before DOM rendering, so blocked content never appears on the site.", "when_to_avoid": ["you need general ad blocking across all websites rather than YouTube-specific filtering", "you require tamper-proof filtering that cannot be bypassed by disabling the extension", "you need cloud sync or enterprise policy management for filter rules"], "when_to_choose": ["you want fine-grained control over which YouTube videos, channels, or comments you see", "you need regex or keyword-based filtering that works before page render", "you want a lightweight extension that doesn't break playlists or autoplay"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/blocktube", "repo": "amitbl/blocktube", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "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:04:36.757782+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:36.757782+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:39:15.990973+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "996711bd07270326753ed1d143a7ad24739bdafea6592e8cfce7892bf847ccd2", "fetched_at": "2026-08-28T04:04:36.757782+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amitbl/blocktube"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 66, "longevity": 100, "rhythm": 57}, "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": 3044, "days_push": 207, "days_rel": 207, "gap_med": 61, "n_releases_24m": 6}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}