@mevdragon/vidfarm-devcli 0.14.0 → 0.15.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.
- package/.agents/skills/embedded-captions/CATALOG.md +93 -0
- package/.agents/skills/embedded-captions/SKILL.md +286 -0
- package/.agents/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
- package/.agents/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
- package/.agents/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
- package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
- package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
- package/.agents/skills/embedded-captions/dna/README.md +148 -0
- package/.agents/skills/embedded-captions/dna/chrome.json +68 -0
- package/.agents/skills/embedded-captions/dna/cream.json +69 -0
- package/.agents/skills/embedded-captions/dna/documentary.json +62 -0
- package/.agents/skills/embedded-captions/dna/editorial.json +70 -0
- package/.agents/skills/embedded-captions/dna/glitch.json +82 -0
- package/.agents/skills/embedded-captions/dna/ink.json +65 -0
- package/.agents/skills/embedded-captions/dna/keynote.json +62 -0
- package/.agents/skills/embedded-captions/dna/loud.json +75 -0
- package/.agents/skills/embedded-captions/dna/neon.json +58 -0
- package/.agents/skills/embedded-captions/dna/velocity.json +89 -0
- package/.agents/skills/embedded-captions/modes/cinematic/README.md +48 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
- package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
- package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
- package/.agents/skills/embedded-captions/modes/cinematic/engine.html +355 -0
- package/.agents/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
- package/.agents/skills/embedded-captions/modes/standard/_motion.md +192 -0
- package/.agents/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
- package/.agents/skills/embedded-captions/references/aesthetic-principles.md +168 -0
- package/.agents/skills/embedded-captions/references/anti-patterns.md +188 -0
- package/.agents/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
- package/.agents/skills/embedded-captions/references/caption-grouping.md +130 -0
- package/.agents/skills/embedded-captions/references/composition-craft.md +522 -0
- package/.agents/skills/embedded-captions/references/direction-catalog.md +138 -0
- package/.agents/skills/embedded-captions/references/example-renders/champion.html +371 -0
- package/.agents/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
- package/.agents/skills/embedded-captions/references/failure-modes.md +145 -0
- package/.agents/skills/embedded-captions/references/layout-heuristics.md +238 -0
- package/.agents/skills/embedded-captions/references/motion-vocabulary.md +148 -0
- package/.agents/skills/embedded-captions/references/rail.md +68 -0
- package/.agents/skills/embedded-captions/references/reference-bar.md +47 -0
- package/.agents/skills/embedded-captions/references/scene-types.md +94 -0
- package/.agents/skills/embedded-captions/references/test-set.md +66 -0
- package/.agents/skills/embedded-captions/references/typographic-moves.md +266 -0
- package/.agents/skills/embedded-captions/references/typography-presets.md +63 -0
- package/.agents/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
- package/.agents/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
- package/.agents/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
- package/.agents/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
- package/.agents/skills/embedded-captions/scripts/check-timing.cjs +173 -0
- package/.agents/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
- package/.agents/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
- package/.agents/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
- package/.agents/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
- package/.agents/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
- package/.agents/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
- package/.agents/skills/embedded-captions/scripts/make-composition.cjs +404 -0
- package/.agents/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
- package/.agents/skills/embedded-captions/scripts/matte.cjs +294 -0
- package/.agents/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
- package/.agents/skills/embedded-captions/scripts/prepare.sh +39 -0
- package/.agents/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
- package/.agents/skills/embedded-captions/scripts/render-and-composite.sh +509 -0
- package/.agents/skills/embedded-captions/scripts/render-theme.sh +34 -0
- package/.agents/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
- package/.agents/skills/embedded-captions/scripts/transcribe.cjs +349 -0
- package/.agents/skills/embedded-captions/themes/PORTING.md +49 -0
- package/.agents/skills/embedded-captions/themes/README.md +244 -0
- package/.agents/skills/embedded-captions/themes/anchor.json +27 -0
- package/.agents/skills/embedded-captions/themes/arcade.json +51 -0
- package/.agents/skills/embedded-captions/themes/aurora.json +41 -0
- package/.agents/skills/embedded-captions/themes/biolume.json +35 -0
- package/.agents/skills/embedded-captions/themes/brush.json +74 -0
- package/.agents/skills/embedded-captions/themes/chalkboard.json +52 -0
- package/.agents/skills/embedded-captions/themes/dossier.json +56 -0
- package/.agents/skills/embedded-captions/themes/graffiti.json +62 -0
- package/.agents/skills/embedded-captions/themes/hologram.json +41 -0
- package/.agents/skills/embedded-captions/themes/inkwater.json +43 -0
- package/.agents/skills/embedded-captions/themes/laser.json +46 -0
- package/.agents/skills/embedded-captions/themes/lastpage.json +33 -0
- package/.agents/skills/embedded-captions/themes/neonsign.json +53 -0
- package/.agents/skills/embedded-captions/themes/nightcity.json +56 -0
- package/.agents/skills/embedded-captions/themes/ordnance.json +54 -0
- package/.agents/skills/embedded-captions/themes/papercut.json +37 -0
- package/.agents/skills/embedded-captions/themes/popup.json +46 -0
- package/.agents/skills/embedded-captions/themes/ransom.json +62 -0
- package/.agents/skills/embedded-captions/themes/scoreboard.json +54 -0
- package/.agents/skills/embedded-captions/themes/spectrum.json +46 -0
- package/.agents/skills/embedded-captions/themes/stardust.json +29 -0
- package/.agents/skills/embedded-captions/themes/stomp.json +43 -0
- package/.agents/skills/embedded-captions/themes/terminal.json +49 -0
- package/.agents/skills/embedded-captions/themes/thunder.json +44 -0
- package/.agents/skills/embedded-captions/themes/transit.json +44 -0
- package/.agents/skills/embedded-captions/themes/vhs.json +47 -0
- package/.agents/skills/faceless-explainer/SKILL.md +209 -0
- package/.agents/skills/faceless-explainer/references/cut-catalog.md +215 -0
- package/.agents/skills/faceless-explainer/references/motion-language.md +156 -0
- package/.agents/skills/faceless-explainer/references/story-design.md +248 -0
- package/.agents/skills/faceless-explainer/references/visual-design.md +146 -0
- package/.agents/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
- package/.agents/skills/faceless-explainer/scripts/audio.mjs +260 -0
- package/.agents/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
- package/.agents/skills/faceless-explainer/scripts/captions.mjs +508 -0
- package/.agents/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
- package/.agents/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
- package/.agents/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
- package/.agents/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
- package/.agents/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
- package/.agents/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
- package/.agents/skills/faceless-explainer/scripts/transitions.mjs +320 -0
- package/.agents/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
- package/.agents/skills/flockposter/LICENSE +17 -0
- package/.agents/skills/flockposter/README.md +72 -0
- package/.agents/skills/flockposter/SKILL.md +562 -0
- package/.agents/skills/flockposter/examples/cli-instagram-reel.sh +21 -0
- package/.agents/skills/flockposter/examples/cli-multi-platform.json +69 -0
- package/.agents/skills/flockposter/examples/cli-tiktok-upload-only.sh +22 -0
- package/.agents/skills/flockposter/examples/cli-x-thread.sh +17 -0
- package/.agents/skills/flockposter/examples/cli-youtube-short.sh +21 -0
- package/.agents/skills/flockposter/examples/public-api-instagram-reel.json +28 -0
- package/.agents/skills/general-video/SKILL.md +143 -0
- package/.agents/skills/hyperframes/SKILL.md +160 -0
- package/.agents/skills/hyperframes-animation/SKILL.md +84 -0
- package/.agents/skills/hyperframes-animation/adapters/animate-text.md +64 -0
- package/.agents/skills/hyperframes-animation/adapters/animejs.md +114 -0
- package/.agents/skills/hyperframes-animation/adapters/css-animations.md +143 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap.md +105 -0
- package/.agents/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
- package/.agents/skills/hyperframes-animation/adapters/lottie.md +117 -0
- package/.agents/skills/hyperframes-animation/adapters/three.md +131 -0
- package/.agents/skills/hyperframes-animation/adapters/typegpu.md +178 -0
- package/.agents/skills/hyperframes-animation/adapters/waapi.md +101 -0
- package/.agents/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
- package/.agents/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
- package/.agents/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
- package/.agents/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
- package/.agents/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
- package/.agents/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
- package/.agents/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
- package/.agents/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
- package/.agents/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
- package/.agents/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
- package/.agents/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
- package/.agents/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
- package/.agents/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
- package/.agents/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
- package/.agents/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
- package/.agents/skills/hyperframes-animation/blueprints-index.md +146 -0
- package/.agents/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
- package/.agents/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
- package/.agents/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
- package/.agents/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
- package/.agents/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
- package/.agents/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
- package/.agents/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
- package/.agents/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
- package/.agents/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
- package/.agents/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
- package/.agents/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
- package/.agents/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
- package/.agents/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
- package/.agents/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
- package/.agents/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
- package/.agents/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
- package/.agents/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
- package/.agents/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
- package/.agents/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
- package/.agents/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
- package/.agents/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
- package/.agents/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
- package/.agents/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
- package/.agents/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
- package/.agents/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
- package/.agents/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
- package/.agents/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
- package/.agents/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
- package/.agents/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
- package/.agents/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
- package/.agents/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
- package/.agents/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
- package/.agents/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
- package/.agents/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
- package/.agents/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
- package/.agents/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
- package/.agents/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
- package/.agents/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
- package/.agents/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
- package/.agents/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
- package/.agents/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
- package/.agents/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
- package/.agents/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
- package/.agents/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
- package/.agents/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
- package/.agents/skills/hyperframes-animation/rules/viewport-change.md +349 -0
- package/.agents/skills/hyperframes-animation/rules-index.md +86 -0
- package/.agents/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
- package/.agents/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
- package/.agents/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
- package/.agents/skills/hyperframes-animation/techniques.md +507 -0
- package/.agents/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
- package/.agents/skills/hyperframes-animation/transitions/catalog.md +127 -0
- package/.agents/skills/hyperframes-animation/transitions/css-3d.md +12 -0
- package/.agents/skills/hyperframes-animation/transitions/css-blur.md +51 -0
- package/.agents/skills/hyperframes-animation/transitions/css-cover.md +43 -0
- package/.agents/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
- package/.agents/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
- package/.agents/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
- package/.agents/skills/hyperframes-animation/transitions/css-grid.md +10 -0
- package/.agents/skills/hyperframes-animation/transitions/css-light.md +49 -0
- package/.agents/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
- package/.agents/skills/hyperframes-animation/transitions/css-other.md +25 -0
- package/.agents/skills/hyperframes-animation/transitions/css-push.md +41 -0
- package/.agents/skills/hyperframes-animation/transitions/css-radial.md +37 -0
- package/.agents/skills/hyperframes-animation/transitions/css-scale.md +24 -0
- package/.agents/skills/hyperframes-animation/transitions/overview.md +153 -0
- package/.agents/skills/hyperframes-cli/SKILL.md +113 -0
- package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
- package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +55 -0
- package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
- package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
- package/.agents/skills/hyperframes-cli/references/preview-render.md +149 -0
- package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
- package/.agents/skills/hyperframes-core/SKILL.md +78 -0
- package/.agents/skills/hyperframes-core/references/composition-patterns.md +263 -0
- package/.agents/skills/hyperframes-core/references/data-attributes.md +70 -0
- package/.agents/skills/hyperframes-core/references/determinism-rules.md +68 -0
- package/.agents/skills/hyperframes-core/references/full-screen-motion.md +62 -0
- package/.agents/skills/hyperframes-core/references/minimal-composition.md +66 -0
- package/.agents/skills/hyperframes-core/references/script-format.md +49 -0
- package/.agents/skills/hyperframes-core/references/storyboard-format.md +95 -0
- package/.agents/skills/hyperframes-core/references/sub-compositions.md +237 -0
- package/.agents/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
- package/.agents/skills/hyperframes-core/references/tailwind.md +125 -0
- package/.agents/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
- package/.agents/skills/hyperframes-core/references/variables-and-media.md +90 -0
- package/.agents/skills/hyperframes-creative/SKILL.md +70 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
- package/.agents/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/monochrome.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
- package/.agents/skills/hyperframes-creative/references/audio-reactive.md +76 -0
- package/.agents/skills/hyperframes-creative/references/beat-direction.md +164 -0
- package/.agents/skills/hyperframes-creative/references/composition-patterns.md +199 -0
- package/.agents/skills/hyperframes-creative/references/data-in-motion.md +19 -0
- package/.agents/skills/hyperframes-creative/references/design-adherence.md +19 -0
- package/.agents/skills/hyperframes-creative/references/design-picker.md +123 -0
- package/.agents/skills/hyperframes-creative/references/design-spec.md +55 -0
- package/.agents/skills/hyperframes-creative/references/house-style.md +73 -0
- package/.agents/skills/hyperframes-creative/references/motion-principles.md +150 -0
- package/.agents/skills/hyperframes-creative/references/narration.md +92 -0
- package/.agents/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
- package/.agents/skills/hyperframes-creative/references/typography.md +218 -0
- package/.agents/skills/hyperframes-creative/references/video-composition.md +63 -0
- package/.agents/skills/hyperframes-creative/references/visual-styles.md +457 -0
- package/.agents/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
- package/.agents/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
- package/.agents/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
- package/.agents/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
- package/.agents/skills/hyperframes-creative/templates/design-picker.html +1432 -0
- package/.agents/skills/hyperframes-keyframes/SKILL.md +237 -0
- package/.agents/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
- package/.agents/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
- package/.agents/skills/motion-graphics/SKILL.md +172 -0
- package/.agents/skills/motion-graphics/agents/builder.md +40 -0
- package/.agents/skills/motion-graphics/agents/director.md +53 -0
- package/.agents/skills/motion-graphics/agents/finalize.md +17 -0
- package/.agents/skills/motion-graphics/catalog-map.md +40 -0
- package/.agents/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
- package/.agents/skills/motion-graphics/categories/charts/module.md +21 -0
- package/.agents/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
- package/.agents/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
- package/.agents/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
- package/.agents/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
- package/.agents/skills/motion-graphics/categories/maps/module.md +61 -0
- package/.agents/skills/motion-graphics/categories/news/module.md +56 -0
- package/.agents/skills/motion-graphics/categories/stat/module.md +21 -0
- package/.agents/skills/motion-graphics/categories/tweet/module.md +16 -0
- package/.agents/skills/motion-graphics/categories/webpage/module.md +21 -0
- package/.agents/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
- package/.agents/skills/motion-graphics/grounding/locate.mjs +227 -0
- package/.agents/skills/motion-graphics/phases/source/guide.md +21 -0
- package/.agents/skills/motion-graphics/references/builder-contract.md +38 -0
- package/.agents/skills/motion-graphics/references/motion-vocabulary.md +43 -0
- package/.agents/skills/motion-graphics/references/shot-plan-ir.md +54 -0
- package/.agents/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
- package/.agents/skills/product-launch-video/SKILL.md +208 -0
- package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
- package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
- package/.agents/skills/product-launch-video/references/story-design.md +373 -0
- package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
- package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
- package/.agents/skills/product-launch-video/scripts/audio.mjs +260 -0
- package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
- package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
- package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
- package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
- package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
- package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
- package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
- package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
- package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
- package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
- package/.agents/skills/product-launch-video/scripts/transitions.mjs +327 -0
- package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
- package/.agents/skills/slideshow/SKILL.md +550 -0
- package/.agents/skills/slideshow/references/standalone-harness.md +1020 -0
- package/.agents/skills/talking-head-recut/NOTICE.md +39 -0
- package/.agents/skills/talking-head-recut/SKILL.md +1195 -0
- package/.agents/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
- package/.agents/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
- package/.agents/skills/talking-head-recut/references/frames/clean.html +92 -0
- package/.agents/skills/talking-head-recut/references/frames/hairline.html +171 -0
- package/.agents/skills/talking-head-recut/references/frames/polaroid.html +131 -0
- package/.agents/skills/talking-head-recut/references/layouts/overlay.html +164 -0
- package/.agents/skills/talking-head-recut/references/layouts/pip.html +143 -0
- package/.agents/skills/talking-head-recut/references/layouts/split.html +121 -0
- package/.agents/skills/talking-head-recut/references/layouts/stack.html +109 -0
- package/.agents/skills/talking-head-recut/references/styles/academic.html +172 -0
- package/.agents/skills/talking-head-recut/references/styles/audit.html +170 -0
- package/.agents/skills/talking-head-recut/references/styles/editorial.html +189 -0
- package/.agents/skills/talking-head-recut/references/styles/geom.html +181 -0
- package/.agents/skills/talking-head-recut/references/styles/minimal.html +130 -0
- package/.agents/skills/talking-head-recut/references/styles/spotlight.html +142 -0
- package/.agents/skills/talking-head-recut/references/styles/swiss.html +188 -0
- package/.agents/skills/talking-head-recut/references/styles/terminal.html +196 -0
- package/.agents/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
- package/.agents/skills/talking-head-recut/references/styles/xhs.html +206 -0
- package/.agents/skills/vidfarm-media/SKILL.md +85 -0
- package/.agents/skills/vidfarm-media/references/tts.md +54 -0
- package/.agents/skills/vidfarm-media/scripts/audio.mjs +628 -0
- package/.agents/skills/vidfarm-media/scripts/wait-bgm.mjs +31 -0
- package/.agents/skills/website-to-video/SKILL.md +145 -0
- package/.agents/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
- package/.agents/skills/website-to-video/assets/sfx/manifest.json +97 -0
- package/.agents/skills/website-to-video/references/beat-builder-guide.md +263 -0
- package/.agents/skills/website-to-video/references/capabilities.md +713 -0
- package/.agents/skills/website-to-video/references/step-0-capture.md +55 -0
- package/.agents/skills/website-to-video/references/step-1-design.md +333 -0
- package/.agents/skills/website-to-video/references/step-2-brief.md +178 -0
- package/.agents/skills/website-to-video/references/step-3-storyboard.md +572 -0
- package/.agents/skills/website-to-video/references/step-4-vo.md +225 -0
- package/.agents/skills/website-to-video/references/step-5-build.md +483 -0
- package/.agents/skills/website-to-video/references/step-6-validate.md +341 -0
- package/.agents/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
- package/SKILL.director.md +37 -0
- package/SKILL.platform.md +6 -1
- package/demo/dist/app.js +295 -11
- package/dist/src/app.js +317 -133
- package/dist/src/cli.js +529 -12
- package/dist/src/composition-runtime.js +262 -3
- package/dist/src/devcli/doctor.js +192 -0
- package/dist/src/devcli/hyperframes-cli.js +118 -0
- package/dist/src/devcli/skills.js +476 -0
- package/dist/src/devcli/stills.js +249 -0
- package/dist/src/editor-chat.js +255 -0
- package/dist/src/hyperframes/composition.js +5 -5
- package/dist/src/services/composition-lint.js +199 -0
- package/dist/src/services/hyperframes.js +67 -13
- package/package.json +2 -1
package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<!--
|
|
3
|
+
TEMPLATE: portrait-header
|
|
4
|
+
STYLE LOCKED. LAYOUT OPEN.
|
|
5
|
+
|
|
6
|
+
Look: 9:16 portrait talking-head, captions on a horizontal strip across
|
|
7
|
+
the top above the subject. Optional crown at bottom if waist+ visible.
|
|
8
|
+
|
|
9
|
+
Locked: 5 typography slots (intro/phrase/emph/dream/crown), screen blend,
|
|
10
|
+
single-caption swap (caps absolute-positioned in header strip).
|
|
11
|
+
|
|
12
|
+
Open via plan.json: header strip top/height, crown enable+top, font_scale.
|
|
13
|
+
-->
|
|
14
|
+
<html lang="en">
|
|
15
|
+
<head>
|
|
16
|
+
<meta charset="UTF-8" />
|
|
17
|
+
<meta name="viewport" content="width={{WIDTH}}, height={{HEIGHT}}" />
|
|
18
|
+
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
|
19
|
+
<style>
|
|
20
|
+
:root { --font-scale: {{FONT_SCALE}}; }
|
|
21
|
+
|
|
22
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
23
|
+
html, body {
|
|
24
|
+
margin: 0;
|
|
25
|
+
width: {{WIDTH}}px; height: {{HEIGHT}}px;
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
background: #000;
|
|
28
|
+
font-family: "Inter", system-ui, sans-serif;
|
|
29
|
+
}
|
|
30
|
+
#a-roll { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
|
|
31
|
+
#stage {
|
|
32
|
+
position: absolute;
|
|
33
|
+
top: 0; left: 0;
|
|
34
|
+
width: {{WIDTH}}px; height: {{HEIGHT}}px;
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
z-index: 2;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* LAYOUT */
|
|
40
|
+
.header-plane {
|
|
41
|
+
position: absolute;
|
|
42
|
+
top: {{HEADER_TOP}}px;
|
|
43
|
+
left: 0; right: 0;
|
|
44
|
+
height: {{HEADER_HEIGHT}}px;
|
|
45
|
+
padding: 24px 40px;
|
|
46
|
+
}
|
|
47
|
+
.header-plane .cap {
|
|
48
|
+
position: absolute;
|
|
49
|
+
top: 24px;
|
|
50
|
+
left: 40px; right: 40px;
|
|
51
|
+
max-width: calc(100% - 80px);
|
|
52
|
+
text-align: center;
|
|
53
|
+
}
|
|
54
|
+
.crown-plane {
|
|
55
|
+
position: absolute;
|
|
56
|
+
top: {{CROWN_TOP}}px;
|
|
57
|
+
left: 0; right: 0;
|
|
58
|
+
text-align: center;
|
|
59
|
+
pointer-events: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* STYLE (locked) */
|
|
63
|
+
.cap {
|
|
64
|
+
display: block;
|
|
65
|
+
position: relative;
|
|
66
|
+
line-height: 1.05;
|
|
67
|
+
opacity: 0;
|
|
68
|
+
mix-blend-mode: {{BLEND_MODE}};
|
|
69
|
+
color: {{CAP_COLOR}};
|
|
70
|
+
text-shadow: {{TEXT_SHADOW}};
|
|
71
|
+
filter: {{TEXT_FILTER}};
|
|
72
|
+
will-change: transform, opacity;
|
|
73
|
+
}
|
|
74
|
+
.cap .w { display: inline-block; opacity: 0; will-change: opacity, transform; }
|
|
75
|
+
|
|
76
|
+
.cap-intro { font-size: calc(72px * var(--font-scale));
|
|
77
|
+
font-weight: 500; font-style: italic;
|
|
78
|
+
letter-spacing: -0.005em; line-height: 1.1; }
|
|
79
|
+
.cap-phrase { font-size: calc(88px * var(--font-scale));
|
|
80
|
+
font-weight: 600;
|
|
81
|
+
letter-spacing: -0.015em; line-height: 1.05; }
|
|
82
|
+
.cap-emph { font-size: calc(104px * var(--font-scale));
|
|
83
|
+
font-weight: 800;
|
|
84
|
+
letter-spacing: -0.025em; line-height: 1.0; }
|
|
85
|
+
.cap-dream { font-size: calc(92px * var(--font-scale));
|
|
86
|
+
font-weight: 700; font-style: italic;
|
|
87
|
+
letter-spacing: -0.015em; line-height: 1.05; }
|
|
88
|
+
.cap-crown { font-size: calc(130px * var(--font-scale));
|
|
89
|
+
font-weight: 900;
|
|
90
|
+
letter-spacing: -0.035em; text-transform: uppercase;
|
|
91
|
+
line-height: 1.0; }
|
|
92
|
+
</style>
|
|
93
|
+
</head>
|
|
94
|
+
<body>
|
|
95
|
+
<div
|
|
96
|
+
id="root"
|
|
97
|
+
data-composition-id="main"
|
|
98
|
+
data-start="0"
|
|
99
|
+
data-duration="{{DURATION}}"
|
|
100
|
+
data-width="{{WIDTH}}"
|
|
101
|
+
data-height="{{HEIGHT}}"
|
|
102
|
+
>
|
|
103
|
+
<video
|
|
104
|
+
id="a-roll"
|
|
105
|
+
src="source.mp4"
|
|
106
|
+
muted
|
|
107
|
+
playsinline
|
|
108
|
+
data-duration="{{DURATION}}"
|
|
109
|
+
data-track-index="0"
|
|
110
|
+
style="z-index: 1"
|
|
111
|
+
></video>
|
|
112
|
+
|
|
113
|
+
<div id="stage">
|
|
114
|
+
<div class="header-plane">{{GROUPS_HTML}}</div>
|
|
115
|
+
<div class="crown-plane">{{CROWN_HTML}}</div>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<audio
|
|
119
|
+
id="a-roll-audio"
|
|
120
|
+
src="source.mp4"
|
|
121
|
+
data-start="0"
|
|
122
|
+
data-duration="{{DURATION}}"
|
|
123
|
+
data-track-index="3"
|
|
124
|
+
data-volume="1"
|
|
125
|
+
></audio>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<script>
|
|
129
|
+
window.__timelines = window.__timelines || {};
|
|
130
|
+
const tl = gsap.timeline({ paused: true });
|
|
131
|
+
const DUR = {{DURATION}};
|
|
132
|
+
const GROUPS = {{GROUPS_JSON}};
|
|
133
|
+
const CROWN = {{CROWN_JSON}};
|
|
134
|
+
|
|
135
|
+
function animateGroup(g) {
|
|
136
|
+
var sel = "#" + g.id;
|
|
137
|
+
var isSoft = g.tone === "soft";
|
|
138
|
+
tl.set(sel, { opacity: 1, y: 0 }, Math.max(0, g.in - 0.01));
|
|
139
|
+
|
|
140
|
+
g.words.forEach(function (w, i) {
|
|
141
|
+
var wsel = sel + " .w[data-i='" + i + "']";
|
|
142
|
+
if (isSoft) {
|
|
143
|
+
tl.fromTo(wsel,
|
|
144
|
+
{ opacity: 0, y: 8 },
|
|
145
|
+
{ opacity: 1, y: 0, duration: 0.42, ease: "power2.out", overwrite: "auto" },
|
|
146
|
+
w.start);
|
|
147
|
+
} else {
|
|
148
|
+
tl.fromTo(wsel,
|
|
149
|
+
{ opacity: 0, y: 6, scale: 1.04 },
|
|
150
|
+
{ opacity: 1, y: 0, scale: 1.0, duration: 0.22,
|
|
151
|
+
ease: "power3.out", overwrite: "auto", transformOrigin: "50% 50%" },
|
|
152
|
+
w.start);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
if (g.out < DUR) {
|
|
157
|
+
tl.to(sel, { opacity: 0, duration: 0.45, ease: "power2.in", overwrite: "auto" },
|
|
158
|
+
g.out - 0.45);
|
|
159
|
+
}
|
|
160
|
+
tl.set(sel, { opacity: 0, visibility: "hidden" }, g.out);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
GROUPS.forEach(animateGroup);
|
|
164
|
+
if (CROWN) animateGroup(CROWN);
|
|
165
|
+
|
|
166
|
+
tl.seek(0);
|
|
167
|
+
window.__timelines["main"] = tl;
|
|
168
|
+
</script>
|
|
169
|
+
</body>
|
|
170
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# cinematic-cream — spec
|
|
2
|
+
|
|
3
|
+
The authoritative spec lives in [template.html](template.html)'s header comment (DNA-only:
|
|
4
|
+
what's LOCKED vs OPEN, the LAYOUT/planes contract, READING ORDER + hand-off, hero sizing).
|
|
5
|
+
Read that header before authoring plan.json. Quick contract:
|
|
6
|
+
|
|
7
|
+
- LOCKED: Inter, soft/present motion, warm-cream palette, screen blend, shadow logic.
|
|
8
|
+
- OPEN per group (css field): size/weight/style/transform/spacing + position WITHIN a plane.
|
|
9
|
+
- LAYOUT: run scripts/safe-zones.cjs first. Narration planes HUG the silhouette — use
|
|
10
|
+
zones.hugLeft/hugRight (2-6% gap from the subject's edge); a plane parked in the far
|
|
11
|
+
corner reads as disconnected floating text, not an embed. The ONE hero stays BIG
|
|
12
|
+
(~0.22-0.34·h) centered ON the subject (heroAnchor / heroBands.best), target ~30-55%
|
|
13
|
+
occlusion. fg is the LAST resort: only when heroBands.feasible=false (no band ≤62%).
|
|
14
|
+
hero BIG (~0.22-0.34·h) centered ON the subject (heroAnchor), target ~30-55% occlusion.
|
|
15
|
+
- plan.json: groups[] with per-word transcript timings (use scripts/fill-timings.cjs),
|
|
16
|
+
fit via scripts/fit-fonts.cjs, compile via scripts/make-composition.cjs.
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<!--
|
|
3
|
+
TEMPLATE: cinematic-cream
|
|
4
|
+
DNA-ONLY template. No slot structure. No preset typography classes.
|
|
5
|
+
The agent composes each caption group's typography per-scene via the
|
|
6
|
+
plan.json `css` field.
|
|
7
|
+
|
|
8
|
+
What's LOCKED (DNA — do not override):
|
|
9
|
+
- font-family: Inter (+ fallback)
|
|
10
|
+
- Motion vocabulary: per-word soft/present reveal curves from the
|
|
11
|
+
validated memory-wall timeline (tone: "soft" | "present")
|
|
12
|
+
- Color palette defaults (cream on dark scenes, deep warm on light)
|
|
13
|
+
- mix-blend-mode defaults, text-shadow / filter auto-picked from
|
|
14
|
+
cap_color luminance (via make-composition.py)
|
|
15
|
+
- Animation: 0.7s container fade-in (at g.in-0.01 via tl.set), per-word
|
|
16
|
+
reveal at w.start, group fade-out 0.5s before g.out
|
|
17
|
+
|
|
18
|
+
What's OPEN per group (agent decides per scene via `css` field):
|
|
19
|
+
- font-size, font-weight, font-style (italic or not), text-transform
|
|
20
|
+
(uppercase or not), letter-spacing, line-height
|
|
21
|
+
- Position: top / left / right / bottom / transform / text-align
|
|
22
|
+
- Layer: bg (embed via matte) | fg (announcement on top)
|
|
23
|
+
- Tone: soft | present (motion curve)
|
|
24
|
+
- scale: optional shortcut for size multiplication
|
|
25
|
+
|
|
26
|
+
LAYOUT — FIRST run the safe-zone precompute, THEN compose into PLANES:
|
|
27
|
+
- Run `node scripts/safe-zones.cjs <project>` and read `safe-zones.json`. From the
|
|
28
|
+
matte it gives subject coverage%, the clearer side, the largest CLEAN rectangles
|
|
29
|
+
(left/right/top), and a verdict:
|
|
30
|
+
· "fg" → subject fills the frame; NO room to embed behind it. Use
|
|
31
|
+
`caption_layer:"fg"` (screen-blend on top). Do NOT fight it with bg embeds —
|
|
32
|
+
that's the 9:16 case that costs many failed occlusion rounds.
|
|
33
|
+
· "embed"→ NARRATION planes go INSIDE the reported clean zones (prefer the clearer
|
|
34
|
+
side / top). The HERO is the EXCEPTION — see the next bullet. Don't guess
|
|
35
|
+
narration positions — use the zones safe-zones gives you.
|
|
36
|
+
- NARRATION: define 2-4 named planes in plan.json `planes {}`, each inside a clean zone
|
|
37
|
+
from safe-zones.json. Give each narration group a `plane`; groups STACK within it (a
|
|
38
|
+
plane is a flex column → lines accumulate, aligned + coherent). Narration must be CLEAR.
|
|
39
|
+
- THE HERO (the one promoted peak word) is the OPPOSITE of narration — BIG, and ON the
|
|
40
|
+
subject. It is the scarce, earned PEAK; it must feel like it BURSTS, not a polite label:
|
|
41
|
+
· BIG + dominant — **~0.22–0.34 × frame height**. Give it a WIDE plane (≈ centered,
|
|
42
|
+
spanning the subject), NEVER a narrow margin column. (fit-fonts won't enlarge — if
|
|
43
|
+
the hero's box is narrow it stays small; widen the box.)
|
|
44
|
+
· CENTERED on the subject (use safe-zones `heroAnchor` = the subject's center),
|
|
45
|
+
CROSSING it so the head/torso occludes the MIDDLE — **target ~30–55% occlusion**.
|
|
46
|
+
That occlusion IS the effect. A hero shoved into a clean margin (~10% graze) is
|
|
47
|
+
WRONG — it reads as a small floating word, not an embed behind the subject.
|
|
48
|
+
· Exactly ONE hero per clip (scarcity = impact). Mark it `"hero": true` in the plan.
|
|
49
|
+
- Do NOT hand-position every group with its own scattered absolute `top%` — that
|
|
50
|
+
produces the unbalanced, occluded layouts the gate rejects (many re-tries). Planes
|
|
51
|
+
first; per-group `css` only fine-tunes WITHIN a plane. (Position fields above apply
|
|
52
|
+
per-group only when a group is NOT in a plane — the exception, not the default.)
|
|
53
|
+
|
|
54
|
+
READING ORDER — on-screen position follows SPOKEN order; a promoted word appears once:
|
|
55
|
+
- For groups sharing a column/region, vertical (top→bottom) order MUST match spoken
|
|
56
|
+
order. A promoted hero must NOT sit below words that come after it.
|
|
57
|
+
(e.g. "judge us by the [ACTIONS] that we take" → ACTIONS reads BETWEEN "by the" and
|
|
58
|
+
"that we take", NEVER below "that we take".)
|
|
59
|
+
- The promoted word is lifted OUT of the narration (appears once, as the hero — never
|
|
60
|
+
also in a narration line). For the words AFTER it, two options, in order:
|
|
61
|
+
1. PREFERRED — flow them directly BELOW the hero (in reading order) or merge them
|
|
62
|
+
into the hero's group, IF that area is clean (check safe-zones). One continuous
|
|
63
|
+
read, no clearing.
|
|
64
|
+
2. FALLBACK — if below/merge would land on the subject (occluded), do the Standard
|
|
65
|
+
hand-off: the pre-hero narration CLEARS, then the post-hero words appear fresh
|
|
66
|
+
(page-flip); the hero may hold across the flip.
|
|
67
|
+
Prefer promoting a CLAUSE-FINAL word when you can — then nothing follows to place.
|
|
68
|
+
|
|
69
|
+
Philosophy:
|
|
70
|
+
- Number of groups = content decides (3? 7? 12? whatever the speech
|
|
71
|
+
warrants)
|
|
72
|
+
- Each group's typography = scene decides (italic for soft moments,
|
|
73
|
+
uppercase for punch, mixed case for narration — per group)
|
|
74
|
+
- No more "cap-1 must be italic 600" rules. Those were slots.
|
|
75
|
+
- The agent reads the scene + transcript and composes. The template
|
|
76
|
+
only guarantees the DNA feels coherent (Inter family, same motion
|
|
77
|
+
library, warm-cream or deep-warm palette, same shadow logic).
|
|
78
|
+
|
|
79
|
+
See `references/typographic-moves.md` for RECOMMENDED typography
|
|
80
|
+
combinations (NOT rules) — italic 600 for openers, uppercase 900 for
|
|
81
|
+
climaxes, etc. These are suggestions the agent can pick from or deviate.
|
|
82
|
+
-->
|
|
83
|
+
<html lang="en">
|
|
84
|
+
<head>
|
|
85
|
+
<meta charset="UTF-8" />
|
|
86
|
+
<meta name="viewport" content="width={{WIDTH}}, height={{HEIGHT}}" />
|
|
87
|
+
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
|
88
|
+
<style>
|
|
89
|
+
:root { --font-scale: {{FONT_SCALE}}; --h: {{HEIGHT}}px; --w: {{WIDTH}}px; }
|
|
90
|
+
|
|
91
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
92
|
+
html, body {
|
|
93
|
+
margin: 0;
|
|
94
|
+
width: {{WIDTH}}px; height: {{HEIGHT}}px;
|
|
95
|
+
overflow: hidden;
|
|
96
|
+
background: #000;
|
|
97
|
+
font-family: "Inter", "Helvetica Neue", system-ui, sans-serif;
|
|
98
|
+
}
|
|
99
|
+
#a-roll { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
|
|
100
|
+
#stage {
|
|
101
|
+
position: absolute;
|
|
102
|
+
top: 0; left: 0;
|
|
103
|
+
width: {{WIDTH}}px; height: {{HEIGHT}}px;
|
|
104
|
+
pointer-events: none;
|
|
105
|
+
z-index: 2;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* BASE — everything shared across groups */
|
|
109
|
+
.cap {
|
|
110
|
+
display: block;
|
|
111
|
+
position: absolute;
|
|
112
|
+
opacity: 0;
|
|
113
|
+
mix-blend-mode: {{BLEND_MODE}};
|
|
114
|
+
color: {{CAP_COLOR}};
|
|
115
|
+
text-shadow: {{TEXT_SHADOW}};
|
|
116
|
+
filter: {{TEXT_FILTER}};
|
|
117
|
+
line-height: 1.0;
|
|
118
|
+
will-change: transform, opacity;
|
|
119
|
+
/* Free-mode defaults (when cap is a direct child of #stage):
|
|
120
|
+
per-group `top:` positions the element's TOP edge from the
|
|
121
|
+
frame top. Agent writes top/left/right per group. */
|
|
122
|
+
top: 50%; left: 0; right: 0; text-align: center;
|
|
123
|
+
}
|
|
124
|
+
.cap .w { display: inline-block; opacity: 0; will-change: opacity, transform; }
|
|
125
|
+
|
|
126
|
+
/* Plane mode — when .cap is nested inside .plane, switch to flow
|
|
127
|
+
layout so the plane's flex/grid can own the stacking. Agent writes
|
|
128
|
+
typography only per group; positions are delegated to the plane.
|
|
129
|
+
This is the memory-wall / champion architecture: a shared parent
|
|
130
|
+
container handles spatial coherence, caps inside don't fight for
|
|
131
|
+
top% values. */
|
|
132
|
+
.plane { position: absolute; pointer-events: none; }
|
|
133
|
+
.plane > .cap {
|
|
134
|
+
position: relative;
|
|
135
|
+
top: auto; left: auto; right: auto; bottom: auto;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
{{PLANES_CSS}}
|
|
139
|
+
|
|
140
|
+
/* Per-group typography (agent-authored). */
|
|
141
|
+
{{CUSTOM_CSS}}
|
|
142
|
+
</style>
|
|
143
|
+
</head>
|
|
144
|
+
<body>
|
|
145
|
+
<div
|
|
146
|
+
id="root"
|
|
147
|
+
data-composition-id="main"
|
|
148
|
+
data-start="0"
|
|
149
|
+
data-duration="{{DURATION}}"
|
|
150
|
+
data-width="{{WIDTH}}"
|
|
151
|
+
data-height="{{HEIGHT}}"
|
|
152
|
+
>
|
|
153
|
+
<video
|
|
154
|
+
id="a-roll"
|
|
155
|
+
src="source.mp4"
|
|
156
|
+
muted
|
|
157
|
+
playsinline
|
|
158
|
+
data-duration="{{DURATION}}"
|
|
159
|
+
data-track-index="0"
|
|
160
|
+
style="z-index: 1"
|
|
161
|
+
></video>
|
|
162
|
+
|
|
163
|
+
<div id="stage">{{GROUPS_HTML}}</div>
|
|
164
|
+
|
|
165
|
+
<audio
|
|
166
|
+
id="a-roll-audio"
|
|
167
|
+
src="source.mp4"
|
|
168
|
+
data-start="0"
|
|
169
|
+
data-duration="{{DURATION}}"
|
|
170
|
+
data-track-index="3"
|
|
171
|
+
data-volume="1"
|
|
172
|
+
></audio>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<script>
|
|
176
|
+
window.__timelines = window.__timelines || {};
|
|
177
|
+
const tl = gsap.timeline({ paused: true });
|
|
178
|
+
const DUR = {{DURATION}};
|
|
179
|
+
const GROUPS = {{GROUPS_JSON}};
|
|
180
|
+
|
|
181
|
+
/* Motion vocabulary — LOCKED.
|
|
182
|
+
soft: gentle fade with 8px y-drift, 0.45s power2.out
|
|
183
|
+
present: snappier pop with 6px y + 1.04 scale, 0.22s power3.out
|
|
184
|
+
Both target per-WORD spans. Container fade-in via tl.set at g.in-0.01. */
|
|
185
|
+
GROUPS.forEach(function (g) {
|
|
186
|
+
var sel = "#" + g.id;
|
|
187
|
+
var isSoft = g.tone === "soft";
|
|
188
|
+
|
|
189
|
+
// Enter: reveal opacity at g.in-0.01. The cap has been reserving flex
|
|
190
|
+
// space all along (opacity: 0 but display: block from CSS), so no
|
|
191
|
+
// layout reflow when it fades in — matches memory-wall canonical.
|
|
192
|
+
tl.set(sel, { opacity: 1 }, Math.max(0, g.in - 0.01));
|
|
193
|
+
|
|
194
|
+
g.words.forEach(function (w, i) {
|
|
195
|
+
var wsel = sel + " .w[data-i='" + i + "']";
|
|
196
|
+
if (isSoft) {
|
|
197
|
+
tl.fromTo(wsel,
|
|
198
|
+
{ opacity: 0, y: 8 },
|
|
199
|
+
{ opacity: 1, y: 0, duration: 0.45, ease: "power2.out", overwrite: "auto" },
|
|
200
|
+
w.start);
|
|
201
|
+
} else {
|
|
202
|
+
tl.fromTo(wsel,
|
|
203
|
+
{ opacity: 0, y: 6, scale: 1.04 },
|
|
204
|
+
{ opacity: 1, y: 0, scale: 1.0, duration: 0.22,
|
|
205
|
+
ease: "power3.out", overwrite: "auto", transformOrigin: "50% 50%" },
|
|
206
|
+
w.start);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
if (g.out < DUR) {
|
|
211
|
+
tl.to(sel, { opacity: 0, duration: 0.5, ease: "power2.in", overwrite: "auto" },
|
|
212
|
+
g.out - 0.5);
|
|
213
|
+
}
|
|
214
|
+
// Exit: display:none releases flex space so the next sentence-block's
|
|
215
|
+
// caps can take the top slot. All caps in ONE block share the same
|
|
216
|
+
// `out` so this fires synchronously for the block — one clean reflow
|
|
217
|
+
// at the boundary, no per-cap jitter. Plan must share `out` within a
|
|
218
|
+
// block; staggered per-cap exits are forbidden in plane mode.
|
|
219
|
+
tl.set(sel, { opacity: 0, display: "none" }, g.out);
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
tl.seek(0);
|
|
223
|
+
window.__timelines["main"] = tl;
|
|
224
|
+
</script>
|
|
225
|
+
</body>
|
|
226
|
+
</html>
|