hyper-animator-codex 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/README.md +67 -7
  2. package/bin/hyper-animator-codex.mjs +31 -9
  3. package/bin/postinstall.mjs +19 -0
  4. package/lib/install-options.mjs +3 -0
  5. package/lib/install-skill.mjs +84 -2
  6. package/lib/minimax-config.mjs +3 -3
  7. package/package.json +3 -2
  8. package/skills/hyper-animator-codex/SKILL.md +58 -20
  9. package/skills/hyper-animator-codex/agents/openai.yaml +2 -2
  10. package/skills/hyper-animator-codex/contracts/shot-plan.schema.json +214 -0
  11. package/skills/hyper-animator-codex/contracts/workflow-policy.json +85 -0
  12. package/skills/hyper-animator-codex/references/HyperFrames-AI-Generation-Patterns-codex.md +788 -0
  13. package/skills/hyper-animator-codex/references/beat-sync-workflow.md +7 -0
  14. package/skills/hyper-animator-codex/references/examples/shot-plan-dual-catalog.json +69 -0
  15. package/skills/hyper-animator-codex/references/hyperframes-agent-pseudocode.ts +1 -1
  16. package/skills/hyper-animator-codex/references/hyperframes-catalog-map.json +97 -230
  17. package/skills/hyper-animator-codex/references/hyperframes-intent-workflow.md +23 -7
  18. package/skills/hyper-animator-codex/references/minimax-music-workflow.md +24 -4
  19. package/skills/hyper-animator-codex/references/narration-audio-workflow.md +31 -1
  20. package/skills/hyper-animator-codex/references/shotcraft/LICENSE +202 -0
  21. package/skills/hyper-animator-codex/references/shotcraft/cards/ai-stream-response/README.md +46 -0
  22. package/skills/hyper-animator-codex/references/shotcraft/cards/autolayout-gap-dial/README.md +53 -0
  23. package/skills/hyper-animator-codex/references/shotcraft/cards/beat-cut-moves/README.md +54 -0
  24. package/skills/hyper-animator-codex/references/shotcraft/cards/beat-step-list-theme-cycle/README.md +59 -0
  25. package/skills/hyper-animator-codex/references/shotcraft/cards/before-after-slider-scrub/README.md +47 -0
  26. package/skills/hyper-animator-codex/references/shotcraft/cards/bottom-push-stack-wipe/README.md +58 -0
  27. package/skills/hyper-animator-codex/references/shotcraft/cards/brand-frame-snap/README.md +51 -0
  28. package/skills/hyper-animator-codex/references/shotcraft/cards/brand-ink-open/README.md +35 -0
  29. package/skills/hyper-animator-codex/references/shotcraft/cards/bubble-swarm-takeover/README.md +62 -0
  30. package/skills/hyper-animator-codex/references/shotcraft/cards/canvas-materialize-moves/README.md +55 -0
  31. package/skills/hyper-animator-codex/references/shotcraft/cards/card-flip-reveal/README.md +50 -0
  32. package/skills/hyper-animator-codex/references/shotcraft/cards/card-flock-tumble/README.md +54 -0
  33. package/skills/hyper-animator-codex/references/shotcraft/cards/cel-flash-stomp/README.md +54 -0
  34. package/skills/hyper-animator-codex/references/shotcraft/cards/chart-live-moves/README.md +51 -0
  35. package/skills/hyper-animator-codex/references/shotcraft/cards/circle-match-iris/README.md +53 -0
  36. package/skills/hyper-animator-codex/references/shotcraft/cards/cloner-depth-echo/README.md +38 -0
  37. package/skills/hyper-animator-codex/references/shotcraft/cards/collab-cursor-moves/README.md +48 -0
  38. package/skills/hyper-animator-codex/references/shotcraft/cards/color-block-step-wipe/README.md +54 -0
  39. package/skills/hyper-animator-codex/references/shotcraft/cards/command-palette-summon/README.md +45 -0
  40. package/skills/hyper-animator-codex/references/shotcraft/cards/crane-rise-reveal/README.md +47 -0
  41. package/skills/hyper-animator-codex/references/shotcraft/cards/crash-zoom-punch/README.md +38 -0
  42. package/skills/hyper-animator-codex/references/shotcraft/cards/dataviz-landscape-open/README.md +54 -0
  43. package/skills/hyper-animator-codex/references/shotcraft/cards/deck-deal-flyin/README.md +45 -0
  44. package/skills/hyper-animator-codex/references/shotcraft/cards/depth-layer-moves/README.md +40 -0
  45. package/skills/hyper-animator-codex/references/shotcraft/cards/document-typewriter-reveal/README.md +40 -0
  46. package/skills/hyper-animator-codex/references/shotcraft/cards/draw-svg-trace/README.md +50 -0
  47. package/skills/hyper-animator-codex/references/shotcraft/cards/edit-hook-moves/README.md +38 -0
  48. package/skills/hyper-animator-codex/references/shotcraft/cards/element-body-moves/README.md +49 -0
  49. package/skills/hyper-animator-codex/references/shotcraft/cards/fui-hud-moves/README.md +44 -0
  50. package/skills/hyper-animator-codex/references/shotcraft/cards/gauge-readout-moves/README.md +45 -0
  51. package/skills/hyper-animator-codex/references/shotcraft/cards/glow-flyline-moves/README.md +51 -0
  52. package/skills/hyper-animator-codex/references/shotcraft/cards/gradient-word-sweep/README.md +49 -0
  53. package/skills/hyper-animator-codex/references/shotcraft/cards/graze-face-tour/README.md +56 -0
  54. package/skills/hyper-animator-codex/references/shotcraft/cards/hashtag-to-pill-materialize/README.md +57 -0
  55. package/skills/hyper-animator-codex/references/shotcraft/cards/hires-rasterize-3d-text/README.md +34 -0
  56. package/skills/hyper-animator-codex/references/shotcraft/cards/icon-field-colorize/README.md +53 -0
  57. package/skills/hyper-animator-codex/references/shotcraft/cards/icon-performance-moves/README.md +46 -0
  58. package/skills/hyper-animator-codex/references/shotcraft/cards/impact-feedback/README.md +50 -0
  59. package/skills/hyper-animator-codex/references/shotcraft/cards/input-trigger-moves/README.md +49 -0
  60. package/skills/hyper-animator-codex/references/shotcraft/cards/integration-hub-map/README.md +54 -0
  61. package/skills/hyper-animator-codex/references/shotcraft/cards/letterspace-materialize/README.md +52 -0
  62. package/skills/hyper-animator-codex/references/shotcraft/cards/light-play-moves/README.md +49 -0
  63. package/skills/hyper-animator-codex/references/shotcraft/cards/line-boil/README.md +52 -0
  64. package/skills/hyper-animator-codex/references/shotcraft/cards/line-carry-transition/README.md +52 -0
  65. package/skills/hyper-animator-codex/references/shotcraft/cards/list-stack-press/README.md +43 -0
  66. package/skills/hyper-animator-codex/references/shotcraft/cards/magician-card-flourish/README.md +63 -0
  67. package/skills/hyper-animator-codex/references/shotcraft/cards/marker-underline-title/README.md +48 -0
  68. package/skills/hyper-animator-codex/references/shotcraft/cards/montage-rhythm-moves/README.md +55 -0
  69. package/skills/hyper-animator-codex/references/shotcraft/cards/morph-from-primitive/README.md +51 -0
  70. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-frame-forerun/README.md +50 -0
  71. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-frame-orbit-drop/README.md +50 -0
  72. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-triple-marquee/README.md +55 -0
  73. package/skills/hyper-animator-codex/references/shotcraft/cards/odometer-digit-roll/README.md +54 -0
  74. package/skills/hyper-animator-codex/references/shotcraft/cards/outro-group-photo-launch/README.md +39 -0
  75. package/skills/hyper-animator-codex/references/shotcraft/cards/overhead-camera-moves/README.md +50 -0
  76. package/skills/hyper-animator-codex/references/shotcraft/cards/page-turn-transitions/README.md +48 -0
  77. package/skills/hyper-animator-codex/references/shotcraft/cards/page-waterfall-wall/README.md +52 -0
  78. package/skills/hyper-animator-codex/references/shotcraft/cards/panel-grid-moves/README.md +52 -0
  79. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-craft-moves/README.md +46 -0
  80. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-plane-messenger/README.md +62 -0
  81. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-title-card/README.md +36 -0
  82. package/skills/hyper-animator-codex/references/shotcraft/cards/particle-celebrate-hits/README.md +42 -0
  83. package/skills/hyper-animator-codex/references/shotcraft/cards/particle-sand-fill/README.md +39 -0
  84. package/skills/hyper-animator-codex/references/shotcraft/cards/pill-slot-cycle/README.md +57 -0
  85. package/skills/hyper-animator-codex/references/shotcraft/cards/print-texture-transitions/README.md +40 -0
  86. package/skills/hyper-animator-codex/references/shotcraft/cards/rhythm-interrupt-moves/README.md +44 -0
  87. package/skills/hyper-animator-codex/references/shotcraft/cards/riso-print-hits/README.md +54 -0
  88. package/skills/hyper-animator-codex/references/shotcraft/cards/row-embed/README.md +36 -0
  89. package/skills/hyper-animator-codex/references/shotcraft/cards/runway-ground-skim/README.md +52 -0
  90. package/skills/hyper-animator-codex/references/shotcraft/cards/sakuga-timing-shift/README.md +50 -0
  91. package/skills/hyper-animator-codex/references/shotcraft/cards/scene-locked-title/README.md +43 -0
  92. package/skills/hyper-animator-codex/references/shotcraft/cards/scroll-brake-moves/README.md +45 -0
  93. package/skills/hyper-animator-codex/references/shotcraft/cards/segmented-thumb-hero/README.md +57 -0
  94. package/skills/hyper-animator-codex/references/shotcraft/cards/shot-transitions/README.md +60 -0
  95. package/skills/hyper-animator-codex/references/shotcraft/cards/skeleton-reveal/README.md +54 -0
  96. package/skills/hyper-animator-codex/references/shotcraft/cards/slam-entrance-moves/README.md +53 -0
  97. package/skills/hyper-animator-codex/references/shotcraft/cards/smear-multiples/README.md +49 -0
  98. package/skills/hyper-animator-codex/references/shotcraft/cards/space-camera-moves/README.md +53 -0
  99. package/skills/hyper-animator-codex/references/shotcraft/cards/spectrum-morph-ui/README.md +50 -0
  100. package/skills/hyper-animator-codex/references/shotcraft/cards/speed-ramp-freeze/README.md +42 -0
  101. package/skills/hyper-animator-codex/references/shotcraft/cards/split-flap-title/README.md +52 -0
  102. package/skills/hyper-animator-codex/references/shotcraft/cards/spotlight-hero-card/README.md +39 -0
  103. package/skills/hyper-animator-codex/references/shotcraft/cards/spotlight-sweep-moves/README.md +51 -0
  104. package/skills/hyper-animator-codex/references/shotcraft/cards/steep-tilt-glide/README.md +53 -0
  105. package/skills/hyper-animator-codex/references/shotcraft/cards/stroke-segment-build/README.md +43 -0
  106. package/skills/hyper-animator-codex/references/shotcraft/cards/tear-streak-transitions/README.md +43 -0
  107. package/skills/hyper-animator-codex/references/shotcraft/cards/tension-camera-moves/README.md +55 -0
  108. package/skills/hyper-animator-codex/references/shotcraft/cards/text-as-mask/README.md +50 -0
  109. package/skills/hyper-animator-codex/references/shotcraft/cards/text-column-converge/README.md +55 -0
  110. package/skills/hyper-animator-codex/references/shotcraft/cards/theme-switch-moves/README.md +44 -0
  111. package/skills/hyper-animator-codex/references/shotcraft/cards/timeline-travel/README.md +43 -0
  112. package/skills/hyper-animator-codex/references/shotcraft/cards/title-demote-to-label/README.md +58 -0
  113. package/skills/hyper-animator-codex/references/shotcraft/cards/trailer-grammar-moves/README.md +51 -0
  114. package/skills/hyper-animator-codex/references/shotcraft/cards/transition-hidden-cut/README.md +52 -0
  115. package/skills/hyper-animator-codex/references/shotcraft/cards/transition-travel/README.md +48 -0
  116. package/skills/hyper-animator-codex/references/shotcraft/cards/type-and-filter/README.md +37 -0
  117. package/skills/hyper-animator-codex/references/shotcraft/cards/type-assembly-moves/README.md +50 -0
  118. package/skills/hyper-animator-codex/references/shotcraft/cards/type-entrance-moves/README.md +46 -0
  119. package/skills/hyper-animator-codex/references/shotcraft/cards/type-rhythm-sync/README.md +47 -0
  120. package/skills/hyper-animator-codex/references/shotcraft/cards/typewriter-moves/README.md +50 -0
  121. package/skills/hyper-animator-codex/references/shotcraft/cards/ui-strip-away-outro/README.md +63 -0
  122. package/skills/hyper-animator-codex/references/shotcraft/cards/ui-to-brand-morph/README.md +52 -0
  123. package/skills/hyper-animator-codex/references/shotcraft/cards/voice-waveform-live/README.md +52 -0
  124. package/skills/hyper-animator-codex/references/shotcraft/cards/wall-reveal-moves/README.md +53 -0
  125. package/skills/hyper-animator-codex/references/shotcraft/cards/wipe-transitions/README.md +47 -0
  126. package/skills/hyper-animator-codex/references/shotcraft/cards/word-relay-filmstrip/README.md +50 -0
  127. package/skills/hyper-animator-codex/references/shotcraft/catalog.json +3946 -0
  128. package/skills/hyper-animator-codex/references/shotcraft/references/aesthetic-rules.md +157 -0
  129. package/skills/hyper-animator-codex/references/shotcraft/references/final-review.md +107 -0
  130. package/skills/hyper-animator-codex/references/shotcraft/references/guided-free-creation.md +197 -0
  131. package/skills/hyper-animator-codex/references/shotcraft/references/music-beat-sync.md +125 -0
  132. package/skills/hyper-animator-codex/references/shotcraft/references/pipeline.md +357 -0
  133. package/skills/hyper-animator-codex/references/shotcraft/references/sound-design.md +126 -0
  134. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/Caption.tsx +50 -0
  135. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/DigitRoll.tsx +45 -0
  136. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/FlashCut.tsx +20 -0
  137. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/FlatPanel.tsx +65 -0
  138. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/PageCam.tsx +151 -0
  139. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/VerticalTicker.tsx +129 -0
  140. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/camera.tsx +75 -0
  141. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/motion.ts +40 -0
  142. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/rand.ts +11 -0
  143. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/shake.ts +10 -0
  144. package/skills/hyper-animator-codex/references/shotcraft/source/demos/_fixtures/Fixtures.tsx +83 -0
  145. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ai-stream-response/StreamResponse.tsx +146 -0
  146. package/skills/hyper-animator-codex/references/shotcraft/source/demos/autolayout-gap-dial/AutolayoutGapDial.tsx +174 -0
  147. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-cut-moves/BeatCutAccelerando.tsx +77 -0
  148. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-cut-moves/PaparazziFlash.tsx +115 -0
  149. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +98 -0
  150. package/skills/hyper-animator-codex/references/shotcraft/source/demos/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +99 -0
  151. package/skills/hyper-animator-codex/references/shotcraft/source/demos/bottom-push-stack-wipe/BottomPushStackWipe.tsx +79 -0
  152. package/skills/hyper-animator-codex/references/shotcraft/source/demos/brand-frame-snap/BrandFrameSnap.tsx +110 -0
  153. package/skills/hyper-animator-codex/references/shotcraft/source/demos/bubble-swarm-takeover/BubbleSwarmTakeover.tsx +189 -0
  154. package/skills/hyper-animator-codex/references/shotcraft/source/demos/canvas-materialize-moves/DiagramCascadeBuild.tsx +172 -0
  155. package/skills/hyper-animator-codex/references/shotcraft/source/demos/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +254 -0
  156. package/skills/hyper-animator-codex/references/shotcraft/source/demos/card-flip-reveal/CardFlipReveal.tsx +139 -0
  157. package/skills/hyper-animator-codex/references/shotcraft/source/demos/card-flock-tumble/CardFlockTumble.tsx +382 -0
  158. package/skills/hyper-animator-codex/references/shotcraft/source/demos/cel-flash-stomp/CelFlashStomp.tsx +111 -0
  159. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/AxisRescaleShockV2.tsx +282 -0
  160. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/OscilloscopeStreamV2.tsx +227 -0
  161. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/UnitDotSwarmRegroupV2.tsx +248 -0
  162. package/skills/hyper-animator-codex/references/shotcraft/source/demos/circle-match-iris/CircleMatchIris.tsx +124 -0
  163. package/skills/hyper-animator-codex/references/shotcraft/source/demos/cloner-depth-echo/ClonerDepthEcho.tsx +90 -0
  164. package/skills/hyper-animator-codex/references/shotcraft/source/demos/collab-cursor-moves/CursorCastEnsemble.tsx +136 -0
  165. package/skills/hyper-animator-codex/references/shotcraft/source/demos/collab-cursor-moves/CursorDialogueDuet.tsx +145 -0
  166. package/skills/hyper-animator-codex/references/shotcraft/source/demos/color-block-step-wipe/ColorBlockStepWipe.tsx +157 -0
  167. package/skills/hyper-animator-codex/references/shotcraft/source/demos/command-palette-summon/CommandPaletteSummon.tsx +173 -0
  168. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crane-rise-reveal/CraneRiseReveal.tsx +91 -0
  169. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crash-zoom-punch/CrashImpactReal.tsx +63 -0
  170. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crash-zoom-punch/CrashZoomReal.tsx +60 -0
  171. package/skills/hyper-animator-codex/references/shotcraft/source/demos/dataviz-landscape-open/DatavizLandscapeOpen.tsx +401 -0
  172. package/skills/hyper-animator-codex/references/shotcraft/source/demos/depth-layer-moves/DollyZoomReal.tsx +55 -0
  173. package/skills/hyper-animator-codex/references/shotcraft/source/demos/depth-layer-moves/MultiplaneReal.tsx +45 -0
  174. package/skills/hyper-animator-codex/references/shotcraft/source/demos/draw-svg-trace/DrawSvgTrace.tsx +199 -0
  175. package/skills/hyper-animator-codex/references/shotcraft/source/demos/edit-hook-moves/LogoStingButton.tsx +106 -0
  176. package/skills/hyper-animator-codex/references/shotcraft/source/demos/element-body-moves/AxialStretch.tsx +112 -0
  177. package/skills/hyper-animator-codex/references/shotcraft/source/demos/element-body-moves/ContactShadowLift.tsx +117 -0
  178. package/skills/hyper-animator-codex/references/shotcraft/source/demos/fui-hud-moves/LineUnfoldPanel.tsx +125 -0
  179. package/skills/hyper-animator-codex/references/shotcraft/source/demos/fui-hud-moves/ReticleLockOn.tsx +139 -0
  180. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gauge-readout-moves/NeedleSweepSelftest.tsx +146 -0
  181. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gauge-readout-moves/TapeScrollFixedPointer.tsx +120 -0
  182. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/FlylineArc.tsx +158 -0
  183. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/GlowOrbAmbient.tsx +131 -0
  184. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/OrbFlylineRelay.tsx +268 -0
  185. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gradient-word-sweep/GradientWordSweep.tsx +307 -0
  186. package/skills/hyper-animator-codex/references/shotcraft/source/demos/graze-face-tour/GrazeFaceTour.tsx +469 -0
  187. package/skills/hyper-animator-codex/references/shotcraft/source/demos/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +166 -0
  188. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-field-colorize/IconFieldColorize.tsx +93 -0
  189. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-performance-moves/AttentionBounce.tsx +193 -0
  190. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-performance-moves/PopBurstConfirm.tsx +162 -0
  191. package/skills/hyper-animator-codex/references/shotcraft/source/demos/impact-feedback/AnimeImpact.tsx +149 -0
  192. package/skills/hyper-animator-codex/references/shotcraft/source/demos/impact-feedback/HitCounter.tsx +147 -0
  193. package/skills/hyper-animator-codex/references/shotcraft/source/demos/input-trigger-moves/CursorPerformancePunchIn.tsx +154 -0
  194. package/skills/hyper-animator-codex/references/shotcraft/source/demos/input-trigger-moves/KeycapSmashCut.tsx +217 -0
  195. package/skills/hyper-animator-codex/references/shotcraft/source/demos/integration-hub-map/IntegrationHubMap.tsx +554 -0
  196. package/skills/hyper-animator-codex/references/shotcraft/source/demos/letterspace-materialize/LetterspaceMaterialize.tsx +85 -0
  197. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/HalationBloom.tsx +139 -0
  198. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/SheenSweepRetry.tsx +85 -0
  199. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/SpotlightSweepReveal.tsx +102 -0
  200. package/skills/hyper-animator-codex/references/shotcraft/source/demos/line-boil/LineBoil.tsx +140 -0
  201. package/skills/hyper-animator-codex/references/shotcraft/source/demos/line-carry-transition/LineCarryTransition.tsx +151 -0
  202. package/skills/hyper-animator-codex/references/shotcraft/source/demos/magician-card-flourish/MagicianCardFlourish.tsx +294 -0
  203. package/skills/hyper-animator-codex/references/shotcraft/source/demos/marker-underline-title/MarkerUnderlineTitle.tsx +87 -0
  204. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/DominoCascade.tsx +125 -0
  205. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/DropBlackoutSlam.tsx +135 -0
  206. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/WrightTripleCut.tsx +175 -0
  207. package/skills/hyper-animator-codex/references/shotcraft/source/demos/morph-from-primitive/MorphFromPrimitive.tsx +190 -0
  208. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-frame-forerun/NeonFrameForerun.tsx +279 -0
  209. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +273 -0
  210. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-triple-marquee/NeonTripleMarquee.tsx +111 -0
  211. package/skills/hyper-animator-codex/references/shotcraft/source/demos/odometer-digit-roll/OdometerDigitRoll.tsx +178 -0
  212. package/skills/hyper-animator-codex/references/shotcraft/source/demos/overhead-camera-moves/OverheadTabletopDrop.tsx +129 -0
  213. package/skills/hyper-animator-codex/references/shotcraft/source/demos/overhead-camera-moves/TiltReveal.tsx +55 -0
  214. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-turn-transitions/BarnDoorSplit.tsx +138 -0
  215. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-turn-transitions/CubeRotate.tsx +114 -0
  216. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-waterfall-wall/PageWaterfallWall.tsx +76 -0
  217. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-waterfall-wall/VerticalTicker.tsx +129 -0
  218. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/ComicPanelSplit.tsx +171 -0
  219. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/FlipGridReflow.tsx +121 -0
  220. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/GridFlashMosaic.tsx +182 -0
  221. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-craft-moves/MaskingTapeSlap.tsx +163 -0
  222. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-craft-moves/PopupBookRise.tsx +134 -0
  223. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-plane-messenger/PaperPlaneMessenger.tsx +183 -0
  224. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-celebrate-hits/ConfettiCrossfire.tsx +115 -0
  225. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-celebrate-hits/CounterTickSparks.tsx +103 -0
  226. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-sand-fill/ParticleSandFill.tsx +119 -0
  227. package/skills/hyper-animator-codex/references/shotcraft/source/demos/pill-slot-cycle/PillSlotCycle.tsx +220 -0
  228. package/skills/hyper-animator-codex/references/shotcraft/source/demos/print-texture-transitions/InkBleedReveal.tsx +81 -0
  229. package/skills/hyper-animator-codex/references/shotcraft/source/demos/rhythm-interrupt-moves/JumpCutPunchIn.tsx +72 -0
  230. package/skills/hyper-animator-codex/references/shotcraft/source/demos/rhythm-interrupt-moves/StrobeBlackFrames.tsx +99 -0
  231. package/skills/hyper-animator-codex/references/shotcraft/source/demos/riso-print-hits/RisoBeatPump.tsx +155 -0
  232. package/skills/hyper-animator-codex/references/shotcraft/source/demos/riso-print-hits/RisoMisregistrationHit.tsx +120 -0
  233. package/skills/hyper-animator-codex/references/shotcraft/source/demos/runway-ground-skim/RunwayGroundSkim.tsx +258 -0
  234. package/skills/hyper-animator-codex/references/shotcraft/source/demos/sakuga-timing-shift/SakugaTimingShift.tsx +178 -0
  235. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scene-locked-title/SceneLockedTitle.tsx +98 -0
  236. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scroll-brake-moves/BrakeReticleLock.tsx +171 -0
  237. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scroll-brake-moves/ChangelogScrollBrake.tsx +117 -0
  238. package/skills/hyper-animator-codex/references/shotcraft/source/demos/segmented-thumb-hero/SegmentedThumbHero.tsx +213 -0
  239. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/MaskWipeReal.tsx +67 -0
  240. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/PortalWipeV2.tsx +128 -0
  241. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/WhipBrakeReal.tsx +60 -0
  242. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/WhipPanReal.tsx +45 -0
  243. package/skills/hyper-animator-codex/references/shotcraft/source/demos/skeleton-reveal/SkeletonReveal.tsx +283 -0
  244. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/ImpactBurstKit.tsx +185 -0
  245. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/KanadaPerspectiveSnap.tsx +91 -0
  246. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/ScoreSlam.tsx +225 -0
  247. package/skills/hyper-animator-codex/references/shotcraft/source/demos/smear-multiples/SmearMultiples.tsx +88 -0
  248. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/DroneDiveLanding.tsx +91 -0
  249. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/ExplodedView.tsx +178 -0
  250. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/SnorricamLock.tsx +130 -0
  251. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spectrum-morph-ui/SpectrumMorphUi.tsx +129 -0
  252. package/skills/hyper-animator-codex/references/shotcraft/source/demos/speed-ramp-freeze/FreezeAnnotateReal.tsx +70 -0
  253. package/skills/hyper-animator-codex/references/shotcraft/source/demos/speed-ramp-freeze/SpeedRampReal.tsx +58 -0
  254. package/skills/hyper-animator-codex/references/shotcraft/source/demos/split-flap-title/SplitFlapFlip.tsx +189 -0
  255. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/CornerSpotlightReveal.tsx +121 -0
  256. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +183 -0
  257. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/SlideSpotlightPan.tsx +171 -0
  258. package/skills/hyper-animator-codex/references/shotcraft/source/demos/steep-tilt-glide/SteepTiltGlide.tsx +315 -0
  259. package/skills/hyper-animator-codex/references/shotcraft/source/demos/stroke-segment-build/StrokeSegmentBuild.tsx +126 -0
  260. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tear-streak-transitions/GlitchDisplace.tsx +107 -0
  261. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/BulletTimeFreezeOrbit.tsx +219 -0
  262. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/DutchRollToLevel.tsx +110 -0
  263. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/PullBackIsolation.tsx +120 -0
  264. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/SlowPushIn.tsx +96 -0
  265. package/skills/hyper-animator-codex/references/shotcraft/source/demos/text-as-mask/TextAsMask.tsx +94 -0
  266. package/skills/hyper-animator-codex/references/shotcraft/source/demos/text-column-converge/TextColumnConverge.tsx +122 -0
  267. package/skills/hyper-animator-codex/references/shotcraft/source/demos/theme-switch-moves/PaletteThemeRipple.tsx +207 -0
  268. package/skills/hyper-animator-codex/references/shotcraft/source/demos/theme-switch-moves/ThemeSweepToggle.tsx +123 -0
  269. package/skills/hyper-animator-codex/references/shotcraft/source/demos/timeline-travel/TimelineTravel.tsx +123 -0
  270. package/skills/hyper-animator-codex/references/shotcraft/source/demos/title-demote-to-label/TitleDemoteToLabel.tsx +174 -0
  271. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/CardFootageCadence.tsx +118 -0
  272. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/SmashCut.tsx +105 -0
  273. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/TrailerBumper.tsx +103 -0
  274. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/InvisibleCut.tsx +93 -0
  275. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/LightLeakBurn.tsx +122 -0
  276. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/VersusSlam.tsx +104 -0
  277. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-travel/LetterformZoom.tsx +141 -0
  278. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-travel/SharedElementMorph.tsx +101 -0
  279. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/LetterformDriftAssembly.tsx +107 -0
  280. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/SplitTextStagger.tsx +101 -0
  281. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/TextOnPath.tsx +92 -0
  282. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/TrackingExpandReveal.tsx +109 -0
  283. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-entrance-moves/LetterDropPhysics.tsx +100 -0
  284. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-entrance-moves/ScrambleDecode.tsx +90 -0
  285. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-rhythm-sync/FontWeightPump.tsx +124 -0
  286. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-rhythm-sync/KaraokeFillSync.tsx +93 -0
  287. package/skills/hyper-animator-codex/references/shotcraft/source/demos/typewriter-moves/TerminalTypewriter.tsx +122 -0
  288. package/skills/hyper-animator-codex/references/shotcraft/source/demos/typewriter-moves/TypewriterErrorRetype.tsx +109 -0
  289. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-strip-away-outro/UiStripAwayOutro.tsx +218 -0
  290. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-to-brand-morph/IconFlipBloomLogo.tsx +199 -0
  291. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-to-brand-morph/InputMorphsIntoLogo.tsx +215 -0
  292. package/skills/hyper-animator-codex/references/shotcraft/source/demos/voice-waveform-live/VoiceWaveformLive.tsx +171 -0
  293. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wall-reveal-moves/BentoLightUp.tsx +135 -0
  294. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wipe-transitions/BlindsSlice.tsx +107 -0
  295. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wipe-transitions/ClockWipe.tsx +83 -0
  296. package/skills/hyper-animator-codex/references/shotcraft/source/demos/word-relay-filmstrip/WordRelayFilmstrip.tsx +300 -0
  297. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/Root.tsx +15 -0
  298. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/Caption.tsx +49 -0
  299. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/DigitRoll.tsx +44 -0
  300. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/FlashCut.tsx +19 -0
  301. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/Main.tsx +163 -0
  302. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/PaperTitleCard.tsx +89 -0
  303. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/PageCam.tsx +145 -0
  304. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneDetail.tsx +146 -0
  305. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneFlyIn.tsx +447 -0
  306. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneOpen.tsx +532 -0
  307. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneOutroLive.tsx +394 -0
  308. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/ScenePapers.tsx +185 -0
  309. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneWbr.tsx +299 -0
  310. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/index.ts +4 -0
  311. package/skills/hyper-animator-codex/references/shotcraft/source-notes.md +10 -0
  312. package/skills/hyper-animator-codex/scripts/generate_minimax_music.mjs +27 -10
  313. package/skills/hyper-animator-codex/scripts/generate_minimax_tts.mjs +142 -13
  314. package/skills/hyper-animator-codex/scripts/generate_subtitles.mjs +42 -3
  315. package/skills/hyper-animator-codex/scripts/minimax_runtime_config.mjs +3 -3
  316. package/skills/hyper-animator-codex/scripts/query_shotcraft.mjs +140 -0
  317. package/skills/hyper-animator-codex/scripts/validate_hyperframes_html.py +22 -0
  318. package/skills/hyper-animator-codex/scripts/validate_provider_policy.mjs +108 -0
  319. package/skills/hyper-animator-codex/scripts/validate_shot_plan.mjs +193 -0
  320. package/skills/hyper-animator-codex/vendor/music-beat-detector/beat_detector/analyzer.py +3 -1
  321. package/skills/hyper-animator-codex/vendor/music-beat-detector/beat_detector/beat.py +37 -1
@@ -0,0 +1,357 @@
1
+ # pipeline — 八阶段制作流水线
2
+
3
+ 八阶段,方向性问题不进昂贵的逐镜头阶段。
4
+ 实证细节来自多支已交付宣传片的复盘(模板片见 `template/`)。
5
+
6
+ ## 目录
7
+
8
+ - 阶段 0:产品理解与执行约束
9
+ - 阶段 1:视觉方向与 styleframe
10
+ - 阶段 2:功能到镜头映射
11
+ - 阶段 3:分镜与制作放行
12
+ - 阶段 4:最终素材采集
13
+ - 阶段 5:逐镜头实现
14
+ - 阶段 6:声音设计
15
+ - 阶段 7:独立终检与交付
16
+
17
+ 本文件是**自主自由创作**的完整流水线:阶段 0–3 的判断由 Agent 根据项目内容
18
+ 自主完成并记录,不逐阶段等待用户确认,然后连续进入阶段 4–7。用户已给出的
19
+ 用途、受众、功能、画幅、音频或数据要求都是硬约束。
20
+
21
+ 直接使用 Ink Press 模板不进入本流水线,按 `template/TEMPLATE.md` 的原有替换
22
+ 流程执行;模板文档引用阶段 4 时只借用其中的素材采集方法。
23
+
24
+ **共同创作从 `guided-free-creation.md` 进入本文件时,不要从头重跑。** 该流程
25
+ 已经完成并确认阶段 0–3;直接从阶段 4 最终素材采集继续,不重新询问或重新设计。
26
+
27
+ 两处执行原则(实战复盘已吸收):
28
+
29
+ 1. **最终设计 spec 与分镜共同构成制作放行。** 分镜表长在设计 spec 里
30
+ (`| # | 时间 | 镜头 | 关键动效 |` 四列);确认放行不重新打开已确认的
31
+ 业务或创意问题,只补实现必要的未决项。
32
+ 2. **验收贯穿全程,不是最后一个阶段。** 每个镜头任务以 `npx remotion still`
33
+ 静帧肉眼验收收尾(产物按版本归档 `out/qa/`),每轮反馈修改后整片重渲。
34
+ 阶段 7 只是把这套贯穿动作升级为对照 aesthetic-rules.md 的正式自检报告。
35
+
36
+ 另注顺序弹性:styleframe 可以先用 HTML 与少量安全预检素材;重要的是**逐镜头
37
+ 实现开始前最终素材必须依据已定案的分镜采集**——素材方向错误拖到逐镜头阶段后
38
+ 才暴露,代价是整套场景报废。
39
+
40
+ ---
41
+
42
+ ## 阶段 0:产品理解与执行约束
43
+
44
+ 在写视频代码或采集最终素材前,只读检查项目的定位、主要功能、页面状态、视觉
45
+ tokens、启动方式和数据风险。根据项目证据和用户已有描述,生成产品简报与需求到
46
+ 执行决策表,明确用途、受众、核心卖点、必须展示功能、时长/画幅/语言、音频和
47
+ 数据口径对本片的实际影响。
48
+
49
+ 自主自由创作由 Agent 对缺省项作动态判断并写入设计 spec,不暂停要求用户确认。
50
+ 用户指定了 BGM 时,先按 `references/music-beat-sync.md` 分析节奏;未指定时由 Agent
51
+ 根据产品与发布场景在阶段 6 选型。公开演示数据可在确认其公开属性后使用;客户、
52
+ 个人、内部、密钥、实时或其他敏感数据一律先虚构、脱敏或冻结。
53
+
54
+ **产出**:产品简报;需求到执行决策表;明确的数据与音频约束。
55
+
56
+ ---
57
+
58
+ ## 阶段 1:视觉方向与 styleframe
59
+
60
+ **目标**:用最便宜的产物锁定全片色板、字体、光感与运镜气质,
61
+ 让所有方向性争论发生在写第一行 Remotion 代码之前。
62
+
63
+ **具体操作**:
64
+
65
+ 1. 根据当前项目生成最多 3 个文字方向。每个方向附一组**动效性格 tokens**
66
+ (推导法见下方“品牌→动效参数”表),但不要把 Ink Press 作为固定选项。
67
+ 2. Agent 依据产品视觉、用途和受众自主选择最合适的方向,并把选择与取舍写入
68
+ 设计 spec;不暂停等待用户选择。
69
+ 3. 对选定方向**不渲染视频、不写 Remotion 代码**,写一个纯 HTML/CSS
70
+ styleframe 页,包含 2–3 张 1920×1080 静态关键画面。
71
+ 4. 用 Playwright/Puppeteer 截图验证字体、色板、材质、构图、光感与信息密度;
72
+ 缓动和运镜速度仍以 tokens、Gallery 样片或短运动测试判断。若已有严格品牌规范
73
+ 或明确参考片,可记录理由后跳过 styleframe。
74
+ 5. 若用户给了参考片:下载后 ffmpeg 抽帧(`select=eq(n,…)` 抽 ~100 帧、
75
+ `tile=4x5` 拼 contact sheet),逐个动画/转场/特效做 motion breakdown,
76
+ 写成"手法|参考片实现|取舍"三列表进设计 spec——**选择性适配,
77
+ 不强行套用**。图片参考同理:它描述的是"某一类镜头"的感觉,
78
+ 不是全片风格令。
79
+
80
+ **品牌→动效参数推导**。不凭手感挑 easing/时长,先把品牌放到两根轴上,
81
+ 再从最近的预设起步:
82
+
83
+ - **能量轴**:低(沉稳/premium/机构感)↔ 高(运动/startup/娱乐)——
84
+ 决定时长、过冲、squash 幅度;
85
+ - **调性轴**:严肃(金融/医疗/enterprise)↔ 活泼(消费/社交/儿童)——
86
+ 决定路径曲直、次级动作多寡。产品视觉本身是证据(锐利几何形→工程感,
87
+ 圆角+亮色→柔和活泼);用户口述的品牌词覆盖视觉推断。
88
+
89
+ | 预设(品类) | 主时长@30fps | 入场 easing | 过冲 | squash |
90
+ |---|---|---|---|---|
91
+ | 专业信赖(fintech/enterprise/B2B)| ~21f | bezier(0,0,0.2,1) | 1.0 不弹 | 0 |
92
+ | 精致高端(奢侈品/时尚)| ~48f | bezier(0.4,0,0.6,1) | ≤1.02 | 0 |
93
+ | 活力大胆(体育/游戏/startup)| ~18f | bezier(0.16,1,0.3,1) | 1.12 | 0.25 |
94
+ | 活泼愉悦(消费/社交)| ~27f | bezier(0.34,1.56,0.64,1) | 1.08 | 0.18 |
95
+ | 平静关怀(健康/教育)| ~42f | ease-in-out 对称 | 1.0 | ≤0.04 |
96
+ | 亲和友好(小微/社区)| ~26f | bezier(0.25,0.46,0.45,0.94) | 1.04 | 0.08 |
97
+
98
+ 用法:定预设 → 按两轴微调 → tokens 写进设计 spec。自检两条:
99
+ ①用三个词描述成片动效,与品牌词对得上吗;②同一套 tokens 必须同时管
100
+ 入场/转场/hold 节奏——一个品牌一种动效嗓音,混用两套读作拼盘。
101
+ 注意预设值与库内硬判例冲突时判例赢:落地要弹的场合 y1 必须 >1,
102
+ "专业信赖不弹"指的是无落地隐喻的淡入/推移类动作。
103
+
104
+ **产出**:选定方向的 styleframe;色板/字体/光感 tokens + 动效性格 tokens;
105
+ (有参考片时)motion breakdown 表。
106
+
107
+ **常见坑**:
108
+
109
+ - 用渲染视频做风格提案:太贵,改方向的心理成本也高。静态帧足够定调。
110
+ - 参考驱动的风格 move 全局一刀切:风格化机位逐镜头决定(信息密集的
111
+ 列表/堆叠镜头正视更可读)。
112
+
113
+ ---
114
+
115
+ ## 阶段 2:功能到镜头映射
116
+
117
+ **目标**:为每个必须展示的功能选定合适的运动语法,不在此阶段提前写完整分镜。
118
+
119
+ **具体操作**:
120
+
121
+ 1. **先列产品功能清单,逐一对应镜头**。核心功能漏拍等于返工;
122
+ 一种动画手法(飞入/堆叠/翻页)全片只当一次主角,同质化即返工信号。
123
+ 2. 扫描 `references/shots/` 全部卡片的 frontmatter,根据用途、能量、建议时长、
124
+ 限制和所需页面状态,为每项功能选择首选与备选卡;Agent 自主定案并记录依据。
125
+ 3. 完整读取选中卡片,并按“参考实现”定位准确 demo 源码。没有合适卡片时可新写,
126
+ 但必须在设计 spec 中说明范围与验证风险。
127
+
128
+ **产出**:功能到镜头映射表;选中卡名、变体、demo 源码和参考样片定位。
129
+
130
+ ---
131
+
132
+ ## 阶段 3:分镜与制作放行
133
+
134
+ **目标**:把已定案的功能与镜头映射排成有能量曲线的完整镜头序列,并转成帧级
135
+ 实施计划。自主自由创作由 Agent 自行放行,不暂停等待确认。
136
+
137
+ **具体操作**:
138
+
139
+ 1. 先查 `references/sequences/` 有无适用的桥段模板;有则按其填空流程分配段位
140
+ 与帧预算,再把映射好的镜头排成低能量开场→功能段与呼吸位交替→高能量收尾。
141
+ 2. **已有指定 BGM 时**:先出音乐结构表(满能量起点/breakdown 拍号,
142
+ 见 music-beat-sync.md §2),镜头边界全部锚到拍号,最强 hit 分给
143
+ 全片 2–3 个大 slam;breakdown 段天然是品牌呼吸位。
144
+ 3. 写完整分镜表:镜头顺序、时长、功能信息、具体页面状态、镜头卡与变体、主动作、
145
+ 素材来源、字幕、转场和 SFX。每镜只讲一个主要动效。
146
+ 4. 排时间线时**预留 hold/rest 帧预算**:品牌字标落定 hold ≥1s(30f)、
147
+ 批量动效收尾 0.5s 静止、开场主体动作 ≥3s。节奏返工是单向的——
148
+ 过快必返工、放慢从未被否。
149
+ 5. Agent 检查分镜与产品简报、需求决策、视觉方向和镜头映射一致后自行放行,
150
+ 把分镜转译成帧级时间轴进实施计划:
151
+ `| shot | from | duration | 内容 |`(卡点片则 from/to 全用 `beatF(n)`
152
+ 表达),并给每镜头指定源文件与验收帧号。
153
+
154
+ **产出**:设计 spec(含风格 tokens + motion breakdown + 分镜表);
155
+ 帧级时间轴。
156
+
157
+ **常见坑**:
158
+
159
+ - 没对功能清单,凭手感排镜头:核心功能漏拍、动画手法同质化,两种都返工。
160
+ - 开场贪多:开场信息宁少而聚焦,一个主角、一条完整动作弧。
161
+ - 时长预算不含呼吸位:动效排满每一帧,后期逐镜头补 hold 等于全线挪帧。
162
+
163
+ ---
164
+
165
+ ## 阶段 4:最终素材采集
166
+
167
+ **前置条件**:最终设计 spec 与分镜已经放行。共同创作以用户确认作为放行;自主
168
+ 自由创作以 Agent 完成一致性检查并记录为放行。此前为 styleframe 采过的少量安全
169
+ 截图只能作为方向验证,不得直接替代最终素材。
170
+
171
+ **目标**:严格按最终分镜拿到全部镜头所需的真实页面素材,包括全页纹理、元素
172
+ 切片和坐标表,为 2.5D 运镜与页面空间动画打地基。
173
+
174
+ **具体操作**:
175
+
176
+ 1. 起产品本地 dev server(桌面端产品则用窗口截图工具,同样出三件套)。
177
+ 2. 复制 `assets/scripts/capture-template.mjs` 进项目,改 BASE_URL 与选择器,
178
+ 跑一次产出三件套:
179
+ - **全页 2x 截图**:viewport 1920×1080、`deviceScaleFactor: 2`;截图前
180
+ `document.fonts.ready` + 600ms settle,实时同步页额外再等 1.5–2s。
181
+ - **per-element cutout**:按语义选择器逐元素截图;悬浮件用透明底,需要
182
+ “卡片飞入空板”的镜头则额外截空 backplate。
183
+ - **layout.json**:记录每个元素在整页坐标系下的 `{x,y,w,h}` bbox 与每页
184
+ `pageH`,供飞行目标位、遮罩位置和入场区域直接使用。
185
+ 3. 支持按页/按元素增量重采。活数据源先按阶段 0 的数据口径冻结、虚构或脱敏,
186
+ 再进行最终采集。
187
+
188
+ **产出**:`public/textures/` 全页图、元素切片与空 backplate;`layout.json`;
189
+ 可重跑的 capture 脚本。
190
+
191
+ **常见坑**:
192
+
193
+ - 在分镜放行前做全量采集:页面状态和素材范围尚未确定,会造成重复采集。
194
+ - 手搓 HTML 复刻既有页面:复刻默认走真实截图;手搓 UI 只用于非复刻场景。
195
+ - 活数据源不锁定,或只截整页不记录 layout 坐标。
196
+
197
+ ---
198
+
199
+ ## 阶段 5:逐镜头实现
200
+
201
+ **前置条件**:需已有可跑的 Remotion 项目(30fps、1920×1080,`src/index.ts`
202
+ 注册 Composition;新项目可 `npx create-video@latest` 初始化后把
203
+ `assets/lib/` 组件 copy 进去;走模板路线则直接从 `template/` 起步)。
204
+
205
+ **目标**:按帧级时间轴逐镜头落地,每镜头完成即自证质量——
206
+ 验收在这个阶段就开始,不留到最后。
207
+
208
+ **具体操作**:
209
+
210
+ 1. **每镜头先解析再三读**(硬规则,不可跳):用
211
+ `gallery/api/library.json` 校验卡名和 `style-key` → 读对应配方卡全文 →
212
+ 按卡片“参考实现”定位并读准确的 demo TSX 全文 → copy `assets/lib/`
213
+ 对应组件进项目。同时保存该 style 的 Gallery 参考样片路径,供实现对照和终检。
214
+ 标为“仅供参考,需要自定义实现”的样式不默认推荐,用户明确点名后才可实现并
215
+ 标注风险;标为“缺少预览”的样式不得声称已按动态样片复刻。
216
+ demo 代码是调校过的参数真相(缓动、时值配比、
217
+ 摘罩时机、已知坑的规避写法都在里面)——允许按目标产品做适配性
218
+ 改动,但配方卡"已知坑/命门"标注的参数不得降档,质量标准只升不降。
219
+ 凭卡名和理解新写=放弃全部调校积累,实测质感差一档。
220
+ 2. **PageCam 是一切"真实页面"镜头的地基**:整页纹理 + 关键帧 2.5D 相机 +
221
+ 页面空间 overlay,children 按页面 CSS px 定位、与 layout.json 共坐标系。
222
+ 3. **静帧验收(最高频动作)**:每镜头在计划里写死 2 个验收帧号,
223
+ 完成即跑 `npx remotion still src/index.ts <Comp> out/qa/<name>.png
224
+ --frame=<N>`,自己肉眼检查构图/穿帮/文字锐度后才算完成。
225
+ 静帧产物按迭代版本归档 `out/qa/`,用户贴帧反馈时可直接对号。
226
+ 4. **每轮修改后整片渲染**:`npx remotion render src/index.ts <Comp>
227
+ out/promo.mp4`,再用 `ffmpeg -i out/promo.mp4 -vf "select=eq(n,…)"`
228
+ 从成片抽关键帧回看。实际形态是"改哪个镜头就 still 哪几帧,
229
+ 然后整片重渲",成本可接受且杜绝接缝意外。
230
+ 5. 像素级自检备小工具:裁剪放大看文字锐度(crop)、两帧像素 diff、
231
+ 量元素 bbox 对构图。
232
+ 6. **确定性渲染铁律**:禁 `Date.now()` / `Math.random()` / 无参 `new Date()`。
233
+ 一切伪随机用固定种子(mulberry32/哈希函数,seed 从 index 派生),
234
+ 保证逐帧可复现、渲染间零抖动。
235
+ 7. 对照 `references/aesthetic-rules.md` 边做边自检(不等阶段 7):
236
+ 落地要弹的缓动 y1 必须 >1、光效裁进圆角、3D 下文字糊先查
237
+ 栅格化路径(CSS `zoom` 布局级放大,而非 transform scale)而不是调 DoF。
238
+ 8. 指代含糊的用户反馈("第一个标题")先确认对象再动手;改错立即整
239
+ commit revert 重来,不在错误版本上打补丁——每个改动独立 commit
240
+ 以便干净回滚。
241
+
242
+ **产出**:逐镜头 commit;`out/qa/` 静帧档案;每轮全片渲染 mp4。
243
+
244
+ **阶段输出**:整片渲染视频(每轮迭代一版)+ 关键静帧。自主自由创作不因该输出
245
+ 暂停等待确认;用户主动反馈时再纳入下一轮。
246
+ 用户可能以"从成片截帧贴图"方式给反馈,双方基于帧评审。
247
+
248
+ **常见坑**:
249
+
250
+ - 首检交给用户:交付前必须自己抽帧看片,"镜头视角很差,
251
+ 而且有小抖动"这种问题不该由用户发现。
252
+ - 跳过 demo 代码直接写:参数是几轮真实裁决调校出来的,
253
+ 新写的版本几乎必然回踩已知坑。
254
+ - 产品宣传片默认不加手持 shake;相机噪声只在明确追求纪实感时用。
255
+ - 装饰性 glint/泛光群发:批量元素入场靠运动本身。单点高质量光效可做,
256
+ 群发即廉价。
257
+ - 3D 推进下文字发糊:根因是纹理源分辨率/栅格化路径,先查素材链路
258
+ (2x 纹理 + CSS zoom + 关键元素 4x 单独截图),别先动相机和景深。
259
+ - 飞入动画终点悬空:元素必须落进页面布局的真实槽位(嵌入、归位、
260
+ 排进滚动流),悬浮在页面上方不落地会显得假。
261
+
262
+ ---
263
+
264
+ ## 阶段 6:声音设计
265
+
266
+ **目标**:BGM 定全片能量骨架,SFX 逐拍钉在动效关键帧上,
267
+ 音色符合"产品宣传片"片种而非 UI 事件语义。
268
+
269
+ **前置条件(最贵的顺序教训)**:**画面时间线锁定后才开始。**
270
+ 画面每动一次,钉帧表就要全体重对。若画面确实又改了,收尾动作固定
271
+ 包含"全表 SFX 帧号重对",音画错位是必查项。
272
+
273
+ **具体操作**(细节与判例见 `references/sound-design.md`):
274
+
275
+ 1. 读 `references/sound-design.md`,从 `assets/audio/` 复制音效
276
+ (免费商用授权,来源见 `assets/audio/ATTRIBUTION.md`)。
277
+ 2. **BGM**:用户已指定 → 阶段 0 已做节奏分析,此处只做混音
278
+ (音量压低 ~0.34 给 SFX 留 headroom,interpolate 首尾淡入淡出)。
279
+ 未指定 → 按片种选强鼓点、强节奏的电子底(tech-house 类),判据是
280
+ "典型的产品宣传视频"气质而不是"好听";候选曲必须垫进成片试听,
281
+ 单听曲子选型不可靠;`assets/audio/bgm/` 有节奏感强的备选。
282
+ 3. **SFX 用电影系词汇按镜头语言选**:运镜=whoosh、落地=impact、
283
+ 铺垫=riser、光效=sparkle、转场=transition;禁用游戏 UI 音包
284
+ (click/pluck/glass 类 tap 一耳朵出戏)。
285
+ 4. **声明式钉帧表集中管理 + 相对钉帧**:单文件 `{ from, src, volume }[]`
286
+ 数组,逐条注释对应的画面动作,每条包 `<Sequence from={s.from}>`。
287
+ **from 一律写相对表达式**——`SHOTS.x.from + offset`,卡点片写
288
+ `beatF(n)`——绝不写裸数字帧号。时间线平移时钉帧表自动跟随,
289
+ 免除全表重钉。长样本靠 Sequence duration 截断而非剪音频文件。
290
+ 5. 连发防机枪感三招:双样本交替、音量阶梯递减(如 pop 六连
291
+ 0.40→0.25)、间隔加速贴动画曲线(密到糊成一片时让声音淡出成 swoosh)。
292
+ 6. 通用音之外留"贴画面定制"槽位:有辨识度的画面动作配它自己的拟音
293
+ (打字画面配键盘声、逐条落入配逐个 pop),泛用 swoosh 盖不住。
294
+ 7. 强鼓点 BGM 的片子 SFX 克制:鼓点本身就是节拍音,SFX 只钉画面
295
+ 独有动作,大 slam 只给 2–3 处峰值。
296
+ 8. 结尾固定句式:riser(组装段起)→ impact(字标落地,全片音量峰值)
297
+ → sparkle(余韵)。
298
+
299
+ **产出**:带声整片;SFX 钉帧表(相对帧表达式+音源+音量+注释);
300
+ 音频文件入 repo 并记录来源授权。
301
+
302
+ **阶段输出**:带声整片渲染。自主自由创作继续进入终检,不暂停等待确认。
303
+
304
+ **常见坑**:
305
+
306
+ - 画面没锁就铺音效:全表重对的连带成本(见前置条件)。
307
+ - 按 UI 事件语义选音色(click/confirmation/minimize):片种错位,整批推翻。
308
+ - 凭感觉散铺音效不建表:帧号漂移后无法整体平移,也无法和分镜表对照。
309
+
310
+ ---
311
+
312
+ ## 阶段 7:验收
313
+
314
+ **目标**:把贯穿全程的静帧/整片自检升级为一次正式的全片过检,
315
+ 同时验证成片是否忠实执行当前模式下确认或记录的产品简报、需求到执行决策表、视觉方向、镜头映射和分镜,
316
+ 对照终检与审美准则逐条出报告,然后终渲交付。
317
+
318
+ **具体操作**:
319
+
320
+ 1. 全片渲染最新版,ffmpeg 抽全部关键帧(每镜头至少:入场中、
321
+ 动作峰值、落定后三帧)。
322
+ 2. **独立终检(必做)**:派一个干净上下文的 subagent 做第三方审查。
323
+ 不给它制作过程中的辩解、修改历史或“应该通过”的暗示,只提供:最新版成片、
324
+ 抽出的关键帧、创作模式、产品简报、需求到执行决策表、确认或记录的视觉方向/tokens、styleframe 或跳过理由、
325
+ 功能到镜头映射、
326
+ Gallery 卡名与具体变体、`library.json` 中对应记录、卡片文档定位到的准确
327
+ demo TSX、Gallery 参考样片或从中抽出的关键帧、最终分镜、选中的镜头卡、
328
+ `references/final-review.md` 和 `references/aesthetic-rules.md`。
329
+ 3. 审查 Agent 按 `final-review.md` 检查产品目标、功能完整性、视觉方向一致性、
330
+ 镜头卡/变体还原度、分镜一致性、数据安全、音画同步和视觉技术质量。逐镜头
331
+ 看帧+看片,给出 "F2 ✗(第 340 帧缺少已确认的知识图谱功能)" 或
332
+ "Q2 ✗(第 615 帧文字发糊)" 式结论,每条问题附可复核帧号/截图。
333
+ 镜头卡适配不要求和 Gallery 样片像素级相同,但必须保留动作语法、关键时值、
334
+ 已知坑/命门参数和用户点名的具体变体。
335
+ 4. 内容级自查:每个镜头问"给了什么新信息",重复镜头/重复 tagline 删;
336
+ 文案按最终画面重写一遍,纯动画段落也要有解说 caption,不留哑巴段落。
337
+ 5. 音画对齐终检:逐条 SFX 对帧回放,确认无错位(时间线若在阶段 6 后
338
+ 还动过,先重对再验)。卡点片按 music-beat-sync.md §4 做渲后回测,
339
+ 全部切点误差 ≤3f 才算过。
340
+ 6. 审查报告的修复项回到阶段 3/5/6 小循环:方案或分镜偏差回阶段 3,画面实现
341
+ 问题回阶段 5,声音问题回阶段 6;直到 checklist 通过后终渲出片。
342
+
343
+ **产出**:独立审查报告(final-review + aesthetic-rules checklist + 帧号证据)
344
+ + 终渲成片。
345
+
346
+ **交付物**:审查报告 + 成片。
347
+
348
+ **常见坑**:
349
+
350
+ - 把验收当"最后才做的事":本阶段只是收口。若前五阶段没做静帧自检,
351
+ 这里堆积的问题量会让 checklist 失去意义——验收贯穿全程是定式。
352
+ - 自检报告流于"全部 ✓":用户会读清屏幕上每个字、会自己截帧对比——
353
+ 报告里每条结论都应附可复核的帧号/截图。
354
+ - 制作 agent 自己出审查报告:确认偏差不可避免,独立 subagent 审查
355
+ 不可省略。
356
+ - 只查“好不好看”不查“是否符合当前模式的制作基准”:功能漏拍、视觉方向漂移、
357
+ 镜头变体用错和未经确认的数据都属于终检失败。
@@ -0,0 +1,126 @@
1
+ # sound-design — 声音设计
2
+
3
+ 来源:模板片(`template/`)声音设计实战。准则编号 S1–S4 见 `references/aesthetic-rules.md`。
4
+
5
+ 模板片的声音全部集中在一个文件里管理(`template/src/aifl/Main.tsx`:`SFX[]` 钉帧表),场景组件不含任何音频代码——声音是时间线级资产,不是镜头级资产。
6
+
7
+ ## 目录
8
+
9
+ - 方法
10
+ - BGM 选型
11
+ - SFX 词汇表
12
+ - 对齐技巧
13
+
14
+ ---
15
+
16
+ ## 1. 方法
17
+
18
+ **顺序:画面结构基本锁定 → 先铺 BGM 定能量骨架 → 逐拍钉 SFX。**
19
+
20
+ 1. **BGM 先行,定能量骨架。** 一条 BGM 全片铺底,音量包络用 `interpolate` 做首尾淡入淡出(模板片 `[0, 30, TOTAL-50, TOTAL] → [0, 0.34, 0.34, 0]`,即 1s 淡入、1.7s 淡出)。BGM 音量压在 0.34 左右给 SFX 留 headroom。曲子的能量曲线要和分镜表的能量曲线对得上(低开 → 中段推进 → outro 峰值),候选曲必须垫进成片试听——单听曲子无法判断气质(S1)。
21
+ 2. **词汇表按"片种"选,不按"事件"选(S1)。** 产品宣传片的 SFX 词汇 = whoosh(运镜) / impact(落地) / riser(铺垫) / sparkle(光效) / transition(转场),禁用游戏 UI 音包(click/pluck/glass 类 tap 音)。模板片第一版按 UI 事件语义选音(click/drop/confirmation),用户一耳朵判死刑"太像游戏了"。
22
+ 3. **SFX 逐拍钉帧、声明式表集中管理(S2)。** SFX 是 `{ from, src, volume }[]` 数组,逐条注释对应的画面动作("hero card: whoosh up on the pop"),渲染时每条包一个 `<Sequence from={s.from}>`。杜绝凭感觉铺音效。
23
+ 4. **通用音之外留"贴画面定制"槽位。** 词汇表定稿后,有辨识度的画面动作仍会要专属拟音(打字揭示配键盘声、逐周落入配 pop)——泛用 swoosh 盖不住这些动作(S4)。
24
+
25
+ 时机教训:模板片的音频工作直到画面改了约 30 轮之后才开始(收尾最后几轮);有一次把换 BGM 和画面重做混在同一轮改动里,画面随后继续改,SFX 全表报废重钉。**声音永远排在画面锁定之后**(S3),细节见第 4 节。
26
+
27
+ ---
28
+
29
+ ## 2. BGM 选型
30
+
31
+ ### 演进:三易其稿(34 分钟)
32
+
33
+ | 稿 | 曲目 | 来源/授权 | 被换原因 |
34
+ |---|---|---|---|
35
+ | v1 | Kevin MacLeod – *Inspired*(暖色 ambient 钢琴底);同批还下了备选 *Deliberate Thought*,从未引用 | incompetech,CC-BY | 用户:"BGM换个更有节奏感,更激情欢快的"——钢琴 ambient 不够激情 |
36
+ | v2 | Kevin MacLeod – *Life of Riley*(欢快 folk-pop) | incompetech,CC-BY | 用户:"这个配乐和音效都太像游戏了。你帮我找那种鼓点强的,节奏感强的"——欢快≠宣传片气质 |
37
+ | v3(定稿) | Mixkit tech-house 鼓底(`bgm-tech-house.mp3`),音量升至 0.34 | Mixkit license | 未再被换,沿用至成片 |
38
+
39
+ v1→v2 只隔 22 分钟就又被否——说明选曲时根本没在成片语境里听。**候选曲必须垫进成片试听后再定**(S1 自检项)。
40
+
41
+ ### 选型判据(从用户原话反推)
42
+
43
+ - **鼓点强、节奏感强**,优先电子底(tech-house 类);"好听/欢快"不是判据。
44
+ - 气质基准是"典型的产品宣传视频"——闭眼只听音轨,应像产品发布会预告,不像手机游戏(S1)。
45
+ - 能量曲线能托住全片结构:平稳鼓底适合叠 SFX 层次,旋律太抢的曲子会和拟音打架。
46
+
47
+ ### 免费授权来源清单
48
+
49
+ | 来源 | 授权 | 适用 | 备注 |
50
+ |---|---|---|---|
51
+ | [Mixkit](https://mixkit.co/) | Mixkit License(免费商用、免署名) | BGM + 电影系 SFX(whoosh/impact/riser/sparkle) | 模板片定稿的 BGM 和 SFX 主力来源;批量下载后 metadata 常被抹掉,**下载时就记录曲名/URL**,否则事后无法反查(模板片 `bgm-tech-house.mp3` 已无法逐曲对回 Mixkit 曲库,商用前需复核) |
52
+ | [incompetech](https://incompetech.com/)(Kevin MacLeod) | CC-BY 4.0(需署名) | BGM,曲库大、按情绪筛选 | 模板片 v1/v2 出处;注意 CC-BY 的署名义务 |
53
+ | [Kenney](https://kenney.nl/assets)(音包) | CC0 | 游戏类项目 | **产品宣传片禁用**(S1)——模板片引入后被整批删除,仅列此供授权档案参考 |
54
+
55
+ ---
56
+
57
+ ## 3. SFX 词汇表
58
+
59
+ 以下 14 个文件是 `assets/audio/` 的基础层(模板片实际使用的一批);2026-07 扩充的 27 个新 SFX 与 `bgm/` 备选见 `assets/audio/ATTRIBUTION.md`。时长来自 ffprobe;"典型钉帧位置"引用模板片 `template/src/aifl/Main.tsx` SFX 表的定稿帧号(30fps、全片 1085f),复用时取其相对语义而非绝对数值。
60
+
61
+ | 文件 | 时长 | 用途场景 | 典型钉帧位置(模板片) | 来源与授权 |
62
+ |---|---|---|---|---|
63
+ | `bgm-tech-house.mp3` | 288.7s | 整片鼓底 BGM,tech-house 电子 | 全片铺底,音量包络 0→0.34→0.34→0 | Mixkit(无法逐曲反查,商用前复核) |
64
+ | `transition-soft.mp3` | 1.27s | 柔转场:品牌落定、场景切入 | f12 / f277 / f475 / f623 / f779(每次进新场景一发) | Mixkit |
65
+ | `whoosh-fast.mp3` | 1.76s | 快速运镜、批量元素飞走 | f78 brand→dashboard、f340/356 发牌加速、f435 筛选网格飞走 | Mixkit |
66
+ | `whoosh-big.mp3` | 2.32s | 大幅度运镜:弹起、拉远、回摆 | f127 hero 卡弹起、f308 orbit 拉远、f388 swoosh 回搜索栏 | Mixkit |
67
+ | `sparkle.mp3` | 4.55s | 光效 reveal:扫描光束、收尾闪光 | f141 hero 卡光束、f1005 结尾 rule 闪光 | Mixkit |
68
+ | `transition-snap.mp3` | 0.57s | 短促落定/贴回原位的 snap | f204 hero 卡 impact reseat | Mixkit |
69
+ | `swoosh-quick.mp3` | 0.78s | 字卡出场统一音、轻推镜 | f220/565/725/885 四张 title card、f455 点击后 push-in | Mixkit |
70
+ | `keyboard.mp3` | 19.6s | 真实键盘打字拟音(长样本,按段落裁剪用) | f401 搜索框输入(截 24f)、f781 周报页"自己写出来"(截 44f) | Mixkit |
71
+ | `click-camera.mp3` | 0.35s | 点击确认/快门感(全片最响 vol 0.6) | f451 点击卡片进详情、f648 papers 计数落定 | Mixkit |
72
+ | `riser-cine.mp3` | 4.81s | 电影系上升铺垫,进 finale | f945 outro 合影组装段起 | Mixkit |
73
+ | `impact-cine.mp3` | 4.06s | 电影系重音钉点(vol 0.55 全片 SFX 峰值) | f980 字标 stamp 落地 | Mixkit |
74
+ | `pop.mp3` | 0.48s | 列表条目逐个落入的短促 pop | f840–865 周报周列表 6 连发,每 5f 一发、音量 0.40→0.25 阶梯递减 | **来源待考** |
75
+ | `impact-transition.mp3` | 4.87s | **死资产:全片未被引用**,与定稿 SFX 同批下载的备用 impact | 无 | Mixkit(同批),未接线 |
76
+ | `typewriter.mp3` | 0.22s | **死资产:全片未被引用**。文档页揭示实际用的是 `keyboard.mp3` 截 44f,此文件下了没接线 | 无 | **来源待考** |
77
+
78
+ 小结:12/14 在片中实际发声;2 个死资产(`impact-transition.mp3`、`typewriter.mp3`)如实保留并标注;2 个来源待考(`pop.mp3`、`typewriter.mp3`)。"Mixkit" 的判定依据是模板片 Main.tsx 的批量声明,无逐文件 URL——**商用前应逐个回查授权**。
79
+
80
+ ---
81
+
82
+ ## 4. 对齐技巧
83
+
84
+ ### 4.1 钉帧方法
85
+
86
+ - **声明式中央注册表**:`SFX: { from, src, volume }[]`,每条注释对应的画面动作;渲染层遍历数组,每条包 `<Sequence from={s.from}>`。帧号表与分镜表(`AIFL_SHOTS`)放同一文件对照(S2)。
87
+ - **长样本靠 Sequence 截断,不剪音频文件**:`keyboard.mp3`(19.6s 原素材)按语境给 `durationInFrames` 24f 或 44f;其余统一 90f 让 ≤3s 素材自然播完。音频时长与画面动作严格等长(S4)。
88
+ - **音量分层**:BGM 0.34 打底,SFX 0.2–0.6 分层——点击确认 0.6 最响、pop 连发尾音 0.25 最轻,用响度表达"这一拍多重要"(曾出现的 0.14 出自已删除的 v2 pluck 连发串,不属于定稿区间)。
89
+
90
+ ### 4.2 变调与防机枪感
91
+
92
+ **本仓库实证无 playbackRate 变调**(模板片全仓 `grep playbackRate` 零命中)。同类元素连发防机枪感靠三招组合(S2),不靠变调:
93
+
94
+ 1. **双样本交替**:连发用两个近似样本轮流(模板片 deck-deal 8 连发 pluck_002/pluck_001 交替)。
95
+ 2. **音量阶梯递减**:沿序列线性衰减做"距离感"——定稿 pop 6 连发 0.40/0.37/0.34/0.31/0.28/0.25。
96
+ 3. **间隔跟随动画曲线加速**:连发间隔贴画面加速节拍收缩(8f→3f);密到糊成一片时**主动让声音淡出成一条 swoosh**,不逐个配音——耳朵和眼睛一样,分辨不出糊掉的个体。
97
+
98
+ 目标听感:连发段落是"数得出来的节奏",不是机械复读(S2 自检项)。
99
+
100
+ ### 4.3 riser→impact:镜头收束句式
101
+
102
+ 大镜头(尤其 outro)的固定三拍:
103
+
104
+ ```
105
+ riser-cine(组装/铺垫段起) → 约 35f 后 impact-cine(主体 stamp 落地,全片响度峰值) → 25f 后 sparkle(余韵光效)
106
+ ```
107
+
108
+ 模板片 f945→f980→f1005,是定稿声音方向确立后唯一从未改动的段落句式——能量铺垫、钉点、余韵三件套一次成型。其它可复用的小句式:场景切换 = `transition-soft` 一发;字卡出场 = `swoosh-quick` 统一音;点击确认 = `click-camera`(给全片最高 SFX 响度)。
109
+
110
+ ### 4.4 返工教训:三次重钉的顺序账
111
+
112
+ 模板片 SFX 全表重钉了三次,其中**两次纯属画面返工的连带成本**(S3):
113
+
114
+ | 次 | 起因 | 性质 |
115
+ |---|---|---|
116
+ | 1 | 音色方向错误(游戏音包→电影系词汇) | 声音自身的返工,难免 |
117
+ | 2 | 画面时间线变更(总长 1020→1085),全表 from 值平移 | **画面没锁就钉音的连带成本** |
118
+ | 3 | 周报段画面加动画,该段 SFX 重写 | 同上(局部) |
119
+
120
+ 规则化:**声音在画面锁定后做;任何改变镜头时长/顺序的修改,收尾动作固定包含"全表 SFX 帧号重对"**(S3)。反面案例:有一次把换 BGM 和 deck-deal 画面重做塞进同一 commit,画面随后又改,音效白钉。
121
+
122
+ ### 4.5 钉帧一律相对 shot 起点,而非绝对帧(硬规则)
123
+
124
+ 模板片的 SFX 表钉**绝对帧号**,单文件数组便于整表平移(第 2 次重钉一个 diff 完成),但绝对帧意味着零结构复用——任何一个镜头改时长,其后所有条目全部失效。
125
+
126
+ 做法:钉帧写成 `SHOTS.<shot>.from + offset`(相对该镜头起点的偏移;卡点片写 `beatF(n)`,见 music-beat-sync.md)。这样镜头内部节拍不变时,改前面镜头的时长只需分镜表更新一处,SFX 自动跟随——绝大部分重钉可免除。新项目起手即按相对钉帧写,绝不写裸数字帧号。
@@ -0,0 +1,50 @@
1
+ // origin: template/src/aifl/Caption.tsx(模板片同源组件)
2
+ import { interpolate, useCurrentFrame } from 'remotion';
3
+
4
+ const MONO = 'ui-monospace, SFMono-Regular, Menlo, monospace';
5
+ const AMBER = 'oklch(52% 0.115 65)';
6
+
7
+ /** Screen-space narration caption: a mono UI info-strip at the bottom of the
8
+ * frame, led by a small amber square. Fades/rises in over 8 frames and fades
9
+ * out over the last 8 of its window. */
10
+ export const Caption: React.FC<{ text: string; duration: number; bottom?: number }> = ({
11
+ text,
12
+ duration,
13
+ bottom = 72,
14
+ }) => {
15
+ const frame = useCurrentFrame();
16
+ const inT = interpolate(frame, [0, 8], [0, 1], {
17
+ extrapolateLeft: 'clamp',
18
+ extrapolateRight: 'clamp',
19
+ });
20
+ const outT = interpolate(frame, [duration - 8, duration], [1, 0], {
21
+ extrapolateLeft: 'clamp',
22
+ extrapolateRight: 'clamp',
23
+ });
24
+
25
+ return (
26
+ <div
27
+ style={{
28
+ position: 'absolute',
29
+ left: 0,
30
+ right: 0,
31
+ bottom,
32
+ display: 'flex',
33
+ justifyContent: 'center',
34
+ alignItems: 'baseline',
35
+ gap: 14,
36
+ fontFamily: MONO,
37
+ fontSize: 22,
38
+ letterSpacing: '0.14em',
39
+ textTransform: 'uppercase',
40
+ color: 'oklch(45% 0.006 82)',
41
+ opacity: inT * outT,
42
+ transform: `translateY(${(1 - inT) * 8}px)`,
43
+ pointerEvents: 'none',
44
+ }}
45
+ >
46
+ <span style={{ width: 6, height: 6, background: AMBER, display: 'inline-block' }} />
47
+ <span>{text}</span>
48
+ </div>
49
+ );
50
+ };
@@ -0,0 +1,45 @@
1
+ // origin: template/src/aifl/DigitRoll.tsx(模板片同源组件)
2
+ import { interpolate, useCurrentFrame, Easing } from 'remotion';
3
+
4
+ const DIGITS = '0123456789';
5
+
6
+ /** Odometer-style digit column roll for monospace numerals. */
7
+ export const DigitRoll: React.FC<{
8
+ value: string;
9
+ delay?: number;
10
+ fontSize?: number;
11
+ color?: string;
12
+ }> = ({ value, delay = 0, fontSize = 30, color = 'oklch(52% 0.115 65)' }) => {
13
+ const frame = useCurrentFrame();
14
+ const lineH = fontSize * 1.15;
15
+ return (
16
+ <span style={{ display: 'inline-flex', overflow: 'hidden', height: lineH, verticalAlign: 'bottom' }}>
17
+ {value.split('').map((ch, i) => {
18
+ const target = DIGITS.indexOf(ch);
19
+ if (target < 0) {
20
+ return (
21
+ <span key={i} style={{ fontSize, lineHeight: `${lineH}px`, color }}>{ch}</span>
22
+ );
23
+ }
24
+ const t = interpolate(frame, [delay + i * 4, delay + i * 4 + 22], [0, 1], {
25
+ extrapolateLeft: 'clamp',
26
+ extrapolateRight: 'clamp',
27
+ easing: Easing.bezier(0.25, 0.8, 0.25, 1),
28
+ });
29
+ // roll through one full strip then land on the target digit
30
+ const offset = (10 + target) * t * lineH;
31
+ return (
32
+ <span key={i} style={{ display: 'inline-block', height: lineH }}>
33
+ <span style={{ display: 'block', transform: `translateY(${-offset}px)` }}>
34
+ {(DIGITS + DIGITS).split('').map((d, j) => (
35
+ <span key={j} style={{ display: 'block', fontSize, lineHeight: `${lineH}px`, color, fontVariantNumeric: 'tabular-nums' }}>
36
+ {d}
37
+ </span>
38
+ ))}
39
+ </span>
40
+ </span>
41
+ );
42
+ })}
43
+ </span>
44
+ );
45
+ };
@@ -0,0 +1,20 @@
1
+ // origin: template/src/aifl/FlashCut.tsx(模板片同源组件)
2
+ import { AbsoluteFill, interpolate, useCurrentFrame } from 'remotion';
3
+
4
+ /** Bright-field cut: a warm-white bloom that flashes over the hard cut. */
5
+ export const FlashCut: React.FC<{ duration?: number }> = ({ duration = 10 }) => {
6
+ const frame = useCurrentFrame();
7
+ const o = interpolate(frame, [0, duration * 0.4, duration], [0, 0.85, 0], {
8
+ extrapolateLeft: 'clamp',
9
+ extrapolateRight: 'clamp',
10
+ });
11
+ return (
12
+ <AbsoluteFill
13
+ style={{
14
+ pointerEvents: 'none',
15
+ opacity: o,
16
+ background: 'radial-gradient(ellipse at 50% 45%, rgba(255,248,235,0.98), rgba(255,244,224,0.55) 55%, transparent 80%)',
17
+ }}
18
+ />
19
+ );
20
+ };