huashu-art-motion について
huashu-art-motionは、コードでアートアニメーションや解説動画を制作するためのクリエイティブスキルです。絵コンテからレンダリング、品質確認、納品までを案内し、画風の統一とショットごとの確認を重視します。
主な機能
- 01多様な画風レシピ
- 029種類の解説アニメ文法
- 03絵コンテに沿った制作工程
- 04動画クリップのレンダリングと結合
- 05QAチェックと納品ゲート
活用シーン
- 01アートスタイルの短編アニメ制作
- 02解説動画用アニメの制作
- 03参考アニメの分析と手法の再現
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alchaincyf/ huashu-art-motion --skill huashu-art-motionインストール後、Claude Code で/huashu-art-motionを入力して読み込まれたか確認します。
詳細
艺术动画
先分档:你按哪一档读
- 开阔档:你是 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 を実行してください)。
検収
納品前に、次の3つを順番に実施します。①uv run scripts/qa.py --project <工程>(パラメーター化クリップでは --spec を使用。安定性/効率/躍動感/滑らかさ、およびテキスト枠の構図上の手がかりを確認します。2秒以内の単調で滑らかなズームや横移動はカメライベントとして記録し、急変とはみなしません)。②独立したエージェントに完成動画だけを見せてレビューを依頼し、結果を <项目>/审片/ に記録します。③uv run scripts/deliver.py 成片.mp4 --project <工程>(または --spec)--out output/。deliver.py は最初にゲート film_gate.py を通します。高速動作フレームの割合が < 0.035 なら赤信号となり、完成動画はコピーされず、終了コードは0以外になります。< 0.06 なら黄信号です。ゲートを通過した場合にのみ完成動画をコピーし、納品説明を作成します。尺、ゲートの各項目、最悪の30秒区間、qa の結果、レビュー記録の有無はすべてスクリプトが記録します。レビューがなければ「レビュー依頼なし」と記載します。事実のセクションにはフィンガープリントが付くため、deliver.py --verify で変更を検出できます。ゲートにはほかに2つの条件があります。完成動画の中盤に、ほぼ単色でフレーム内にエッジがほとんどない空画面が0.3秒以上連続すると、時間コードとともに赤信号になります。青紫系の背景が動画全体の30%を超えると赤信号になります(題材上、青紫が必要な場合は --allow-blue-purple "理由" で黄信号に下げます。理由は納品説明に記録されます)。ゲートが止めるのはこの3点だけです。ページ枠、米色の背景に小さな画像、前半が詰まり後半が緩む構成、カットごとに画風が変わるコラージュは止められません。そのため、フレームを抽出して「失敗につながる6つの方法」と照らし合わせてください。静止画が多いこと自体は問題ではありません。解説動画には長く静止する箇所がもともとあります。静止に関する数値で判定しないでください。「ズームイン回数」が黄信号の場合はズームが多すぎることを示すため、通常の速度で一度見てください。カメラワークが滑らかかどうかはフレーム抽出ではわからないため、必ず通常の速度で完成動画を一度見てください。明るい背景で字幕のない完成動画は、uv run --with numpy python scripts/subzone_gate.py 成片.mp4 も実行し、グラフィックが字幕領域に入っていないか確認してください。テクスチャ背景には適用されません。経験則については、まず 07-正面经验.md を参照してください。
パラメーター化クリップには、追加で手軽なチェックが3つあります。python3 scripts/clip_lint.py 片段.json で spec を検証します。render.py --spec 片段.json --audit では0.25秒ごとにテキストのはみ出し、文字の重なり、文字の小ささを確認します(赤信号の場合は終了コード1)。scripts/analyze/stress_clip.py(縦長画面/非常に長いテキスト/英語/正方形画面の4種類のバリエーション)と scripts/analyze/regress_clips.py(すべてのサンプルの回帰テスト)は、構文を変更したあとに汎用性が損なわれていないことを確認するために使います。spec のトップレベルの finish には soft/film/punch を指定でき、クリップ全体にビネット、ブルーム、粒子などの仕上げを加えます(透明背景には適用されません)。
フィードバック
動画を1本作るたびに、新しいスタイルを 风格配方/ に追加して INDEX を更新してください。うまくいったことは 07-正面经验.md に記録します(手法+根拠+理由+使用するタイミング)。新たな落とし穴は、該当する reference の「経験した落とし穴」に記録し、CHANGELOG.md に1行追加します。実際の状況がここに記載した内容と異なる場合は、実際の状況を優先し、ここを正しく修正してください。
この 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 を読みます。内容は日付と結果を1行で記したもので、例は 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日後に再試行します。
更新するかどうかはユーザーが決めます。自動で更新を実行しないでください。