Communitygithub.com

quiczz/motionsite

构建一个动画化、视频驱动的落地页或首屏区域——全屏循环视频背景搭配渐变遮罩、玻璃卡片、动态标题和号召性按钮、滚动揭示效果——同时保持快速和可访问性(海报图像、延迟加载视频、减少动效和移动端回退)。包含站点模板、ffmpeg 资源脚本和动效审核脚本。当被要求构建动画网站、动效站点、电影化落地页、视频首屏,或让页面充满活力时主动使用。

motionsite 是什么?

该技能用于构建“动效站点”风格的落地页:一个全屏循环视频首屏、用于文本可读性的深色渐变遮罩、玻璃效果卡片、文字动画、响应式按钮以及滚动揭示部分。它不仅能构建页面,还会自动进行性能与可访问性审核,确保页面既快速又易用。支持 React/Next/Vue/Svelte 等框架,也提供无需构建步骤的单个 HTML 文件模板。技能包含完整的参考文档(设计配方、性能与可访问性规则、视频资源管理)以及自动化脚本(ffmpeg 视频处理、Python 审核脚本)。关键规则包括:仅对 `transform` 和 `opacity` 属性做动画、尊重用户的减少动效偏好和流量节省模式、使用 `100svh` 实现移动端适配,以及确保文本对比度至少为 4.5:1。视频必须内嵌 `muted`、`loop`、`playsinline` 属性,并有海报图像作为第一次绘制的内容。该技能会生成一份报告,列出创建的文件、如何替换占位视频、审核结果以及需要检查的一个要点。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/quiczz/ship-safe-skills/tree/HEAD/skills/motionsite

在你喜欢的 AI 中提问

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

文档

motionsite 是做什么的?

构建"动效站点"风格:全屏循环视频首屏、用于文本可读性的深色渐变遮罩、玻璃效果卡片、文字动画、响应式按钮,以及滚动时揭示的部分。优秀的站点与缓慢、不可访问的站点之间的区别在于下面的检查清单,因此该技能会先构建页面,然后进行审核。

与 motionsites.ai 无关。此技能不包含任何第三方提示或资源。

独立运行: 当你要求构建落地页、首屏或动画网站时,Claude 会选择此技能,根据模板构建页面,并在向你报告之前运行审核。

操作流程

  1. 一次性获取需求概要。 品牌名称、一句话承诺、主要号召性用语、3 到 6 个部分(功能、客户证明、定价、常见问题)、风格基调(平静、大胆、俏皮、奢华),以及他们已有的任何标志、颜色或字体。如果用户没有提供任何信息,请自行选择一个方向并说明是哪一个。
  2. 从项目中选取技术栈。 现有 React/Next/Vue/Svelte 项目:在该技术栈中构建组件。空文件夹且无偏好:使用单文件 templates/site.html(无需构建步骤,双击即可打开)。如果他们要求使用 React、Vite、TypeScript 和 Tailwind,则使用 templates/Hero.tsx 和 templates/useReveal.ts。
  3. 确保视频真实且轻量。 参见 references/assets.md。使用用户自己的素材或生成的/授权的片段,切勿热链接他人的 CDN。在获得真实素材之前,使用模板中包含的 CSS 动画渐变背景,使页面看起来已完成。真实素材通过填充 .hero-media 上的三个数据属性(data-video-mp4、data-video-webm、data-poster)来切换。使用 scripts/make_video_assets.sh 生成网络版本(mp4 + webm + poster)。
  4. 根据模板构建页面。 保留以下部分:首屏(视频 + 遮罩 + 标题 + 号召性按钮)、玻璃导航栏、3 到 6 个带有揭示动画的内容部分、页脚。应用 references/design-recipes.md 中的设计配方(字号比例、间距、调色板、玻璃卡片、按钮状态、动画时间)。
  5. 遵循性能与可访问性规则(如下)。它们不是可选的附加项;它们是确保页面在手机上可用的关键。
  6. 审核。 运行 python3 <skill-dir>/scripts/check_motion.py <site-folder> 并修复每个 FAIL 项。然后在浏览器中查看:桌面和手机宽度、启用减少动效、首次绘制时禁用 JavaScript。详细信息见 references/performance-accessibility.md。
  7. 报告 创建的文件、如何替换占位视频、审核结果,以及一个需要检查的要点。

决定质量的关键规则

  • 视频:muted、loop、playsinline(缺少这些属性,移动浏览器将拒绝在页面中播放)、已设置 poster、preload="metadata"、无音轨。像模板所做的那样,在检查减少动效和流量节省模式后,从脚本启动播放,以便这些访客永远不会下载视频。目标为 2 到 4 MB 的首屏片段,分辨率最多 1080p,时长 6 到 12 秒且能干净循环。
  • 海报图像是首次绘制内容。 访客首先看到且 Largest Contentful Paint 测量的是海报图像(或渐变背景)。为其设置 fetchpriority="high" 和确切尺寸。
  • 尊重访客偏好。 当 prefers-reduced-motion: reduce 生效或流量节省模式开启时,显示海报图像代替播放视频,并关闭动画。当视频滚动出屏幕时暂停播放。
  • 仅对 transform 和 opacity 属性进行动画。 永远不要对 top、left、width、height 或 margin 进行动画;它们会强制布局并导致手机卡顿。
  • 文本在视频上保持可读。 在视频和文本之间放置渐变遮罩,保持正文文本与最暗和最亮帧的对比度至少为 4.5:1,切勿将小文本直接放置在动态画面之上。
  • 每个部分一个想法,每个元素一个动画。 动画间隔在 60 到 100 毫秒,持续时间 400 到 800 毫秒,使用 ease-out 缓动函数。如果所有元素都在运动,就没有焦点引导视线。
  • 移动端优先。 首屏使用 100svh,而非 100vh。在 375px 宽度下测试;不应有水平滚动。考虑在小屏幕上使用更轻量或静止的首屏。
  • 真实的内容结构。 一个 h1,地标元素(header、main、footer),按钮是 <button> 或 <a>,链接包含文本,图片包含 alt 属性。
  • 拥有自己的资源。 不使用第三方 CDN 视频,字体自行托管或来自字体提供商,许可证记录在 assets/README.md 中。

文件

文件用途
templates/site.html完整的单文件落地页:视频首屏(通过数据属性启用)带有 CSS 渐变回退、玻璃导航、动态标题、滚动揭示、卡片、号召性按钮、页脚
templates/Hero.tsx, templates/useReveal.tsReact 版本的首屏和滚动揭示 hook
references/design-recipes.md字体、颜色、间距、玻璃效果、按钮、动画时间、部分模式
references/performance-accessibility.md性能预算、减少动效、视频行为、测试步骤
references/assets.md视频来源、许可、生成片段、编码方式
scripts/make_video_assets.shffmpeg:输入片段转换为 web mp4、webm、poster
scripts/check_motion.py审核站点文件夹中上述问题的脚本

相关技能