Back to skills
SKILL.md
Upstream
ASecurity艺术与视频动画:拆解复刻动画;代码画35种艺术风格并让画活;9种解说动画语法,8种可按口播参数渲片段;含口播整片参考代码及框景检查;人用AI生帧。
- 11 stars
- 0 votes
- 0 copies
- 0 views
- Added October 7, 2026
Works with
Security analysis
100/100Pro scans all 20 files and shows the line behind each finding
npx -y skills add 2233admin/design-pipeline --skill upstream --agent claude-codeAre you the author of Upstream?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/2233admin-upstream)---
name: huashu-art-motion
description: "艺术与视频动画:拆解复刻动画;代码画35种艺术风格并让画活;9种解说动画语法,8种可按口播参数渲片段;含口播整片参考代码及框景检查;人用AI生帧。"
---
# 艺术动画
## 你是谁
你同时是这支片子的导演、分镜师、原画师、动画师和剪辑师,而且你画画用的是代码。你对成片只有一个标准:观众一眼认得出这是哪位艺术家/哪个时代的画,而且画是活的,不是图片在切换。
这份 skill 来自一次真实复刻(2026-10-04,X 用户 Tak @cherry_mx_reds 的 15 秒「Art History Speedrun」,16 个艺术时代)。目标是把一次复刻积累为可重复使用的方法:给一段动画能立刻拆解复刻;能做出几十种没见过的艺术风格;会「先设计一帧,再让它动起来」;以后能按他的口播做出连贯、有艺术质感的动画。
## 先判断任务
| 他说的 | 做什么 | 读 |
|---|---|---|
| 「复刻这个动画」「拆一下这段」 | 拆解 → 机制 → 代码复刻 | 01 → 02 → 04 |
| 「做个 XX 风格的动画」「梵高/莫奈/包豪斯那种」 | 一帧先行 → 渲染器 → 让它活 | 03 → 04 → `风格配方/` 找最近的一张当起点 |
| 「用我的口播做一段艺术动画」 | 镜头表 → 定风格 → 世界画布+镜头 → 画面轨 | 06(草案)+ 04;口播的转录与时间轴交给你的视频管线 |
| 「配个乐」「卡节奏」 | BPM 网格、动机换乐器、结尾音效序列 | 05 |
| 画面里要出现人(花叔本人、真人、拟人角色) | AI 生帧+代码合成(B/C 两法) | 10 |
| 派 agent 画某个风格 / 自己写新风格 | 接口、两种起点、硬要求、自检交付 | 08 + `风格配方/INDEX.md` |
| 「做一个人穿过一幅幅名画/一路走过几个世界的片子」 | 长卷骨架:每个世界一个段文件,主角从左走到右,跨边界换画风 | 11 + `scripts/engine/demos/long_scroll/` |
| 「做解说/科技/财经视频的动画」「做个 Kurzgesagt/Vox/3b1b/白板/发布会/财经图表那种」、口播管线要一段动画 | 先按口播选语法 → 照语法卡做,库直接调;管线用 `render.py --spec` 出时长精确的片段 | 09 + `动画语法/<语法>.md` |
口播整片先读`references/12-口播整片与经验回流.md`;讲解员风格再读`references/动画语法/y6_presenter_explainer.md`。
## 五层机制(02 号的一句话版)
固定的场景骨架 × 每一幕都是活的画(主角动作+该风格母题的小循环)× 转场用下一个风格的签名语言 × 节拍网格加速 × 一条连续的叙事锚+结尾角色梗。换题材照样成立。
## 窄桥:照字面做
- **画面必须动。** 每一幕至少一个主动作+2个母题循环,自检要量帧差(避开转场后0.35s的镜头冲击)。
- **场景与风格用代码画;人用AI生帧,代码负责合成。** 场景、风格、运镜、转场、物件用Canvas程序化绘制。真人、本人和拟人角色采用已有角色帧,或按画风生成sprite帧再抠图合成;代码控制位置、大小、换帧时机和材质。几何角色可以用代码画。见`references/10-角色.md`。
- **复刻是学机制,不是逐像素。** 提取场景、运动与转场规律,再用于新题材。
- **三方向硬门**:新的角色诠释或风格方向,先在同一帧上出三个给他挑,指定了风格也不豁免。
- **确定性**:所有随机用种子,同一时刻渲两次逐像素一致。
- **独立审片**:成片交付前派一个没参与制作的 agent 只看成片挑问题。
- 角色涉及未成年人(如 17 岁)时,服装一律端庄长款;给生图模型写「短裙」会被审核整张拒绝。
## 开阔地:当起点,不当配额
`风格配方/` 里 35 张卡(总表 `风格配方/INDEX.md`:艺术史 15 种+水墨、克里姆特、蒙克、敦煌、草间弥生、构成主义、达利、霍珀、吉卜力、蒸汽波、漫威 Kirby、莫奈、修拉、马蒂斯、哈林、伦勃朗、橡皮管卡通、皮影、新海诚、毕加索蓝色时期)是实做的参数和坑,不是唯一画法。表里标了每种的当前质量和短板——下一次做到它时先超越短板。你有更好的渲染器就去写,做出来和原作/参考并排给人看。新风格做完,把配方卡补进来。
## 工程
`scripts/engine/` 是可复制的完整工程(引擎、转场库、绘画库、角色骨架、35 个风格场景、渲染器;YouTube 解说语法的 8 个库、8 支示范 `demos/`、参数化片段 `clip.html`+`clips/`,见 09;长卷穿越片示范 `demos/long_scroll/`,见 11;口播整片参考代码`reference_films/spacex/`需自备角色和音频,见目录README)。开新片:复制到项目的 `代码工程/`,改 `eras.js` 段落表,写 `scenes/<id>.js`。
```sh
E=<项目>/代码工程
uv run --with playwright python $E/render.py --solo <id> --stills 0,0.3,0.6 --out 渲染/<id> # 单段静帧
uv run --with playwright python $E/render.py --out 成片.mp4 --audio 配乐.wav # 整片
python3 $E/compare.py --a 参考.mp4 --b 成片.mp4 --times 1.5,2.0 --out 对比.jpg # 并排
uv run scripts/analyze/breakdown.py --video 参考.mp4 --out 拆解/ # 拆解地图
```
字体在 `scripts/engine/lib/fonts/`(woff,各字体许可见同目录 `LICENSES.md`)。依赖:[uv](https://docs.astral.sh/uv/)、ffmpeg(出片与拆解)、Playwright Chromium(首次要 `uv run --with playwright playwright install chromium`)。
## 验收
交付前必跑 `uv run scripts/qa.py --project <工程>`(稳定/效率/动感/流畅及文字框景线索)+派独立 agent 只看成片审片。浅底无字幕成片再用`uv run --with numpy python scripts/subzone_gate.py 成片.mp4`检查图形进入字幕区;纹理底不适用。两样都做完才算完成。经验先看 `07-正面经验.md`。
## 回流
每做完一支:新风格写进 `风格配方/` 并更新 INDEX,**做对了的事写进 `07-正面经验.md`(做法+证据+为什么+何时用)**,新坑写进对应 reference 的「踩过的坑」,`CHANGELOG.md` 记一行。实际与这里不符时以实际为准,然后把这里改对。
Files in this skill
- CHANGELOG.md
- LICENSE
- README.md
- SKILL.md
- references/01-拆解.md
- references/02-机制.md
- references/03-一帧先行四条路线.md
- references/04-纯代码绘制.md
- references/05-节奏与配乐.md
- references/06-口播驱动的艺术短片.md
- references/07-正面经验.md
- references/08-风格作者规范.md
- references/09-视频动画语法.md
- references/10-角色.md
- references/11-长卷穿越片.md
- references/12-口播整片与经验回流.md
- references/动画语法/t1_3b1b.md
- references/动画语法/t2_keynote_ui.md
- references/动画语法/t3_finance_chart.md
- references/动画语法/y1_kurzgesagt.md
Attribution
Comments
Loading comments…