{"adoption": {"forks": 559, "observed_at": "2026-08-28T04:08:50.719787+00:00", "stars": 4461}, "canonical_url": "https://ross.abutalabs.com/products/html-video", "card": {"archived": false, "artifact_type": "library", "description": "Programmatic video for coding agents — HTML to video on your laptop. Turn HTML, CSS & data into real MP4s with pluggable render engines, 21 templates, AI soundtrack. Apache-2.0, no per-render fees. An official project by the Open Design team.", "domain": ["media", "developer-tools", "artificial-intelligence"], "enriched": true, "function": ["video-processing", "templating", "agent-framework", "cli"], "health_score": 73, "homepage": "https://open-design.ai/html-video", "language": "HTML", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["nexu-io/html-video"], "name": "nexu-io/html-video", "platform": ["cli", "cross-platform"], "pushed_at": "2026-06-21T16:18:31+00:00", "repo": "nexu-io/html-video", "stars": 4461, "tags": ["html-to-video", "programmatic-video", "video-as-code", "ffmpeg", "hyperframes", "coding-agents", "mp4-rendering", "ai-soundtrack", "local-rendering", "no-cloud-fees", "video", "automation", "nodejs", "docker"], "topics": ["ai-agent", "apache-2", "coding-agent", "css", "ffmpeg", "html", "mp4", "open-design", "open-source", "video", "video-generation", "html-to-video", "hyperframes", "programmatic-video", "video-as-code"], "urls": [], "use_cases": ["turn html css into mp4 video programmatically", "generate videos from article links or github repos with a coding agent", "render animated data visualizations as video locally", "create programmatic video without cloud render fees", "convert markdown content into animated explainer videos", "use claude code or cursor to produce videos from prompts"], "what_it_is": "html-video is a programmatic HTML-to-video tool that lets coding agents turn HTML, CSS, and data into real MP4 files locally using pluggable render engines (headless Chromium + ffmpeg), 21 templates, and optional AI soundtracks. It is an Apache-2.0 open-source project by the Open Design team with no per-render fees or vendor lock-in.", "when_to_avoid": ["you need a fully managed cloud video rendering service", "you want a GUI-based video editor rather than agent/code-driven workflows", "you need real-time video streaming or live editing", "you cannot run Node.js 24 and headless Chromium locally"], "when_to_choose": ["you want local, fee-free video rendering with no vendor lock-in", "you already use a coding agent and want video as an output format", "you need pluggable render engines and reusable HTML video templates", "you prefer open-source Apache-2.0 tooling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/html-video", "repo": "nexu-io/html-video", "role": "main", "score": 53}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "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:08:50.719787+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:50.719787+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:20:42.109387+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0e759b7e22deda150cedb008f2f7f7d7173ef684f12362cba3e17e42c5d22d3e", "fetched_at": "2026-08-28T04:08:50.719787+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nexu-io/html-video"}, {"content_hash": "b3009df41879933063a4035a361fa6e570771a6db2829e3fcf7475bfba7523d9", "fetched_at": "2026-08-29T09:07:32.115124+00:00", "kind": "homepage", "missing": false, "url": "https://open-design.ai/html-video"}, {"content_hash": "21ce38d00d218acfa0a0081c8230807a5b562e338f4a3bcc965aa803f49a2b59", "fetched_at": "2026-08-29T09:07:32.126620+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/quickstart"}, {"content_hash": "ffd4f4183d57559ba78fc8598d8c816bc1f5ca83a60ef060997928b66b166775", "fetched_at": "2026-08-29T09:07:32.128611+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/about"}, {"content_hash": "9b590cf31ffd45258242e6cc27a9da48dd9bc7f920179a5028826f83e9e61b40", "fetched_at": "2026-08-29T09:07:32.124350+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/pricing"}, {"content_hash": "d01799df9306f3dea201b42f9c4de973140795be813c2a57c76f7344fdf89d8b", "fetched_at": "2026-08-29T09:07:32.130771+00:00", "kind": "site_page", "missing": false, "url": "https://open-design.ai/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 7, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 99, "days_push": 73, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 53, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}