{"adoption": {"forks": 109, "observed_at": "2026-08-28T04:06:51.518674+00:00", "stars": 2438}, "canonical_url": "https://ross.abutalabs.com/products/twitter-archive-parser", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Python code to parse a Twitter archive and output in various ways", "domain": ["social-media", "files"], "enriched": true, "function": ["parser", "markdown", "data-science", "developer-tools"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["timhutton/twitter-archive-parser"], "name": "timhutton/twitter-archive-parser", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2022-11-29T00:41:20+00:00", "repo": "timhutton/twitter-archive-parser", "stars": 2438, "tags": ["twitter-archive", "data-export", "tweet-conversion", "self-archiving", "digital-legacy", "data-engineering", "automation"], "topics": [], "urls": [], "use_cases": ["convert my twitter archive to markdown", "export tweets to html with images embedded", "replace t.co links with original urls in my twitter export", "back up my twitter dms before deleting my account", "migrate my tweets to a blog", "download original size images from my twitter archive"], "what_it_is": "A Python script that parses a downloaded Twitter archive and converts tweets and DMs into Markdown and HTML with embedded media, de-obfuscated links, and original-size images. It also outputs follower/following lists and can optionally query Twitter for missing user handles.", "when_to_avoid": ["you need a live Twitter API client or scheduled scraping of other accounts", "you want a GUI application rather than a command-line script", "your archive format has changed significantly and the script has not been updated"], "when_to_choose": ["you downloaded your Twitter archive and want readable, portable Markdown/HTML output", "you want offline copies of your tweets, media, and DMs before deactivating your account", "you need t.co links resolved to their original destinations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/twitter-archive-parser", "repo": "timhutton/twitter-archive-parser", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "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.518674+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:51.518674+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:30:59.257576+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59083d43190e0345370b78d1abd21388195de0e6ed6994849912aad4b4b0c94e", "fetched_at": "2026-08-28T04:06:51.518674+00:00", "kind": "readme", "missing": false, "url": "https://github.com/timhutton/twitter-archive-parser"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 99, "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": 1393, "days_push": 1374, "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}}