Communitygithub.com

site-motion

制作动态网站素材——英雄区及功能插图、产品UI微故事、等轴测及2.5D场景、3D产品/品牌对象(Three.js、glTF模型、挤出Logo)、应用窗口合成、物理及生成式视觉效果——输出为SVG、Canvas、CSS 3D或WebGL,仅使用设计系统的主题令牌配色,并将每个素材导出为可嵌入的HTML文件及逐帧精准的MP4、WebM、动画WebP、GIF、海报PNG和9:16社交裁剪视频。适用于任何放在网站、落地页、功能模块、文档或发布文章中的视觉或动画(如“动态英雄区”、“功能动画”、“产品演示循环”、“等轴测插图”、“3D Logo”、“我们的UI的GIF”、“使用我们的品牌色”),即使从未提及SVG或Canvas。对于带旁白或字幕的视频、宣传片和幻灯片,请改用HyperFrames。

site-motion 是什么?

site-motion 是一个AI驱动的动画资产生成工具,专为需要快速创建高质量、可嵌入网站动画的开发者设计。它支持从简单的SVG和Canvas动画到复杂的Three.js 3D场景和WebGL着色器效果。其核心概念是“场景” —— 每个场景都是一个“时间的纯函数”,这意味着同一文件可以在网站上实时播放,同时也能逐帧导出为精准的视频文件(MP4、WebM、动画WebP、GIF、PNG序列等)。 该工具特别强调与现有设计系统的集成。它从项目或实时网站中提取设计令牌(颜色、字体等),确保所有生成的动画自动符合品牌风格。用户无需手动匹配颜色,只需指定一个令牌预设或文件即可。 site-motion 提供了50多个预构建的动画场景,每个场景都针对特定的产品故事或概念(如“等轴测块状图”表示基础设施,“卡片故事”表示工作流程,“窗口堆栈”表示集成环境)。用户可以快速选择一个场景,用真实的内容和品牌令牌填充它,然后生成最终的HTML或其他格式的输出。它还支持将场景资源直接添加到项目源码中,方便团队协作编辑。 该工具主要受 Claude Code 和类似AI编码代理的支持,但其CLI接口也可被任何自动化工作流或手动使用。它需要Node.js 22+、Chrome和ffmpeg,无需安装npm包。输出文件默认放在项目的 `out/` 目录下。

兼容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Shivraj97/site-motion/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

site-motion 是做什么的?

标记为 Pro 的场景,或者在本文注释中提及但 scenes/ 目录中缺失的场景,是 site-motion Pro 场景。从注释中了解它们,并根据此处已有的场景进行构建(运行 site-motion list 查看)。

一个场景是一个时间的纯函数。无论之前发生过什么,render(t) 对于同一个 t 总是绘制相同的帧。正是这一规则使得同一个文件既可以在网站上实时播放,又可以逐帧精准地渲染为视频:导出器只需定位到每个帧时间并截图即可。

仓库根目录:包含此文件的文件夹(使用 git clone https://github.com/Shivraj97/site-motion ~/.claude/skills/site-motion 安装,或在该处链接近克隆)。需要 Node.js 22+、Chrome、ffmpeg。无需 npm 安装。在任意项目中,通过完整路径运行 CLI;构建和渲染的结果将放入该项目的 out/ 目录,--tokens / --content 参数接受相对于该项目的路径:

SM=~/.claude/skills/site-motion/bin/site-motion.mjs
node $SM init card-story --tokens ledger          # 从预设写入 ./brand.json 和 ./card-story.json 以供编辑
node $SM make card-story --tokens ./brand.json --content ./card-story.json --out public/motion/story.html

要将场景放入项目自己的源码中以便团队编辑,请使用 add 而非 make。它会将 scene.js、scene.css、content.json 和 tokens.json 复制到 public/motion/<scene>/(如果没有 public/ 目录则为 motion/<scene>/),将播放器和第三方库复制到 runtime/,并写入 <scene>.html(一个单文件嵌入)。复制的文件夹对于 build、render 和 make 命令来说是一个有效的场景:

node $SM add ledger-stamp --tokens ./brand.json --content ./ledger.json          # → public/motion/ledger-stamp/ + ledger-stamp.html
node $SM make public/motion/ledger-stamp --tokens public/motion/ledger-stamp/tokens.json --formats png,sheet

在仓库内部,可以使用短格式:

node bin/site-motion.mjs list                                   # 场景和令牌预设
node bin/site-motion.mjs make iso-blocks --tokens mint          # 构建并渲染 mp4、webp、poster
node bin/site-motion.mjs make card-story --tokens ./brand.json --content ./my-story.json --formats mp4,webm,webp,gif,png,sheet
node bin/site-motion.mjs build window-stack --tokens night --out public/hero.html   # 仅实时嵌入
node bin/site-motion.mjs render out/hero.html --formats mp4 --scale 2 --range loop        # 导出已有的构建

输出文件存放在 out/<content>-<tokens>/。--range loop 仅导出无缝循环部分(GIF 和 WebP 的默认值);full 为介绍部分加一次循环(MP4 和 WebM 的默认值)。sheet 会生成一个 4×3 的联系表:始终生成一个并阅读它。

工作流程

整个站点(多个模块或页面)从计划开始,而不是从单个场景开始。 在项目中运行 node $SM plan:

  • 使用 --brief brief.md 如果你了解各模块。这是最佳输入。根据站点的实际文案编写简报:
    # Acme:用一句话描述产品功能
    ## 首页
    - hero:英雄区的标题
    - feature:每个功能模块的标题及其下方的一行描述
    ## 定价
    - hero:…
    
  • 或者使用 --url https://their-site.com[,https://their-site.com/pricing] 读取实时页面的自身标题;
  • 或者使用 --pages home,features,pricing --about "…"(当没有其他信息时使用,会做通用选择;需告知用户)。

它会将每个模块映射到一个场景,每个场景只使用一次,所有场景具有统一的视觉风格。该风格基于首页英雄区的视觉风格,锁定在 site-motion.json 中。它将生成 site-motion-plan.png:每个模块以其场景的帧在品牌和视觉风格下展示,上方显示评分结果。在 plan apply 之前,向用户展示联系表并获得批准。

  • 标记为 ? 的选择表示没有强匹配。阅读其注释(例如“ledger-stamp 更适合,但已被 home.hero 使用”),然后通过交换(plan swap <slot> <scene>)、重用更好的场景,或告知用户库中尚无适合该故事内容的场景来处理。
  • 切勿在未告知用户的情况下对弱匹配应用 apply。

plan apply 会添加每个场景并打印每个模块的嵌入代码。然后,在每个场景的 content.json 中编写其文案,运行 sync,并以 score --project 结束。

对于单个场景,请按照以下步骤操作。

  1. 首先获取设计系统。 令牌是颜色和字体的唯一来源。按以下顺序查找它们:项目中的令牌/主题文件(CSS 变量、Tailwind 配置、tokens.json),然后是实时网站(测量计算后的样式),最后再询问。将它们写入 tokens/<brand>.json(格式如下)。一旦存在调色板,切勿发明新颜色;使用 h.mix(a, b, p) 从令牌派生色调。
  2. 选择能够讲述产品故事的原型场景,或编写一个新场景:
    场景讲述的故事渲染器
    iso-blocks基础设施、平台、“多个部分协同工作”:带有实时数据的块状图放置在瓷砖地板上SVG
    card-story一个消除工作的流程:功能列表驱动产品卡片在不同状态间转换DOM
    window-stack“在你工作的地方工作”:应用窗口叠加在 Canvas 绘制的背景上,一个代理执行步骤Canvas + DOM
    live-room Pro多人协作:命名光标在应用窗口上移动,提案、投票通过、变更发布、活动滚动条Canvas + DOM
    leaderboard信誉与排名:贡献落在行上,积分开始计数,行重新排序DOM
    bloom-flow自动化:一个事件流经工作流图,每个步骤绽放为生成式花朵Canvas + SVG
    signal-field杂乱 → 有序:嘈杂的线条通过一个闸门后变成整洁的通道p5.js
    drop-pile多 → 一:工作项在真实物理效果下落入一个托盘,计数器统计数量Matter.js(烘焙)
    galton-router路由、审批、A/B 测试:支付款项通过钉板下落;一个规则切换开关,流量流向最佳容器SVG(种子随机游走)
    receipt-printer杂乱 → 有序:文档送入插槽,收据打印每个提取的字段及其置信度DOM + SVG
    score-sheet编排、多智能体:一次运行被写成乐谱,每个智能体工作时谱线振动SVG
    css3d-stack架构、层级:CSS 3D 中的真实 HTML 盒子在请求通过时分离CSS 3D
    loom多 → 一、集成:每个工具是一组经线,编织成一种斜纹织物,卷到产品的卷轴上Canvas 2D
    domino-run自动化、触发器:一个球触发一系列多米诺骨牌,分组为步骤,波浪到达时每个步骤亮起Matter.js(烘焙)
    weather-board可靠性、故障转移:风暴(着色器云层、雨、闪电)在状态图的一个区域形成,流量重新路由,风暴消散,零失败请求WebGL 着色器 + DOM
    ledger-stamp审批、合规、信任:支付款项在索引带上经过策略扫描器,APPROVED 印章和签名印章压入审计追踪;超过限额的款项被标记为 HELD,等待第二审批人SVG + DOM
    grain-tally指标、规模:数千粒谷物(每粒代表一批固定真实事件)以尘埃环形式呼吸,倾倒入总数的数字中,然后按来源排序为每个来源的柱状图及其精确计数;数字由数据构建,而非累加Canvas 2D(粒子,纯 t)
    lens-of-order杂乱 → 有序、分类、AI 视觉:一个1位抖动的漂移斑点场(尚未理解);放大镜将每个斑点填充为其类别颜色,勾勒轮廓并标记置信度,留下一条褪色的彩色轨迹Canvas 2D(逐细胞场,Bayer 抖动)
    water-slide-funnel转化漏斗:骑手滑下每个阶段的滑道;每个滑道口的水池捕获该阶段的流失用户SVG
    gold-pan Pro即搜即得:每次按键都使淘金盘旋转,直到剩下三个定价的金块Canvas 2D
    museum-heatmap Pro产品分析:访客足迹使人们停留的功能周围的地板变暖;排名来自热度Canvas 2D
    cell-division数据库分支:主数据库分为分支,其中一个被丢弃,另一个合并回主数据库并带有更改Canvas 2D(metaballs)
    scratch-off Pro预测:在航空公司公告板追上之前,刮刮箔揭示真实出发时间Canvas 2D
    sieve-tray Pro早期检测:标记物穿过精细网筛;少数被捕获的标记物被提起并标记Matter.js(烘焙)
    rube-goldberg Pro之前/之后:一枚收据弹珠在五个旧装置中卡住,然后在第二个装置中从一个滑道落下SVG
    language-balloons Pro本地化:八种脚本的文字气泡升起并组合每个地区的句子,支持从右到左Matter.js(烘焙)
    balloon-deploy Pro部署:每个构建步骤给气球充气;达到100%时,释放升空SVG
    pufferfish Pro自动伸缩:河豚膨胀以匹配每个流量波,而固定容量的鱼被抛来抛去SVG
    gear-tiers Pro定价:计划绘制为露营装备,从帐篷到基地营地,带有月度/年度切换SVG
    permission-chessboard Pro角色与权限:每个角色棋子落在棋盘上,仅点亮其允许使用的方格SVG
    tree-rings年度回顾:每年一个环,宽度代表该年的忙碌程度,用凹口标记第一次SVG
    parchment-changelog变更日志:卷轴一次发布一个版本地展开,每个版本在发布时以墨水书写SVG + DOM
    moving-boxes迁移:手推车将每个旧工具盒子搬入新楼,无一丢失SVG + DOM
    privacy-pebbles ProPII 脱敏:刮板将每个个人详细信息变成相同的鹅卵石;句子仍可阅读SVG + DOM
    ant-trail Pro自动分类:蚂蚁携带每次刷卡的收据、备忘录和审批到正确的分类账插槽Canvas 2D
    sunrise-payroll Pro全球薪资:日出跨越八个时区,在每个城市当地上午9点支付SVG
    whiteout Pro平静:繁忙的仪表板消散成雾,只留下一个重要的数字WebGL 着色器 + DOM
    ink-flood Pro主题、白标:色板将整个产品淹没在新的配色方案中SVG
    integration-deck Pro集成:每个工具是一个等轴测宏键盘上的按键;工作流以和弦形式播放,运行日志打印每个步骤Three.js
    margin-rails Pro来源:备忘录自行书写,同时从先前文件继承的段落从命名来源的轨道滑入SVG + DOM
    pigeonhole-wall记忆:文档文件放入带标签的鸽笼中,请求拉取所需的三个来源SVG + DOM
    redline-front Pro合同审查:审查前端扫过文档,并将其以完成修订的形式返回,带有已验证的权限SVG + DOM
    step-rail运作方式、入门引导:一个令牌经过编号的步骤;每个卡片打开以显示其步骤产生的内容,最后一步展示结果SVG + DOM
    pipeline-board工作流、流水线:卡片在看板板上逐列前进,计数和总数跟随它们DOM
    account-health留存、客户成功:健康表重放当月情况;一个账户滑动到“有风险”,一个行动手册触发并使其恢复SVG
    split-wipe之前/之后、整合:分隔线扫过分散的手动工作,每个碎片卡入一个产品表面DOM
    roadmap-rail路线图、里程碑:一个“今天”标记沿时间轴移动;已发布的里程碑填写完毕,关键发布打开成一个卡片SVG
    trust-rings安全、合规:请求通过数据周围的同心控制环;未经授权的请求被阻止并记录SVG
    balance-scale定价、质量与成本:三个天平,每个倾斜角度由分数计算得出;我们的天平倾向于质量SVG
    crate-discrepancy对账:托盘从板条箱中取出并核对装箱单;缺货的托盘浮起并带有注释SVG + DOM
    press-qa测试、CI:构建从印刷机中产出;一个机械臂将测试失败的构建弹出到滑道中,并在重新运行时通过SVG
    radar-sweep可观测性:每个正在运行的作业是雷达屏幕上的一个亮点;光标伸入并暂停失败的作业Canvas 2D + DOM
    agent-checkout产品UI演示,代理支付:购买请求,自动填写虚拟卡号,额度计量器移动购买金额,收据加入列表DOM + ui-kit
    click-to-done产品UI演示,任何单一操作功能(邀请、发送、批准、发布):浏览器框架内的真实屏幕,光标输入、选择并点击,相机推近并拉远以显示结果DOM + ui-kit
    dashboard-push产品UI演示,分析与报告:标题数字随着图表绘制而构建,光标擦洗工具提示,相机推近到关键时刻,范围切换改变所有系列DOM + SVG + ui-kit
    phone-stack产品UI演示,移动端与通知:带有信号环的提醒到达锁屏,点击打开最新通知到应用屏幕,滑动返回主页清除通知DOM + ui-kit
    shot-demo从截图进行的产品UI演示:框架内客户自己的截图;光标在其真实字段中输入并点击其真实按钮,值在品牌外观下变化,聚光灯和标注落在结果上DOM + 截图 + ui-kit

integration-deck 是3D标准:一个触感物体,一个物理动作,平面卡通色带,墨水轮廓,真实的等轴测相机和品牌字体标签。其他 Three.js 对象场景(轨道中心、排序墙、挤出 Logo、glTF 展示)在重新编写之前不包含在公开集中;3D 工具(vendor/three-full.min.js、ve

…

[为翻译而截断]

相关技能