{"adoption": {"forks": 97, "observed_at": "2026-08-28T04:03:46.048623+00:00", "stars": 1148}, "canonical_url": "https://ross.abutalabs.com/products/etro", "card": {"archived": false, "artifact_type": "library", "description": "Typescript video-editing library for the browser", "domain": ["media", "web-development", "frontend"], "enriched": true, "function": ["video-processing", "audio-processing", "image-processing", "graphics"], "health_score": 98, "homepage": "https://etrojs.dev", "language": "TypeScript", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["etro-js/etro"], "name": "etro-js/etro", "platform": ["browser", "cross-platform"], "pushed_at": "2026-08-12T06:05:02+00:00", "repo": "etro-js/etro", "stars": 1148, "tags": ["video-editing", "glsl", "webgl", "typescript", "canvas", "webrtc", "keyframes", "chroma-key", "framework-agnostic", "video", "nodejs"], "topics": ["video-editing", "javascript", "video", "audio", "blob", "video-manipulation", "browser", "typescript", "etro", "hacktoberfest", "video-processing", "javascript-library", "typescript-library"], "urls": [], "use_cases": ["edit videos programmatically in the browser", "composite video and audio layers with text overlays", "apply GLSL filters and effects to video", "record a canvas movie to a downloadable video blob", "build a webcam filter app in React", "chroma key a green screen video in the browser", "stream a composed video with WebRTC", "animate layer properties with keyframes"], "what_it_is": "Etro is a framework-agnostic TypeScript library for programmatically editing videos in the browser. It composites video, audio, image, and text layers, applies hardware-accelerated GLSL filters, and can play, stream via WebRTC, or record the result to a blob.", "when_to_avoid": ["you need offline (faster-than-realtime) rendering, which is not yet supported", "you need server-side or heavy-duty video encoding pipelines better suited to ffmpeg", "you need a GUI video editor rather than a code API", "GPL-3.0 licensing is incompatible with your project"], "when_to_choose": ["you need client-side, in-browser video editing without a server", "you want to composite multiple media layers with custom GLSL effects", "you need framework-agnostic code usable with React, Vue, Svelte, or plain JS", "you want to play, stream, or record composed video directly from the browser"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/etro", "repo": "etro-js/etro", "role": "main", "score": 93}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "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:03:46.048623+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:46.048623+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:33:49.843188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5cd515cc8b9753a08329b5d95c6c95f27c2fc29b5cb91a41b6e0a5c13537e5f", "fetched_at": "2026-08-28T04:03:46.048623+00:00", "kind": "readme", "missing": false, "url": "https://github.com/etro-js/etro"}, {"content_hash": "7c789e468efc5f880f5da47c8e0be559be40a08e11bbf430457dea1bca8e5588", "fetched_at": "2026-08-29T12:39:21.537845+00:00", "kind": "homepage", "missing": false, "url": "https://etrojs.dev"}, {"content_hash": "3fa01c19f1f36ea61bbd4920093ea9e2a26ecbfe3f11c43bf275755588bc5534", "fetched_at": "2026-08-29T12:39:21.540454+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/intro"}, {"content_hash": "7575aa3684b349bb41797251bd4fdaddb6ea26c013e3ef9c8fdc249a48bb760a", "fetched_at": "2026-08-29T12:39:21.542139+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.13/intro"}, {"content_hash": "c67f496716c8138a2c256029b0716d108df8f5b9013416aaeadb65b5143d6f94", "fetched_at": "2026-08-29T12:39:21.543828+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/0.12/intro"}, {"content_hash": "ee97ec67aeef3cdb3b2de58f371c3969a6572879445b2ff300c8e0e949e9502e", "fetched_at": "2026-08-29T12:39:21.545477+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/getting-started"}, {"content_hash": "f426543b525a9240529629514c1008767228cb1705736a2b3141a2ffee788895", "fetched_at": "2026-08-29T12:39:21.547232+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/reference/movie"}, {"content_hash": "98917ecbbe858acbf96b732c08b83b1ea126b48573c4caddfdb5a367ab8d1492", "fetched_at": "2026-08-29T12:39:21.549094+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/layers"}, {"content_hash": "42ce6efeba8e6299c79ee8974797bb9b1656b4f3ad7022586ab0709d51d9e3bf", "fetched_at": "2026-08-29T12:39:21.550543+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/effects"}, {"content_hash": "5ae1a617a26a3bdd52bf53094dcfbd5a0a32ac1cc4c5394516b1437e3c0ed3a8", "fetched_at": "2026-08-29T12:39:21.551971+00:00", "kind": "site_page", "missing": false, "url": "https://etrojs.dev/docs/category/tutorials"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 85}, "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": 2889, "days_push": 21, "days_rel": 21, "gap_med": 73.5, "n_releases_24m": 3}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}