{"adoption": {"forks": 12418, "observed_at": "2026-08-28T04:12:19.175360+00:00", "stars": 63826}, "canonical_url": "https://ross.abutalabs.com/products/mediacrawler", "card": {"archived": false, "artifact_type": "cli-tool", "description": "小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 ｜ 评论爬虫、微博帖子 ｜ 评论爬虫、百度贴吧帖子 ｜ 百度贴吧评论回复爬虫  | 知乎问答文章｜评论爬虫", "domain": ["crawlers", "social-media"], "enriched": true, "function": ["web-scraping", "data-generation", "search-engine"], "health_score": 79, "homepage": "https://nanmicoder.github.io/MediaCrawler/", "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["NanmiCoder/MediaCrawler"], "name": "NanmiCoder/MediaCrawler", "platform": ["python", "cross-platform", "cli"], "pushed_at": "2026-08-14T08:19:00+00:00", "repo": "NanmiCoder/MediaCrawler", "stars": 63826, "tags": ["playwright", "xiaohongshu", "douyin", "kuaishou", "bilibili", "weibo", "zhihu", "baidu-tieba", "social-media-crawler", "browser-automation", "comment-scraping", "crawlers", "data-engineering", "automation"], "topics": [], "urls": [], "use_cases": ["scrape xiaohongshu notes and comments by keyword", "collect douyin video comments for research", "crawl bilibili video comments and replies", "harvest weibo posts and second-level comments", "export social media data to csv, , sqlite, or mysql", "generate comment word clouds from scraped data", "crawl a specific creator's profile posts"], "what_it_is": "MediaCrawler is a Python-based multi-platform social media crawler that scrapes notes, videos, posts, and comments from Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Baidu Tieba, and Zhihu. It uses Playwright browser automation with preserved login sessions to obtain signature parameters without reverse-engineering encryption algorithms.", "when_to_avoid": ["you need commercial or large-scale scraping - the project explicitly forbids commercial use and mass crawling", "you need platforms outside its supported list like Twitter or Instagram", "your environment cannot run Playwright browsers or Node.js for signature generation"], "when_to_choose": ["you need posts and comments from Chinese social media platforms without writing JS reverse-engineering code", "you want keyword search, post detail, and creator page crawling in one tool", "you need flexible storage options like CSV, JSON, SQLite, or MySQL"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mediacrawler", "repo": "NanmiCoder/MediaCrawler", "role": "main", "score": 73}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "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:12:19.175360+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:19.175360+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:17:26.313336+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce19cc73de8c88c0ac448061a87b1dc1a31d6737ad2dac2f65fd3f1f7ab428f1", "fetched_at": "2026-08-28T04:12:19.175360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/NanmiCoder/MediaCrawler"}, {"content_hash": "4268461386109954984d016e44157a8c924181039443335182af5e3ce5a2cb02", "fetched_at": "2026-08-28T17:56:02.328251+00:00", "kind": "homepage", "missing": false, "url": "https://nanmicoder.github.io/MediaCrawler/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 84, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1181, "days_push": 19, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}