{"adoption": {"forks": 2098, "observed_at": "2026-08-28T04:11:08.838707+00:00", "stars": 14871}, "canonical_url": "https://ross.abutalabs.com/products/moviepy", "card": {"archived": false, "artifact_type": "library", "description": "Video editing with Python", "domain": ["media", "developer-tools"], "enriched": true, "function": ["video-processing", "image-processing", "audio-processing", "animation"], "health_score": 93, "homepage": "https://zulko.github.io/moviepy/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["Zulko/moviepy"], "name": "Zulko/moviepy", "platform": ["python", "cross-platform", "windows"], "pushed_at": "2026-08-26T06:17:08+00:00", "repo": "Zulko/moviepy", "stars": 14871, "tags": ["video-editing", "non-linear-editing", "gif", "ffmpeg-wrapper", "numpy", "compositing", "subclipping", "text-overlays", "scriptable-video", "video", "automation", "macos", "linux"], "topics": ["python", "video", "gif", "animation", "video-editing", "video-processing", "hacktoberfest"], "urls": [], "use_cases": ["trim and cut video clips programmatically with python", "add text titles and overlays to videos", "concatenate multiple video clips into one file", "convert videos to gif animations", "composite video layers with transparency", "automate batch video processing pipelines", "adjust audio volume or extract audio from video"], "what_it_is": "MoviePy is a Python library for video editing and automation, supporting cuts, concatenations, compositing, title insertion, and custom effects across common audio/video formats including GIF. It converts media into numpy arrays for pixel-level manipulation and re-encodes results to mp4/webm/gif and other formats.", "when_to_avoid": ["you need maximum encoding performance for large-scale video processing", "you require real-time video playback or streaming", "you only need simple format conversion where ffmpeg directly is faster", "you depend on the unmaintained v1 API and cannot migrate to v2"], "when_to_choose": ["you want scriptable, pythonic video editing without writing ffmpeg commands", "you need pixel-level access to video frames for custom effects", "you want cross-platform video automation on Windows, Mac, or Linux", "you need to generate GIFs or web animations from video", "you prefer flexibility and ease of use over raw encoding speed"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/moviepy", "repo": "Zulko/moviepy", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "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:11:08.838707+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:08.838707+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:07:01.099108+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7c4b61a7094c4e7bd8c3bfb5f6ea97ac69af3b3a2e303922295f1e3a57a9612c", "fetched_at": "2026-08-28T04:11:08.838707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Zulko/moviepy"}, {"content_hash": "2109b4f4df5480fbc775de76643facc13be220aacb9962f6fbc507d015bd60f5", "fetched_at": "2026-08-29T08:05:02.002686+00:00", "kind": "homepage", "missing": false, "url": "https://zulko.github.io/moviepy/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4769, "days_push": 7, "days_rel": 469, "gap_med": 4, "n_releases_24m": 6}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}