Files
Yihao c05d48492d feat: motion-lab 48 个定稿动效模板(八轮评审收敛) (#27)
* feat: 48 张新镜头卡并入 Gallery(152 卡 / 209 样片)

动效研究实验的最终产出:209 个候选动效经八轮与参考片逐帧比对的人工
评审收敛为 48 个,以正式镜头卡形态并入 Gallery 既有 10 类体系。

内容:
- references/shots/<类别>/<卡名>.md — 48 张配方卡,与既有 104 张同构
  (一句话/适用/时长/能量 + 意图/动效核心/参数表/已知坑/参考实现),
  参数表逐项取自实现源码
- demos/<类别>/<卡名>/effect.js — 自包含 MotionLab 动效模板(内置最小
  运行时,浏览器直接可跑;接 Remotion 时 t = frame/durationInFrames)
- gallery/media/poster/*.jpg — 48 张 poster;样片 mp4 已传 gallery-media
  release(1920×1080@30fps)
- gallery 全链路同步:library.json(152 cards / 209 styles)、
  translations.js(cardsZh/cardsEn 48 组中英标签)、source/、
  library.html 预渲染、sitemap、llms.txt

模板化:全部动效去品牌化(中性占位文案 + 单一可替换 ACCENT 强调色
变量);占位人名/IP 均为明显虚构(Casey Doe / TEST-NET 段)。

文档:README×3 What's new 重写(数字 104→152、161→209,徽章行去
forks、AtomGit Star 上移);SKILL.md 数字同步;demos/README.md 补
MotionLab demo 对接说明。

安全自查:无 eval/new Function/网络请求/storage 访问;innerHTML 均为
静态模板字面量;确定性渲染(无 Date.now/Math.random)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat: 48 张新卡 demo 全部转为原生 Remotion .tsx(对齐老卡形式)

- demos/<类别>/<卡名>/effect.js(MotionLab 浏览器脚本)→ 同目录 PascalCase
  .tsx 组件,与既有 104 卡 demo 同形式:copy 进项目注册 Composition 即用
- 新增共享件 demos/_fixtures/Motion.tsx:E 缓动表 / seg / lerp / 确定性
  rand / useT / DesignStage(480×270 设计坐标,scale 与 zoom 两种光栅化)
- 每个组件 export <卡名>_DURATION(30fps 帧数);纯 t 驱动、无真随机,
  满足确定性渲染
- 验收:逐个与原样片 mp4 做全帧 SSIM 比对(mean≥0.97/min≥0.93)+ 5 帧
  对照条肉眼复核;46/48 达标,2 个 BORDERLINE(flying-words、
  dashboard-glow-highlight-pill)经 x264 往返实验证明余差全部来自样片
  编码噪声,组件内有注释说明
- 48 张卡「参考实现」改指 .tsx(与老卡同格式);gallery source 副本与
  library.json 同步;demos/README 的 MotionLab 段改写为原生组件用法

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: 落实外部评审六项(文档漂移/SVG ID/ATTRIBUTION/PR 校验 CI)

- README×3:effect.js 引用改 .tsx 组件;CN 首屏与包含表 161→209 样式、
  JA 首屏与包含表 104→152 卡
- demos/README:修正「无内部状态」表述——注明 3 个文字密集组件挂载时
  useLayoutEffect 实测字宽的例外及跨平台字体漂移风险
- GrainDissolve:filter/clipPath 固定 ID(gd0)改 useId() 派生,同
  Composition 多实例不再串引;SSIM 复验 mean=0.9944/min=0.9938 PASS
- ATTRIBUTION:区分动效手法与受保护的具体表达;明确「公开发布≠复刻
  许可」;来源表补作品时长/内容描述与精确度限制说明
- 新增 .github/workflows/pr-checks.yml:PR 阶段校验生成物与卡片同步
  (sync + build-seo 后 git diff --exit-code)+ library.json 每条
  preview 在 gallery-media release 有对应资产(比对资产名单,不下载媒体)
- sitemap lastmod 跟上 library.json stats.newest(build-seo 重新生成)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: 补 PR 审查发现的两个 CI 门禁漏洞 + ATTRIBUTION 溯源表述

- pr-checks.yml:漂移门禁 git diff --exit-code 改 git status --porcelain
  ——前者看不见未跟踪的新文件,「加了卡但忘 commit 生成的 source 副本」
  会绿灯通过(已实验复现),恰是此门禁要防的场景
- sync-from-cards.py:library.json 有条目但卡 md 已删(孤儿条目)时从
  仅 print 改为硬失败 SystemExit——否则删卡 PR 过 CI 后 Gallery 渲出
  source 链接指向虚空的卡(已实验复现,修后 exit=1)
- ATTRIBUTION.md:「src 标注」列头改为「研究批次」并说明卡片文件不携带
  来源标注、无法逐卡反查——原列头暗示存在逐卡 src 字段,实际没有
- README×3 致谢段补指向 references/shots/ATTRIBUTION.md 的链接
  ——此前全仓库没有任何入口指向这份卡片来源说明

三处门禁行为均在临时 worktree 实验验证:正常同步通过、未跟踪副本报警、
孤儿条目 exit=1。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: 二轮评审五项加固(URL 转义 / CI 白名单 / 逐卡溯源 / gitignore / demos 编译门禁)

- gallery/app.js:media URL 插入 innerHTML 前过 escapeHtml(img/video
  两处 data-src)——library.json 是仓库内生成物,属纵深防御而非活漏洞
- pr-checks.yml:media URL 加白名单校验(必须 ./media/<name>.mp4?v=N
  相对路径,绝对/协议相对 URL、引号尖括号直接 CI 失败),与 app.js 的
  innerHTML 插值互为两道防线
- pr-checks.yml:paths 加 demos/**,新增 demo 编译步骤(202 个 .tsx
  全量 tsc strict,本地验证 exit 0)——此前 TSX 主产物无任何 CI 覆盖
- ATTRIBUTION:来源表补 x.com/tvnxty(Firecrawl 宣传片,2 张卡);
  新增「逐卡来源映射」附表,48/48 全部可反查(数据来自研究期原片
  时段映射记录),撤销"无法逐卡反查"的旧限制声明
- .gitignore:motion-lab/ 锚定为 /motion-lab/,不再匹配任意层级同名目录

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: demo 编译门禁补装 @remotion/motion-blur(钉模板 remotion 同版本)

8 个 demo import @remotion/motion-blur,模板 package.json 有意不带它
(npm ci 后即缺失,CI 上 TS2307)。临时 --no-save 安装并钉到与模板
remotion 完全一致的版本——裸装 latest 会嵌套第二份 remotion 触发
checkMultipleRemotionVersions(与 PR #28 评审复现一致)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: stylesZh 补齐 48 张新卡的 style 中文标签

新卡均为单式卡(style key = 卡名),中文标签沿用 cardsZh 的既有译名。
此前缺失时中文界面经 styleName() 回退显示英文 label,无可见回归,
但违反"新 style key 要在 stylesZh 加中文标签"的库规。补齐后
stylesZh 209 条与 library.json 的 style 全集一一对应。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: What's new 条目带日期,最新一批用引用块+🆕 突出

三个 README 同步:2026-08 的 48 张新卡升为引用块小节标题(🆕 前缀),
7 月的两条沿用列表形式、条目前缀补日期,保留 Changelog 的时间线信息。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: What's new 最新条目改用 GitHub Alert(IMPORTANT)语法

普通引用块在 GitHub 上把文字渲染成灰色,反而比列表更淡;换成
> [!IMPORTANT] 得到紫色竖线 + Important 标签,正文保持正常亮度。
经 gh api markdown 渲染验证 alert/标题/正文结构正确。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 17:00:39 +08:00

66 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 镜头卡来源与授权说明2026-08 新增 48 张)
本批 48 张镜头卡的动效手法研究自公开发布的产品宣传片与开源项目主页。
**所有实现均为从零重写**re-implemented from scratch仓库不包含任何
原片片段、截图、美术资产或品牌元素实现中的文案、配色、UI 内容均为
中性占位模板。原作者未参与本项目,卡片标注来源仅为致敬与研究溯源
"仅参考、重新实现")。
## 法律边界(重要)
- 抽象的动效**手法/技法**(时序结构、缓动思路、编排逻辑)一般属于
方法与创意范畴;但**具体表达**(原片的画面、美术、文案、品牌元素、
可辨识的整体视听呈现)受版权与商标等权利保护。本项目只研究前者,
并通过全部重写、去品牌化、占位化来避免复制后者。
- 来源作品"公开发布"**不等于**授予复刻或衍生的许可。本表记录的是研究
溯源,不是授权凭证;对未获明确许可的来源,我们依赖的是"手法参考 +
独立重写、无原素材"这一实践,而非任何来自权利人的授权。
- 若任何权利人认为某张卡的实现仍构成对其具体表达的复制,请提 issue
我们将及时调整或移除相应内容与标注。
## 来源清单
注:下表按**研究批次**记录来源(一个批次对应一支参考片或一个参考站点,
覆盖该批次衍生的若干张卡);卡片文件本身不携带来源标注,逐卡归属见文末
「逐卡来源映射」附表。
| 研究批次 | 来源 | 类型 | 状态 |
|---|---|---|---|
| anime.js | https://animejs.com/ 官网演示GitHub: juliangarnier/anime | 开源项目主页MIT 项目;官网演示的美术呈现版权归作者) | 手法参考,重新实现;未使用其代码或美术 |
| remotion-bits.dev | https://remotion-bits.dev/ | 开源示例集 | 手法参考,重新实现;未使用其代码 |
| x.com/amirdzm | X 公开发布的 motion 作品两支(约 13s "Storyboard → Result" 等) | 个人作品(公开发布,未获复刻许可) | 手法参考,重新实现;无原素材 |
| x.com/1amanly | X 公开发布的 motion 作品 | 同上 | 同上 |
| x.com/Jerrythe2d | X 公开发布的 motion 作品(约 84s | 同上 | 同上 |
| x.com/bohdanmotion | X 公开发布的 motion 作品(约 26s | 同上 | 同上 |
| x.com/thiswillblossom | X 公开发布的 SaaS 概念广告(约 2.1s 四宫格) | 同上 | 同上 |
| x.com/tvnxty | Firecrawl 品牌/产品宣传片(约 66s公开发布 | 商业宣传片(公开发布,未获复刻许可) | 手法参考,重新实现;无原素材 |
| x.com/shapelayer | X 公开发布的 motion 作品(约 11.6s | 同上 | 同上 |
| x.com/aizal_mp4个别卡 | Willow Voice 产品宣传片(动效设计师 aizal 作品,约 41s | 商业宣传片(公开发布,未获复刻许可) | 手法参考,重新实现;无原素材 |
| 抖音 观机社dy09 | 抖音账号"观机社"发布的荣耀 AI 概念片剪辑(约 22.6s | 转载剪辑;底层为品牌向概念内容(涉及荣耀/Honor 品牌元素) | 手法参考,重新实现;品牌字标已替换为中性占位词 |
| 抖音 江经怜dy08个别卡 | 抖音账号"江经怜"公开发布的作品(约 19.4s 竖屏) | 个人作品(公开发布,未获复刻许可) | 手法参考,重新实现;无原素材 |
| reference/brand-scan | 用户提供的参考图定制 | 内部需求 | 原创实现 |
> 已知精确度限制X / 抖音来源当时以账号主页为单位记录,未逐条留存
> 具体帖子 URL原片仅在研究期间本地留存未入库。表中已尽量补充
> 可辨识作品的时长与内容描述;如需逐条溯源可据此在对应账号检索。
## 逐卡来源映射
48 张卡与研究批次的对应关系(来自研究期的原片时段映射记录):
| 来源 | 卡片 |
|---|---|
| anime.js 官网演示 | `radial-wave``scramble``svg-shape-morph``value-stagger-gradient` |
| remotion-bits.dev | `basic-3d-scene``blur-slide``card-stack``carousel-3d``counter-confetti``cube-navigation``cursor-flyover``flying-words``fracture``glitch-cycle``gradient-transition``list-reveal``mosaic-reframe``terminal-3d``typing-code-block` |
| x.com/1amanly | `avatar-bracket-carousel``countdown-arc-scatter``floating-glossy-label-pills``pill-chip-slot-cycle-handled``radial-ripple-phone-chips` |
| x.com/Jerrythe2d | `avatar-grid-radial-build-colorize``bezier-source-converge-merge``chip-grid-single-select-blackout``chip-lift-to-user-pill``doc-park-left-pill-deal``picker-carousel-feature-cycle``scan-bracket-sweep``vertical-word-roll-blur-cycle` |
| x.com/aizal_mp4Willow Voice | `aurora-bloom-bg-flip``glass-pill-dictation-typing` |
| x.com/amirdzm作品 a | `brace-expand``grain-dissolve` |
| x.com/amirdzm作品 b | `hatch-depth` |
| x.com/bohdanmotion | `outline-word-fill``word-relay-geometry` |
| x.com/shapelayer | `dashboard-glow-highlight-pill` |
| x.com/thiswillblossom | `quad-split-parallel-scenes` |
| x.com/tvnxtyFirecrawl 宣传片) | `product-card-progressive-assemble``research-card-stack-scroll` |
| 抖音 观机社 | `logo-shrink-wordmark-lockup``white-flash-logo-simplify-cut` |
| 用户参考图定制brand-scan | `assemble-then-type-flyin``scanline-annotate-focus``scanline-assemble-flyin` |