@biunow/agent-biuvibe 0.0.0-stage → 1.0.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/bin/server.js +325 -0
- package/data/columns.json +230 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/SKILL.md +116 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/references//345/215/241/347/202/271/344/270/216/351/237/263/346/225/210.md +56 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/references//345/260/201/351/235/242/344/270/216/345/217/221/345/270/203.md +68 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/references//347/224/273/351/235/242/344/270/216/351/225/234/345/244/264.md +56 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/references//351/200/211/351/242/230/344/270/216/350/204/232/346/234/254.md +59 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/scripts/qa.mjs +98 -0
- package/engine/.claude/skills/weilanx-creator-blackgold-video/scripts/subtitles.mjs +53 -0
- package/engine/.claude/skills/weilanx-creator-desk-video/SKILL.md +124 -0
- package/engine/.claude/skills/weilanx-creator-desk-video/references//345/267/245/347/250/213/346/250/241/346/235/277.md +278 -0
- package/engine/.claude/skills/weilanx-creator-desk-video/references//347/224/273/351/235/242/351/205/215/346/226/271.md +94 -0
- package/engine/.claude/skills/weilanx-creator-distill-video/SKILL.md +98 -0
- package/engine/.claude/skills/weilanx-creator-distill-video/references//346/213/206/350/247/243/346/226/271/346/263/225.md +42 -0
- package/engine/.claude/skills/weilanx-creator-distill-video/references//351/205/215/346/226/271/345/215/241/346/250/241/346/235/277.md +66 -0
- package/engine/.claude/skills/weilanx-creator-distill-video/scripts/analyze.py +211 -0
- package/engine/.claude/skills/weilanx-creator-distill-video/scripts/strip.py +52 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/SKILL.md +155 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/references//345/215/241/347/202/271/344/270/216/351/237/263/346/225/210.md +82 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/references//345/260/201/351/235/242/344/270/216/345/217/221/345/270/203.md +89 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/references//346/225/260/346/215/256/345/244/215/347/233/230.md +36 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/references//347/224/273/351/235/242/344/270/216/351/225/234/345/244/264.md +60 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/references//351/200/211/351/242/230/344/270/216/345/217/231/344/272/213.md +61 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/scripts/qa.mjs +94 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/scripts/stats.py +57 -0
- package/engine/.claude/skills/weilanx-creator-fps-video/scripts/subtitle-doc.mjs +37 -0
- package/engine/.claude/skills/weilanx-creator-gilded-video/SKILL.md +102 -0
- package/engine/.claude/skills/weilanx-creator-gilded-video/references//345/217/231/344/272/213/344/270/216/345/255/227/345/271/225.md +64 -0
- package/engine/.claude/skills/weilanx-creator-gilded-video/references//347/224/273/351/235/242/344/270/216/350/275/254/345/234/272.md +80 -0
- package/engine/.claude/skills/weilanx-creator-gilded-video/references//351/205/215/344/271/220/344/270/216/345/215/241/347/202/271.md +56 -0
- package/engine/.claude/skills/weilanx-creator-gilded-video/scripts/beats.py +99 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/SKILL.md +124 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/references//345/217/231/344/272/213/344/270/216/345/215/241/347/202/271.md +90 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/references//345/260/201/351/235/242/344/270/216/345/217/221/345/270/203.md +67 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/references//347/224/273/351/235/242/344/270/216/351/225/234/345/244/264.md +57 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/references//351/200/211/351/242/230/344/270/216/345/217/262/346/226/231.md +76 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/scripts/beat_accents.py +45 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/scripts/shot_frames.py +17 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/scripts/subtitle_doc.py +29 -0
- package/engine/.claude/skills/weilanx-creator-lamplight-video/scripts/timeline_lib.py +57 -0
- package/engine/.claude/skills/weilanx-creator-pixel-video/SKILL.md +132 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/SKILL.md +124 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/references//347/224/273/351/235/242.md +63 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/references//347/264/240/346/235/220.md +35 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/references//350/257/255/346/260/224/344/270/216/345/206/231/347/250/277.md +43 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/references//351/205/215/344/271/220.md +37 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/scripts/commons.py +67 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/scripts/tts_expressive.py +71 -0
- package/engine/.claude/skills/weilanx-creator-vox-video/scripts/voice_stats.py +54 -0
- package/engine/AGENTS.md +118 -0
- package/engine/CLAUDE.md +1 -0
- package/engine/LICENSE +21 -0
- package/engine/README.md +282 -0
- package/engine/README.zh-CN.md +282 -0
- package/engine/audio/bgm.mjs +191 -0
- package/engine/audio/episodes/ep00-demo.mjs +10 -0
- package/engine/audio/episodes/ep01-agent.mjs +22 -0
- package/engine/audio/episodes/ep02-llm.mjs +20 -0
- package/engine/audio/episodes/ep03-cc.mjs +19 -0
- package/engine/audio/episodes/ep04-opus55.mjs +15 -0
- package/engine/audio/episodes/ep05-token.mjs +18 -0
- package/engine/audio/episodes/ep06-context.mjs +16 -0
- package/engine/audio/episodes/ep07-agent.mjs +16 -0
- package/engine/audio/episodes/ep08-hallucination.mjs +15 -0
- package/engine/audio/episodes/ep09-prompt.mjs +16 -0
- package/engine/audio/episodes/ep10-multimodal.mjs +16 -0
- package/engine/audio/episodes/ep11-mcp.mjs +17 -0
- package/engine/audio/episodes/ep12-skill.mjs +16 -0
- package/engine/audio/episodes/ep13-subagent.mjs +17 -0
- package/engine/audio/episodes/ep14-agent-permission.mjs +16 -0
- package/engine/audio/episodes/ep15-prompt-injection.mjs +17 -0
- package/engine/audio/episodes/ep16-agent-done.mjs +16 -0
- package/engine/audio/episodes/ep17-sycophancy.mjs +16 -0
- package/engine/audio/episodes/ep18-ai-history.mjs +323 -0
- package/engine/audio/episodes/ep19-apple-history.mjs +311 -0
- package/engine/audio/episodes/ep20-nvidia-history.mjs +276 -0
- package/engine/audio/episodes/ep21-nobel-physics.mjs +151 -0
- package/engine/audio/episodes/ep22-nobel-chemistry.mjs +143 -0
- package/engine/audio/episodes/ep23-wheat-chessboard.mjs +23 -0
- package/engine/audio/episodes/ep24-birthday-paradox.mjs +25 -0
- package/engine/audio/episodes/ep25-behind-cover.mjs +11 -0
- package/engine/audio/episodes/ep26-opus-video.mjs +14 -0
- package/engine/audio/episodes/ep27-opus-video-full.mjs +17 -0
- package/engine/audio/episodes/ep28-express-relay.mjs +16 -0
- package/engine/audio/episodes/ep29-footsteps.mjs +14 -0
- package/engine/audio/episodes/ep30-tang-divorce.mjs +16 -0
- package/engine/audio/episodes/ep31-rigged.mjs +11 -0
- package/engine/audio/episodes/ep32-love-lasts.mjs +36 -0
- package/engine/audio/episodes/ep33-teammates.mjs +11 -0
- package/engine/audio/episodes/ep34-song-takeout.mjs +16 -0
- package/engine/audio/episodes/ep35-choke.mjs +11 -0
- package/engine/audio/episodes/ep36-boxed-pigs.mjs +43 -0
- package/engine/audio/episodes/ep37-bhop.mjs +11 -0
- package/engine/audio/episodes/ep38-butterfly.mjs +43 -0
- package/engine/audio/episodes/ep39-latency.mjs +11 -0
- package/engine/audio/episodes/ep40-counter-strafe.mjs +11 -0
- package/engine/audio/episodes/ep41-flying-money.mjs +16 -0
- package/engine/audio/episodes/ep42-tap-fire.mjs +11 -0
- package/engine/audio/episodes/ep43-one-more-game.mjs +11 -0
- package/engine/audio/episodes/ep45-callouts.mjs +11 -0
- package/engine/audio/episodes/ep46-song-ice.mjs +16 -0
- package/engine/audio/episodes/ep47-spotlight.mjs +11 -0
- package/engine/audio/episodes/ep48-jiggle-peek.mjs +11 -0
- package/engine/audio/episodes/ep49-ad-strafe.mjs +11 -0
- package/engine/audio/episodes/ep50-late-night.mjs +11 -0
- package/engine/audio/episodes/ep51-practice.mjs +11 -0
- package/engine/audio/episodes/library-halftone.mjs +32 -0
- package/engine/audio/music.mjs +45 -0
- package/engine/audio/score.mjs +209 -0
- package/engine/audio/sfx-lamplight.mjs +54 -0
- package/engine/audio/sfx-tactical.mjs +76 -0
- package/engine/audio/synth.mjs +510 -0
- package/engine/package-lock.json +5177 -0
- package/engine/package.json +26 -0
- package/engine/public/fonts/LICENSES.md +12 -0
- package/engine/public/fonts/ZCOOLKuaiLe-Regular.ttf +0 -0
- package/engine/public/fonts/vox/Anton-400.woff +0 -0
- package/engine/public/fonts/vox/Caveat-600.woff +0 -0
- package/engine/public/fonts/vox/EBGaramond-400.woff +0 -0
- package/engine/public/fonts/vox/EBGaramond-600.woff +0 -0
- package/engine/public/fonts/vox/LICENSES.md +10 -0
- package/engine/public/fonts/vox/NotoSansSC-900.woff +0 -0
- package/engine/public/fonts/vox/OFL.txt +94 -0
- package/engine/public/fonts/vox/PlayfairDisplay-700.woff +0 -0
- package/engine/public/fonts/vox/PlayfairDisplay-700i.woff +0 -0
- package/engine/public/music/README.md +16 -0
- package/engine/remotion.config.ts +5 -0
- package/engine/scripts/ep-dir.sh +49 -0
- package/engine/scripts/export.sh +28 -0
- package/engine/scripts/mix-stems.sh +17 -0
- package/engine/scripts/srt2json.mjs +29 -0
- package/engine/src/Root.tsx +244 -0
- package/engine/src/episodes/ep00-demo/Ep00Demo.tsx +97 -0
- package/engine/src/episodes/ep00-demo/components/AdjustPanel.tsx +68 -0
- package/engine/src/episodes/ep00-demo/components/Buddy.tsx +58 -0
- package/engine/src/episodes/ep00-demo/components/EditorUI.tsx +39 -0
- package/engine/src/episodes/ep00-demo/components/Icons.tsx +50 -0
- package/engine/src/episodes/ep00-demo/components/MediaPanel.tsx +129 -0
- package/engine/src/episodes/ep00-demo/components/Outro.tsx +123 -0
- package/engine/src/episodes/ep00-demo/components/Phone.tsx +88 -0
- package/engine/src/episodes/ep00-demo/components/SceneArt.tsx +196 -0
- package/engine/src/episodes/ep00-demo/components/Timeline.tsx +206 -0
- package/engine/src/episodes/ep00-demo/lib/buddy.ts +147 -0
- package/engine/src/episodes/ep00-demo/lib/camera.ts +55 -0
- package/engine/src/episodes/ep00-demo/lib/state.ts +231 -0
- package/engine/src/episodes/ep00-demo/lib/timeline.ts +98 -0
- package/engine/src/episodes/ep01-agent/Ep01Agent.tsx +16 -0
- package/engine/src/episodes/ep01-agent/cues.json +530 -0
- package/engine/src/episodes/ep01-agent/cues.ts +8 -0
- package/engine/src/episodes/ep01-agent/scenes/finale.tsx +174 -0
- package/engine/src/episodes/ep01-agent/scenes/index.ts +28 -0
- package/engine/src/episodes/ep01-agent/scenes/intro.tsx +235 -0
- package/engine/src/episodes/ep01-agent/scenes/loop.tsx +284 -0
- package/engine/src/episodes/ep01-agent/scenes/safety.tsx +249 -0
- package/engine/src/episodes/ep01-agent/scenes/setup.tsx +250 -0
- package/engine/src/episodes/ep02-llm/Ep02Llm.tsx +17 -0
- package/engine/src/episodes/ep02-llm/cues.json +254 -0
- package/engine/src/episodes/ep02-llm/cues.ts +5 -0
- package/engine/src/episodes/ep02-llm/scenes/index.ts +21 -0
- package/engine/src/episodes/ep02-llm/scenes/part1.tsx +444 -0
- package/engine/src/episodes/ep02-llm/scenes/part2.tsx +303 -0
- package/engine/src/episodes/ep03-cc/Ep03Cc.tsx +30 -0
- package/engine/src/episodes/ep03-cc/cues.json +692 -0
- package/engine/src/episodes/ep03-cc/cues.ts +5 -0
- package/engine/src/episodes/ep03-cc/scenes/aroll.tsx +265 -0
- package/engine/src/episodes/ep03-cc/scenes/broll1.tsx +343 -0
- package/engine/src/episodes/ep03-cc/scenes/broll2.tsx +571 -0
- package/engine/src/episodes/ep03-cc/scenes/index.ts +30 -0
- package/engine/src/episodes/ep04-opus55/Ep04Opus55.tsx +30 -0
- package/engine/src/episodes/ep04-opus55/cues.json +368 -0
- package/engine/src/episodes/ep04-opus55/cues.ts +5 -0
- package/engine/src/episodes/ep04-opus55/scenes/index.ts +25 -0
- package/engine/src/episodes/ep04-opus55/scenes/part1.tsx +487 -0
- package/engine/src/episodes/ep04-opus55/scenes/part2.tsx +282 -0
- package/engine/src/episodes/ep05-token/Ep05Token.tsx +32 -0
- package/engine/src/episodes/ep05-token/cues.json +314 -0
- package/engine/src/episodes/ep05-token/cues.ts +5 -0
- package/engine/src/episodes/ep05-token/scenes/index.ts +22 -0
- package/engine/src/episodes/ep05-token/scenes/part1.tsx +355 -0
- package/engine/src/episodes/ep05-token/scenes/part2.tsx +385 -0
- package/engine/src/episodes/ep06-context/Ep06Context.tsx +32 -0
- package/engine/src/episodes/ep06-context/Ep06ContextTall.tsx +35 -0
- package/engine/src/episodes/ep06-context/cues.json +332 -0
- package/engine/src/episodes/ep06-context/cues.ts +5 -0
- package/engine/src/episodes/ep06-context/scenes/index.ts +20 -0
- package/engine/src/episodes/ep06-context/scenes/part1.tsx +360 -0
- package/engine/src/episodes/ep06-context/scenes/part2.tsx +256 -0
- package/engine/src/episodes/ep06-context/tall/Cover.tsx +69 -0
- package/engine/src/episodes/ep06-context/tall/index.ts +20 -0
- package/engine/src/episodes/ep06-context/tall/part1.tsx +374 -0
- package/engine/src/episodes/ep06-context/tall/part2.tsx +272 -0
- package/engine/src/episodes/ep07-agent/Ep07Agent.tsx +32 -0
- package/engine/src/episodes/ep07-agent/Ep07AgentTall.tsx +35 -0
- package/engine/src/episodes/ep07-agent/cues.json +302 -0
- package/engine/src/episodes/ep07-agent/cues.ts +5 -0
- package/engine/src/episodes/ep07-agent/scenes/index.ts +18 -0
- package/engine/src/episodes/ep07-agent/scenes/part1.tsx +307 -0
- package/engine/src/episodes/ep07-agent/scenes/part2.tsx +188 -0
- package/engine/src/episodes/ep07-agent/tall/Cover.tsx +59 -0
- package/engine/src/episodes/ep07-agent/tall/index.ts +18 -0
- package/engine/src/episodes/ep07-agent/tall/part1.tsx +306 -0
- package/engine/src/episodes/ep07-agent/tall/part2.tsx +187 -0
- package/engine/src/episodes/ep08-hallucination/Ep08Hallucination.tsx +32 -0
- package/engine/src/episodes/ep08-hallucination/Ep08HallucinationTall.tsx +35 -0
- package/engine/src/episodes/ep08-hallucination/cues.json +314 -0
- package/engine/src/episodes/ep08-hallucination/cues.ts +5 -0
- package/engine/src/episodes/ep08-hallucination/scenes/index.ts +19 -0
- package/engine/src/episodes/ep08-hallucination/scenes/part1.tsx +282 -0
- package/engine/src/episodes/ep08-hallucination/scenes/part2.tsx +246 -0
- package/engine/src/episodes/ep08-hallucination/tall/Cover.tsx +63 -0
- package/engine/src/episodes/ep08-hallucination/tall/index.ts +19 -0
- package/engine/src/episodes/ep08-hallucination/tall/part1.tsx +273 -0
- package/engine/src/episodes/ep08-hallucination/tall/part2.tsx +247 -0
- package/engine/src/episodes/ep09-prompt/Ep09Prompt.tsx +35 -0
- package/engine/src/episodes/ep09-prompt/cues.json +308 -0
- package/engine/src/episodes/ep09-prompt/cues.ts +5 -0
- package/engine/src/episodes/ep09-prompt/scenes/Cover.tsx +65 -0
- package/engine/src/episodes/ep09-prompt/scenes/index.ts +21 -0
- package/engine/src/episodes/ep09-prompt/scenes/part1.tsx +315 -0
- package/engine/src/episodes/ep09-prompt/scenes/part2.tsx +320 -0
- package/engine/src/episodes/ep10-multimodal/Ep10Multimodal.tsx +35 -0
- package/engine/src/episodes/ep10-multimodal/cues.json +308 -0
- package/engine/src/episodes/ep10-multimodal/cues.ts +5 -0
- package/engine/src/episodes/ep10-multimodal/scenes/Cover.tsx +53 -0
- package/engine/src/episodes/ep10-multimodal/scenes/index.ts +21 -0
- package/engine/src/episodes/ep10-multimodal/scenes/part1.tsx +343 -0
- package/engine/src/episodes/ep10-multimodal/scenes/part2.tsx +437 -0
- package/engine/src/episodes/ep11-mcp/Ep11Mcp.tsx +35 -0
- package/engine/src/episodes/ep11-mcp/cues.json +332 -0
- package/engine/src/episodes/ep11-mcp/cues.ts +5 -0
- package/engine/src/episodes/ep11-mcp/scenes/Cover.tsx +67 -0
- package/engine/src/episodes/ep11-mcp/scenes/index.ts +21 -0
- package/engine/src/episodes/ep11-mcp/scenes/part1.tsx +336 -0
- package/engine/src/episodes/ep11-mcp/scenes/part2.tsx +327 -0
- package/engine/src/episodes/ep12-skill/Ep12Skill.tsx +35 -0
- package/engine/src/episodes/ep12-skill/cues.json +332 -0
- package/engine/src/episodes/ep12-skill/cues.ts +5 -0
- package/engine/src/episodes/ep12-skill/scenes/Cover.tsx +55 -0
- package/engine/src/episodes/ep12-skill/scenes/index.ts +21 -0
- package/engine/src/episodes/ep12-skill/scenes/part1.tsx +368 -0
- package/engine/src/episodes/ep12-skill/scenes/part2.tsx +274 -0
- package/engine/src/episodes/ep13-subagent/Ep13Subagent.tsx +35 -0
- package/engine/src/episodes/ep13-subagent/cues.json +344 -0
- package/engine/src/episodes/ep13-subagent/cues.ts +5 -0
- package/engine/src/episodes/ep13-subagent/scenes/Cover.tsx +61 -0
- package/engine/src/episodes/ep13-subagent/scenes/index.ts +21 -0
- package/engine/src/episodes/ep13-subagent/scenes/part1.tsx +383 -0
- package/engine/src/episodes/ep13-subagent/scenes/part2.tsx +317 -0
- package/engine/src/episodes/ep14-agent-permission/Ep14AgentPermission.tsx +35 -0
- package/engine/src/episodes/ep14-agent-permission/cues.json +326 -0
- package/engine/src/episodes/ep14-agent-permission/cues.ts +5 -0
- package/engine/src/episodes/ep14-agent-permission/scenes/Cover.tsx +62 -0
- package/engine/src/episodes/ep14-agent-permission/scenes/index.ts +20 -0
- package/engine/src/episodes/ep14-agent-permission/scenes/part1.tsx +302 -0
- package/engine/src/episodes/ep14-agent-permission/scenes/part2.tsx +309 -0
- package/engine/src/episodes/ep15-prompt-injection/Ep15PromptInjection.tsx +35 -0
- package/engine/src/episodes/ep15-prompt-injection/cues.json +302 -0
- package/engine/src/episodes/ep15-prompt-injection/cues.ts +5 -0
- package/engine/src/episodes/ep15-prompt-injection/scenes/Cover.tsx +60 -0
- package/engine/src/episodes/ep15-prompt-injection/scenes/index.ts +20 -0
- package/engine/src/episodes/ep15-prompt-injection/scenes/part1.tsx +307 -0
- package/engine/src/episodes/ep15-prompt-injection/scenes/part2.tsx +253 -0
- package/engine/src/episodes/ep16-agent-done/Ep16AgentDone.tsx +35 -0
- package/engine/src/episodes/ep16-agent-done/cues.json +320 -0
- package/engine/src/episodes/ep16-agent-done/cues.ts +5 -0
- package/engine/src/episodes/ep16-agent-done/scenes/Cover.tsx +66 -0
- package/engine/src/episodes/ep16-agent-done/scenes/index.ts +19 -0
- package/engine/src/episodes/ep16-agent-done/scenes/part1.tsx +271 -0
- package/engine/src/episodes/ep16-agent-done/scenes/part2.tsx +253 -0
- package/engine/src/episodes/ep17-sycophancy/Ep17Sycophancy.tsx +35 -0
- package/engine/src/episodes/ep17-sycophancy/cues.json +320 -0
- package/engine/src/episodes/ep17-sycophancy/cues.ts +5 -0
- package/engine/src/episodes/ep17-sycophancy/scenes/Cover.tsx +60 -0
- package/engine/src/episodes/ep17-sycophancy/scenes/index.ts +19 -0
- package/engine/src/episodes/ep17-sycophancy/scenes/part1.tsx +236 -0
- package/engine/src/episodes/ep17-sycophancy/scenes/part2.tsx +250 -0
- package/engine/src/episodes/ep18-ai-history/Cover.tsx +60 -0
- package/engine/src/episodes/ep18-ai-history/CoverTall.tsx +29 -0
- package/engine/src/episodes/ep18-ai-history/Ep18AiHistory.tsx +27 -0
- package/engine/src/episodes/ep18-ai-history/art.tsx +141 -0
- package/engine/src/episodes/ep18-ai-history/cues.json +626 -0
- package/engine/src/episodes/ep18-ai-history/cues.ts +5 -0
- package/engine/src/episodes/ep18-ai-history/film.tsx +910 -0
- package/engine/src/episodes/ep18-ai-history/scrapbook.tsx +762 -0
- package/engine/src/episodes/ep18-ai-history/timeline.ts +63 -0
- package/engine/src/episodes/ep19-apple-history/Cover.tsx +45 -0
- package/engine/src/episodes/ep19-apple-history/CoverTall.tsx +29 -0
- package/engine/src/episodes/ep19-apple-history/Ep19AppleHistory.tsx +27 -0
- package/engine/src/episodes/ep19-apple-history/art.tsx +302 -0
- package/engine/src/episodes/ep19-apple-history/cues.json +470 -0
- package/engine/src/episodes/ep19-apple-history/cues.ts +5 -0
- package/engine/src/episodes/ep19-apple-history/film.tsx +1245 -0
- package/engine/src/episodes/ep19-apple-history/timeline.ts +82 -0
- package/engine/src/episodes/ep20-nvidia-history/Cover.tsx +46 -0
- package/engine/src/episodes/ep20-nvidia-history/CoverTall.tsx +30 -0
- package/engine/src/episodes/ep20-nvidia-history/Ep20NvidiaHistory.tsx +27 -0
- package/engine/src/episodes/ep20-nvidia-history/art.tsx +244 -0
- package/engine/src/episodes/ep20-nvidia-history/cues.json +482 -0
- package/engine/src/episodes/ep20-nvidia-history/cues.ts +5 -0
- package/engine/src/episodes/ep20-nvidia-history/film.tsx +1088 -0
- package/engine/src/episodes/ep20-nvidia-history/timeline.ts +78 -0
- package/engine/src/episodes/ep21-nobel-physics/Cover.tsx +75 -0
- package/engine/src/episodes/ep21-nobel-physics/Ep21NobelPhysics.tsx +27 -0
- package/engine/src/episodes/ep21-nobel-physics/cues.json +218 -0
- package/engine/src/episodes/ep21-nobel-physics/cues.ts +5 -0
- package/engine/src/episodes/ep21-nobel-physics/film.tsx +627 -0
- package/engine/src/episodes/ep22-nobel-chemistry/Cover.tsx +64 -0
- package/engine/src/episodes/ep22-nobel-chemistry/Ep22NobelChemistry.tsx +27 -0
- package/engine/src/episodes/ep22-nobel-chemistry/cues.json +212 -0
- package/engine/src/episodes/ep22-nobel-chemistry/cues.ts +5 -0
- package/engine/src/episodes/ep22-nobel-chemistry/film.tsx +563 -0
- package/engine/src/episodes/ep23-wheat-chessboard/Ep23Wheat.tsx +322 -0
- package/engine/src/episodes/ep23-wheat-chessboard/timeline.ts +89 -0
- package/engine/src/episodes/ep24-birthday-paradox/Cover.tsx +53 -0
- package/engine/src/episodes/ep24-birthday-paradox/Ep24Birthday.tsx +233 -0
- package/engine/src/episodes/ep24-birthday-paradox/ring.tsx +164 -0
- package/engine/src/episodes/ep24-birthday-paradox/scenes.tsx +460 -0
- package/engine/src/episodes/ep24-birthday-paradox/timeline.ts +216 -0
- package/engine/src/episodes/ep25-behind-cover/Ep25Cover.tsx +306 -0
- package/engine/src/episodes/ep25-behind-cover/scenes.tsx +416 -0
- package/engine/src/episodes/ep25-behind-cover/timeline.ts +209 -0
- package/engine/src/episodes/ep26-opus-video/Cover.tsx +18 -0
- package/engine/src/episodes/ep26-opus-video/Ep26OpusVideo.tsx +53 -0
- package/engine/src/episodes/ep26-opus-video/cues.json +140 -0
- package/engine/src/episodes/ep26-opus-video/cues.ts +6 -0
- package/engine/src/episodes/ep26-opus-video/scenes.tsx +301 -0
- package/engine/src/episodes/ep27-opus-video-full/Cover.tsx +18 -0
- package/engine/src/episodes/ep27-opus-video-full/Ep27OpusVideoFull.tsx +65 -0
- package/engine/src/episodes/ep27-opus-video-full/assets.ts +36 -0
- package/engine/src/episodes/ep27-opus-video-full/cues.json +860 -0
- package/engine/src/episodes/ep27-opus-video-full/cues.ts +6 -0
- package/engine/src/episodes/ep27-opus-video-full/scenes/index.tsx +730 -0
- package/engine/src/episodes/ep27-opus-video-full/scenes/kit.tsx +334 -0
- package/engine/src/episodes/ep28-express-relay/CoverTall.tsx +98 -0
- package/engine/src/episodes/ep28-express-relay/Ep28Relay.tsx +453 -0
- package/engine/src/episodes/ep28-express-relay/scenes.tsx +2 -0
- package/engine/src/episodes/ep28-express-relay/timeline.ts +261 -0
- package/engine/src/episodes/ep29-footsteps/Ep29Footsteps.tsx +328 -0
- package/engine/src/episodes/ep29-footsteps/scenes.tsx +418 -0
- package/engine/src/episodes/ep29-footsteps/timeline.ts +250 -0
- package/engine/src/episodes/ep30-tang-divorce/CoverTall.tsx +85 -0
- package/engine/src/episodes/ep30-tang-divorce/Ep30Divorce.tsx +453 -0
- package/engine/src/episodes/ep30-tang-divorce/timeline.ts +235 -0
- package/engine/src/episodes/ep31-rigged/Ep31Rigged.tsx +334 -0
- package/engine/src/episodes/ep31-rigged/scenes.tsx +175 -0
- package/engine/src/episodes/ep31-rigged/timeline.ts +273 -0
- package/engine/src/episodes/ep32-love-lasts/Ep32Love.tsx +228 -0
- package/engine/src/episodes/ep32-love-lasts/scenes.tsx +219 -0
- package/engine/src/episodes/ep32-love-lasts/timeline.ts +165 -0
- package/engine/src/episodes/ep33-teammates/Ep33Teammates.tsx +304 -0
- package/engine/src/episodes/ep33-teammates/scenes.tsx +395 -0
- package/engine/src/episodes/ep33-teammates/timeline.ts +239 -0
- package/engine/src/episodes/ep34-song-takeout/CoverTall.tsx +70 -0
- package/engine/src/episodes/ep34-song-takeout/Ep34Takeout.tsx +362 -0
- package/engine/src/episodes/ep34-song-takeout/timeline.ts +219 -0
- package/engine/src/episodes/ep35-choke/Ep35Choke.tsx +318 -0
- package/engine/src/episodes/ep35-choke/scenes.tsx +252 -0
- package/engine/src/episodes/ep35-choke/timeline.ts +230 -0
- package/engine/src/episodes/ep36-boxed-pigs/CoverTall.tsx +65 -0
- package/engine/src/episodes/ep36-boxed-pigs/Ep36Pigs.tsx +519 -0
- package/engine/src/episodes/ep36-boxed-pigs/scenes.tsx +18 -0
- package/engine/src/episodes/ep36-boxed-pigs/timeline.ts +192 -0
- package/engine/src/episodes/ep37-bhop/Ep37Bhop.tsx +379 -0
- package/engine/src/episodes/ep37-bhop/scenes.tsx +166 -0
- package/engine/src/episodes/ep37-bhop/timeline.ts +232 -0
- package/engine/src/episodes/ep38-butterfly/CoverTall.tsx +55 -0
- package/engine/src/episodes/ep38-butterfly/Ep38Butterfly.tsx +434 -0
- package/engine/src/episodes/ep38-butterfly/timeline.ts +218 -0
- package/engine/src/episodes/ep39-latency/Ep39Latency.tsx +461 -0
- package/engine/src/episodes/ep39-latency/scenes.tsx +194 -0
- package/engine/src/episodes/ep39-latency/timeline.ts +248 -0
- package/engine/src/episodes/ep40-counter-strafe/Ep40CounterStrafe.tsx +410 -0
- package/engine/src/episodes/ep40-counter-strafe/scenes.tsx +124 -0
- package/engine/src/episodes/ep40-counter-strafe/timeline.ts +277 -0
- package/engine/src/episodes/ep41-flying-money/CoverTall.tsx +50 -0
- package/engine/src/episodes/ep41-flying-money/Ep41FlyingMoney.tsx +447 -0
- package/engine/src/episodes/ep41-flying-money/timeline.ts +239 -0
- package/engine/src/episodes/ep42-tap-fire/Ep42TapFire.tsx +376 -0
- package/engine/src/episodes/ep42-tap-fire/scenes.tsx +174 -0
- package/engine/src/episodes/ep42-tap-fire/timeline.ts +262 -0
- package/engine/src/episodes/ep43-one-more-game/Ep43OneMoreGame.tsx +376 -0
- package/engine/src/episodes/ep43-one-more-game/scenes.tsx +202 -0
- package/engine/src/episodes/ep43-one-more-game/timeline.ts +241 -0
- package/engine/src/episodes/ep45-callouts/Ep45Callouts.tsx +435 -0
- package/engine/src/episodes/ep45-callouts/scenes.tsx +170 -0
- package/engine/src/episodes/ep45-callouts/timeline.ts +260 -0
- package/engine/src/episodes/ep46-song-ice/CoverTall.tsx +51 -0
- package/engine/src/episodes/ep46-song-ice/Ep46SongIce.tsx +414 -0
- package/engine/src/episodes/ep46-song-ice/scenes.tsx +172 -0
- package/engine/src/episodes/ep46-song-ice/timeline.ts +257 -0
- package/engine/src/episodes/ep47-spotlight/Ep47Spotlight.tsx +416 -0
- package/engine/src/episodes/ep47-spotlight/scenes.tsx +146 -0
- package/engine/src/episodes/ep47-spotlight/timeline.ts +272 -0
- package/engine/src/episodes/ep48-jiggle-peek/Ep48JigglePeek.tsx +468 -0
- package/engine/src/episodes/ep48-jiggle-peek/scenes.tsx +86 -0
- package/engine/src/episodes/ep48-jiggle-peek/timeline.ts +264 -0
- package/engine/src/episodes/ep49-ad-strafe/Ep49AdStrafe.tsx +392 -0
- package/engine/src/episodes/ep49-ad-strafe/scenes.tsx +89 -0
- package/engine/src/episodes/ep49-ad-strafe/timeline.ts +266 -0
- package/engine/src/episodes/ep50-late-night/Ep50LateNight.tsx +380 -0
- package/engine/src/episodes/ep50-late-night/scenes.tsx +161 -0
- package/engine/src/episodes/ep50-late-night/timeline.ts +253 -0
- package/engine/src/episodes/ep51-practice/Ep51Practice.tsx +402 -0
- package/engine/src/episodes/ep51-practice/scenes.tsx +122 -0
- package/engine/src/episodes/ep51-practice/timeline.ts +241 -0
- package/engine/src/index.ts +4 -0
- package/engine/src/library/README.md +205 -0
- package/engine/src/library/Show.tsx +107 -0
- package/engine/src/library/Subtitles.tsx +105 -0
- package/engine/src/library/anim.ts +49 -0
- package/engine/src/library/blackgold/chaos.tsx +203 -0
- package/engine/src/library/blackgold/charts.tsx +578 -0
- package/engine/src/library/blackgold/pen.tsx +331 -0
- package/engine/src/library/blackgold/props.tsx +176 -0
- package/engine/src/library/blackgold/stage.tsx +262 -0
- package/engine/src/library/blackgold/theme.ts +62 -0
- package/engine/src/library/character/Accessories.tsx +172 -0
- package/engine/src/library/character/Arm.tsx +16 -0
- package/engine/src/library/character/BuddyFigure.tsx +127 -0
- package/engine/src/library/character/Char.tsx +71 -0
- package/engine/src/library/character/PixelBuddy.tsx +150 -0
- package/engine/src/library/character/types.ts +2 -0
- package/engine/src/library/cues.ts +49 -0
- package/engine/src/library/editor-room/canvas.tsx +264 -0
- package/engine/src/library/editor-room/mascots.tsx +92 -0
- package/engine/src/library/editor-room/stage.tsx +400 -0
- package/engine/src/library/editor-room/theme.ts +66 -0
- package/engine/src/library/fonts.ts +24 -0
- package/engine/src/library/fx.tsx +233 -0
- package/engine/src/library/gilded/charts.tsx +283 -0
- package/engine/src/library/gilded/props.tsx +245 -0
- package/engine/src/library/gilded/stage.tsx +312 -0
- package/engine/src/library/gilded/theme.ts +62 -0
- package/engine/src/library/halftone/props.tsx +332 -0
- package/engine/src/library/halftone/stage.tsx +435 -0
- package/engine/src/library/halftone/suspect.tsx +86 -0
- package/engine/src/library/halftone/theme.ts +71 -0
- package/engine/src/library/icons.tsx +318 -0
- package/engine/src/library/items/apps.tsx +161 -0
- package/engine/src/library/items/media.tsx +80 -0
- package/engine/src/library/items/objects.tsx +252 -0
- package/engine/src/library/lamplight/charts.tsx +530 -0
- package/engine/src/library/lamplight/ice.tsx +401 -0
- package/engine/src/library/lamplight/props.tsx +1072 -0
- package/engine/src/library/lamplight/scenes.tsx +187 -0
- package/engine/src/library/lamplight/stage.tsx +451 -0
- package/engine/src/library/lamplight/theme.ts +81 -0
- package/engine/src/library/previews/BlackGoldDemo.tsx +195 -0
- package/engine/src/library/previews/EditorRoomDemo.tsx +190 -0
- package/engine/src/library/previews/GildedDemo.tsx +185 -0
- package/engine/src/library/previews/HalftoneDemo.tsx +426 -0
- package/engine/src/library/previews/LamplightDemo.tsx +202 -0
- package/engine/src/library/previews/PixelWardrobe.tsx +39 -0
- package/engine/src/library/previews/TacticalDemo.tsx +280 -0
- package/engine/src/library/previews/Wardrobe.tsx +49 -0
- package/engine/src/library/previews/WarmDeskDemo.tsx +291 -0
- package/engine/src/library/previews/WarmDeskShowDemo.tsx +79 -0
- package/engine/src/library/sets/Studio.tsx +164 -0
- package/engine/src/library/tactical/attention.tsx +340 -0
- package/engine/src/library/tactical/charts.tsx +373 -0
- package/engine/src/library/tactical/hearing.tsx +189 -0
- package/engine/src/library/tactical/movement.tsx +163 -0
- package/engine/src/library/tactical/pipeline.tsx +236 -0
- package/engine/src/library/tactical/practice.tsx +84 -0
- package/engine/src/library/tactical/range.tsx +338 -0
- package/engine/src/library/tactical/ranked.tsx +267 -0
- package/engine/src/library/tactical/reward.tsx +204 -0
- package/engine/src/library/tactical/sleep.tsx +90 -0
- package/engine/src/library/tactical/spread.tsx +200 -0
- package/engine/src/library/tactical/stage.tsx +379 -0
- package/engine/src/library/tactical/theme.ts +48 -0
- package/engine/src/library/tactical/tracking.tsx +146 -0
- package/engine/src/library/tactical/vectors.tsx +161 -0
- package/engine/src/library/tactical/window.tsx +93 -0
- package/engine/src/library/theme.ts +55 -0
- package/engine/src/library/types.ts +11 -0
- package/engine/src/library/ui.tsx +137 -0
- package/engine/src/library/vox/CoverTall.tsx +92 -0
- package/engine/src/library/vox/VoxShow.tsx +136 -0
- package/engine/src/library/vox/desk.tsx +31 -0
- package/engine/src/library/vox/footage.tsx +74 -0
- package/engine/src/library/vox/hud.tsx +51 -0
- package/engine/src/library/vox/portrait.tsx +80 -0
- package/engine/src/library/vox/props.tsx +256 -0
- package/engine/src/library/vox/shots.tsx +66 -0
- package/engine/src/library/vox/stickers.tsx +132 -0
- package/engine/src/library/vox/theme.ts +77 -0
- package/engine/src/library/warm-desk/CoverTall.tsx +111 -0
- package/engine/src/library/warm-desk/DeskShow.tsx +127 -0
- package/engine/src/library/warm-desk/HostCam.tsx +30 -0
- package/engine/src/library/warm-desk/Slot.tsx +67 -0
- package/engine/src/library/warm-desk/immersive.tsx +105 -0
- package/engine/src/library/warm-desk/mascot.tsx +48 -0
- package/engine/src/library/warm-desk/motifs.tsx +277 -0
- package/engine/src/library/warm-desk/props.tsx +318 -0
- package/engine/src/library/warm-desk/stage.tsx +268 -0
- package/engine/src/library/warm-desk/theme.ts +83 -0
- package/engine/styles/LICENSE-huashu-art-motion +21 -0
- package/engine/styles/README.md +143 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//345/203/217/347/264/240/346/211/213/347/273/230/351/243/216/README.md +18 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//345/203/217/347/264/240/346/211/213/347/273/230/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//345/203/217/347/264/240/350/264/264/347/272/270/351/243/216/README.md +37 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//345/203/217/347/264/240/350/264/264/347/272/270/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//345/215/217/344/275/234/345/211/252/350/276/221/345/217/260/351/243/216/README.md +59 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//345/215/217/344/275/234/345/211/252/350/276/221/345/217/260/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/210/230/346/234/257/345/261/217/347/247/221/346/231/256/351/243/216/README.md +64 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/210/230/346/234/257/345/261/217/347/247/221/346/231/256/351/243/216//347/210/206/346/254/276/350/247/243/346/236/220.md +62 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/210/230/346/234/257/345/261/217/347/247/221/346/231/256/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/232/226/347/272/270/345/267/245/344/275/234/345/217/260/351/243/216/README.md +54 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/232/226/347/272/270/345/267/245/344/275/234/345/217/260/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/232/227/351/207/221/346/226/207/347/214/256/351/243/216/README.md +30 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//346/232/227/351/207/221/346/226/207/347/214/256/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//347/201/257/347/201/253/345/217/262/350/257/235/351/243/216/README.md +55 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//347/201/257/347/201/253/345/217/262/350/257/235/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//347/237/242/351/207/217/346/211/213/347/273/230/351/243/216/README.md +19 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//347/237/242/351/207/217/346/211/213/347/273/230/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//347/275/221/347/202/271/346/241/243/346/241/210/351/243/216/README.md +50 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//347/275/221/347/202/271/346/241/243/346/241/210/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//351/273/221/351/207/221/345/205/211/345/275/261/351/243/216/README.md +70 -0
- package/engine/styles//346/210/221/347/232/204/351/243/216/346/240/274//351/273/221/351/207/221/345/205/211/345/275/261/351/243/216//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/01_cave_/346/264/236/347/251/264/345/262/251/347/224/273//345/234/272/346/231/257/344/273/243/347/240/201.js +364 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/01_cave_/346/264/236/347/251/264/345/262/251/347/224/273//351/205/215/346/226/271/345/215/241.md +46 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/01_cave_/346/264/236/347/251/264/345/262/251/347/224/273//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/02_egypt_/345/237/203/345/217/212/345/243/201/347/224/273//345/234/272/346/231/257/344/273/243/347/240/201.js +524 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/02_egypt_/345/237/203/345/217/212/345/243/201/347/224/273//351/205/215/346/226/271/345/215/241.md +64 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/02_egypt_/345/237/203/345/217/212/345/243/201/347/224/273//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/03_greek_/345/217/244/345/270/214/350/205/212/351/273/221/347/273/230//345/234/272/346/231/257/344/273/243/347/240/201.js +448 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/03_greek_/345/217/244/345/270/214/350/205/212/351/273/221/347/273/230//351/205/215/346/226/271/345/215/241.md +50 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/03_greek_/345/217/244/345/270/214/350/205/212/351/273/221/347/273/230//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/04_roman_/347/275/227/351/251/254/351/251/254/350/265/233/345/205/213//345/234/272/346/231/257/344/273/243/347/240/201.js +555 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/04_roman_/347/275/227/351/251/254/351/251/254/350/265/233/345/205/213//351/205/215/346/226/271/345/215/241.md +99 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/04_roman_/347/275/227/351/251/254/351/251/254/350/265/233/345/205/213//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/05_gothic_/345/223/245/347/211/271/346/211/213/346/212/204/346/234/254//345/234/272/346/231/257/344/273/243/347/240/201.js +522 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/05_gothic_/345/223/245/347/211/271/346/211/213/346/212/204/346/234/254//351/205/215/346/226/271/345/215/241.md +32 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/05_gothic_/345/223/245/347/211/271/346/211/213/346/212/204/346/234/254//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/17_ink_/346/260/264/345/242/250/345/206/231/346/204/217//345/234/272/346/231/257/344/273/243/347/240/201.js +273 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/17_ink_/346/260/264/345/242/250/345/206/231/346/204/217//351/205/215/346/226/271/345/215/241.md +50 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/17_ink_/346/260/264/345/242/250/345/206/231/346/204/217//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/20_dunhuang_/346/225/246/347/205/214/345/243/201/347/224/273//345/234/272/346/231/257/344/273/243/347/240/201.js +215 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/20_dunhuang_/346/225/246/347/205/214/345/243/201/347/224/273//351/205/215/346/226/271/345/215/241.md +49 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/20_dunhuang_/346/225/246/347/205/214/345/243/201/347/224/273//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/34_shadowpuppet_/347/232/256/345/275/261//345/234/272/346/231/257/344/273/243/347/240/201.js +195 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/34_shadowpuppet_/347/232/256/345/275/261//351/205/215/346/226/271/345/215/241.md +40 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/01_/345/217/244/344/273/243/344/270/216/344/274/240/347/273/237/34_shadowpuppet_/347/232/256/345/275/261//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/02_/345/217/244/345/205/270/346/262/271/347/224/273/06_renaissance_/346/226/207/350/211/272/345/244/215/345/205/264//345/234/272/346/231/257/344/273/243/347/240/201.js +338 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/02_/345/217/244/345/205/270/346/262/271/347/224/273/06_renaissance_/346/226/207/350/211/272/345/244/215/345/205/264//351/205/215/346/226/271/345/215/241.md +41 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/02_/345/217/244/345/205/270/346/262/271/347/224/273/06_renaissance_/346/226/207/350/211/272/345/244/215/345/205/264//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/02_/345/217/244/345/205/270/346/262/271/347/224/273/32_rembrandt_/344/274/246/345/213/203/346/234/227/346/230/216/346/232/227//345/234/272/346/231/257/344/273/243/347/240/201.js +217 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/02_/345/217/244/345/205/270/346/262/271/347/224/273/32_rembrandt_/344/274/246/345/213/203/346/234/227/346/230/216/346/232/227//351/205/215/346/226/271/345/215/241.md +29 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/02_/345/217/244/345/205/270/346/262/271/347/224/273/32_rembrandt_/344/274/246/345/213/203/346/234/227/346/230/216/346/232/227//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/08_impressionism_/345/215/260/350/261/241/346/264/276//345/234/272/346/231/257/344/273/243/347/240/201.js +206 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/08_impressionism_/345/215/260/350/261/241/346/264/276//351/205/215/346/226/271/345/215/241.md +34 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/08_impressionism_/345/215/260/350/261/241/346/264/276//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/09_postimp_/346/242/265/351/253/230//345/234/272/346/231/257/344/273/243/347/240/201.js +183 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/09_postimp_/346/242/265/351/253/230//351/205/215/346/226/271/345/215/241.md +17 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/09_postimp_/346/242/265/351/253/230//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/28_monet_/350/216/253/345/245/210//345/234/272/346/231/257/344/273/243/347/240/201.js +176 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/28_monet_/350/216/253/345/245/210//351/205/215/346/226/271/345/215/241.md +39 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/28_monet_/350/216/253/345/245/210//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/29_seurat_/344/277/256/346/213/211/347/202/271/345/275/251//345/234/272/346/231/257/344/273/243/347/240/201.js +104 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/29_seurat_/344/277/256/346/213/211/347/202/271/345/275/251//351/205/215/346/226/271/345/215/241.md +31 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/03_/345/215/260/350/261/241/346/264/276/344/270/216/345/220/216/345/215/260/350/261/241/29_seurat_/344/277/256/346/213/211/347/202/271/345/275/251//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/10_nouveau_/346/205/225/345/244/217/346/226/260/350/211/272/346/234/257//345/234/272/346/231/257/344/273/243/347/240/201.js +334 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/10_nouveau_/346/205/225/345/244/217/346/226/260/350/211/272/346/234/257//351/205/215/346/226/271/345/215/241.md +31 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/10_nouveau_/346/205/225/345/244/217/346/226/260/350/211/272/346/234/257//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/11_cubism_/347/253/213/344/275/223/344/270/273/344/271/211//345/234/272/346/231/257/344/273/243/347/240/201.js +265 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/11_cubism_/347/253/213/344/275/223/344/270/273/344/271/211//351/205/215/346/226/271/345/215/241.md +30 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/11_cubism_/347/253/213/344/275/223/344/270/273/344/271/211//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/12_bauhaus_/345/214/205/350/261/252/346/226/257//345/234/272/346/231/257/344/273/243/347/240/201.js +214 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/12_bauhaus_/345/214/205/350/261/252/346/226/257//351/205/215/346/226/271/345/215/241.md +30 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/12_bauhaus_/345/214/205/350/261/252/346/226/257//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/18_klimt_/345/205/213/351/207/214/345/247/206/347/211/271//345/234/272/346/231/257/344/273/243/347/240/201.js +227 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/18_klimt_/345/205/213/351/207/214/345/247/206/347/211/271//351/205/215/346/226/271/345/215/241.md +37 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/18_klimt_/345/205/213/351/207/214/345/247/206/347/211/271//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/19_munch_/350/222/231/345/205/213//345/234/272/346/231/257/344/273/243/347/240/201.js +153 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/19_munch_/350/222/231/345/205/213//351/205/215/346/226/271/345/215/241.md +42 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/19_munch_/350/222/231/345/205/213//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/22_constructivism_/346/236/204/346/210/220/344/270/273/344/271/211//345/234/272/346/231/257/344/273/243/347/240/201.js +205 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/22_constructivism_/346/236/204/346/210/220/344/270/273/344/271/211//351/205/215/346/226/271/345/215/241.md +35 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/22_constructivism_/346/236/204/346/210/220/344/270/273/344/271/211//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/23_dali_/350/276/276/345/210/251/350/266/205/347/216/260/345/256/236//345/234/272/346/231/257/344/273/243/347/240/201.js +221 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/23_dali_/350/276/276/345/210/251/350/266/205/347/216/260/345/256/236//351/205/215/346/226/271/345/215/241.md +29 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/23_dali_/350/276/276/345/210/251/350/266/205/347/216/260/345/256/236//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/24_hopper_/351/234/215/347/217/200//345/234/272/346/231/257/344/273/243/347/240/201.js +150 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/24_hopper_/351/234/215/347/217/200//351/205/215/346/226/271/345/215/241.md +30 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/24_hopper_/351/234/215/347/217/200//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/30_matisse_/351/251/254/350/222/202/346/226/257/345/211/252/347/272/270//345/234/272/346/231/257/344/273/243/347/240/201.js +151 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/30_matisse_/351/251/254/350/222/202/346/226/257/345/211/252/347/272/270//351/205/215/346/226/271/345/215/241.md +26 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/30_matisse_/351/251/254/350/222/202/346/226/257/345/211/252/347/272/270//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/36_picasso_blue_/346/257/225/345/212/240/347/264/242/350/223/235/350/211/262/346/227/266/346/234/237//345/234/272/346/231/257/344/273/243/347/240/201.js +123 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/36_picasso_blue_/346/257/225/345/212/240/347/264/242/350/223/235/350/211/262/346/227/266/346/234/237//351/205/215/346/226/271/345/215/241.md +25 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/04_/347/216/260/344/273/243/344/270/273/344/271/211/36_picasso_blue_/346/257/225/345/212/240/347/264/242/350/223/235/350/211/262/346/227/266/346/234/237//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/13_pop_/346/263/242/346/231/256/350/211/272/346/234/257//345/234/272/346/231/257/344/273/243/347/240/201.js +269 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/13_pop_/346/263/242/346/231/256/350/211/272/346/234/257//351/205/215/346/226/271/345/215/241.md +29 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/13_pop_/346/263/242/346/231/256/350/211/272/346/234/257//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/21_kusama_/350/215/211/351/227/264/345/274/245/347/224/237/346/263/242/347/202/271//345/234/272/346/231/257/344/273/243/347/240/201.js +124 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/21_kusama_/350/215/211/351/227/264/345/274/245/347/224/237/346/263/242/347/202/271//351/205/215/346/226/271/345/215/241.md +32 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/21_kusama_/350/215/211/351/227/264/345/274/245/347/224/237/346/263/242/347/202/271//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/27_kirby_/346/274/253/345/250/201Kirby//345/234/272/346/231/257/344/273/243/347/240/201.js +255 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/27_kirby_/346/274/253/345/250/201Kirby//351/205/215/346/226/271/345/215/241.md +30 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/27_kirby_/346/274/253/345/250/201Kirby//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/31_haring_/345/223/210/346/236/227/346/266/202/351/270/246//345/234/272/346/231/257/344/273/243/347/240/201.js +109 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/31_haring_/345/223/210/346/236/227/346/266/202/351/270/246//351/205/215/346/226/271/345/215/241.md +22 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/05_/346/263/242/346/231/256/344/270/216/350/241/227/345/244/264/31_haring_/345/223/210/346/236/227/346/266/202/351/270/246//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/16_2026_/345/275/223/344/273/243/346/211/201/345/271/263/346/217/222/347/224/273//345/234/272/346/231/257/344/273/243/347/240/201.js +565 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/16_2026_/345/275/223/344/273/243/346/211/201/345/271/263/346/217/222/347/224/273//351/205/215/346/226/271/345/215/241.md +55 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/16_2026_/345/275/223/344/273/243/346/211/201/345/271/263/346/217/222/347/224/273//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/25_ghibli_/345/220/211/345/215/234/345/212/233/346/260/264/345/275/251//345/234/272/346/231/257/344/273/243/347/240/201.js +251 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/25_ghibli_/345/220/211/345/215/234/345/212/233/346/260/264/345/275/251//351/205/215/346/226/271/345/215/241.md +31 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/25_ghibli_/345/220/211/345/215/234/345/212/233/346/260/264/345/275/251//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/33_rubberhose_/346/251/241/347/232/256/347/256/241/345/215/241/351/200/232//345/234/272/346/231/257/344/273/243/347/240/201.js +219 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/33_rubberhose_/346/251/241/347/232/256/347/256/241/345/215/241/351/200/232//351/205/215/346/226/271/345/215/241.md +31 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/33_rubberhose_/346/251/241/347/232/256/347/256/241/345/215/241/351/200/232//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/35_shinkai_/346/226/260/346/265/267/350/257/232/345/205/211/345/275/261//345/234/272/346/231/257/344/273/243/347/240/201.js +197 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/35_shinkai_/346/226/260/346/265/267/350/257/232/345/205/211/345/275/261//351/205/215/346/226/271/345/215/241.md +34 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/06_/345/215/241/351/200/232/344/270/216/345/212/250/347/224/273/35_shinkai_/346/226/260/346/265/267/350/257/232/345/205/211/345/275/261//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/14_8bit_8-bit/345/203/217/347/264/240//345/234/272/346/231/257/344/273/243/347/240/201.js +238 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/14_8bit_8-bit/345/203/217/347/264/240//351/205/215/346/226/271/345/215/241.md +27 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/14_8bit_8-bit/345/203/217/347/264/240//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/15_raytrace_/346/227/251/346/234/237/345/205/211/350/277/275CGI//345/234/272/346/231/257/344/273/243/347/240/201.js +300 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/15_raytrace_/346/227/251/346/234/237/345/205/211/350/277/275CGI//351/205/215/346/226/271/345/215/241.md +32 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/15_raytrace_/346/227/251/346/234/237/345/205/211/350/277/275CGI//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/26_vaporwave_/350/222/270/346/261/275/346/263/242//345/234/272/346/231/257/344/273/243/347/240/201.js +191 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/26_vaporwave_/350/222/270/346/261/275/346/263/242//351/205/215/346/226/271/345/215/241.md +27 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274/07_/346/225/260/345/255/227/344/270/216/345/203/217/347/264/240/26_vaporwave_/350/222/270/346/261/275/346/263/242//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274//345/216/237/347/211/210/346/200/273/347/264/242/345/274/225.md +47 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274//350/275/254/345/234/272_/350/277/201/347/247/273/346/265/213/350/257/225.md +53 -0
- package/engine/styles//350/211/272/346/234/257/351/243/216/346/240/274//351/237/263/350/275/250_/350/211/272/346/234/257/345/217/262/351/200/237/351/200/232.md +135 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//345/217/202/346/225/260/347/244/272/344/276/213.json +20 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//347/211/207/346/256/265/344/273/243/347/240/201.js +197 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +11 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//347/244/272/350/214/203/345/267/245/347/250/213/t1_s1.js +101 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//347/244/272/350/214/203/345/267/245/347/250/213/t1_s2.js +74 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//347/244/272/350/214/203/345/267/245/347/250/213/t1_s3.js +65 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//350/257/255/346/263/225/345/215/241.md +114 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/t1_3b1b_3Blue1Brown//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y1_kurzgesagt_Kurzgesagt//345/217/202/346/225/260/347/244/272/344/276/213.json +18 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y1_kurzgesagt_Kurzgesagt//347/211/207/346/256/265/344/273/243/347/240/201.js +143 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y1_kurzgesagt_Kurzgesagt//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +10 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y1_kurzgesagt_Kurzgesagt//347/244/272/350/214/203/345/267/245/347/250/213/kurzgesagt.js +347 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y1_kurzgesagt_Kurzgesagt//350/257/255/346/263/225/345/215/241.md +183 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y1_kurzgesagt_Kurzgesagt//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y3_whiteboard_/347/231/275/346/235/277//345/217/202/346/225/260/347/244/272/344/276/213.json +17 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y3_whiteboard_/347/231/275/346/235/277//347/211/207/346/256/265/344/273/243/347/240/201.js +206 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y3_whiteboard_/347/231/275/346/235/277//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +10 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y3_whiteboard_/347/231/275/346/235/277//347/244/272/350/214/203/345/267/245/347/250/213/whiteboard.js +162 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y3_whiteboard_/347/231/275/346/235/277//350/257/255/346/263/225/345/215/241.md +182 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/01_/347/247/221/346/231/256/345/233/276/350/247/243/y3_whiteboard_/347/231/275/346/235/277//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//345/217/202/346/225/260/347/244/272/344/276/213.json +17 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//347/211/207/346/256/265/344/273/243/347/240/201.js +243 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +10 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//347/244/272/350/214/203/345/267/245/347/250/213/t2_s1.js +57 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//347/244/272/350/214/203/345/267/245/347/250/213/t2_s2.js +70 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//347/244/272/350/214/203/345/267/245/347/250/213/t2_s3.js +61 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//350/257/255/346/263/225/345/215/241.md +109 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t2_keynote_ui_/345/217/221/345/270/203/344/274/232//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//345/217/202/346/225/260/347/244/272/344/276/213.json +27 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//347/211/207/346/256/265/344/273/243/347/240/201.js +174 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +11 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//347/244/272/350/214/203/345/267/245/347/250/213/t3_s1.js +48 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//347/244/272/350/214/203/345/267/245/347/250/213/t3_s2.js +42 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//347/244/272/350/214/203/345/267/245/347/250/213/t3_s3.js +51 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//350/257/255/346/263/225/345/215/241.md +107 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/t3_finance_chart_/350/264/242/347/273/217/345/233/276/350/241/250//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/y2_vox_Vox//345/217/202/346/225/260/347/244/272/344/276/213.json +14 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/y2_vox_Vox//347/211/207/346/256/265/344/273/243/347/240/201.js +141 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/y2_vox_Vox//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +10 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/y2_vox_Vox//347/244/272/350/214/203/345/267/245/347/250/213/vox.js +240 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/y2_vox_Vox//350/257/255/346/263/225/345/215/241.md +185 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/02_/346/226/260/351/227/273/344/270/216/346/225/260/346/215/256/y2_vox_Vox//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//345/217/202/346/225/260/347/244/272/344/276/213.json +14 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/211/207/346/256/265/344/273/243/347/240/201.js +168 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +14 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/s1_desk.js +18 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/s2_screen.js +82 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/s3_react.js +39 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/s4_wide.js +16 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/s5_close.js +18 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/story.js +25 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/vo_env.js +2 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//347/244/272/350/214/203/345/267/245/347/250/213/world.js +73 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//350/257/255/346/263/225/345/215/241.md +166 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y4_storytime_Storytime//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//345/217/202/346/225/260/347/244/272/344/276/213.json +14 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/211/207/346/256/265/344/273/243/347/240/201.js +126 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/244/272/350/214/203/345/267/245/347/250/213/eras.js +16 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/244/272/350/214/203/345/267/245/347/250/213/k1_title.js +38 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/244/272/350/214/203/345/267/245/347/250/213/k2_complete.js +55 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/244/272/350/214/203/345/267/245/347/250/213/k3_chat.js +47 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/244/272/350/214/203/345/267/245/347/250/213/k4_agent.js +49 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//347/244/272/350/214/203/345/267/245/347/250/213/kinetic.js +52 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//350/257/255/346/263/225/345/215/241.md +150 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y5_kinetic_type_/345/212/250/346/200/201/346/226/207/345/255/227//351/242/204/350/247/210.jpg +0 -0
- package/engine/styles//350/247/243/350/257/264/350/257/255/346/263/225/03_/350/212/202/345/245/217/344/270/216/344/272/272/347/211/251/y6_presenter_explainer_/350/256/262/350/247/243/345/221/230//350/257/255/346/263/225/345/215/241.md +24 -0
- package/engine/tests/episodes/ep00-demo.test.ts +69 -0
- package/engine/tests/episodes/ep01-agent-cues.test.ts +25 -0
- package/engine/tests/episodes/ep01-agent-scenes.test.ts +25 -0
- package/engine/tests/episodes/ep02-llm.test.ts +31 -0
- package/engine/tests/episodes/ep03-cc.test.ts +24 -0
- package/engine/tests/episodes/ep04-opus55.test.ts +24 -0
- package/engine/tests/episodes/ep05-token.test.ts +24 -0
- package/engine/tests/episodes/ep06-context.test.ts +24 -0
- package/engine/tests/episodes/ep07-agent.test.ts +24 -0
- package/engine/tests/episodes/ep08-hallucination.test.ts +24 -0
- package/engine/tests/episodes/ep09-prompt.test.ts +24 -0
- package/engine/tests/episodes/ep10-multimodal.test.ts +24 -0
- package/engine/tests/episodes/ep11-mcp.test.ts +24 -0
- package/engine/tests/episodes/ep12-skill.test.ts +24 -0
- package/engine/tests/episodes/ep13-subagent.test.ts +24 -0
- package/engine/tests/episodes/ep14-agent-permission.test.ts +24 -0
- package/engine/tests/episodes/ep15-prompt-injection.test.ts +24 -0
- package/engine/tests/episodes/ep16-agent-done.test.ts +24 -0
- package/engine/tests/episodes/ep17-sycophancy.test.ts +24 -0
- package/engine/tests/episodes/ep18-ai-history.test.ts +19 -0
- package/engine/tests/episodes/ep19-apple-history.test.ts +19 -0
- package/engine/tests/episodes/ep20-nvidia-history.test.ts +19 -0
- package/engine/tests/episodes/ep21-nobel-physics.test.ts +19 -0
- package/engine/tests/episodes/ep22-nobel-chemistry.test.ts +19 -0
- package/engine/tests/episodes/ep23-wheat-chessboard.test.ts +55 -0
- package/engine/tests/episodes/ep24-birthday-paradox.test.ts +140 -0
- package/engine/tests/episodes/ep25-behind-cover.test.ts +83 -0
- package/engine/tests/episodes/ep26-opus-video.test.ts +39 -0
- package/engine/tests/episodes/ep27-opus-video-full.test.ts +51 -0
- package/engine/tests/episodes/ep28-express-relay.test.ts +107 -0
- package/engine/tests/episodes/ep29-footsteps.test.ts +101 -0
- package/engine/tests/episodes/ep30-tang-divorce.test.ts +101 -0
- package/engine/tests/episodes/ep31-rigged.test.ts +108 -0
- package/engine/tests/episodes/ep32-love-lasts.test.ts +104 -0
- package/engine/tests/episodes/ep33-teammates.test.ts +113 -0
- package/engine/tests/episodes/ep34-song-takeout.test.ts +98 -0
- package/engine/tests/episodes/ep35-choke.test.ts +109 -0
- package/engine/tests/episodes/ep36-boxed-pigs.test.ts +98 -0
- package/engine/tests/episodes/ep37-bhop.test.ts +114 -0
- package/engine/tests/episodes/ep38-butterfly.test.ts +118 -0
- package/engine/tests/episodes/ep39-latency.test.ts +150 -0
- package/engine/tests/episodes/ep40-counter-strafe.test.ts +145 -0
- package/engine/tests/episodes/ep41-flying-money.test.ts +97 -0
- package/engine/tests/episodes/ep42-tap-fire.test.ts +137 -0
- package/engine/tests/episodes/ep43-one-more-game.test.ts +129 -0
- package/engine/tests/episodes/ep45-callouts.test.ts +150 -0
- package/engine/tests/episodes/ep46-song-ice.test.ts +117 -0
- package/engine/tests/episodes/ep47-spotlight.test.ts +159 -0
- package/engine/tests/episodes/ep48-jiggle-peek.test.ts +154 -0
- package/engine/tests/episodes/ep49-ad-strafe.test.ts +139 -0
- package/engine/tests/episodes/ep50-late-night.test.ts +156 -0
- package/engine/tests/episodes/ep51-practice.test.ts +117 -0
- package/engine/tests/library/anim.test.ts +37 -0
- package/engine/tests/library/bgm.test.ts +29 -0
- package/engine/tests/library/blackgold.test.ts +37 -0
- package/engine/tests/library/halftone.test.ts +40 -0
- package/engine/tests/library/lamplight.test.ts +60 -0
- package/engine/tests/library/srt.test.ts +13 -0
- package/engine/tests/library/subtitles.test.ts +12 -0
- package/engine/tests/library/synth.test.ts +29 -0
- package/engine/tests/library/tactical.test.ts +37 -0
- package/engine/tests/library/warm-desk.test.ts +25 -0
- package/engine/tsconfig.json +15 -0
- package/engine/vitest.config.ts +3 -0
- package/lib/host.mjs +654 -0
- package/manifest.json +51 -0
- package/package.json +8 -4
- package/skills/biuvibe/SKILL.md +28 -0
- package/studio/app.js +258 -0
- package/studio/assert-panel-permit.mjs +67 -0
- package/studio/composer.css +438 -0
- package/studio/composer.js +307 -0
- package/studio/index.html +82 -0
- package/studio/select-menu.js +433 -0
- package/studio/styles.css +2 -0
- package/studio/thumbs/blackgold.jpg +0 -0
- package/studio/thumbs/desk.jpg +0 -0
- package/studio/thumbs/editor.jpg +0 -0
- package/studio/thumbs/fps.jpg +0 -0
- package/studio/thumbs/gilded.jpg +0 -0
- package/studio/thumbs/halftone.jpg +0 -0
- package/studio/thumbs/lamplight.jpg +0 -0
- package/studio/thumbs/pixel-hand.jpg +0 -0
- package/studio/thumbs/pixel-sticker.jpg +0 -0
- package/studio/thumbs/vector.jpg +0 -0
- package/studio/thumbs/vox-cut.jpg +0 -0
- package/studio/thumbs/vox-timeline.jpg +0 -0
- package/README.md +0 -3
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 配乐卡点与音效
|
|
2
|
+
|
|
3
|
+
## we-never 网格(统一配乐,已授权 2026-10-11)
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
export const BAR = (102.52 - 17.45) / 40; // 两个重拍相隔正好 40 小节,一小节约 2.127 秒
|
|
7
|
+
export const BAR0 = 17.45 - 8 * BAR; // 第 0 拍 ≈ 0.44 秒
|
|
8
|
+
export const BEAT = BAR / 4;
|
|
9
|
+
export const fbt = (b: number) => fr(BAR0 + BEAT * b); // 第 b 拍的帧
|
|
10
|
+
export const fb = (k: number) => fbt(4 * k); // 第 k 小节
|
|
11
|
+
HIT = fb(8) // 17.45 秒,第 32 拍
|
|
12
|
+
HIT2 = fb(48) // 102.52 秒,第 192 拍(配乐换气后整段重新进来)
|
|
13
|
+
DARK_FROM = fr(16.7); DARK_FROM2 = fr(101.75); FREEZE = 3
|
|
14
|
+
DURATION = fr(beatSec(256) + 1) // ≈ 137.5 秒
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 实测重音(测试里 ±2 帧核对)
|
|
18
|
+
|
|
19
|
+
| 段落 | 拍号 | 秒 |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| 开场第一组 | 0 / 5 / 7 / 8 | 0.44 / 3.09 / 4.16 / 4.69 |
|
|
22
|
+
| 开场第二组 | 11 / 13 / 15 / 16 | 6.28 / 7.35 / 8.41 / 8.94 |
|
|
23
|
+
| 回落段 11 下硬拍(10–15 dB 跳变) | 165 · 167 · 168 / 171 · 173 · 175 · 176 / 181 · 183 · 184 / 187 | 88.16 · 89.23 · 89.76 · 91.35 · 92.42 · 93.48 · 94.01 · 96.67 · 97.73 · 98.27 · 99.86 |
|
|
24
|
+
| 强拍(换镜头、关键数字) | 80 / 85 / 88 / 104 / 112 / 117 / 120 / 128 / 133 / 136 / 144 | — |
|
|
25
|
+
|
|
26
|
+
**硬拍一拍一个动作**:回落段 11 下,ep36 是「双数下按拉杆、单数下冲到食槽」,对账卡每下跳一次数;下一期按选题换成「出一次价」「亮一个人」「多一个旁观者」。
|
|
27
|
+
|
|
28
|
+
## 重拍前后
|
|
29
|
+
|
|
30
|
+
- 重拍前约 0.75 秒(`DARK_FROM`)起整体收暗到 94% 黑(`pow(…, 0.7)`),最后 3 帧画面静止(`ff = min(f, HIT − FREEZE)`)。
|
|
31
|
+
- 重拍帧:标题 / 锚词 **+2 帧必须已经亮**(`SparkTitle instant`、`GlowSmash`)。
|
|
32
|
+
- 每小节第一拍整屏轻推 1.2%,两个重拍 4%(`barPunch`,从 `src/library/lamplight/scenes` 引;字幕在推的那层外面)。
|
|
33
|
+
|
|
34
|
+
## 音效(`audio/episodes/<期>.mjs`,照 ep36)
|
|
35
|
+
|
|
36
|
+
`cutMusic({track: 'we-never', start: 0, duration: DURATION, ep, fadeIn: 0.02, fadeOut: 2})` 成功后 `makeTacticalSfx(EP)`(借 riser),再用 ffmpeg `aevalsrc` 合成本期的:
|
|
37
|
+
|
|
38
|
+
| 名字 | 用途 | 音量 |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| room | 极轻粉噪底噪,整片 | 0.5 |
|
|
41
|
+
| impact | 两个爆点、关键结论(第 8、32、120、152、192、216 拍) | 爆点 0.66–0.7,其余 0.4–0.45 |
|
|
42
|
+
| riser | 两个爆点前 2 秒 | 0.55–0.6 |
|
|
43
|
+
| chime | 数字亮起、天平落定、结论(落在强拍上) | 0.35–0.45 |
|
|
44
|
+
| **本期动作音** | 模型里的动作,卡开场四连和回落段硬拍。ep36:press 拉杆咔哒(0.5–0.7)、drop 食粒落槽碎响(0.45–0.6)、run 小碎步(0.6) | — |
|
|
45
|
+
| 共享 whoosh / paper | 换章、引文出现 | 0.22–0.3 |
|
|
46
|
+
|
|
47
|
+
动作音按选题设计:拍卖 → 木槌 / 硬币;旁观者 → 心跳 / 呼救声的抽象音(不要真人声);天平 → 金属轻碰。合成后 `alimiter=limit=0.5` 压峰。
|
|
48
|
+
|
|
49
|
+
## 响度自查
|
|
50
|
+
|
|
51
|
+
- 整片约 −15.5 LUFS(ep36 −15.4)、真峰值 ≤ −1 dBFS(ep36 −1.7)。超了找峰值所在 0.1 秒窗口,通常是 impact + 动作音 + 配乐重音叠在同一拍,压低或去掉 impact。
|
|
52
|
+
- 高频小音效(铃、碎响、咔哒)用 1.2–5 kHz 带通比前后能量,要高出 10 dB 以上;全频 RMS 会被配乐重音淹掉、量不准:
|
|
53
|
+
```sh
|
|
54
|
+
ffmpeg -nostats -ss <秒> -t 0.2 -i a.wav -af "highpass=f=1200,lowpass=f=5000,volumedetect" -f null - 2>&1 | grep mean_volume
|
|
55
|
+
```
|
|
56
|
+
- **听不到声音要如实说**,只报数字。
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# 封面、发布文案、字幕稿
|
|
2
|
+
|
|
3
|
+
## 3:4 封面(代码渲染)
|
|
4
|
+
|
|
5
|
+
不用 AI 生图:中文一个字都不会错,画风和片子一致。照 `src/episodes/ep36-boxed-pigs/CoverTall.tsx`(1080×1440 的 `Still`):
|
|
6
|
+
|
|
7
|
+
- **上半标题字牌**:系列小字「黑金光影 · <领域>」(36px,灰,字距 12)→ 金色大标题(宋体 Black 176px,`#ffe9b0` + 多层金色光晕,和 `SparkTitle` 一致)→ 米白问句副题(92px,两行,关键词用青色发光)→ 红框钩子条(52px,一句戳痛点的话,不换行)。
|
|
8
|
+
- **下半主视觉**:把片中的舞台放进 `Stage`(1920×1080 舞台用 `left` / `top` / `scale` 裁进竖版),取最有戏的一刻(ep36:大猪甩汗奔跑 + 小猪趴着打呼)。动画帧取一个好看的固定值(`T = 47`)。
|
|
9
|
+
- **压暗层**:上半渐变压暗;底部一条压暗带。
|
|
10
|
+
- **底部一行结论数字**:灰色说明 + Garamond 大号金字(ep36「跑断腿 vs 躺着,净得 4 : 4」),必须和片中某句一致。
|
|
11
|
+
- 在 `src/Root.tsx` 的 `09-黑金光影风` 文件夹里注册 `<Still id="<期>-cover-tall" …>`。
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npx remotion still src/index.ts <期>-cover-tall <素材目录>/封面-3x4.png --timeout=120000 --log=error
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
渲完 Read 看:标题无压字、钩子条不换行、主视觉不被标题挡住、底部数字不压角色。
|
|
18
|
+
|
|
19
|
+
## 字幕稿 + SRT
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
node .claude/skills/weilanx-creator-blackgold-video/scripts/subtitles.mjs <期> <素材目录>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
产出 `字幕稿.md`(序号 | 时间 | 中文 | English)和 `字幕.srt`(双语两行)。标题卡、锚词爆点自动写成「标题:副题」「锚词(术语)」。
|
|
26
|
+
|
|
27
|
+
## 发布文案(`<素材目录>/发布文案.md`,结构照 ep36)
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
# <期> 发布文案
|
|
31
|
+
|
|
32
|
+
## 标题
|
|
33
|
+
[和封面一致的悬念问句](与封面一致;悬念提问式,N 字)
|
|
34
|
+
|
|
35
|
+
## 备选标题
|
|
36
|
+
- [反常识提问,钩子落在观众的处境]
|
|
37
|
+
- [结果先行,答案留到片里]
|
|
38
|
+
|
|
39
|
+
## 描述
|
|
40
|
+
[开场白描,2 句]
|
|
41
|
+
|
|
42
|
+
两分钟讲清楚「<模型名>」:
|
|
43
|
+
· [出处:年份 + 谁 + 做了什么 + 原文结论]
|
|
44
|
+
· [规则和数字]
|
|
45
|
+
· [推导两三步,带术语]
|
|
46
|
+
|
|
47
|
+
[结论那句 + 反面情况]
|
|
48
|
+
[重新定义锚词那两句]
|
|
49
|
+
|
|
50
|
+
[评论区问题]?评论区说说。
|
|
51
|
+
|
|
52
|
+
资料来源:[作者, 题目, 期刊 卷:页 (年份);书名 + 章节表号]。画面、动画和字幕全部用代码一帧一帧画出来,[舞台]为示意。
|
|
53
|
+
|
|
54
|
+
## 话题
|
|
55
|
+
#<模型名> #博弈论 / #经济学 / #心理学 … #冷知识 #知识视频 #涨知识 #Vibe知识大赏
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 发布前核对(内部,不要发出去)
|
|
60
|
+
- 每个数字的出处、核对情况(原文 / 摘要 / 自己算 / 示意)、测试位置
|
|
61
|
+
- 原实验和课本说法的差异;有意没说的
|
|
62
|
+
- 标题和事实的口径(会被挑刺的地方怎么回复)
|
|
63
|
+
- 封面数字对应片中哪一句
|
|
64
|
+
- 配乐:we-never,用户确认已授权(2026-10-11)
|
|
65
|
+
- 片尾没有下期预告
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
封面、发布文案、字幕稿、字幕.srt 都复制到 `<成片目录>/`。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 画面与镜头
|
|
2
|
+
|
|
3
|
+
## 内容 → 组件(`src/library/blackgold/`)
|
|
4
|
+
|
|
5
|
+
| 要表达的 | 组件 |
|
|
6
|
+
|---|---|
|
|
7
|
+
| 底色、质感 | `SmokeBg`(`tone` 暖 / 红,反面情况用红)、`Grain` |
|
|
8
|
+
| 旁白 | `BGCaption`(y 950、size 56;最后一句问题 y 560、size 76 居中);普通句 `out = 下一句开始 − 12`,话说一半随收暗退场 |
|
|
9
|
+
| 章节、出处 | `ChapterTag` 左上、`CiteLine` 顶部(作者 · 年份 / 期刊 卷 : 页) |
|
|
10
|
+
| 标题爆点 | `SparkTitle instant` + `FormulaField`(items 写本题的公式碎片) |
|
|
11
|
+
| 锚词爆点 | `GlowSmash` + 背后一个和锚词同义的图形(「等」→ `TickRing`) |
|
|
12
|
+
| 一个会动的小世界 | `pen.tsx`:`PigPen`(拉杆—管子—食槽)、`GlowPigG`(呼吸、眨眼、`sweat`、`zzz`、`eat`、`speed`)、`track` 跑位、`ShockG`、`LightMotesG`;人物题用 `GlowPawnG` / `Booth` / `Silhouettes` |
|
|
13
|
+
| 规则、结局 | `GlowCard` + 本期的卡片内容(ep36 `OutcomeCard`) |
|
|
14
|
+
| 2×2 博弈 | `PayoffMatrix`(箭头沿格子边缘,`hi` 标均衡)、`cellText` 由 `payoff()` 算 |
|
|
15
|
+
| 两个选项比大小 | `BalanceScale`(`phases` 一拍换一次数值,往大的一边沉) |
|
|
16
|
+
| 加减法 | `PelletStack`(`leave` 颗变汗珠飞走) |
|
|
17
|
+
| 硬拍上累加的数 | `Ledger`(`bumps` 那一帧闪一下,`hiCol` 大号金字) |
|
|
18
|
+
| 分布、比例、曲线 | `GlowBars`、`NeonLines`、`DotRing`、`CellGrid`、`TileSeq` |
|
|
19
|
+
| 中央一句话 | `CenterWord` |
|
|
20
|
+
|
|
21
|
+
## 每期都要有的「出彩设计」(3~5 个,只属于这个选题)
|
|
22
|
+
|
|
23
|
+
用户 2026-10-13 明确要求:不要只拼素材包,要为选题设计体验感。套路(详见配方卡「出彩的手法」):
|
|
24
|
+
|
|
25
|
+
1. **一个舞台贯穿全片**:开场、回落段、结尾回到同一个小世界,推导段只是离开一会儿。
|
|
26
|
+
2. **角色有生命**:呼吸、眨眼、甩汗、打呼、吃东西掉碎屑——先让观众对角色有情绪。
|
|
27
|
+
3. **把推理变成实物**:比较 → 天平;减法 → 东西飞走;累计 → 对账卡;陷阱 → 红烟 + 灯闪。
|
|
28
|
+
4. **硬拍推动数字**:回落段每一下硬拍都改变一个数,让观众亲眼看到结论成立。
|
|
29
|
+
5. **连续长镜头转场**:推理收尾时镜头推进结论那一格(ep36:`transform-origin` 设在纳什均衡格中心、最后 20 帧放大 6 倍淡出),下一镜头从 1.25 倍落回 1 倍。
|
|
30
|
+
6. **反面情况要有感官**:0 : 0 时灯接触不良(`flicker`)、肚子「咕……」。
|
|
31
|
+
|
|
32
|
+
做完把通用的挪进 `src/library/blackgold/`(`pen.tsx` 就是 ep36 沉淀出来的),补 `src/library/README.md` 和配方卡。
|
|
33
|
+
|
|
34
|
+
## 版式
|
|
35
|
+
|
|
36
|
+
- 字幕区 y > 880 留给字幕;舞台地面 `FLOOR_Y = 800`,舞台元素别压进字幕区。
|
|
37
|
+
- 顶部 0–200 给 `ChapterTag` / `CiteLine` / `Ledger`;有对账卡时把舞台整体 `translateY(40) scale(0.94)`(原点底部中间)让出顶部。
|
|
38
|
+
- 收益矩阵靠左(x ≈ 400),右边留给天平(cx ≈ 1500);均衡标签在矩阵右侧,天平在标签出现前淡出。
|
|
39
|
+
- 两个角色挨着时,大的放后面、小的画在前面,脚底中心至少隔开两者半宽之和(ep36 初版大猪压住小猪)。
|
|
40
|
+
|
|
41
|
+
## ep36 踩过的坑
|
|
42
|
+
|
|
43
|
+
- 标题在重拍 +2 帧还没亮 → `SparkTitle` 加 `instant`。
|
|
44
|
+
- `TickRing` 半径太小压住术语小字 → r ≥ 400。
|
|
45
|
+
- 天平数字压在吊绳上 → 数字放秤盘里(`top: ey + 62`)。
|
|
46
|
+
- 对账卡、食粒在 0.4 倍缩略图里太小 → 对账卡数字 54 / 76px、食粒 58px。
|
|
47
|
+
- Root 里有风格 `<Folder>`,新一期要注册进 `09-黑金光影风`,不要跟在别的风格最后一期后面。
|
|
48
|
+
|
|
49
|
+
## 自查清单(看 `qa.mjs` 拼图时逐条过)
|
|
50
|
+
|
|
51
|
+
- 文字重叠、出画、折行(标题、卡片、天平标签、对账卡);舞台元素压进字幕区
|
|
52
|
+
- 该出现的东西都出现了(每个元素的出场帧在镜头范围内);角色互相遮挡
|
|
53
|
+
- 爆点:−16 已开始收暗、−3 静止、+2 标题 / 锚词已经亮
|
|
54
|
+
- 中段抽帧:角色在跑、天平在晃、数字在跳,动画不是静止的
|
|
55
|
+
- 示意画面有「示意」标注;出处行写对作者、年份、卷页
|
|
56
|
+
- 响度约 −15.5 LUFS、峰值 ≤ −1 dBFS
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 选题、事实、选题与分镜脚本
|
|
2
|
+
|
|
3
|
+
## 好选题 = 三样都有
|
|
4
|
+
|
|
5
|
+
1. **一个人人有过的处境**,而且直觉是错的:干活多的吃亏(智猪博弈)、找对象该何时定(37% 法则)、人越多越没人管(旁观者效应)。
|
|
6
|
+
2. **一个能画出来的模型**:收益矩阵、天平、点阵、网络、曲线、一个小世界(猪圈、拍卖台、隔间)。抽象到画不出来的不做。
|
|
7
|
+
3. **能查到原文的数字或原话**:论文摘要、原书段落、教材表格。没有一手出处的流行说法(「眼镜蛇效应」这类轶事)不当事实讲。
|
|
8
|
+
|
|
9
|
+
选题池:`materials/09-黑金光影风/选题.md`(⭐ 先做)。参考视频讲过的不撞:囚徒困境、一报还一报、鹰鸽博弈、维克里拍卖、空间囚徒困境网格、公地悲剧、猜平均数的 2/3。
|
|
10
|
+
|
|
11
|
+
## 事实
|
|
12
|
+
|
|
13
|
+
- **论文**:读到摘要(ScienceDirect / PubMed / 期刊页);原话要引用就照摘要原文。只读到摘要的细节,字幕不能说得比摘要更具体。
|
|
14
|
+
- **教材 / 原书**:读到原段落(网络副本可以),写清版本和表号(ep36:Rasmusen《Games and Information》§1.4 表 1.6)。
|
|
15
|
+
- **同一个模型多个版本数字不同**(ep36 网上有一版是小猪先到吃 6 份):取权威教材那一版,在核对清单里注明另一版存在。
|
|
16
|
+
- **原实验和课本说法的差异**要在片里体现(ep36:原文是 dominant / subordinate,1979 段写「强的那只 / 弱的那只」,课本那段才说大猪小猪)。
|
|
17
|
+
- **能算的就算**:收益、均衡、概率、比例写成 `timeline.ts` 里的函数,测试复算;画面上的累计数(ep36 对账卡)注明是按规则累加的示意。
|
|
18
|
+
- **哲学题**(荒诞、虚无、悲观、斯多葛……)的「事实」是原著原话:找到原著章节(原文或通行中译本),字幕里的引文标书名和章节;不替哲学家说他没说过的话,流传的「名言」查不到出处就不用。
|
|
19
|
+
- 一个选题至少 2 个来源,至少 1 个是同行评审论文或权威教材原文。
|
|
20
|
+
|
|
21
|
+
## 锚词
|
|
22
|
+
|
|
23
|
+
2~4 个字,是这个模型落在普通人生活里的**处境或动作**,不是术语:智猪博弈 →「等」,最优停止 →「37%」,旁观者效应 →「别人会管」,一美元拍卖 →「停不下」。
|
|
24
|
+
|
|
25
|
+
出现四次:钩子第三句(`〔〕`金)、推导中段一次、第 192 拍大字砸出(下配「术语 · English」)、结尾重新定义(「等不是懒,是算出来的」)。
|
|
26
|
+
|
|
27
|
+
## 章节骨架(拍号固定,照 ep36)
|
|
28
|
+
|
|
29
|
+
| 拍 | 段落 | 做什么 |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| 0–24 | 钩子 | 第一秒就有发光的视觉锚点;三句把现象演出来(第二人称或「一个猪圈:…」这种白描);开场两组四连重音(0/5/7/8、11/13/15/16)每下一个动作 |
|
|
32
|
+
| 24 | 话说一半 | 「你猜,最后是谁吃亏了——」以「——」结尾,随收暗退场 |
|
|
33
|
+
| 32 | 爆点 1 | 金粒子聚成标题(`SparkTitle instant`)+ 漂浮公式;不放字幕 |
|
|
34
|
+
| 36–64 | 第 1 章:出处 | 原始实验 / 原始故事;`ChapterTag` + `CiteLine`(作者 · 年份 · 期刊卷页) |
|
|
35
|
+
| 64–96 | 第 2 章:规则和数字 | 规则卡、结局卡(`GlowCard`) |
|
|
36
|
+
| 96–160 | 第 3 章:推导 | 模型图(矩阵、天平、曲线),一步一拍点亮;术语用【】青色 |
|
|
37
|
+
| 160–188 | 回落段 | 11 下硬拍 = 模型在小世界里一遍遍运行,每下推动一个数(对账卡) |
|
|
38
|
+
| 188 | 话说一半 | 「它的全部本事,只有一个字——」 |
|
|
39
|
+
| 192 | 爆点 2 | 锚词砸出 + 同义图形(「等」配表盘刻度环)+ 术语小字;不放字幕 |
|
|
40
|
+
| 200–224 | 结论 | 把结论变成看得见的数(食粒柱 4 : 4);反面情况(都不做 → 0 : 0) |
|
|
41
|
+
| 224–240 | 重新定义锚词 | 「小猪敢躺,是因为有大猪在跑」「等不是懒,是算出来的」 |
|
|
42
|
+
| 240–片尾 | 评论区问题 | 大号居中字幕,人人有答案(「你身边,谁是大猪,谁是小猪?」),舞台压暗;不做下期预告 |
|
|
43
|
+
|
|
44
|
+
## 字幕规则
|
|
45
|
+
|
|
46
|
+
- 每句中文 ≤ 18 字(不算标点、空格和【】〔〕〖〗标记),英文意译、比中文短更好。
|
|
47
|
+
- 每句挂在拍点上,停 1~2 小节;推导段可以 4 拍一句(`它跟着按,净得 1;等着,净得 4。`)。
|
|
48
|
+
- 数字统一用阿拉伯数字,负号用「−」。
|
|
49
|
+
- 只有 `HALF_BEATS` 两句以「——」结尾;最后一句以「?」结尾。
|
|
50
|
+
- 爆点那一拍 `CUES` 写 `[拍, null, '']`,同一行 `// 说明`。
|
|
51
|
+
|
|
52
|
+
## `文案与卡点.md` 结构(ep36 那份是模板)
|
|
53
|
+
|
|
54
|
+
1. 一句话:作品 ID、规格、配乐。
|
|
55
|
+
2. 锚词「X」:四个出现位置。
|
|
56
|
+
3. 卡点表:拍 | 秒 | 配乐 | 画面。
|
|
57
|
+
4. 事实清单:说法 | 出处 | 核对(读到原文 / 摘要 / 自己算 / 示意)。
|
|
58
|
+
5. 有意不说的:原实验和课本的差异、查不到原文的流行说法、标题的口径。
|
|
59
|
+
6. 本期专属的出彩设计(3~5 条)。
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// 一期的自动自查:抽帧拼图 + 两个爆点的收暗 / 静止 / 爆发 + 整片响度 + 每个音效有没有被配乐盖住。
|
|
3
|
+
// node .claude/skills/weilanx-creator-blackgold-video/scripts/qa.mjs <期> # 全部
|
|
4
|
+
// node .claude/skills/weilanx-creator-blackgold-video/scripts/qa.mjs <期> --frames # 只抽帧
|
|
5
|
+
// node .claude/skills/weilanx-creator-blackgold-video/scripts/qa.mjs <期> --audio # 只测音频
|
|
6
|
+
// node .claude/skills/weilanx-creator-blackgold-video/scripts/qa.mjs <期> --frames-only=title,hit2 # 只重渲某几个镜头
|
|
7
|
+
// --loud=impact,press,drop # 要检查「有没有被配乐盖住」的音效文件名(默认见下面 LOUD)
|
|
8
|
+
// 产物在 /tmp/<期>/qa/:sheet-1.jpg、sheet-2.jpg …(每张 4×4,标了镜头名)、hits.jpg(两个爆点 −16 / −3 / +2 帧)、report.md。
|
|
9
|
+
// 读 src/episodes/<期>/timeline.ts 的 SHOTS、HIT、HIT2、SFX、DURATION、FPS;timeline.ts 里不能 import 别的 .ts / .tsx(Node 只能剥掉本文件的类型)。
|
|
10
|
+
// 运行前先 export NODE_OPTIONS=--max-old-space-size=4096。一次只渲一帧(并发渲染会把内存吃光)。
|
|
11
|
+
import {execFileSync, spawnSync} from 'node:child_process';
|
|
12
|
+
import {existsSync, mkdirSync, writeFileSync} from 'node:fs';
|
|
13
|
+
import {resolve} from 'node:path';
|
|
14
|
+
import {pathToFileURL} from 'node:url';
|
|
15
|
+
|
|
16
|
+
const [ep, ...flags] = process.argv.slice(2);
|
|
17
|
+
if (!ep) {
|
|
18
|
+
console.error('用法:node qa.mjs <期> [--frames | --audio | --frames-only=a,b]');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const only = flags.find((x) => x.startsWith('--frames-only='))?.split('=')[1]?.split(',');
|
|
22
|
+
const doFrames = !flags.includes('--audio');
|
|
23
|
+
const doAudio = !flags.includes('--frames') && !only;
|
|
24
|
+
const T = await import(pathToFileURL(resolve(`src/episodes/${ep}/timeline.ts`)).href);
|
|
25
|
+
const dir = `/tmp/${ep}/qa`;
|
|
26
|
+
mkdirSync(dir, {recursive: true});
|
|
27
|
+
const run = (cmd, args) => execFileSync(cmd, args, {stdio: ['ignore', 'pipe', 'pipe'], maxBuffer: 1 << 28}).toString();
|
|
28
|
+
/** ffmpeg 的统计信息都打在 stderr 上,成功时也要读 stderr */
|
|
29
|
+
const runErr = (cmd, args) => {
|
|
30
|
+
const r = spawnSync(cmd, args, {maxBuffer: 1 << 28});
|
|
31
|
+
return String(r.stderr ?? '') + String(r.stdout ?? '');
|
|
32
|
+
};
|
|
33
|
+
const still = (name, frame) => {
|
|
34
|
+
const out = `${dir}/${name}.jpg`;
|
|
35
|
+
run('npx', ['remotion', 'still', 'src/index.ts', ep, out, `--frame=${frame}`, '--scale=0.5', '--timeout=120000']);
|
|
36
|
+
// 左上角写镜头名和帧号,拼图时好对照
|
|
37
|
+
run('ffmpeg', ['-v', 'error', '-y', '-i', out, '-vf', `drawbox=x=0:y=0:w=330:h=44:color=black@0.7:t=fill,drawtext=text='${name} f${frame}':x=10:y=10:fontsize=24:fontcolor=yellow`, `${out}.tmp.jpg`]);
|
|
38
|
+
run('mv', [`${out}.tmp.jpg`, out]);
|
|
39
|
+
return out;
|
|
40
|
+
};
|
|
41
|
+
const sheet = (files, out, cols = 4) => {
|
|
42
|
+
const n = files.length;
|
|
43
|
+
const layout = files.map((_, i) => `${i % cols === 0 ? '0' : Array(i % cols).fill('w0').join('+')}_${Math.floor(i / cols) === 0 ? '0' : Array(Math.floor(i / cols)).fill('h0').join('+')}`).join('|');
|
|
44
|
+
run('ffmpeg', ['-v', 'error', '-y', ...files.flatMap((f) => ['-i', f]), '-filter_complex', n === 1 ? 'null' : `xstack=inputs=${n}:layout=${layout}:fill=black`, out]);
|
|
45
|
+
};
|
|
46
|
+
const report = [`# ${ep} 自查报告`, ''];
|
|
47
|
+
|
|
48
|
+
if (doFrames) {
|
|
49
|
+
// 每个镜头取切走前的倒数第 4 帧:这时画面里该出现的东西都应该已经出来了(上一镜头的字幕也已退场)。
|
|
50
|
+
// 曾经漏过的 bug:节点要等到镜头结束之后才点亮、从头到尾都没露面——只看 3/4 处发现不了
|
|
51
|
+
const shots = Object.entries(T.SHOTS).filter(([k]) => !only || only.includes(k));
|
|
52
|
+
const files = [];
|
|
53
|
+
for (const [k, [a, b]] of shots) {
|
|
54
|
+
const f = Math.max(a, b - 4);
|
|
55
|
+
files.push(still(k, f));
|
|
56
|
+
process.stdout.write(`· ${k} `);
|
|
57
|
+
}
|
|
58
|
+
for (let i = 0; i < files.length; i += 16) sheet(files.slice(i, i + 16), `${dir}/sheet-${i / 16 + 1}.jpg`);
|
|
59
|
+
report.push(`## 抽帧`, '', `每个镜头切走前一帧,拼成 ${Math.ceil(files.length / 16)} 张:${Array.from({length: Math.ceil(files.length / 16)}, (_, i) => `${dir}/sheet-${i + 1}.jpg`).join('、')}`, '');
|
|
60
|
+
if (!only) {
|
|
61
|
+
const hits = [];
|
|
62
|
+
for (const [name, H] of [['hit1', T.HIT], ['hit2', T.HIT2]]) for (const d of [-16, -3, 2]) hits.push(still(`${name}${d > 0 ? '+' : ''}${d}`, H + d));
|
|
63
|
+
sheet(hits, `${dir}/hits.jpg`, 3);
|
|
64
|
+
report.push(`两个爆点各 −16 / −3 / +2 帧:${dir}/hits.jpg(应当是 收暗 → 静止 → 已经亮起来)`, '');
|
|
65
|
+
}
|
|
66
|
+
console.log('\n抽帧完成');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (doAudio) {
|
|
70
|
+
const wav = `${dir}/a.wav`;
|
|
71
|
+
run('npx', ['remotion', 'render', 'src/index.ts', ep, wav, '--codec=wav']);
|
|
72
|
+
const eb = runErr('ffmpeg', ['-nostats', '-i', wav, '-af', 'ebur128=peak=true', '-f', 'null', '-']);
|
|
73
|
+
const I = Number(/I:\s+(-?[\d.]+) LUFS/.exec(eb.split('Summary')[1] ?? '')?.[1]);
|
|
74
|
+
const peak = Number(/Peak:\s+(-?[\d.]+) dBFS/.exec(eb.split('Summary')[1] ?? '')?.[1]);
|
|
75
|
+
// band = true 时只量 1.2–5 kHz:铃、咔哒、碎响这类高频小音效全频会被配乐低频淹掉,看频段才准
|
|
76
|
+
const mean = (t, d, band = false) =>
|
|
77
|
+
Number(/mean_volume: (-?[\d.]+) dB/.exec(runErr('ffmpeg', ['-ss', String(Math.max(0, t)), '-t', String(d), '-i', wav, '-af', `${band ? 'highpass=f=1200,lowpass=f=5000,' : ''}volumedetect`, '-f', 'null', '-']))?.[1] ?? NaN);
|
|
78
|
+
report.push('## 音频', '', `- 整片 ${I} LUFS(目标约 −15.5)、真峰值 ${peak} dBFS(不能高于 −1.0)${I > -14.5 || I < -16.5 || peak > -1 ? ' ⚠' : ''}`, '');
|
|
79
|
+
// 只看「要听得见」的音效:冲击、本期的动作音(按键、落下、铃);whoosh、paper、room 本来就轻
|
|
80
|
+
const LOUD = flags.find((x) => x.startsWith('--loud='))?.split('=')[1]?.split(',') ?? ['impact', 'press', 'drop', 'chime', 'bell', 'clink', 'stamp', 'coin', 'tick'];
|
|
81
|
+
const loud = new RegExp(`/(${LOUD.join('|')})\\.wav$`);
|
|
82
|
+
const weak = [];
|
|
83
|
+
for (const [file, at, vol] of T.SFX) {
|
|
84
|
+
if (!loud.test(file)) continue;
|
|
85
|
+
const t = at / T.FPS;
|
|
86
|
+
const rise = mean(t, 0.15) - mean(t - 0.3, 0.15);
|
|
87
|
+
const riseHi = mean(t, 0.15, true) - mean(t - 0.3, 0.15, true);
|
|
88
|
+
// 全频高出 4 dB,或者 1.2–5 kHz 高出 6 dB,就算听得见
|
|
89
|
+
if (!(rise >= 4 || riseHi >= 6)) weak.push(`- ${file.split('/').pop()} @ ${t.toFixed(2)} 秒(音量 ${vol}):全频只高 ${rise.toFixed(1)} dB、1.2–5 kHz 只高 ${riseHi.toFixed(1)} dB`);
|
|
90
|
+
}
|
|
91
|
+
report.push(weak.length ? `被配乐盖住的音效(全频高出不到 4 dB、1.2–5 kHz 也高出不到 6 dB;要么加音量、要么挪开前面的音效):\n${weak.join('\n')}` : '要听得见的音效都比前一刻明显高出(全频 ≥ 4 dB 或 1.2–5 kHz ≥ 6 dB)。', '');
|
|
92
|
+
report.push('音量只看数值,听感要让用户自己确认。', '');
|
|
93
|
+
console.log(`音频:${I} LUFS / 峰值 ${peak} dBFS / 偏弱音效 ${weak.length} 处`);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
writeFileSync(`${dir}/report.md`, report.join('\n'));
|
|
97
|
+
console.log(`报告:${dir}/report.md`);
|
|
98
|
+
if (!existsSync(`public/audio/${ep}/bgm.wav`)) console.log('⚠ 还没生成音频:node audio/episodes/<期>.mjs');
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// 从一期黑金光影风的 timeline.ts 生成双语字幕稿和 SRT:
|
|
3
|
+
// node .claude/skills/weilanx-creator-blackgold-video/scripts/subtitles.mjs <期> <输出目录>
|
|
4
|
+
// 产物:<输出目录>/字幕稿.md(序号 | 时间 | 中文 | English)、<输出目录>/字幕.srt(中文一行 + 英文一行)。
|
|
5
|
+
// 读 CUES([拍号, 中文 | null, 英文])、cueStart、cueEnd、HALF_BEATS、DARK_FROM、DARK_FROM2、HIT、HIT2、FPS、DURATION、
|
|
6
|
+
// TITLE、TITLE_EN、TITLE_SUB、ANCHOR、TERM。中文为 null 的条目:落在 HIT 上写标题,落在 HIT2 上写锚词 + 术语,其余用源码同一行的 // 注释。
|
|
7
|
+
// Node 24 直接 import .ts(剥掉类型),所以 timeline.ts 不能 import 别的 .ts / .tsx。
|
|
8
|
+
import {mkdirSync, readFileSync, writeFileSync} from 'node:fs';
|
|
9
|
+
import {resolve} from 'node:path';
|
|
10
|
+
import {pathToFileURL} from 'node:url';
|
|
11
|
+
|
|
12
|
+
const [ep, outDir] = process.argv.slice(2);
|
|
13
|
+
if (!ep || !outDir) {
|
|
14
|
+
console.error('用法:node subtitles.mjs <期> <输出目录>');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const src = resolve(`src/episodes/${ep}/timeline.ts`);
|
|
18
|
+
const T = await import(pathToFileURL(src).href);
|
|
19
|
+
const notes = new Map();
|
|
20
|
+
for (const m of readFileSync(src, 'utf8').matchAll(/\[(\d+),\s*null,\s*'[^']*'\],?\s*\/\/\s*(.+)/g)) notes.set(Number(m[1]), m[2].trim());
|
|
21
|
+
|
|
22
|
+
const strip = (s) => s.replace(/[【】〔〕〖〗]/g, '');
|
|
23
|
+
const srt = (f) => {
|
|
24
|
+
const ms = Math.round((f / T.FPS) * 1000);
|
|
25
|
+
const p = (n, w = 2) => String(n).padStart(w, '0');
|
|
26
|
+
return `${p(Math.floor(ms / 3600000))}:${p(Math.floor(ms / 60000) % 60)}:${p(Math.floor(ms / 1000) % 60)},${p(ms % 1000, 3)}`;
|
|
27
|
+
};
|
|
28
|
+
const mmss = (f) => {
|
|
29
|
+
const t = f / T.FPS;
|
|
30
|
+
return `${String(Math.floor(t / 60)).padStart(2, '0')}:${(t % 60).toFixed(1).padStart(4, '0')}`;
|
|
31
|
+
};
|
|
32
|
+
const half = T.HALF_BEATS ?? [];
|
|
33
|
+
const rows = [];
|
|
34
|
+
T.CUES.forEach(([beat, cn, en], i) => {
|
|
35
|
+
const a = T.cueStart(i);
|
|
36
|
+
let e = T.cueEnd(i);
|
|
37
|
+
if (beat === half[0] && T.DARK_FROM) e = T.DARK_FROM;
|
|
38
|
+
if (beat === half[1] && T.DARK_FROM2) e = T.DARK_FROM2;
|
|
39
|
+
if (cn) return rows.push({a, e, cn: strip(cn), en});
|
|
40
|
+
if (a === T.HIT && T.TITLE) return rows.push({a, e, cn: `${T.TITLE.replace(/\n/g, '')}${T.TITLE_SUB ? `:${T.TITLE_SUB}` : ''}`, en: T.TITLE_EN ?? ''});
|
|
41
|
+
if (a === T.HIT2 && T.ANCHOR) return rows.push({a, e, cn: `${T.ANCHOR}${T.TERM ? `(${T.TERM.split(' · ')[0]})` : ''}`, en: T.TERM?.split(' · ')[1] ?? ''});
|
|
42
|
+
if (notes.has(beat)) rows.push({a, e, cn: `【${notes.get(beat)}】`, en: ''});
|
|
43
|
+
});
|
|
44
|
+
const hits = [T.HIT, T.HIT2].filter((x) => x !== undefined).map(mmss).join('、');
|
|
45
|
+
const md =
|
|
46
|
+
`# 字幕稿 · ${ep}${T.TITLE ? ` ${T.TITLE.replace(/\n/g, '')}` : ''}\n\n共 ${rows.length} 条 · 时长 ${mmss(T.DURATION)} · 无口播,画面上的双语字幕即旁白${hits ? ` · 爆点 ${hits}` : ''}\n\n` +
|
|
47
|
+
`| 序号 | 时间 | 中文 | English |\n|---:|:---|:---|:---|\n` +
|
|
48
|
+
rows.map((r, i) => `| ${i + 1} | ${mmss(r.a)}–${mmss(r.e)} | ${r.cn} | ${r.en} |`).join('\n') +
|
|
49
|
+
'\n';
|
|
50
|
+
mkdirSync(resolve(outDir), {recursive: true});
|
|
51
|
+
writeFileSync(resolve(outDir, '字幕稿.md'), md);
|
|
52
|
+
writeFileSync(resolve(outDir, '字幕.srt'), rows.filter((r) => !r.cn.startsWith('【')).map((r, i) => `${i + 1}\n${srt(r.a)} --> ${srt(r.e)}\n${r.cn}${r.en ? `\n${r.en}` : ''}\n`).join('\n'));
|
|
53
|
+
console.log(`wrote ${outDir}/字幕稿.md + 字幕.srt(${rows.length} 条,${mmss(T.DURATION)})`);
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: weilanx-creator-desk-video
|
|
3
|
+
description: 「暖纸工作台风」口播视频工作流:用户给一个主题(多是「我是怎么用 AI 做 XX 的」「一件事分几步」这类流程拆解),依次写口播稿、复刻音色配音并加速 1.2 倍、转 SRT;或者用户给一段自己录好的真人口播视频,直接转 SRT 并把真人放进左下角出镜小窗做 A-roll / B-roll。在 weilanx-claude-videos 工程里做成横屏 16:9 的口播视频:暖米色点阵纸当工作台(柔光晕 + 漂浮几何),白色窗口卡片和主视觉图形(清单、终端、同心圆、胶片、流程卡)一层层摆上来又滑走,阿里巴巴普惠体粗黑体标题 + 一块朱橙渐变高亮,顶部步骤条随口播推进,右下角像素吉祥物 CC 常驻换表情,字幕在底部;再出 3:4 封面和发布文案,打开 Studio 给用户预览,确认后导出(成片 + 分轨 + 封面 + 字幕稿 + 文案)。用户说「用暖纸风做一期」「做一期流程拆解」「像 dl(4) 那种口播风格做一期」「用工作台风格讲讲 XX」「做一期 XX 分几步」「我录好了口播,用暖纸风做出来」时都用这个 skill。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 一个主题 / 一段真人口播 → 一期暖纸工作台风口播视频
|
|
7
|
+
|
|
8
|
+
> **目录约定(2026-10-13 起)**:`materials/` 和 `out/` 按风格分类、风格内从 00 编号,代码里的作品 ID(下文的 `<期>`)不变。下文 `<素材目录>` = `materials/<风格>/<编号-中文短题>/`,`<成片目录>` = `out/` 下同名目录。新一期开工时先建:`bash scripts/ep-dir.sh <期> materials --new <风格目录> <中文短题>`(自动取下一个编号,materials 和 out 一起建);之后查路径用 `bash scripts/ep-dir.sh <期> materials` / `bash scripts/ep-dir.sh <期> out`。`npm run export -- <期>` 会自动把成片放进 `<成片目录>`。
|
|
9
|
+
> 本 skill 的风格目录是 `07-暖纸工作台风`。
|
|
10
|
+
|
|
11
|
+
风格配方:`styles/我的风格/暖纸工作台风/README.md`(从一支参考视频蒸馏,参考视频不进 git);素材包 `src/library/warm-desk/`;口播骨架 `DeskShow`;最小例子 `src/library/previews/WarmDeskShowDemo.tsx`(Studio 里 `library-warm-desk-show`),全部组件一览 `library-warm-desk`,封面 `library-warm-desk-cover`。**真人出镜的样片是 `ep26-opus-video`**(用户认可的版本:左下角出镜小窗、A/B-roll 交替、每个场景一个主视觉),做真人口播时先读它的 `scenes.tsx` 和 `Ep26OpusVideo.tsx`。
|
|
12
|
+
|
|
13
|
+
这套风格的灵魂:**一张纸、一条步骤线、一个吉祥物**。观众始终知道「现在讲到第几步」(顶部步骤条),每句口播都有一张卡片在桌上发生变化,结论用粗黑体大字 + 朱橙块砸下来。
|
|
14
|
+
|
|
15
|
+
用户对画面的要求是**丰富、优雅、有设计感**——只摆一张卡片 + 一行字会被说「太素、太单调」。具体做法见下面「画面质量线」和 `references/画面配方.md`。
|
|
16
|
+
|
|
17
|
+
按第 0~6 步一口气做完,中途不等用户确认,每步做完用一两句话同步进度;第 6 步打开 Studio 后停下,**用户确认后才导出**;不提交 git,除非用户另外要求。动手前先读工程根目录 `CLAUDE.md`、`src/library/README.md`「暖纸工作台风」一节、风格配方卡。所有 npm / npx / node 命令前先 `export NODE_OPTIONS=--max-old-space-size=4096`。
|
|
18
|
+
|
|
19
|
+
## 依赖(开源版说明)
|
|
20
|
+
|
|
21
|
+
这个工作流原本串起了作者的几个私人 Skill,仓库里没有带。换成你自己的工具即可,接口只要求「输入文本 / 音频,输出文件」:
|
|
22
|
+
|
|
23
|
+
| 步骤 | 作者用的私人 Skill | 换成 |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| 写口播稿 | `weilanx-creator-spoken-script` | 自己写,或让 Agent 按「强钩子开头、句子连贯、不用冒号括号」写 |
|
|
26
|
+
| 配音 | `weilanx-doubao-voice-clone`(豆包复刻音色) | 任何 TTS 或真人录音,输出 wav / mp3 |
|
|
27
|
+
| 字幕 | `weilanx-doubao-voice-srt`(豆包录音识别) | 任何语音识别工具,输出 SRT |
|
|
28
|
+
| 标题 | `dbs-xhs-title`(标题公式库) | 自己起标题,或让 Agent 按「≤ 20 字、留悬念」写 |
|
|
29
|
+
|
|
30
|
+
真人出镜的 `footage/<期>/host.mp4` 不在仓库里,换成你自己的录像。字幕导入、出片、导出这些工程内的步骤都不依赖上面的私人工具。
|
|
31
|
+
|
|
32
|
+
## 两种来源
|
|
33
|
+
|
|
34
|
+
| | 配音口播(默认) | 真人口播(用户给了录好的视频) |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| 口播 | 第 1~2 步:写稿 → 复刻音色 → 1.2 倍速 | 跳过第 1~2 步,用户的录音就是口播,不加速 |
|
|
37
|
+
| 字幕 | 识别加速后的配音 | 识别原录音(`weilanx-doubao-voice-srt`) |
|
|
38
|
+
| 画面 | 卡片占满主内容区 | 左下角出镜小窗 `HostCam`:A-roll 放大(人是主角)、B-roll 缩小(卡片是主角) |
|
|
39
|
+
| 结构 | 开场钩子 → 摊开过程 → 3~7 步 → 金句 → 关注 | 跟着用户的口播走,同样拆成 开场 / 章节 / 收尾 |
|
|
40
|
+
|
|
41
|
+
## 规格
|
|
42
|
+
|
|
43
|
+
| 项 | 默认 |
|
|
44
|
+
|---|---|
|
|
45
|
+
| 画面 | 横屏 1920×1080、30fps,`DeskShow` 骨架,首帧横版封面 `DeskCoverWide`;`decor` 开背景漂浮几何(避开内容区),`push` 默认 2.5% 场景内缓推 |
|
|
46
|
+
| 配色 / 字体 | 唯一强调色朱橙 `#f15a35`(大色块用 `OG` 渐变);全部阿里巴巴普惠体 3.0(`DF.sans` / `DF.serif` 都指向它,标题 900、字幕 800、卡片 700),本机没装时回落思源黑体 Heavy |
|
|
47
|
+
| 时长 | 2~3 分钟(口播 800~1100 字,加速 1.2 倍后);用户给了时长或录好了视频,按用户的 |
|
|
48
|
+
| 结构 | 开场钩子 → 「今天把整个过程摊开」→ 3~7 步,每步一个章节大标题 → 收束金句 → 关注卡 |
|
|
49
|
+
| 人声 | **−19 LUFS**(用户嫌 −16 太响),峰值 ≤ −1.5 dBFS |
|
|
50
|
+
| 配乐 | `buildBgm` 合成,`light` / `groove` 为主,**`level: 0.05`**、`depth 0.7`,`DeskShowConfig.bgmVolume: 0.85`(人声 + 配乐合计约 −19 LUFS) |
|
|
51
|
+
| 音效 | 共享音效:卡片落下 `paper` / `pop`,步骤点亮 `ding`,选择 `click`,打字 `type`,揭晓 `magic`,换章 `whoosh`;**音量 0.16–0.26**,宁轻勿重 |
|
|
52
|
+
| 封面 | 3:4 竖版 `DeskCoverTall`(1080×1440,平台单独上传用) |
|
|
53
|
+
|
|
54
|
+
## 画面质量线(每个场景都要过)
|
|
55
|
+
|
|
56
|
+
1. **一个主视觉**:每个 B-roll 场景挑一个当主角——信息卡(`props.tsx`:清单、深色终端、表格……)或设计图形(`motifs.tsx`:同心圆、胶片条、图标大卡、流程卡、播放卡、悬念卡、徽章),不要只有一行字。
|
|
57
|
+
2. **一句粗黑体标题**带 `kicker` 小眉标(短橙线 + 灰字),关键词 `〔词〕` 橙块刷入 + 星光。
|
|
58
|
+
3. **层次**:卡片带 `stack` 叠纸或倾斜 ±2°,主视觉旁边放一个辅助元素(标签、胶片条、播放卡、徽章),背景有柔光和漂浮几何。
|
|
59
|
+
4. **动效**:入场都是回弹 + 去模糊(`rise` / `Rise` 已内置),列表从左滑入,图形逐层点亮,挂在 `cw` 的词上;揭晓时 `Sparkle`(放在内容**后面**,DOM 里先画,不然线条压字)。
|
|
60
|
+
5. **不编数据**:缩略图、示意画面用风格配色画极简示意,不放假截图、不编时长和播放量。
|
|
61
|
+
|
|
62
|
+
## 0. 定期数和目录
|
|
63
|
+
|
|
64
|
+
- 期号取 `src/episodes/` 里最大的下一个,作品 ID `epNN-英文短名`,下面记作 `<期>`。
|
|
65
|
+
- 素材 `<素材目录>/`,代码 `src/episodes/<期>/`,音频 `public/audio/<期>/`,配乐脚本 `audio/episodes/<期>.mjs`,测试 `tests/episodes/<期>.test.ts`。
|
|
66
|
+
- 选题候选池 `materials/00-公共/选题候选池.md`:开工把那一行改成 🎬,导出后改 ✅ 并填期号。
|
|
67
|
+
|
|
68
|
+
## 1. 写口播稿(真人口播跳过)
|
|
69
|
+
|
|
70
|
+
调用 `weilanx-creator-spoken-script` Skill,交代清楚这是「流程拆解」:
|
|
71
|
+
|
|
72
|
+
- 先抛结果或反差(「你现在看的这条 XX,全是 AI 做的」「我只说了一句话」),再说「今天就把整个过程摊开给你看」。
|
|
73
|
+
- 正文按步骤讲,**步骤名 2~3 个字**(会直接上步骤条和章节标题),每步开头一句「第 N 步」;每步讲:做了什么 → 卡在哪 → 怎么解决的。
|
|
74
|
+
- 结尾一句能当大字的金句(会用橙块高亮其中一个词),再一句关注引导。
|
|
75
|
+
- 存 `<素材目录>/口播稿.txt`(只放能念的正文),回复里贴全文、字数和要核对的事实。
|
|
76
|
+
|
|
77
|
+
## 2. 配音并加速 1.2 倍(真人口播跳过)
|
|
78
|
+
|
|
79
|
+
调用 `weilanx-doubao-voice-clone`:
|
|
80
|
+
|
|
81
|
+
```sh
|
|
82
|
+
python3 scripts/voice.py status
|
|
83
|
+
python3 scripts/voice.py synthesize --text-file <工程>/<素材目录>/口播稿.txt --output <工程>/<素材目录>/<期>-口播-中文标准版.mp3
|
|
84
|
+
ffmpeg -i <素材目录>/<期>-口播-中文标准版.mp3 -filter:a atempo=1.2 -ar 48000 -c:a pcm_s16le <素材目录>/<期>-口播-1.2x.wav
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 3. 转 SRT
|
|
88
|
+
|
|
89
|
+
调用 `weilanx-doubao-voice-srt`:配音口播识别**已加速**的 `<期>-口播-1.2x.wav`(不要再加速);真人口播直接识别原录音。用口播稿(有的话)校对用字,每行 6~16 字、去标点。输出 `<素材目录>/字幕.srt` 和 `字幕稿.md`(文件名固定,导出时会复制)。识别和稿子对不上的地方记下来,最后提醒用户去听。
|
|
90
|
+
|
|
91
|
+
## 4. 建工程
|
|
92
|
+
|
|
93
|
+
详见 `references/工程模板.md`(文件清单 + 每个文件的模板代码,含真人出镜版)和 `references/画面配方.md`(每类口播内容用哪个组件、主视觉怎么选、版式安全区、节奏和音效)。
|
|
94
|
+
|
|
95
|
+
1. **人声**:`ebur128` 测响度 → `volume=<增益>dB,alimiter=limit=0.8:level=false` 调到 **−19 LUFS**(±0.5)→ 48kHz 立体声 16-bit → `public/audio/<期>/voice.wav`。真人口播从原视频里抽(`-vn`)。
|
|
96
|
+
2. **出镜视频(真人口播)**:裁成方形、H.264、去音轨 → `public/footage/<期>/host.mp4`(命令见工程模板);人声只走 `voice.wav`,小窗静音。
|
|
97
|
+
3. **字幕**:`npm run cues -- <素材目录>/字幕.srt src/episodes/<期>/cues.json`;`cues.ts` 里 `VOICE_SECONDS` = 人声时长 + 0.3~0.5 秒,且不短于最后一条字幕结束。
|
|
98
|
+
4. **配乐**:`audio/episodes/<期>.mjs` 写段落表调 `buildBgm({…, level: 0.05})`,只跑 `node audio/episodes/<期>.mjs`。
|
|
99
|
+
5. **场景表**:`src/episodes/<期>/scenes.tsx` 导出 `DeskScene[]`(真人口播再加 `roll: 'A' | 'B'`),每句或每两句口播一个场景,`from = cf(n) − 6`;动画挂 `cf(n)` / `cw(n, '词')`;步骤场景填 `step`,开场和结尾不填(步骤条只在正文出现);吉祥物表情 `eyes`、跳一下 `hop`、头顶小反应 `emotes` 跟着口播情绪走;每个场景配音效。每个场景过一遍「画面质量线」。
|
|
100
|
+
6. **配置**:`Ep*.tsx` 写 `DeskShowConfig`(`steps`、`cover` 用 `DeskCoverWide` 且 `frames: cf(1) − 5`、`bgmVolume: 0.85`、`decor` 避开内容区);真人口播加 `overlay`(`HostCam` + `camAt`)、`mascot: {x: 1700, y: 1000, s: 0.75}`。组件接 `mix` 透传给 `DeskShow`(导出分轨要用)。
|
|
101
|
+
7. **竖版封面**:`Cover.tsx` 用 `DeskCoverTall`,在 `Root.tsx` 注册 `<期>-cover-tall` 的 Still,渲染到 `<素材目录>/封面-3x4.png`:`npx remotion still src/index.ts <期>-cover-tall <素材目录>/封面-3x4.png`。
|
|
102
|
+
8. **注册和测试**:`Root.tsx` 注册 `<Composition id="<期>" … defaultProps={{mix: 'all'}}>`;测试照 `references/工程模板.md`(场景按时间递增、步骤号不越界、字幕在时长内、`cw` 的词都在字幕里、音效名存在;真人口播加「小窗始终在左下角」);`npm run typecheck && npm test`。
|
|
103
|
+
|
|
104
|
+
## 5. 抽帧自查
|
|
105
|
+
|
|
106
|
+
- 第 0 帧(封面)、封面淡出那几帧、每个场景 3/4 处各一帧,关键动画中间态(橙块刷到一半、步骤切换那一帧、星光迸发那一帧)也抽;一次只渲一帧:`npx remotion still src/index.ts <期> /tmp/<期>/x.jpg --frame=N --scale=0.5 --timeout=120000`,逐张看。
|
|
107
|
+
- 逐条查 `画面配方.md` 的「自查清单」和上面的「画面质量线」:主视觉有没有、够不够大、星光有没有压字、有没有压到右下角吉祥物区 / 左下角出镜小窗 / 底部字幕区、步骤条是不是跟口播同步、一个画面里是不是只有一种强调色。
|
|
108
|
+
- 发现问题就改,改完再抽帧确认。
|
|
109
|
+
|
|
110
|
+
## 6. 发布文案 + Studio 预览(然后停下)
|
|
111
|
+
|
|
112
|
+
- 调用 `dbs-xhs-title` 出标题:主标题 1 个 + 备选 2 个,注明公式编号,含标点不超过 20 字。
|
|
113
|
+
- 描述:钩子一句 → 步骤清单(每步一句做了什么)→ 观众能拿走的做法 → 话题。存 `<素材目录>/发布文案.md`。
|
|
114
|
+
- `lsof -i :3000 -sTCP:LISTEN` 看 Studio 在不在,不在就后台起 `npm run studio`;给 `http://localhost:3000/<期>`。
|
|
115
|
+
- 汇报:字数和时长、人声 / 配乐响度、字幕条数、封面路径、标题和备选、场景表(时间 | A/B | 步骤 | 主视觉)、要核对的事实、TTS 可能读错的地方;**听不到声音要如实说**,只报数字,听感请用户确认。**不要导出**。
|
|
116
|
+
|
|
117
|
+
## 7. 导出(用户确认后)
|
|
118
|
+
|
|
119
|
+
`npm run export -- <期>` → `<成片目录>/`:成片(分轨重混限幅)、`stems/`、`封面-3x4.png`、`字幕稿.md`、`发布文案.md`。检查 1920×1080、首帧是封面、约 −19 LUFS、峰值低于 −1 dBFS;成片复制一份到 `<素材目录>/`。
|
|
120
|
+
|
|
121
|
+
## 收尾登记
|
|
122
|
+
|
|
123
|
+
- 风格配方卡的期数表补一行,`styles/README.md`「我的风格」表期数栏补上。
|
|
124
|
+
- 新写的通用组件挪进 `src/library/warm-desk/`(信息卡进 `props.tsx`,设计图形进 `motifs.tsx`)并补 `src/library/README.md`。
|