把中文故事文案或一组有序的手绘图片,转换成 3:4 竖屏**:手写体字幕、从左到右的「文字 → 黑白画稿 → 彩色插画」揭示、可选的右下角卷页翻书转场、安全不裁剪的画面构图。基于 Remotion,默认输出无配音、无音乐的 H.264 画面轨,方便后期配音。
概要
把中文故事文案或一组有序的手绘图片,转换成 3:4 竖屏**:手写体字幕、从左到右的「文字 → 黑白画稿 → 彩色插画」揭示、可选的右下角卷页翻书转场、安全不裁剪的画面构图。基于 Remotion,默认输出无配音、无音乐的 H.264 画面轨,方便后期配音。
README
story-to-handdrawn-video
中文
把中文故事文案或一组有序的手绘图片,转换成 3:4 竖屏手绘日记漫画动画:手写体字幕、从左到右的「文字 → 黑白画稿 → 彩色插画」揭示、可选的右下角卷页翻书转场、安全不裁剪的画面构图。基于 Remotion,默认输出无配音、无音乐的 H.264 画面轨,方便后期配音。
本仓库包含两部分:
- 渲染器项目(根目录):Remotion 工程,负责实际的分镜、动效和渲染。
- Codex / Agent Skill(
skill-package/):可分发的 Skill,装进 Codex 等 Agent 后用自然语言驱动渲染器,无需手动跑脚本。
功能特性
- 中文故事自动分句和动态分镜,保留原文措辞
- 上传漫画页或完整图片,保持原顺序和构图
- 自动拆分上方文字区与下方插画区
- 本地生成与彩色插画对齐的黑白层
文字 → 黑白画稿 → 彩色插画从左到右揭示- 可选右下角卷页翻书转场(纸背保留淡化的原页纹理)
- 1080×1440 正式渲染和 720×960 快速预览
- Codex Image2 工作流,以及显式选择的 OpenAI API 工作流
环境要求
- Node.js 20 或更高版本
- Python 3.10 或更高版本
- FFmpeg,且
ffmpeg、ffprobe可从终端调用 - npm
- Google Chrome,或由 Remotion 管理的兼容浏览器
- 支持 Skill 的 Agent 运行时(Codex、Claude Code、Kimi Code 等)
安装
- 准备渲染器项目:
git clone https://github.com/gnipbao/story-to-handdrawn-video.git
cd story-to-handdrawn-video
npm ci
npm run check # TypeScript 检查 + 分镜结构校验,不访问网络
- 把 Skill 装进 Agent 的 skills 目录:
# Codex
cp -R skill-package/story-to-handdrawn-video ~/.codex/skills/
# Claude Code / 通用 Agent
cp -R skill-package/story-to-handdrawn-video ~/.claude/skills/
# Kimi Code
cp -R skill-package/story-to-handdrawn-video ~/.agents/skills/
- 告诉 Skill 渲染器项目在哪里(在渲染器项目目录内运行 Agent 时可省略):
export STORY_VIDEO_PROJECT=/absolute/path/to/story-to-handdrawn-video
使用方法(Codex Skill 示例)
装好 Skill 后,全部通过自然语言驱动,分句、分镜、图片生成、导入、渲染由 Agent 按 Skill 约定自动完成。
故事文本 → 手绘动画(Skill 的默认提示词):
使用 $story-to-handdrawn-video 把这段故事生成可后期配音的手绘动画。
也可以把故事放在 UTF-8 文本文件里:
使用 $story-to-handdrawn-video 把 /absolute/story.txt 生成手绘动画,标题叫「纸上的夏天」。
上传图片 → 手绘动画(图片按播放顺序给出):
使用 $story-to-handdrawn-video 把这几张图片按顺序生成手绘动画:
/absolute/01.jpg /absolute/02.jpg /absolute/03.jpg
翻书效果(保留原始页面,从右下角卷页):
使用 $story-to-handdrawn-video 把这些图片做成翻书效果的手绘动画:
/absolute/01.jpg /absolute/02.jpg
先出预览(720×960,确认效果后再出正式版):
使用 $story-to-handdrawn-video 先给这个故事生成一个预览版。
使用建议:
- 故事文本默认一个完整句子一个节拍;想控制节奏,直接在故事里按句分行即可。
- 遇到时间跳跃、指代不明、医疗场景或年龄敏感角色时,建议先让 Agent 给出视觉规划(两位场景编号为键的 JSON),确认后再生成。
- 默认使用 Codex Image2 生成图片;只有明确要求时才会走 OpenAI API(需
OPENAI_API_KEY)。 - 输出是静音画面轨,配音和 BGM 属于后期工作。
输出契约
| 输入 | 模式 | 输出路径 |
|---|---|---|
| 故事文本 | 正式 | out/picture_silent.mp4 |
| 故事文本 | 预览 | out/picture_silent-preview.mp4 |
| 上传图片 | 正式 | out/uploaded_picture_silent.mp4 |
| 上传图片 | 预览 | out/uploaded_picture_silent-preview.mp4 |
- 分辨率:正式 1080×1440,预览 720×960
- 编码:H.264,静音
Skill 的完整行为约定见 skill-package/story-to-handdrawn-video/SKILL.md。
项目结构
.
├── src/ # Remotion 组件(场景、擦除动效、翻页、缓动)
├── scripts/ # 渲染器入口与导入/校验/打包脚本(由 Skill 调用)
├── skill-package/ # 可分发的 Codex / Agent Skill
├── examples/ # 示例故事文本
├── references/ # 黑白/彩色风格参考图
├── public/ # 字体与素材(generated/ 为运行时产物)
├── storyboard.json # 默认文本故事分镜示例
├── storyboard.uploaded.json # 上传图片分镜示例
└── DESIGN.md # 设计说明
渲染器项目的维护命令:npm run dev(Remotion Studio)、npm run check(类型与分镜校验)、npm run build(生产构建)、npm run package:share(生成源码分享包)。
字体
项目使用随附的站酷马善政毛笔字体(Ma Shan Zheng),许可证见 public/fonts/OFL-MaShanZheng.txt(SIL Open Font License)。
贡献
欢迎贡献——请阅读 CONTRIBUTING.md。注意 skill-package/ 下的 Skill 契约与 src/、scripts/ 下的渲染器逻辑是核心部分,修改需要充分理由。
开源协议
English
Convert Chinese story copy — or ordered hand-drawn images — into a 3:4 vertical hand-drawn diary-comic animation: handwritten captions, left-to-right text → bw plate → color illustration reveals, an optional bottom-right page-curl flip transition, and safe uncropped framing. Built on Remotion; outputs a silent H.264 picture track ready for post-production voiceover.
This repo contains:
- The renderer project (root): the Remotion app that storyboards, animates, and renders.
- A Codex / agent skill (
skill-package/): a distributable skill that drives the renderer with natural language — no scripts to run by hand.
Requirements
- Node.js 20+, Python 3.10+, npm
- FFmpeg (
ffmpegandffprobeon PATH) - Google Chrome or a Remotion-managed compatible browser
- An agent runtime with skill support (Codex, Claude Code, Kimi Code, …)
Install
- Set up the renderer project:
git clone https://github.com/gnipbao/story-to-handdrawn-video.git
cd story-to-handdrawn-video
npm ci
npm run check
- Install the skill into your agent’s skills directory:
# Codex
cp -R skill-package/story-to-handdrawn-video ~/.codex/skills/
# Claude Code / generic agents
cp -R skill-package/story-to-handdrawn-video ~/.claude/skills/
# Kimi Code
cp -R skill-package/story-to-handdrawn-video ~/.agents/skills/
- Point the skill at the renderer project (skip when the agent runs inside it):
export STORY_VIDEO_PROJECT=/absolute/path/to/story-to-handdrawn-video
Usage (Codex skill examples)
Everything is driven in natural language; sentence splitting, storyboarding, image generation, import, and rendering are handled by the agent per the skill contract.
Story text → animation (the skill’s default prompt):
使用 $story-to-handdrawn-video 把这段故事生成可后期配音的手绘动画。
Ordered images → animation:
使用 $story-to-handdrawn-video 把这几张图片按顺序生成手绘动画:
/absolute/01.jpg /absolute/02.jpg /absolute/03.jpg
Page-flip effect (uploaded pages shown untouched, curled from the bottom-right corner):
使用 $story-to-handdrawn-video 把这些图片做成翻书效果的手绘动画:
/absolute/01.jpg /absolute/02.jpg
Preview first (720×960, before committing to a full render):
使用 $story-to-handdrawn-video 先给这个故事生成一个预览版。
Notes: one complete sentence per beat by default; Codex Image2 is the default image generator (the OpenAI API path is only used when explicitly requested and requires OPENAI_API_KEY); output is a silent picture track — voiceover and BGM are post-production.
Outputs
| Input | Mode | Path |
|---|---|---|
| Story text | final | out/picture_silent.mp4 |
| Story text | preview | out/picture_silent-preview.mp4 |
| Uploaded images | final | out/uploaded_picture_silent.mp4 |
| Uploaded images | preview | out/uploaded_picture_silent-preview.mp4 |
Final 1080×1440, preview 720×960, H.264, silent. The full behavior contract lives in SKILL.md.
License
MIT. The bundled Ma Shan Zheng font is under the SIL Open Font License.
推奨ツール
別のキーワードを試すか、フィルタを外してください。
インストール
npx skillfish add gnipbao/story-to-handdrawn-video