{"adoption": {"forks": 210, "observed_at": "2026-08-28T04:06:19.834399+00:00", "stars": 2158}, "canonical_url": "https://ross.abutalabs.com/products/node-unfluff", "card": {"archived": false, "artifact_type": "library", "description": "Automatically extract body content (and other cool stuff) from an html document", "domain": ["web-development", "crawlers", "developer-tools"], "enriched": true, "function": ["parser", "web-scraping", "nlp"], "health_score": 20, "homepage": null, "language": "HTML", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["ageitgey/node-unfluff"], "name": "ageitgey/node-unfluff", "platform": ["cli", "cross-platform"], "pushed_at": "2023-05-26T18:52:19+00:00", "repo": "ageitgey/node-unfluff", "stars": 2158, "tags": ["content-extraction", "readability", "html-parsing", "article-extraction", "metadata-extraction", "natural-language-processing", "nodejs"], "topics": [], "urls": [], "use_cases": ["extract main article text from a webpage html", "build machine learning datasets from web pages", "get article metadata like author and publish date from html", "strip ads and navigation from web pages to get clean text", "build an Instapaper-style read-it-later app", "extract embedded videos and images from articles from the command line"], "what_it_is": "A Node.js library and CLI tool that automatically extracts the main body content and metadata (title, author, date, images, tags, links) from HTML web pages, based on python-goose. It turns cluttered webpages into clean plain text or JSON data.", "when_to_avoid": ["you need a Python or JVM content extractor (use python-goose or goose instead)", "you need actively maintained scraping with modern site support", "you want to scrape pages requiring JavaScript rendering"], "when_to_choose": ["you need to extract readable article content from raw HTML in Node.js", "you want a CLI to quickly pull main text and metadata from web pages", "you're building datasets or text-processing pipelines from web content"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/node-unfluff", "repo": "ageitgey/node-unfluff", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "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:19.834399+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.834399+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:50:21.849141+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e3b6c6173fd8601359f2724b0fad3a16ad37642e052b4d18b50cbf04187b1aa", "fetched_at": "2026-08-28T04:06:19.834399+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ageitgey/node-unfluff"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4447, "days_push": 1195, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}