本文へ移動
cccskills
無料GitHub で公開

huashu-art-motion

艺术与视频动画:拆解复刻动画;36种既有实做风格+16种可迁移研究配方;9种解说动画语法,8种可按口播参数渲片段;含口播整片参考代码及框景检查;人用AI生帧;可选已有录音、系统声音与语音复刻,按需配置。

日本語の概要は準備中です。原文の説明を表示しています。

連携ツールPlaywright
インストール方法を見る

含まれるファイル(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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

艺术动画

先分档:你按哪一档读

  • 开阔档:你是 Claude Opus 5.5 或更强的模型。全文都适用:路由表、窄桥、开阔地;库可以自己组合,渲染器可以自己写;交付同样走 scripts/deliver.py,红灯不交付。开工前也建议先写一张镜头表(references/镜头表模板.md),lint 可跑可不跑。
  • 轨道档:其它模型,或判断不出自己是谁。只走下面这一条路,先镜头表,再动手;只读这条路点名的文件,其余 reference 先不读:
    1. 写镜头表:照 references/镜头表模板.md 写 <项目>/镜头表.md。表前先锁画风,三行:画风(一句话,全片只用这一种)、色板(references/色板.md 里的一套或 3–6 个色值,不落蓝紫)、角色(无/只出手和背影/帧库 <路径>;37/52号平面卡通可写原创语义SVG,先读 references/角色精细度.md)。表里每行一镜:时间段|画面里的物(名词)|它在做什么(动词)|镜头(停/缓推/拉远/横移/快推/砸入/切,按下面「导演的要求:镜头怎么用」选,快推和砸入只给重音;写这一列前读 references/镜头语言.md 第一到四节)|屏上字(≤8 字,可空)|做法。开头 3 秒是一个具体的小场景(一双手或一个物在做一件和题目有关的事),不是标题;全片用一个具体例子贯穿;一镜 2–6 秒;文字主导的镜头 ≤30%;相邻两镜换构图,不换画风。
    2. 过 lint:uv run <skill>/scripts/storyboard_lint.py <项目>/镜头表.md(有口播稿加 --script <项目>/文稿.txt,查屏上数字和口播是不是同一个数)。有红灯就改镜头表、重跑,红灯没清不许开始写代码。
    3. 按镜头表逐镜做: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 抽帧,排成一排对着镜头表看:哪一镜像从别的片子里拿来的,就按画风重做。
    4. 拼接:镜与镜硬切,在放 镜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 成片.mp4
      
      有口播再混音:ffmpeg -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 一次出片。
    5. qa:每个片段 uv run <skill>/scripts/qa.py --spec 镜NN.json --out <项目>/qa/镜NN;有 scenes 再跑 qa.py --project <项目>/代码工程 --ids <id,…> --out <项目>/qa/scenes。再拿抽帧逐条对下面「六种做坏方式」。
    6. 交付: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 "理由"。
  • 往立体、丰富的方向想。 作者对一支剖面全景动画的评价:「立体,丰富,一次看到非常全面和震撼的局面」。用户否过的方向不再端出来。
  • 新方向先出三个给用户挑,同一帧、三种构图,不只是换调色(见窄桥「三方向硬门」)。

最常见的六种做坏方式(开工前、交付前各对一遍)

  1. 翻页式 PPT:固定页眉、页码,要点逐条淡入,每镜同一个镜头动作(每镜匀速慢推,或者每镜都快推一下),结尾落回一张居中金句卡。→ 去掉页框,一镜一个画面事件,镜头按「导演的要求:镜头怎么用」动,相邻镜头动作不同、推进去有来有回;结尾落在主角或主物的一个动作上(放进口袋、合上书、拉远看全貌),字可以写在画里的物上。storyboard_lint 查最后一镜是不是字卡、连续三镜往里推、重音过多;deliver.py 会量出来:整片几乎没有镜头内运动就红灯,不出片;推近太密报黄。
  2. 照搬示范:示范片、样例 spec、风格样片里的构图、角色、素材直接进了成片。→ 只学做法,构图和物按题材重新设计。
  3. 没有具体的物:抽象概念只写成字和图标。→ 镜头表每行写出一个具体的物和它的动作,写不出物的那一行先别做。
  4. 死背景、空画面:大面积纯色或星空底一直不变,只有中间一小块在动;或者整帧只剩纯色、黑场、空景,主角不在画里。→ 主体放大到占画面一半以上,背景跟着内容换,每一镜主角或主物都在画里;图表镜头的底和前后镜头同色系(t3 的 theme)。storyboard_lint 查物列是不是空镜、纯色、黑场;film_gate(deliver.py 先跑它)查成片中段连续 0.3 秒以上的空画面,红灯不出片。
  5. 有真实素材却用代码去画。→ 截图、照片、录像、原文直接满幅放,代码只负责解释、标注和运镜。
  6. 一眼 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 天后再试。

是否更新由用户决定,不要自动执行更新。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

このスキルの問題を報告する