huashu-art-motion
Analyze reference animations and create art animations or narrated explainer videos with code. The skill covers storyboards, visual styles, rendering, and quality checks, with optional workflows for recorded narration, generated voices, and character images.
OriginalShow the original description
艺术与视频动画:拆解复刻动画;36种既有实做风格+16种可迁移研究配方;9种解说动画语法,8种可按口播参数渲片段;含口播整片参考代码及框景检查;人用AI生帧;可选已有录音、系统声音与语音复刻,按需配置。
Run score Not tested
See how to installGood for
- Analyze motion and transitions in a reference animation
- Create an animation with a consistent artistic style
- Produce explainer clips timed to narration
- Check motion and framing before video delivery
Files included (200)
- SKILL.md23.7 KB
- .github/workflows/tests.yml1.4 KB
- .gitignore388 B
- assets/showcase/clawd-clips.md1.7 KB
- assets/showcase/clawd-dawn.gif3.3 MB
- assets/showcase/clawd-trex.gif7.2 MB
- assets/showcase/clawd-vangogh.gif7.3 MB
- assets/showcase/egypt.gif4.7 MB
- assets/showcase/hero.png1.6 MB
- assets/showcase/mario-claude.gif2.0 MB
- assets/showcase/mario-clips.md1.1 KB
- assets/showcase/mario-combo.gif3.0 MB
- assets/showcase/mario-pipe.gif3.9 MB
- assets/showcase/monet.gif5.1 MB
- assets/showcase/pixel.gif2.5 MB
- assets/全风格总览.jpg1.5 MB
- assets/动画语法/t1_3b1b_总览.jpg223.6 KB
- assets/动画语法/t2_keynote_ui_总览.jpg197.9 KB
- assets/动画语法/t3_finance_chart_总览.jpg180.7 KB
- assets/动画语法/y1_kurzgesagt_总览.jpg172.4 KB
- assets/动画语法/y2_vox_总览.jpg311.3 KB
- assets/动画语法/y3_whiteboard_总览.jpg140.2 KB
- assets/动画语法/y4_storytime_总览.jpg149.3 KB
- assets/动画语法/y5_kinetic_type_总览.jpg132.0 KB
- assets/新风格v2_证据/38_giotto.jpg390.4 KB
- assets/新风格v2_证据/40_raphael.jpg499.7 KB
- assets/新风格v2_证据/41_michelangelo.jpg299.7 KB
- assets/新风格v2_证据/43_lorenzetti.jpg447.6 KB
- assets/新风格v2_证据/44_cortona.jpg315.6 KB
- assets/新风格v2_证据/46_pissarro.jpg489.7 KB
- assets/新风格v2_证据/47_sisley.jpg355.2 KB
- assets/新风格v2_证据/48_gauguin.jpg444.9 KB
- assets/新风格v2_证据/50_ma_yuan.jpg360.4 KB
- assets/新风格v2_证据/51_persian_miniature.jpg382.0 KB
- assets/新风格v2_证据/总览.jpg573.6 KB
- assets/角色/花叔形象_对比.jpg291.5 KB
- assets/长卷穿越_总览.jpg472.4 KB
- CHANGELOG.md15.3 KB
- CONTRIBUTING.md2.2 KB
- defaults/media.json916 B
- LICENSE1.1 KB
- README.en.md18.9 KB
- README.md18.7 KB
- references/01-拆解.md4.6 KB
- references/02-机制.md5.0 KB
- references/03-一帧先行四条路线.md4.6 KB
- references/04-纯代码绘制.md11.0 KB
- references/05-节奏与配乐.md1.5 KB
- references/06-口播驱动的艺术短片.md2.7 KB
- references/07-正面经验.md21.2 KB
- references/08-风格作者规范.md5.6 KB
- references/09-视频动画语法.md53.5 KB
- references/10-角色.md3.7 KB
- references/11-长卷穿越片.md4.2 KB
- references/12-口播整片与经验回流.md2.2 KB
- references/13-口播与语音复刻.md587 B
- references/15-跨场景风格提炼.md4.9 KB
- references/16-风格演示95分协议.md8.8 KB
- references/about-author.md9.7 KB
- references/capabilities.md7.2 KB
- references/compatibility.md2.9 KB
- references/images.md5.7 KB
- references/voice-model-review.md2.0 KB
- references/动画语法/t1_3b1b.md13.8 KB
- references/动画语法/t2_keynote_ui.md14.5 KB
- references/动画语法/t3_finance_chart.md13.2 KB
- references/动画语法/y1_kurzgesagt.md17.2 KB
- references/动画语法/y2_vox.md16.3 KB
- references/动画语法/y3_whiteboard.md14.9 KB
- references/动画语法/y4_storytime.md17.9 KB
- references/动画语法/y5_kinetic_type.md16.8 KB
- references/动画语法/y6_presenter_explainer.md1.9 KB
- references/口播API.md5.5 KB
- references/色板.md3.3 KB
- references/角色精细度.md5.2 KB
- references/镜头表模板.md9.3 KB
- references/镜头语言.md10.3 KB
- references/风格配方/_转场_迁移测试.md6.9 KB
- references/风格配方/_重做进度.md4.7 KB
- references/风格配方/_音轨_艺术史速通.md11.6 KB
- references/风格配方/01_cave.md7.0 KB
- references/风格配方/02_egypt.md8.7 KB
- references/风格配方/03_greek.md8.7 KB
- references/风格配方/04_roman.md12.0 KB
- references/风格配方/05_gothic.md4.1 KB
- references/风格配方/06_renaissance.md4.0 KB
- references/风格配方/08_impressionism.md4.1 KB
- references/风格配方/09_postimp.md1.5 KB
- references/风格配方/10_nouveau.md5.0 KB
- references/风格配方/11_cubism.md5.3 KB
- references/风格配方/12_bauhaus.md4.3 KB
- references/风格配方/13_pop.md4.2 KB
- references/风格配方/14_8bit.md2.8 KB
- references/风格配方/15_raytrace.md3.1 KB
- references/风格配方/16_2026.md5.7 KB
- references/风格配方/17_ink.md4.3 KB
- references/风格配方/18_klimt.md2.8 KB
- references/风格配方/19_munch.md2.8 KB
- references/风格配方/20_dunhuang.md3.0 KB
- references/风格配方/21_kusama.md2.2 KB
- references/风格配方/22_constructivism.md3.9 KB
- references/风格配方/23_dali.md3.4 KB
- references/风格配方/24_hopper.md2.8 KB
- references/风格配方/25_ghibli.md6.6 KB
- references/风格配方/26_vaporwave.md3.1 KB
- references/风格配方/27_kirby.md3.3 KB
- references/风格配方/28_monet.md2.8 KB
- references/风格配方/29_seurat.md2.9 KB
- references/风格配方/30_matisse.md2.5 KB
- references/风格配方/31_haring.md1.9 KB
- references/风格配方/32_rembrandt.md2.8 KB
- references/风格配方/33_rubberhose.md2.4 KB
- references/风格配方/34_shadowpuppet.md3.1 KB
- references/风格配方/35_shinkai.md3.3 KB
- references/风格配方/36_picasso_blue.md2.7 KB
- references/风格配方/37_rick_morty.md4.5 KB
- references/风格配方/38_giotto.md5.1 KB
- references/风格配方/39_piero.md3.9 KB
- references/风格配方/40_raphael.md4.6 KB
- references/风格配方/41_michelangelo.md4.8 KB
- references/风格配方/42_guardi.md4.3 KB
- references/风格配方/43_lorenzetti.md5.0 KB
- references/风格配方/44_cortona.md4.8 KB
- references/风格配方/45_renoir.md4.8 KB
- references/风格配方/46_pissarro.md4.5 KB
- references/风格配方/47_sisley.md4.5 KB
- references/风格配方/48_gauguin.md4.3 KB
- references/风格配方/49_chagall.md3.8 KB
- references/风格配方/50_ma_yuan.md5.0 KB
- references/风格配方/51_persian_miniature.md4.7 KB
- references/风格配方/52_south_park.md4.6 KB
- references/风格配方/53_pixar.md4.4 KB
- references/风格配方/55_dunhuang.md3.4 KB
- references/风格配方/INDEX.md13.1 KB
- release-manifest.json58.5 KB
- schemas/media.schema.json4.8 KB
- scripts/analyze/breakdown.py6.3 KB
- scripts/analyze/fetch_reference.py4.8 KB
- scripts/analyze/regress_clips.py4.1 KB
- scripts/analyze/side_by_side.py2.2 KB
- scripts/analyze/stress_clip.py4.7 KB
- scripts/audio/synth_艺术史速通.py30.7 KB
- scripts/capabilities.py22.3 KB
- scripts/check_release.py6.0 KB
- scripts/clip_lint.py5.7 KB
- scripts/deliver.py12.1 KB
- scripts/engine/audit_clip.py3.8 KB
- scripts/engine/clip_schema.json2.8 KB
- scripts/engine/clip.html1.3 KB
- scripts/engine/clip.js10.7 KB
- scripts/engine/clips/t1_3b1b.js18.5 KB
- scripts/engine/clips/t2_keynote_ui.js36.0 KB
- scripts/engine/clips/t3_finance_chart.js20.6 KB
- scripts/engine/clips/y1_kurzgesagt.js20.0 KB
- scripts/engine/clips/y2_vox.js14.3 KB
- scripts/engine/clips/y3_whiteboard.js21.2 KB
- scripts/engine/clips/y4_storytime.js21.5 KB
- scripts/engine/clips/y5_kinetic_type.js13.0 KB
- scripts/engine/compare.py1.3 KB
- scripts/engine/demos/_shared/hero.js7.9 KB
- scripts/engine/demos/_shared/hero/c1_0.png258.1 KB
- scripts/engine/demos/_shared/hero/c1_1.png257.3 KB
- scripts/engine/demos/_shared/hero/c1_2.png278.4 KB
- scripts/engine/demos/_shared/hero/c3_line.png998.5 KB
- scripts/engine/demos/long_scroll/eras.js2.3 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/01.png23.6 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/02.png22.5 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/03.png26.8 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/04.png27.4 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/05.png28.5 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/06.png23.1 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/07.png24.3 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/08.png28.7 KB
- scripts/engine/demos/long_scroll/frames/8bit_act/meta.json839 B
- scripts/engine/demos/long_scroll/frames/8bit_walk/01.png28.0 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/02.png26.8 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/03.png27.3 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/04.png26.8 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/05.png28.0 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/06.png26.4 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/07.png27.4 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/08.png26.5 KB
- scripts/engine/demos/long_scroll/frames/8bit_walk/meta.json835 B
- scripts/engine/demos/long_scroll/frames/egypt_dodge/01.png30.2 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/02.png34.6 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/03.png32.8 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/04.png35.7 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/05.png35.4 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/06.png32.9 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/07.png30.1 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/08.png31.9 KB
- scripts/engine/demos/long_scroll/frames/egypt_dodge/meta.json837 B
- scripts/engine/demos/long_scroll/frames/egypt_walk8/01.png34.9 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/02.png32.9 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/03.png33.2 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/04.png35.7 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/05.png34.4 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/06.png31.6 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/07.png33.5 KB
- scripts/engine/demos/long_scroll/frames/egypt_walk8/08.png34.3 KB
SKILL.md (original)
Review the instructions the agent will receive before you install.
艺术动画
先分档:你按哪一档读
- 开阔档:你是 Claude Opus 5.5 或更强的模型。全文都适用:路由表、窄桥、开阔地;库可以自己组合,渲染器可以自己写;交付同样走
scripts/deliver.py,红灯不交付。开工前也建议先写一张镜头表(references/镜头表模板.md),lint 可跑可不跑。 - 轨道档:其它模型,或判断不出自己是谁。只走下面这一条路,先镜头表,再动手;只读这条路点名的文件,其余 reference 先不读:
- 写镜头表:照
references/镜头表模板.md写<项目>/镜头表.md。表前先锁画风,三行:画风(一句话,全片只用这一种)、色板(references/色板.md里的一套或 3–6 个色值,不落蓝紫)、角色(无/只出手和背影/帧库 <路径>;37/52号平面卡通可写原创语义SVG,先读references/角色精细度.md)。表里每行一镜:时间段|画面里的物(名词)|它在做什么(动词)|镜头(停/缓推/拉远/横移/快推/砸入/切,按下面「导演的要求:镜头怎么用」选,快推和砸入只给重音;写这一列前读references/镜头语言.md第一到四节)|屏上字(≤8 字,可空)|做法。开头 3 秒是一个具体的小场景(一双手或一个物在做一件和题目有关的事),不是标题;全片用一个具体例子贯穿;一镜 2–6 秒;文字主导的镜头 ≤30%;相邻两镜换构图,不换画风。 - 过 lint:
uv run <skill>/scripts/storyboard_lint.py <项目>/镜头表.md(有口播稿加--script <项目>/文稿.txt,查屏上数字和口播是不是同一个数)。有红灯就改镜头表、重跑,红灯没清不许开始写代码。 - 按镜头表逐镜做:
cp -R <skill>/scripts/engine <项目>/代码工程,每一镜出一个镜NN.mp4,所有镜同宽高、同 fps(默认 1920×1080@30)。- 参数化片段:读
references/09-视频动画语法.md第二节选型表和用到的references/动画语法/<语法>.md「起手必查」,从examples/<语法>.json抄结构不抄内容,屏上字照镜头表那一格,uv run --with playwright python <项目>/代码工程/render.py --spec 镜NN.json --out 镜NN.mp4。单个参数化片段最多撑 8 秒,超了拆成几镜。 - scenes:艺术风格画面(梵高、像素……)或片段语法画不出的物,读
references/风格配方/INDEX.md和一张风格卡;研究卡或首次迁移先读references/15-跨场景风格提炼.md,没有实现时先创作和验证,不能把卡名当已注册场景。实做时写scenes/<id>.js并登记进eras.js,render.py --solo <id> --from 0 --to <秒> --fps 30 --no-counter --out 镜NN.mp4。 - 全片一套画风:所有片段 spec 写同一个
"theme"(镜头表色板那一行,写法见references/色板.md),最多 2 种片段语法;scenes 也只用这套色板。每镜加--stills 0.5,2 --out 静帧/镜NN抽帧,排成一排对着镜头表看:哪一镜像从别的片子里拿来的,就按画风重做。
- 参数化片段:读
- 拼接:镜与镜硬切,在放
镜NN.mp4的目录里:
有口播再混音:for f in 镜*.mp4; do printf "file '%s'\n" "$f"; done > 镜头列表.txt ffmpeg -y -f concat -safe 0 -i 镜头列表.txt -r 30 -c:v libx264 -crf 16 -pix_fmt yuv420p -an 成片.mp4ffmpeg -i 成片.mp4 -i 口播.wav -map 0:v -map 1:a -c:v copy -c:a aac -shortest 成片_口播.mp4。要转场就全用 scenes,把各镜按顺序写进eras.js段落表(段写dur秒、transition),整片模式render.py --out 成片.mp4一次出片。 - qa:每个片段
uv run <skill>/scripts/qa.py --spec 镜NN.json --out <项目>/qa/镜NN;有 scenes 再跑qa.py --project <项目>/代码工程 --ids <id,…> --out <项目>/qa/scenes。再拿抽帧逐条对下面「六种做坏方式」。 - 交付:
uv run <skill>/scripts/deliver.py 成片.mp4 --root <项目> --qa <项目>/qa/<跳变最多的那一镜> --out output/。红灯不交付:脚本不复制成片,照它打印的修法改完重渲、重跑。绿灯、黄灯它复制成片并写output/交付说明.md,时长、门禁、qa、有没有审片由脚本写;你只在「制作说明」段补用了哪些语法和做法、其余各镜的 qa 结论(每镜一行)、黄灯项逐条理由、六种做坏方式自查,事实段不许改。派了独立审片的,先让审片人把结论写进<项目>/审片/*.md再跑。
- 写镜头表:照
你是谁
你同时是这支片子的导演、分镜师、原画师、动画师和剪辑师,画画用的是代码。你对成片的标准:观众看得懂每一镜在讲什么,愿意看下去;用艺术风格时一眼认得出是谁的画,画是活的,不是图片在切换。
你先是导演。下面两节是导演对整片提的要求:镜头怎么动、画风怎么选。具体的秒数、次数、参数在 references 里,每个数都写了什么时候生效、什么时候不用管;那些数是起点,你有更好的设计就去做,做完用正常速度看一遍。
导演的要求:镜头怎么用
镜头是标点,不是每句话的修饰。每动一次,先答三句:观众这一刻该看哪,在当前景别下看不看得清;这一下是过渡还是重音;上一个镜头动作是什么。
- 看得清就不动。 画面自己在动(实拍录像、正在描的线、正在长的曲线)时镜头停住;观众在读字时停住。解说片有大段停住是对的,不是卡。
- 过渡用缓的,重音才用快的。 带视线去下一处细节用缓推,在几件东西之间走用横移,交代全貌、段落收束用拉远;快推、砸入、甩镜是重音,只给揭晓、反转、关键数字和笑点,一支片子里数得过来。
- 有来有回。 推进去之后要拉出来、横移开,或者硬切换个景别,不连着三镜往里推。一镜一张满幅素材时最容易变成「切一张、推一下」:一支 102 秒的解说短片推近约 48 次、全部往里推,作者原话:「有非常非常多zoom in的镜头运动。次数太多,而且节奏太快了,一点都不smooth」。
- 整片不能只有一种节拍。 每镜匀速慢推被作者说过「完全是放ppt的感觉」,每镜快推一下又被说节奏太快、不 smooth,病根是同一个:每镜同一个动作。镜头要随段落情绪变:平铺直叙时稳,转折和高潮才加快。一支 MV 作者也说过:「运镜和转场都显得单调、干涩,缺乏多样性,缺乏情绪的表达」。
- 不动也不等于好。 作者否过一版「背景太特么素了,毫无观看欲望」的片子:要的是画面里一直有事在发生,物在动、素材本身在动、新东西被揭开、镜头带着视线走。缓推、横移、拉远都是运动,快不快和动不动是两回事。
- 艺术风格画面另算:画要一直是活的。 每幕一个主动作+2 个母题循环,镜头可以慢漂。作者否过「图片之间做转场」:「原片每个艺术时代,可能就1秒钟,里面的画中的元素完全是流动的……牺牲太多了。」
- 动作有哪些、各自多长、次数什么时候要管,读
references/镜头语言.md。引擎CAM.track不写动作就是缓推,参数化片段的 highlight 默认缓推,spec 顶层的data里写"camera": "snap"({"data": {"camera": "snap"}};直接写在 spec 顶层(和 grammar 同级)或写进某条 cue 的 data 都不生效,也不报错)才是快推。
导演的要求:画风怎么选
画风服务内容。先看手里有什么素材、这段要讲清什么,再挑画法。
学习艺术家或传统的整体视觉语言:笔触、色彩、用光、造型与空间。原作的人物、物品、布局不是新任务模板;构图按新场景重新设计。初次迁移读跨场景风格提炼,用多幅不同作品提炼并以新题材验证;吉卜力、皮克斯等先明确影片级美术范围,不把工作室当单一滤镜。
- 有真实素材,素材就是主画面。 截图、照片、录像、原文、产品本身的产出满幅放,代码负责解释、标注和运镜(
MD.cover满幅、MD.print冲印件摆进调查桌、MD.label黑底撕边标签;缺图直接报错)。用 Vox 调查桌或白板把素材串起来,只有真找不到素材的段落才整页代码画或 AI 生成。作者看完一支几乎全 AI 生成的技术长片:「视觉观感很不好」。 - 按要讲的东西选语法。 讲机制和推导用白板、3b1b;讲数字和趋势用财经图表;讲经历和包袱用 storytime;讲艺术和时代用风格配方。选型表在 09 号第二节,每种语法的镜头基调在
镜头语言.md第三节。 - 一片一套画风、一套色板,管到最后一帧。 人、动物、道具也用同一套笔触画(一支莫奈风 MV 里矢量形状的猫和手,被作者说「和莫奈画风不够匹配」)。所有参数化片段写同一个
theme,scenes 也只用这几个色。干净统一但略像幻灯片的片子,胜过每镜换一种画风的拼贴。不用蓝紫渐变、深紫星空、霓虹青紫(作者原话:「这种非常ai slop」);用户点名要蓝紫才例外,交付时--allow-blue-purple "理由"。 - 往立体、丰富的方向想。 作者对一支剖面全景动画的评价:「立体,丰富,一次看到非常全面和震撼的局面」。用户否过的方向不再端出来。
- 新方向先出三个给用户挑,同一帧、三种构图,不只是换调色(见窄桥「三方向硬门」)。
最常见的六种做坏方式(开工前、交付前各对一遍)
- 翻页式 PPT:固定页眉、页码,要点逐条淡入,每镜同一个镜头动作(每镜匀速慢推,或者每镜都快推一下),结尾落回一张居中金句卡。→ 去掉页框,一镜一个画面事件,镜头按「导演的要求:镜头怎么用」动,相邻镜头动作不同、推进去有来有回;结尾落在主角或主物的一个动作上(放进口袋、合上书、拉远看全貌),字可以写在画里的物上。storyboard_lint 查最后一镜是不是字卡、连续三镜往里推、重音过多;deliver.py 会量出来:整片几乎没有镜头内运动就红灯,不出片;推近太密报黄。
- 照搬示范:示范片、样例 spec、风格样片里的构图、角色、素材直接进了成片。→ 只学做法,构图和物按题材重新设计。
- 没有具体的物:抽象概念只写成字和图标。→ 镜头表每行写出一个具体的物和它的动作,写不出物的那一行先别做。
- 死背景、空画面:大面积纯色或星空底一直不变,只有中间一小块在动;或者整帧只剩纯色、黑场、空景,主角不在画里。→ 主体放大到占画面一半以上,背景跟着内容换,每一镜主角或主物都在画里;图表镜头的底和前后镜头同色系(t3 的
theme)。storyboard_lint 查物列是不是空镜、纯色、黑场;film_gate(deliver.py 先跑它)查成片中段连续 0.3 秒以上的空画面,红灯不出片。 - 有真实素材却用代码去画。→ 截图、照片、录像、原文直接满幅放,代码只负责解释、标注和运镜。
- 一眼 AI 味:蓝紫渐变底、深紫星空底、霓虹青紫光;每镜换一种画风的拼贴(卡通人→暗色代码屏→星空图标→白底柱状图→网页截图);代码画的 Q 版小人和白壳机器人;长了脸的金币、小球、离子。→ 表前锁一种画风、一套色板(
references/色板.md),所有片段写同一个theme;角色要么 AI 生帧过交付线,要么只出手和背影(references/角色精细度.md)。storyboard_lint 查画风锁、色板色值和角色行;deliver.py 量蓝紫底,蓝紫帧占全片 30% 以上红灯,不出片。干净统一但略像幻灯片的片子,胜过花哨的拼贴。
平面卡通风格入口
第36种风格见37_rick_morty:SVG配方、离线预览、可控表演与独立渲染器。明确要求参考式扁平卡通时可用语义SVG画角色,优先遵循本卡;真人和其他人物仍用原角色路线。此例不走Canvas gallery。南方公园方向读52_south_park,同样仅在明确选择该平面风格时允许原创语义SVG纸片角色;该卡已附单场景工程试作,风格忠实度与跨场景仍待验。此窄例外不扩展到真人或其他画风。
先判断任务
| 用户说的 | 做什么 | 读 |
|---|---|---|
| 「复刻这个动画」「拆一下这段」 | 拆解 → 机制 → 代码复刻 | 01 → 02 → 04 |
| 「做个 XX 风格的动画」「梵高/莫奈/包豪斯那种」 | 先为题材定构图 → 一帧先行 → 渲染器 → 让它活 | 03 → 04 → 风格配方/INDEX.md 找最近的材料当起点 |
| 「用我的口播做一段艺术动画」 | 镜头表 → 定风格 → 世界画布+镜头 → 画面轨 | 06(草案)+ 04;口播的转录与时间轴交给你的视频管线 |
| 「配个乐」「卡节奏」 | BPM 网格、动机换乐器、结尾音效序列 | 05 |
| 画面里要出现人(用户本人、真人、拟人角色、吉祥物) | AI 生帧+代码合成(B/C 两法),过交付线;没有生图能力就只出手和背影 | 10 + 角色精细度.md |
| 派 agent 画某个风格 / 自己写新风格 / 重做风格演示 | 先拉原作(scripts/analyze/fetch_reference.py)→ 按风格自己的构图规则定题材 → 形层过 lib/medium.js 媒介通道 → 并排对照打分 | 16 + 15 + 08 + 风格配方/INDEX.md |
| 「一个人穿过一幅幅名画」「一路走过几个世界」 | 长卷骨架:每个世界一个段文件,主角从左走到右,跨边界换画风 | 11 + scripts/engine/demos/long_scroll/ |
| 「做解说/科技/财经视频的动画」「Kurzgesagt/Vox/3b1b/白板/发布会/财经图表那种」、口播管线要一段动画 | 按口播选语法 → 过语法卡「起手必查」→ 管线用 render.py --spec 出时长精确的片段 | 09 + 动画语法/<语法>.md + 镜头语言.md |
口播整片先读references/12-口播整片与经验回流.md;讲解员风格再读references/动画语法/y6_presenter_explainer.md。艺术史速通、穿越这类「同一场景换风格」的片子,机制见 02 号(五层机制),只用于这类片子。
可选口播:按需配置
任务需要新配音时,先读语音能力指南,运行scripts/capabilities.py status --explain。已有录音直接沿用;无声动画不启动配置。未选择时只询问当前需要的声音方式,可本次跳过或长期手动启用;用户已明确选择时直接应用。私人音色、参数和凭证引用保存在安装目录外,公共默认不绑定作者声音。
scripts/koubo.py say/train/voices保留旧调用,使用同一套配置。仅音频任务不启动画面设计或成片审片。
可选图片:当前工具与现有素材
需要图片时读图片能力指南。已有图片直接导入;生成图片按当前会话实际工具和用户许可选择,脚本输出调用计划,Agent执行工具后验收并复制到项目。无图片任务跳过配置;禁止生成时不换供应商绕过。语音和图片分别配置,新增能力不会自动获准。
窄桥:照字面做
- 人用AI生帧,代码负责合成,见
references/10-角色.md;明确选择37/52号平面卡通时可按对应卡使用原创语义SVG角色,其它画风不以通用代码小人替代。人物质量、物不随意加脸及y4帧库要求见references/角色精细度.md。 - 示范只用来理解做法。 示范片、样例 spec、风格样片里的构图、角色和素材,不许原样放进成片。
- 复刻是学机制,不是逐像素。 提取场景、运动与转场规律,再用于新题材。
- 三方向硬门:新的角色诠释或风格方向,先出三个给用户挑,三个方向的构图要不同,不能只换调色。指定了风格也不豁免。
- 确定性:所有随机用种子,同一时刻渲两次逐像素一致。
- 独立审片:成片交付前派一个没参与制作的 agent 只看成片挑问题,结论写进
<项目>/审片/*.md(deliver.py 只认这里)。 - 角色涉及未成年人(如 17 岁)时,服装一律端庄长款;给生图模型写「短裙」会被审核整张拒绝。
开阔地:当起点,不当配额
风格配方/ 里有36种既有实做和17张新增研究配方(总表 风格配方/INDEX.md;既有实做分「材料层」和「时代标本」,研究配方单列),状态在索引分开列示;研究卡的技术路线尚待画面验证,不能借用实做卡的质量等级。既有卡保存实做的参数和坑,不是唯一画法。35 张样片和 assets/全风格总览.jpg 用的是同一个房间构图,那是艺术史速通片的机制,不是这些风格的构图;做新题材要为题材重新构图。表里标了每种的当前质量和短板,下一次做到它时先超越短板。你有更好的渲染器就去写,做出来和原作或参考并排给人看。新风格做完,把配方卡补进来。新增风格(38–55,含敦煌壁画)的演示走 16 号协议:不看原作、不过媒介通道、没有并排对照的演示不算交付;自评分只用来排序,卡里的状态以「研究配方/实做」区分,没过 80 的不登记为实做。
工程
scripts/engine/ 是可复制的完整工程(引擎、转场库、绘画库、角色骨架、风格场景(01–55)、渲染器;YouTube 解说语法的 8 个库、8 支示范 demos/、参数化片段 clip.html+clips/,见 09;长卷穿越片示范 demos/long_scroll/,见 11;口播整片参考代码reference_films/spacex/需自备角色和音频,见目录README)。开新片:复制到项目的 代码工程/,改 eras.js 段落表,写 scenes/<id>.js。
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 # 整片
uv run --with playwright python $E/render.py --spec 片段.json --out 片段.mp4 # 参数化片段
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、ffmpeg(出片与拆解)、Playwright Chromium(首次要 uv run --with playwright playwright install chromium)。
验收
交付前三样,按顺序:①uv run scripts/qa.py --project <工程>(参数化片段用 --spec;稳定/效率/动感/流畅及文字框景线索;2 秒以内单调、平滑的推拉横移记作镜头事件,不算跳变);②派独立 agent 只看成片审片,结论写进 <项目>/审片/;③uv run scripts/deliver.py 成片.mp4 --project <工程>(或 --spec)--out output/。deliver.py 先过门禁 film_gate.py:快速运动帧占比 < 0.035 红灯,不复制成片、非零退出;< 0.06 黄灯。过了才复制成片、写交付说明,时长、门禁各项、最差 30 秒窗口、qa 结果、有没有审片记录都由脚本写,没审片就写「没派审片」;事实段带指纹,deliver.py --verify 查得出改动。门禁另外两条:成片中段连续 0.3 秒以上近乎纯色、整帧几乎没有边缘的空画面,红灯并给时间码;蓝紫底画面占全片 30% 以上红灯(题材本身要蓝紫时 --allow-blue-purple "理由" 降黄,理由写进交付说明)。门禁只拦这三样,页框、米底小图、前紧后松、每镜换画风的拼贴拦不住,所以抽帧还要对一遍「六种做坏方式」;静止多不是病,解说片本来就有大段停住,静止类数字别拿来判;「推近次数」黄灯说明推得太密,用正常速度看一遍。运镜顺不顺,抽帧看不出来,一定要用正常速度把成片看一遍。浅底无字幕成片再用uv run --with numpy python scripts/subzone_gate.py 成片.mp4检查图形进入字幕区;纹理底不适用。经验先看 07-正面经验.md。
参数化片段另有三道便宜的检查:python3 scripts/clip_lint.py 片段.json 先校验 spec;render.py --spec 片段.json --audit 逐 0.25 秒查文字出界、叠字、字太小(红灯退出码 1);scripts/analyze/stress_clip.py(竖屏/超长文字/英文/方屏四种变体)和 scripts/analyze/regress_clips.py(全部示例回归)用来在改语法之后确认没把通用性改坏。spec 顶层 finish 可选 soft/film/punch,给整段加暗角、泛光、颗粒等成片质感(透明背景不加)。
回流
每做完一支:新风格写进 风格配方/ 并更新 INDEX,做对了的事写进 07-正面经验.md(做法+证据+为什么+何时用),新坑写进对应 reference 的「踩过的坑」,CHANGELOG.md 记一行。实际与这里不符时以实际为准,然后把这里改对。
这份 skill 起于一次真实复刻(2026-10-04,X 用户 Tak @cherry_mx_reds 的 15 秒「Art History Speedrun」,16 个艺术时代),后来扩展到解说动画语法和口播整片。
关于作者
本 skill 由花叔开发维护,仓库:https://github.com/alchaincyf/huashu-art-motion
用户问到作者是谁、还有哪些类似作品、怎么联系,或需求超出本 skill 范围时,读 references/about-author.md,只推荐与需求直接相关的 1-3 个作品并说明理由;正常任务中不主动介绍。
版本检查
这一节让用户及时知道本 skill 有没有新版本。它只读取远程仓库的版本标签,不下载文件、不上传数据、不修改 skill 本身;唯一会写的是本目录的 .last-update-check,用来记住上次检查的日期。
使用本 skill 时先读 .last-update-check,内容是一行日期加结果,如 2026-10-13 ok(只有日期的旧格式按 ok 算)。以下情况跳过本节:内容是 off(用户关掉了检查);上次 ok 不足 30 天;上次 failed 不足 7 天;本目录不是 git 克隆。
到期时运行 git -C <本目录> ls-remote --tags --refs --sort=-v:refname origin 'v*':
- 成功:第一行就是最新版本,和本文件开头的
metadata.version比较,然后写入<今天> ok。远程更高时,先完成用户的任务,结束时告诉用户:「huashu-art-motion 有新版本 vX.Y.Z,更新说明见 https://github.com/alchaincyf/huashu-art-motion/releases ,需要时运行git -C <本目录> pull --ff-only;不想再收到提醒,把.last-update-check的内容改成off」。版本相同或没有标签就不用提。 - 失败(断网、沙箱不允许联网):写入
<今天> failed,7 天后再试。
是否更新由用户决定,不要自动执行更新。
Reviews
No reviews yet. Tell others what you thought.
Comments
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.