ink-video is an SVG-first runtime and CLI for AI-authored handwritten explainer videos.
By default it decomposes every visible character and writes all text stroke by stroke, one text block at a time, then animates highlights,
underlines, circles, arrows, line charts, and bar charts on a deterministic timeline.
The default typeface is the genuinely handwritten Jason Handwriting 8 (清松手寫體 8),
not a Kai-style font. Missing Simplified Chinese glyphs automatically fall back to
the handwritten Xiaolai SC font instead of a system Kai or sans-serif font. Builds
embed only the font subsets used by the current video.
Run decompose without --text to rasterize every character used by the project,
extract its skeleton graph, and create numbered previews for Agent grouping.
Then run compile-strokes to partition the current-font raster into one transparent
image per semantic stroke. Runtime animation reveals each independent stroke image along
its own centerline; it does not clip against the complete glyph or add a complete text
glyph at the end. Storyboard previews can temporarily use fallback glyphs, but final HTML,
still capture, and video rendering fail until every visible character has compiled stroke assets.
The lightest external setup installs only the Skill. It does not bundle Node.js,
Chromium, FFmpeg, or node_modules:
npx skills add NINTING/ink-video --skill create-ink-videoChoose the target Agent and installation scope in the installer. Restart that Agent after installation, then ask:
Use $create-ink-video to turn my article into a Chinese handwritten explainer video.
Show me the storyboard before decomposing the title characters and exporting MP4.
The Agent creates and edits video.json, runs the CLI, inspects the storyboard,
groups stroke edges, checks intermediate frames, and exports the video. The user supplies
source material and creative decisions; they do not run production commands manually.
On first use, the Skill downloads the ink-video runtime and npm dependencies into a
versioned user cache. Later uses reuse that cache. The host needs Node.js 20+ with npm
and a local Chrome or Edge installation. Set INK_VIDEO_PACKAGE when a package mirror,
tarball, or local runtime source should replace the default GitHub source.
List available Skills without installing:
npx skills add NINTING/ink-video --listnpm install
node bin/ink-video.mjs validate examples/cache-explainer/video.json
node bin/ink-video.mjs build examples/cache-explainer/video.json --out output/index.html
node bin/ink-video.mjs storyboard examples/cache-explainer/video.json --out output/storyboard.png
node bin/ink-video.mjs render examples/cache-explainer/video.json --out output/video.mp4Preview and frame capture use an existing local Chrome or Edge installation through
playwright-core; the package does not download a browser. Set INK_VIDEO_CHROME for
a non-standard browser path. Video encoding uses the bundled ffmpeg-static binary.
The Skill source is in skills/create-ink-video.