[{"data":1,"prerenderedAt":3174},["ShallowReactive",2],{"navigation":3,"\u002Fdeploy\u002Ftemplates-on-lambda":686,"\u002Fdeploy\u002Ftemplates-on-lambda-surround":3169},[4,31,57,147,168,198,652],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":30},"快速入门","i-lucide-rocket","\u002Fgetting-started","01.getting-started",[10,14,18,22,26],{"title":11,"path":12,"stem":13},"简介","\u002Fgetting-started\u002Fintroduction","01.getting-started\u002F01.introduction",{"title":15,"path":16,"stem":17},"快速开始","\u002Fgetting-started\u002Fquickstart","01.getting-started\u002F02.quickstart",{"title":19,"path":20,"stem":21},"展示作品","\u002Fgetting-started\u002Fshowcase","01.getting-started\u002F03.showcase",{"title":23,"path":24,"stem":25},"示例","\u002Fgetting-started\u002Fexamples","01.getting-started\u002F04.examples",{"title":27,"path":28,"stem":29},"发布视频","\u002Fgetting-started\u002Flaunch-videos","01.getting-started\u002F05.launch-videos",false,{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":30},"核心概念","i-lucide-lightbulb","\u002Fconcepts","02.concepts",[37,41,45,49,53],{"title":38,"path":39,"stem":40},"合成","\u002Fconcepts\u002Fcompositions","02.concepts\u002F01.compositions",{"title":42,"path":43,"stem":44},"数据属性","\u002Fconcepts\u002Fdata-attributes","02.concepts\u002F02.data-attributes",{"title":46,"path":47,"stem":48},"变量","\u002Fconcepts\u002Fvariables","02.concepts\u002F03.variables",{"title":50,"path":51,"stem":52},"帧适配器","\u002Fconcepts\u002Fframe-adapters","02.concepts\u002F04.frame-adapters",{"title":54,"path":55,"stem":56},"确定性渲染","\u002Fconcepts\u002Fdeterminism","02.concepts\u002F05.determinism",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":30},"使用指南","i-lucide-compass","\u002Fguides","03.guides",[63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143],{"title":64,"path":65,"stem":66},"工作流水线","\u002Fguides\u002Fpipeline","03.guides\u002F01.pipeline",{"title":68,"path":69,"stem":70},"HTML-in-Canvas","\u002Fguides\u002Fhtml-in-canvas","03.guides\u002F02.html-in-canvas",{"title":72,"path":73,"stem":74},"网站转视频","\u002Fguides\u002Fwebsite-to-video","03.guides\u002F03.website-to-video",{"title":76,"path":77,"stem":78},"Google Antigravity","\u002Fguides\u002Fantigravity","03.guides\u002F04.antigravity",{"title":80,"path":81,"stem":82},"GitHub Copilot CLI","\u002Fguides\u002Fcopilot-cli","03.guides\u002F05.copilot-cli",{"title":84,"path":85,"stem":86},"Claude Design","\u002Fguides\u002Fclaude-design","03.guides\u002F06.claude-design",{"title":88,"path":89,"stem":90},"Open Design","\u002Fguides\u002Fopen-design","03.guides\u002F07.open-design",{"title":92,"path":93,"stem":94},"提示词指南","\u002Fguides\u002Fprompting","03.guides\u002F08.prompting",{"title":96,"path":97,"stem":98},"Hyperframes vs Remotion","\u002Fguides\u002Fhyperframes-vs-remotion","03.guides\u002F09.hyperframes-vs-remotion",{"title":100,"path":101,"stem":102},"GSAP 动画","\u002Fguides\u002Fgsap-animation","03.guides\u002F10.gsap-animation",{"title":104,"path":105,"stem":106},"渲染","\u002Fguides\u002Frendering","03.guides\u002F11.rendering",{"title":108,"path":109,"stem":110},"去除背景（透明视频）","\u002Fguides\u002Fremove-background","03.guides\u002F12.remove-background",{"title":112,"path":113,"stem":114},"HDR 渲染","\u002Fguides\u002Fhdr","03.guides\u002F13.hdr",{"title":116,"path":117,"stem":118},"4K 渲染","\u002Fguides\u002F4k-rendering","03.guides\u002F14.4k-rendering",{"title":120,"path":121,"stem":122},"性能","\u002Fguides\u002Fperformance","03.guides\u002F15.performance",{"title":124,"path":125,"stem":126},"时间轴编辑","\u002Fguides\u002Ftimeline-editing","03.guides\u002F16.timeline-editing",{"title":128,"path":129,"stem":130},"视频编辑者速查表","\u002Fguides\u002Fvideo-editor-cheatsheet","03.guides\u002F17.video-editor-cheatsheet",{"title":132,"path":133,"stem":134},"常见错误","\u002Fguides\u002Fcommon-mistakes","03.guides\u002F18.common-mistakes",{"title":136,"path":137,"stem":138},"故障排除","\u002Fguides\u002Ftroubleshooting","03.guides\u002F19.troubleshooting",{"title":140,"path":141,"stem":142},"反馈收集","\u002Fguides\u002Ffeedback","03.guides\u002F20.feedback",{"title":144,"path":145,"stem":146},"HyperFrames MCP","\u002Fguides\u002Fmcp","03.guides\u002F21.mcp",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":30},"部署","i-lucide-cloud","\u002Fdeploy","04.deploy",[153,156,160,164],{"title":148,"path":154,"stem":155},"\u002Fdeploy\u002Fdeploy","04.deploy\u002F01.deploy",{"title":157,"path":158,"stem":159},"AWS Lambda","\u002Fdeploy\u002Faws-lambda","04.deploy\u002F02.aws-lambda",{"title":161,"path":162,"stem":163},"Lambda 上的模板","\u002Fdeploy\u002Ftemplates-on-lambda","04.deploy\u002F03.templates-on-lambda",{"title":165,"path":166,"stem":167},"迁移到 HyperFrames Lambda","\u002Fdeploy\u002Fmigrating-to-hyperframes-lambda","04.deploy\u002F04.migrating-to-hyperframes-lambda",{"title":169,"icon":170,"path":171,"stem":172,"children":173,"page":30},"包","i-lucide-package","\u002Fpackages","05.packages",[174,178,182,186,190,194],{"title":175,"path":176,"stem":177},"@hyperframes\u002Fcore","\u002Fpackages\u002Fcore","05.packages\u002F01.core",{"title":179,"path":180,"stem":181},"@hyperframes\u002Fengine","\u002Fpackages\u002Fengine","05.packages\u002F02.engine",{"title":183,"path":184,"stem":185},"@hyperframes\u002Fplayer","\u002Fpackages\u002Fplayer","05.packages\u002F03.player",{"title":187,"path":188,"stem":189},"@hyperframes\u002Fproducer","\u002Fpackages\u002Fproducer","05.packages\u002F04.producer",{"title":191,"path":192,"stem":193},"@hyperframes\u002Fstudio","\u002Fpackages\u002Fstudio","05.packages\u002F05.studio",{"title":195,"path":196,"stem":197},"CLI","\u002Fpackages\u002Fcli","05.packages\u002F06.cli",{"title":199,"icon":200,"path":201,"stem":202,"children":203,"page":30},"组件目录","i-lucide-layout-grid","\u002Fcatalog","06.catalog",[204,270,324,358,420,478,512,546,584,598],{"title":205,"icon":206,"path":207,"stem":208,"children":209,"page":30},"字幕","i-lucide-captions","\u002Fcatalog\u002Fcaption","06.catalog\u002F01.caption",[210,214,218,222,226,230,234,238,242,246,250,254,258,262,266],{"title":211,"path":212,"stem":213},"裁剪擦除","\u002Fcatalog\u002Fcaption\u002Fcaption-clip-wipe","06.catalog\u002F01.caption\u002F01.caption-clip-wipe",{"title":215,"path":216,"stem":217},"编辑强调","\u002Fcatalog\u002Fcaption\u002Fcaption-editorial-emphasis","06.catalog\u002F01.caption\u002F02.caption-editorial-emphasis",{"title":219,"path":220,"stem":221},"Emoji 弹出","\u002Fcatalog\u002Fcaption\u002Fcaption-emoji-pop","06.catalog\u002F01.caption\u002F03.caption-emoji-pop",{"title":223,"path":224,"stem":225},"故障 RGB","\u002Fcatalog\u002Fcaption\u002Fcaption-glitch-rgb","06.catalog\u002F01.caption\u002F04.caption-glitch-rgb",{"title":227,"path":228,"stem":229},"渐变填充","\u002Fcatalog\u002Fcaption\u002Fcaption-gradient-fill","06.catalog\u002F01.caption\u002F05.caption-gradient-fill",{"title":231,"path":232,"stem":233},"高亮","\u002Fcatalog\u002Fcaption\u002Fcaption-highlight","06.catalog\u002F01.caption\u002F06.caption-highlight",{"title":235,"path":236,"stem":237},"动感冲击","\u002Fcatalog\u002Fcaption\u002Fcaption-kinetic-slam","06.catalog\u002F01.caption\u002F07.caption-kinetic-slam",{"title":239,"path":240,"stem":241},"矩阵解码","\u002Fcatalog\u002Fcaption\u002Fcaption-matrix-decode","06.catalog\u002F01.caption\u002F08.caption-matrix-decode",{"title":243,"path":244,"stem":245},"霓虹强调","\u002Fcatalog\u002Fcaption\u002Fcaption-neon-accent","06.catalog\u002F01.caption\u002F09.caption-neon-accent",{"title":247,"path":248,"stem":249},"霓虹发光","\u002Fcatalog\u002Fcaption\u002Fcaption-neon-glow","06.catalog\u002F01.caption\u002F10.caption-neon-glow",{"title":251,"path":252,"stem":253},"视差图层","\u002Fcatalog\u002Fcaption\u002Fcaption-parallax-layers","06.catalog\u002F01.caption\u002F11.caption-parallax-layers",{"title":255,"path":256,"stem":257},"粒子爆发","\u002Fcatalog\u002Fcaption\u002Fcaption-particle-burst","06.catalog\u002F01.caption\u002F12.caption-particle-burst",{"title":259,"path":260,"stem":261},"胶囊卡拉OK","\u002Fcatalog\u002Fcaption\u002Fcaption-pill-karaoke","06.catalog\u002F01.caption\u002F13.caption-pill-karaoke",{"title":263,"path":264,"stem":265},"纹理","\u002Fcatalog\u002Fcaption\u002Fcaption-texture","06.catalog\u002F01.caption\u002F14.caption-texture",{"title":267,"path":268,"stem":269},"字重切换","\u002Fcatalog\u002Fcaption\u002Fcaption-weight-shift","06.catalog\u002F01.caption\u002F15.caption-weight-shift",{"title":271,"icon":272,"path":273,"stem":274,"children":275,"page":30},"HTML 画布","i-lucide-layout-dashboard","\u002Fcatalog\u002Fhtml-canvas","06.catalog\u002F02.html-canvas",[276,280,284,288,292,296,300,304,308,312,316,320],{"title":277,"path":278,"stem":279},"iOS 26 Liquid Glass 主屏幕","\u002Fcatalog\u002Fhtml-canvas\u002Fios26-liquid-glass","06.catalog\u002F02.html-canvas\u002F01.ios26-liquid-glass",{"title":281,"path":282,"stem":283},"Liquid Glass 右键菜单","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-context-menu","06.catalog\u002F02.html-canvas\u002F02.liquid-glass-context-menu",{"title":285,"path":286,"stem":287},"Liquid Glass 媒体控制","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-media-controls","06.catalog\u002F02.html-canvas\u002F03.liquid-glass-media-controls",{"title":289,"path":290,"stem":291},"Liquid Glass 通知","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-notification","06.catalog\u002F02.html-canvas\u002F04.liquid-glass-notification",{"title":293,"path":294,"stem":295},"Liquid Glass 小组件","\u002Fcatalog\u002Fhtml-canvas\u002Fliquid-glass-widgets","06.catalog\u002F02.html-canvas\u002F05.liquid-glass-widgets",{"title":297,"path":298,"stem":299},"macOS Tahoe Liquid Glass 桌面","\u002Fcatalog\u002Fhtml-canvas\u002Fmacos-tahoe-liquid-glass","06.catalog\u002F02.html-canvas\u002F06.macos-tahoe-liquid-glass",{"title":301,"path":302,"stem":303},"iPhone & MacBook 3D 展示","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-iphone-device","06.catalog\u002F02.html-canvas\u002F07.vfx-iphone-device",{"title":305,"path":306,"stem":307},"液态背景","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-liquid-background","06.catalog\u002F02.html-canvas\u002F08.vfx-liquid-background",{"title":309,"path":310,"stem":311},"磁力效果","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-magnetic","06.catalog\u002F02.html-canvas\u002F09.vfx-magnetic",{"title":313,"path":314,"stem":315},"传送门","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-portal","06.catalog\u002F02.html-canvas\u002F10.vfx-portal",{"title":317,"path":318,"stem":319},"碎裂效果","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-shatter","06.catalog\u002F02.html-canvas\u002F11.vfx-shatter",{"title":321,"path":322,"stem":323},"VFX 文字光标","\u002Fcatalog\u002Fhtml-canvas\u002Fvfx-text-cursor","06.catalog\u002F02.html-canvas\u002F12.vfx-text-cursor",{"title":325,"icon":326,"path":327,"stem":328,"children":329,"page":30},"社交叠加层","i-lucide-share-2","\u002Fcatalog\u002Fsocial-overlays","06.catalog\u002F03.social-overlays",[330,334,338,342,346,350,354],{"title":331,"path":332,"stem":333},"Instagram 关注","\u002Fcatalog\u002Fsocial-overlays\u002Finstagram-follow","06.catalog\u002F03.social-overlays\u002F01.instagram-follow",{"title":335,"path":336,"stem":337},"macOS 通知","\u002Fcatalog\u002Fsocial-overlays\u002Fmacos-notification","06.catalog\u002F03.social-overlays\u002F02.macos-notification",{"title":339,"path":340,"stem":341},"Reddit 帖子卡片","\u002Fcatalog\u002Fsocial-overlays\u002Freddit-post","06.catalog\u002F03.social-overlays\u002F03.reddit-post",{"title":343,"path":344,"stem":345},"Spotify 正在播放","\u002Fcatalog\u002Fsocial-overlays\u002Fspotify-card","06.catalog\u002F03.social-overlays\u002F04.spotify-card",{"title":347,"path":348,"stem":349},"TikTok 关注","\u002Fcatalog\u002Fsocial-overlays\u002Ftiktok-follow","06.catalog\u002F03.social-overlays\u002F05.tiktok-follow",{"title":351,"path":352,"stem":353},"X 帖子卡片","\u002Fcatalog\u002Fsocial-overlays\u002Fx-post","06.catalog\u002F03.social-overlays\u002F06.x-post",{"title":355,"path":356,"stem":357},"YouTube 下方三分之一","\u002Fcatalog\u002Fsocial-overlays\u002Fyt-lower-third","06.catalog\u002F03.social-overlays\u002F07.yt-lower-third",{"title":359,"icon":360,"path":361,"stem":362,"children":363,"page":30},"着色器过渡","i-lucide-wand-2","\u002Fcatalog\u002Fshader-transitions","06.catalog\u002F04.shader-transitions",[364,368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":365,"path":366,"stem":367},"色散径向分裂","\u002Fcatalog\u002Fshader-transitions\u002Fchromatic-radial-split","06.catalog\u002F04.shader-transitions\u002F01.chromatic-radial-split",{"title":369,"path":370,"stem":371},"电影感变焦","\u002Fcatalog\u002Fshader-transitions\u002Fcinematic-zoom","06.catalog\u002F04.shader-transitions\u002F02.cinematic-zoom",{"title":373,"path":374,"stem":375},"交叉扭曲变形","\u002Fcatalog\u002Fshader-transitions\u002Fcross-warp-morph","06.catalog\u002F04.shader-transitions\u002F03.cross-warp-morph",{"title":377,"path":378,"stem":379},"域扭曲溶解","\u002Fcatalog\u002Fshader-transitions\u002Fdomain-warp-dissolve","06.catalog\u002F04.shader-transitions\u002F04.domain-warp-dissolve",{"title":381,"path":382,"stem":383},"白色闪光过渡","\u002Fcatalog\u002Fshader-transitions\u002Fflash-through-white","06.catalog\u002F04.shader-transitions\u002F05.flash-through-white",{"title":385,"path":386,"stem":387},"故障效果","\u002Fcatalog\u002Fshader-transitions\u002Fglitch","06.catalog\u002F04.shader-transitions\u002F06.glitch",{"title":389,"path":390,"stem":391},"引力透镜","\u002Fcatalog\u002Fshader-transitions\u002Fgravitational-lens","06.catalog\u002F04.shader-transitions\u002F07.gravitational-lens",{"title":393,"path":394,"stem":395},"光线泄漏","\u002Fcatalog\u002Fshader-transitions\u002Flight-leak","06.catalog\u002F04.shader-transitions\u002F08.light-leak",{"title":397,"path":398,"stem":399},"褶皱燃烧","\u002Fcatalog\u002Fshader-transitions\u002Fridged-burn","06.catalog\u002F04.shader-transitions\u002F09.ridged-burn",{"title":401,"path":402,"stem":403},"涟漪波纹","\u002Fcatalog\u002Fshader-transitions\u002Fripple-waves","06.catalog\u002F04.shader-transitions\u002F10.ripple-waves",{"title":405,"path":406,"stem":407},"SDF 光圈","\u002Fcatalog\u002Fshader-transitions\u002Fsdf-iris","06.catalog\u002F04.shader-transitions\u002F11.sdf-iris",{"title":409,"path":410,"stem":411},"漩涡涡流","\u002Fcatalog\u002Fshader-transitions\u002Fswirl-vortex","06.catalog\u002F04.shader-transitions\u002F12.swirl-vortex",{"title":413,"path":414,"stem":415},"热浪扭曲","\u002Fcatalog\u002Fshader-transitions\u002Fthermal-distortion","06.catalog\u002F04.shader-transitions\u002F13.thermal-distortion",{"title":417,"path":418,"stem":419},"快速摇摄","\u002Fcatalog\u002Fshader-transitions\u002Fwhip-pan","06.catalog\u002F04.shader-transitions\u002F14.whip-pan",{"title":421,"icon":422,"path":423,"stem":424,"children":425,"page":30},"CSS 过渡","i-lucide-repeat","\u002Fcatalog\u002Fcss-transitions","06.catalog\u002F05.css-transitions",[426,430,434,438,442,446,450,454,458,462,466,470,474],{"title":427,"path":428,"stem":429},"3D 过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-3d","06.catalog\u002F05.css-transitions\u002F01.transitions-3d",{"title":431,"path":432,"stem":433},"模糊过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-blur","06.catalog\u002F05.css-transitions\u002F02.transitions-blur",{"title":435,"path":436,"stem":437},"覆盖过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-cover","06.catalog\u002F05.css-transitions\u002F03.transitions-cover",{"title":439,"path":440,"stem":441},"破碎过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-destruction","06.catalog\u002F05.css-transitions\u002F04.transitions-destruction",{"title":443,"path":444,"stem":445},"溶解过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-dissolve","06.catalog\u002F05.css-transitions\u002F05.transitions-dissolve",{"title":447,"path":448,"stem":449},"扭曲过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-distortion","06.catalog\u002F05.css-transitions\u002F06.transitions-distortion",{"title":451,"path":452,"stem":453},"网格过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-grid","06.catalog\u002F05.css-transitions\u002F07.transitions-grid",{"title":455,"path":456,"stem":457},"光效过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-light","06.catalog\u002F05.css-transitions\u002F08.transitions-light",{"title":459,"path":460,"stem":461},"机械过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-mechanical","06.catalog\u002F05.css-transitions\u002F09.transitions-mechanical",{"title":463,"path":464,"stem":465},"其他过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-other","06.catalog\u002F05.css-transitions\u002F10.transitions-other",{"title":467,"path":468,"stem":469},"推移过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-push","06.catalog\u002F05.css-transitions\u002F11.transitions-push",{"title":471,"path":472,"stem":473},"径向过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-radial","06.catalog\u002F05.css-transitions\u002F12.transitions-radial",{"title":475,"path":476,"stem":477},"缩放过渡","\u002Fcatalog\u002Fcss-transitions\u002Ftransitions-scale","06.catalog\u002F05.css-transitions\u002F13.transitions-scale",{"title":479,"icon":480,"path":481,"stem":482,"children":483,"page":30},"展示","i-lucide-monitor-play","\u002Fcatalog\u002Fshowcase","06.catalog\u002F06.showcase",[484,488,492,496,500,504,508],{"title":485,"path":486,"stem":487},"应用展示","\u002Fcatalog\u002Fshowcase\u002Fapp-showcase","06.catalog\u002F06.showcase\u002F01.app-showcase",{"title":489,"path":490,"stem":491},"Apple 金额计数器","\u002Fcatalog\u002Fshowcase\u002Fapple-money-count","06.catalog\u002F06.showcase\u002F02.apple-money-count",{"title":493,"path":494,"stem":495},"蓝色毛衣开场视频","\u002Fcatalog\u002Fshowcase\u002Fblue-sweater-intro-video","06.catalog\u002F06.showcase\u002F03.blue-sweater-intro-video",{"title":497,"path":498,"stem":499},"朝鲜封锁","\u002Fcatalog\u002Fshowcase\u002Fnorth-korea-locked-down","06.catalog\u002F06.showcase\u002F04.north-korea-locked-down",{"title":501,"path":502,"stem":503},"纽约巴黎航班","\u002Fcatalog\u002Fshowcase\u002Fnyc-paris-flight","06.catalog\u002F06.showcase\u002F05.nyc-paris-flight",{"title":505,"path":506,"stem":507},"3D UI 展示","\u002Fcatalog\u002Fshowcase\u002Fui-3d-reveal","06.catalog\u002F06.showcase\u002F06.ui-3d-reveal",{"title":509,"path":510,"stem":511},"VPN YouTube 广告片段","\u002Fcatalog\u002Fshowcase\u002Fvpn-youtube-spot","06.catalog\u002F06.showcase\u002F07.vpn-youtube-spot",{"title":513,"icon":514,"path":515,"stem":516,"children":517,"page":30},"数据","i-lucide-bar-chart-3","\u002Fcatalog\u002Fdata","06.catalog\u002F07.data",[518,522,526,530,534,538,542],{"title":519,"path":520,"stem":521},"数据图表","\u002Fcatalog\u002Fdata\u002Fdata-chart","06.catalog\u002F07.data\u002F01.data-chart",{"title":523,"path":524,"stem":525},"西班牙地图","\u002Fcatalog\u002Fdata\u002Fspain-map","06.catalog\u002F07.data\u002F02.spain-map",{"title":527,"path":528,"stem":529},"美国地图","\u002Fcatalog\u002Fdata\u002Fus-map","06.catalog\u002F07.data\u002F03.us-map",{"title":531,"path":532,"stem":533},"美国气泡地图","\u002Fcatalog\u002Fdata\u002Fus-map-bubble","06.catalog\u002F07.data\u002F04.us-map-bubble",{"title":535,"path":536,"stem":537},"美国流动地图","\u002Fcatalog\u002Fdata\u002Fus-map-flow","06.catalog\u002F07.data\u002F05.us-map-flow",{"title":539,"path":540,"stem":541},"美国六边形网格地图","\u002Fcatalog\u002Fdata\u002Fus-map-hex","06.catalog\u002F07.data\u002F06.us-map-hex",{"title":543,"path":544,"stem":545},"世界地图","\u002Fcatalog\u002Fdata\u002Fworld-map","06.catalog\u002F07.data\u002F07.world-map",{"title":547,"icon":548,"path":549,"stem":550,"children":551,"page":30},"效果","i-lucide-sparkles","\u002Fcatalog\u002Feffects","06.catalog\u002F08.effects",[552,556,560,564,568,572,576,580],{"title":553,"path":554,"stem":555},"差值混合","\u002Fcatalog\u002Feffects\u002Fcaption-blend-difference","06.catalog\u002F08.effects\u002F01.caption-blend-difference",{"title":557,"path":558,"stem":559},"胶片颗粒叠加","\u002Fcatalog\u002Feffects\u002Fgrain-overlay","06.catalog\u002F08.effects\u002F02.grain-overlay",{"title":561,"path":562,"stem":563},"网格像素化擦除","\u002Fcatalog\u002Feffects\u002Fgrid-pixelate-wipe","06.catalog\u002F08.effects\u002F03.grid-pixelate-wipe",{"title":565,"path":566,"stem":567},"视差缩小","\u002Fcatalog\u002Feffects\u002Fparallax-unzoom","06.catalog\u002F08.effects\u002F04.parallax-unzoom",{"title":569,"path":570,"stem":571},"视差放大","\u002Fcatalog\u002Feffects\u002Fparallax-zoom","06.catalog\u002F08.effects\u002F05.parallax-zoom",{"title":573,"path":574,"stem":575},"微光扫过","\u002Fcatalog\u002Feffects\u002Fshimmer-sweep","06.catalog\u002F08.effects\u002F06.shimmer-sweep",{"title":577,"path":578,"stem":579},"纹理遮罩文字","\u002Fcatalog\u002Feffects\u002Ftexture-mask-text","06.catalog\u002F08.effects\u002F07.texture-mask-text",{"title":581,"path":582,"stem":583},"暗角","\u002Fcatalog\u002Feffects\u002Fvignette","06.catalog\u002F08.effects\u002F08.vignette",{"title":585,"icon":586,"path":587,"stem":588,"children":589,"page":30},"区块","i-lucide-box","\u002Fcatalog\u002Fblocks","06.catalog\u002F09.blocks",[590,594],{"title":591,"path":592,"stem":593},"流程图","\u002Fcatalog\u002Fblocks\u002Fflowchart","06.catalog\u002F09.blocks\u002F01.flowchart",{"title":595,"path":596,"stem":597},"Logo 片尾","\u002Fcatalog\u002Fblocks\u002Flogo-outro","06.catalog\u002F09.blocks\u002F02.logo-outro",{"title":599,"icon":600,"path":601,"stem":602,"children":603,"page":30},"代码片段","i-lucide-code-2","\u002Fcatalog\u002Fcode-snippets","06.catalog\u002F10.code-snippets",[604,608,612,616,620,624,628,632,636,640,644,648],{"title":605,"path":606,"stem":607},"Dark 2026","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-2026","06.catalog\u002F10.code-snippets\u002F01.code-snippet-dark-2026",{"title":609,"path":610,"stem":611},"Dark Modern","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-modern","06.catalog\u002F10.code-snippets\u002F02.code-snippet-dark-modern",{"title":613,"path":614,"stem":615},"Dark+","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-dark-plus","06.catalog\u002F10.code-snippets\u002F03.code-snippet-dark-plus",{"title":617,"path":618,"stem":619},"High Contrast","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-high-contrast","06.catalog\u002F10.code-snippets\u002F04.code-snippet-high-contrast",{"title":621,"path":622,"stem":623},"High Contrast Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-high-contrast-light","06.catalog\u002F10.code-snippets\u002F05.code-snippet-high-contrast-light",{"title":625,"path":626,"stem":627},"Light 2026","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-2026","06.catalog\u002F10.code-snippets\u002F06.code-snippet-light-2026",{"title":629,"path":630,"stem":631},"Light Modern","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-modern","06.catalog\u002F10.code-snippets\u002F07.code-snippet-light-modern",{"title":633,"path":634,"stem":635},"Light+","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-light-plus","06.catalog\u002F10.code-snippets\u002F08.code-snippet-light-plus",{"title":637,"path":638,"stem":639},"Monokai","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-monokai","06.catalog\u002F10.code-snippets\u002F09.code-snippet-monokai",{"title":641,"path":642,"stem":643},"Solarized Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-solarized-light","06.catalog\u002F10.code-snippets\u002F10.code-snippet-solarized-light",{"title":645,"path":646,"stem":647},"Visual Studio Dark","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-visual-studio-dark","06.catalog\u002F10.code-snippets\u002F11.code-snippet-visual-studio-dark",{"title":649,"path":650,"stem":651},"Visual Studio Light","\u002Fcatalog\u002Fcode-snippets\u002Fcode-snippet-visual-studio-light","06.catalog\u002F10.code-snippets\u002F12.code-snippet-visual-studio-light",{"title":653,"icon":654,"path":655,"stem":656,"children":657,"page":30},"参考","i-lucide-book-marked","\u002Freference","07.reference",[658,662,666,670,674,678,682],{"title":659,"path":660,"stem":661},"HTML Schema 参考","\u002Freference\u002Fhtml-schema","07.reference\u002F01.html-schema",{"title":663,"path":664,"stem":665},"贡献指南","\u002Freference\u002Fcontributing","07.reference\u002F02.contributing",{"title":667,"path":668,"stem":669},"贡献到 Catalog","\u002Freference\u002Fcatalog","07.reference\u002F03.catalog",{"title":671,"path":672,"stem":673},"发布渠道","\u002Freference\u002Frelease-channels","07.reference\u002F04.release-channels",{"title":675,"path":676,"stem":677},"测试本地 CLI 变更","\u002Freference\u002Ftesting-local-changes","07.reference\u002F05.testing-local-changes",{"title":679,"path":680,"stem":681},"Studio 手动 DOM 编辑","\u002Freference\u002Fstudio-manual-dom-editing","07.reference\u002F06.studio-manual-dom-editing",{"title":683,"path":684,"stem":685},"采用者","\u002Freference\u002Fadopters","07.reference\u002F07.adopters",{"id":687,"title":161,"body":688,"description":3163,"extension":3164,"links":3165,"meta":3166,"navigation":2125,"path":162,"seo":3167,"stem":163,"__hash__":3168},"docs\u002F04.deploy\u002F03.templates-on-lambda.md",{"type":689,"value":690,"toc":3150},"minimark",[691,700,759,774,808,812,823,1361,1375,1378,1383,1476,1491,1508,1511,1544,1555,1558,1572,1605,1614,1642,1646,1653,1667,1674,1685,1711,1714,1729,1797,1807,1811,1816,1848,1851,1896,1916,1919,1927,1937,1993,2007,2024,2033,2070,2074,2081,2609,2635,2646,2649,2661,2664,2670,2675,2678,2749,2752,2801,2804,2897,2908,2918,2921,2932,2935,2986,2996,3007,3013,3017,3026,3098,3106,3109,3139,3147],[692,693,694,695,699],"p",{},"HyperFrames 模板是接受类型化变量（名称、颜色、图表数据、CTA URL）并生成由这些值参数化的成品渲染的 composition。将模板与已部署的 Lambda 栈和 ",[696,697,698],"code",{},"lambda render-batch"," 配合使用，只需一条 CLI 命令即可实现大规模个性化视频生成：",[701,702,707],"pre",{"className":703,"code":704,"language":705,"meta":706,"style":706},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","hyperframes lambda render-batch .\u002Fmy-template \\\n--batch .\u002Fusers.jsonl \\\n--width 1920 --height 1080\n","bash","",[696,708,709,732,743],{"__ignoreMap":706},[710,711,714,718,722,725,728],"span",{"class":712,"line":713},"line",1,[710,715,717],{"class":716},"sBMFI","hyperframes",[710,719,721],{"class":720},"sfazB"," lambda",[710,723,724],{"class":720}," render-batch",[710,726,727],{"class":720}," .\u002Fmy-template",[710,729,731],{"class":730},"sTEyZ"," \\\n",[710,733,735,738,741],{"class":712,"line":734},2,[710,736,737],{"class":730},"--batch ",[710,739,740],{"class":720},".\u002Fusers.jsonl",[710,742,731],{"class":730},[710,744,746,749,753,756],{"class":712,"line":745},3,[710,747,748],{"class":730},"--width ",[710,750,752],{"class":751},"sbssI","1920",[710,754,755],{"class":720}," --height",[710,757,758],{"class":751}," 1080\n",[692,760,761,762,765,766,769,770,773],{},"本指南涵盖完整流程：在 composition 上声明变量、使用 ",[696,763,764],{},"hyperframes render"," 进行本地迭代、一次性部署到 Lambda，然后从批量文件中展开 N 次渲染。同样的流程也适用于通过 ",[696,767,768],{},"lambda render --variables"," 进行的单次个性化渲染，以及通过 ",[696,771,772],{},"renderToLambda({ variables })"," 进行的编程式批量渲染。",[701,775,779],{"className":776,"code":777,"language":778,"meta":706,"style":706},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart LR\nA[\"本地迭代\u003Cbr\u002F>hyperframes render --variables\"] --> B[\"部署栈\u003Cbr\u002F>hyperframes lambda deploy\"]\nB --> C[\"一次性上传站点\u003Cbr\u002F>hyperframes lambda sites create\"]\nC --> D[\"展开批量渲染\u003Cbr\u002F>hyperframes lambda render-batch\"]\nD --> E[\"N 个个性化视频\u003Cbr\u002F>在 S3 中\"]\n","mermaid",[696,780,781,786,791,796,802],{"__ignoreMap":706},[710,782,783],{"class":712,"line":713},[710,784,785],{},"flowchart LR\n",[710,787,788],{"class":712,"line":734},[710,789,790],{},"A[\"本地迭代\u003Cbr\u002F>hyperframes render --variables\"] --> B[\"部署栈\u003Cbr\u002F>hyperframes lambda deploy\"]\n",[710,792,793],{"class":712,"line":745},[710,794,795],{},"B --> C[\"一次性上传站点\u003Cbr\u002F>hyperframes lambda sites create\"]\n",[710,797,799],{"class":712,"line":798},4,[710,800,801],{},"C --> D[\"展开批量渲染\u003Cbr\u002F>hyperframes lambda render-batch\"]\n",[710,803,805],{"class":712,"line":804},5,[710,806,807],{},"D --> E[\"N 个个性化视频\u003Cbr\u002F>在 S3 中\"]\n",[809,810,811],"h2",{"id":811},"什么是模板",[692,813,814,815,818,819,822],{},"模板就是一个 HyperFrames composition，其顶层 HTML 元素声明了 ",[696,816,817],{},"data-composition-variables"," 属性，列出了它接受的变量。composition 通过 ",[696,820,821],{},"window.__hyperframes.getVariables()"," 读取运行时值。",[701,824,828],{"className":825,"code":826,"language":827,"meta":706,"style":706},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!doctype html>\n\u003Chtml\ndata-composition-variables='[\n{\"id\":\"title\",\"type\":\"string\",\"label\":\"Headline\",\"default\":\"Welcome\"},\n{\"id\":\"accentColor\",\"type\":\"string\",\"label\":\"Accent\",\"default\":\"#0a0a0a\"},\n{\"id\":\"avatarUrl\",\"type\":\"string\",\"label\":\"Avatar image\",\"default\":\"\u002Favatars\u002Fdefault.png\"}\n]'\n>\n\u003Chead>\u003Cmeta charset=\"utf-8\">\u003Ctitle>Welcome template\u003C\u002Ftitle>\u003C\u002Fhead>\n\u003Cbody style=\"margin:0;background:#f6f5f1\">\n\u003Cdiv data-composition-id=\"root\" data-width=\"1920\" data-height=\"1080\" data-duration=\"5\">\n\u003Ch1 id=\"title\" style=\"font:80px Inter,sans-serif\">Welcome\u003C\u002Fh1>\n\u003Cdiv id=\"accent\" style=\"width:100%;height:8px\">\u003C\u002Fdiv>\n\u003Cimg id=\"avatar\" alt=\"\" style=\"width:240px;height:240px;border-radius:50%\" \u002F>\n\u003C\u002Fdiv>\n\u003Cscript>\n(function () {\nvar v = window.__hyperframes.getVariables();\ndocument.getElementById(\"title\").textContent = v.title;\ndocument.getElementById(\"accent\").style.background = v.accentColor;\ndocument.getElementById(\"avatar\").src = v.avatarUrl;\n})();\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","html",[696,829,830,847,855,868,873,878,884,893,898,948,970,1027,1068,1103,1144,1153,1163,1178,1211,1248,1288,1323,1334,1343,1352],{"__ignoreMap":706},[710,831,832,836,840,844],{"class":712,"line":713},[710,833,835],{"class":834},"sMK4o","\u003C!",[710,837,839],{"class":838},"swJcz","doctype",[710,841,843],{"class":842},"spNyl"," html",[710,845,846],{"class":834},">\n",[710,848,849,852],{"class":712,"line":734},[710,850,851],{"class":834},"\u003C",[710,853,854],{"class":838},"html\n",[710,856,857,859,862,865],{"class":712,"line":745},[710,858,817],{"class":842},[710,860,861],{"class":834},"=",[710,863,864],{"class":834},"'",[710,866,867],{"class":720},"[\n",[710,869,870],{"class":712,"line":798},[710,871,872],{"class":720},"{\"id\":\"title\",\"type\":\"string\",\"label\":\"Headline\",\"default\":\"Welcome\"},\n",[710,874,875],{"class":712,"line":804},[710,876,877],{"class":720},"{\"id\":\"accentColor\",\"type\":\"string\",\"label\":\"Accent\",\"default\":\"#0a0a0a\"},\n",[710,879,881],{"class":712,"line":880},6,[710,882,883],{"class":720},"{\"id\":\"avatarUrl\",\"type\":\"string\",\"label\":\"Avatar image\",\"default\":\"\u002Favatars\u002Fdefault.png\"}\n",[710,885,887,890],{"class":712,"line":886},7,[710,888,889],{"class":720},"]",[710,891,892],{"class":834},"'\n",[710,894,896],{"class":712,"line":895},8,[710,897,846],{"class":834},[710,899,901,903,906,909,912,915,917,920,923,925,927,930,933,936,939,941,944,946],{"class":712,"line":900},9,[710,902,851],{"class":834},[710,904,905],{"class":838},"head",[710,907,908],{"class":834},">\u003C",[710,910,911],{"class":838},"meta",[710,913,914],{"class":842}," charset",[710,916,861],{"class":834},[710,918,919],{"class":834},"\"",[710,921,922],{"class":720},"utf-8",[710,924,919],{"class":834},[710,926,908],{"class":834},[710,928,929],{"class":838},"title",[710,931,932],{"class":834},">",[710,934,935],{"class":730},"Welcome template",[710,937,938],{"class":834},"\u003C\u002F",[710,940,929],{"class":838},[710,942,943],{"class":834},">\u003C\u002F",[710,945,905],{"class":838},[710,947,846],{"class":834},[710,949,951,953,956,959,961,963,966,968],{"class":712,"line":950},10,[710,952,851],{"class":834},[710,954,955],{"class":838},"body",[710,957,958],{"class":842}," style",[710,960,861],{"class":834},[710,962,919],{"class":834},[710,964,965],{"class":720},"margin:0;background:#f6f5f1",[710,967,919],{"class":834},[710,969,846],{"class":834},[710,971,973,975,978,981,983,985,988,990,993,995,997,999,1001,1004,1006,1008,1011,1013,1016,1018,1020,1023,1025],{"class":712,"line":972},11,[710,974,851],{"class":834},[710,976,977],{"class":838},"div",[710,979,980],{"class":842}," data-composition-id",[710,982,861],{"class":834},[710,984,919],{"class":834},[710,986,987],{"class":720},"root",[710,989,919],{"class":834},[710,991,992],{"class":842}," data-width",[710,994,861],{"class":834},[710,996,919],{"class":834},[710,998,752],{"class":720},[710,1000,919],{"class":834},[710,1002,1003],{"class":842}," data-height",[710,1005,861],{"class":834},[710,1007,919],{"class":834},[710,1009,1010],{"class":720},"1080",[710,1012,919],{"class":834},[710,1014,1015],{"class":842}," data-duration",[710,1017,861],{"class":834},[710,1019,919],{"class":834},[710,1021,1022],{"class":720},"5",[710,1024,919],{"class":834},[710,1026,846],{"class":834},[710,1028,1030,1032,1035,1038,1040,1042,1044,1046,1048,1050,1052,1055,1057,1059,1062,1064,1066],{"class":712,"line":1029},12,[710,1031,851],{"class":834},[710,1033,1034],{"class":838},"h1",[710,1036,1037],{"class":842}," id",[710,1039,861],{"class":834},[710,1041,919],{"class":834},[710,1043,929],{"class":720},[710,1045,919],{"class":834},[710,1047,958],{"class":842},[710,1049,861],{"class":834},[710,1051,919],{"class":834},[710,1053,1054],{"class":720},"font:80px Inter,sans-serif",[710,1056,919],{"class":834},[710,1058,932],{"class":834},[710,1060,1061],{"class":730},"Welcome",[710,1063,938],{"class":834},[710,1065,1034],{"class":838},[710,1067,846],{"class":834},[710,1069,1071,1073,1075,1077,1079,1081,1084,1086,1088,1090,1092,1095,1097,1099,1101],{"class":712,"line":1070},13,[710,1072,851],{"class":834},[710,1074,977],{"class":838},[710,1076,1037],{"class":842},[710,1078,861],{"class":834},[710,1080,919],{"class":834},[710,1082,1083],{"class":720},"accent",[710,1085,919],{"class":834},[710,1087,958],{"class":842},[710,1089,861],{"class":834},[710,1091,919],{"class":834},[710,1093,1094],{"class":720},"width:100%;height:8px",[710,1096,919],{"class":834},[710,1098,943],{"class":834},[710,1100,977],{"class":838},[710,1102,846],{"class":834},[710,1104,1106,1108,1111,1113,1115,1117,1120,1122,1125,1127,1130,1132,1134,1136,1139,1141],{"class":712,"line":1105},14,[710,1107,851],{"class":834},[710,1109,1110],{"class":838},"img",[710,1112,1037],{"class":842},[710,1114,861],{"class":834},[710,1116,919],{"class":834},[710,1118,1119],{"class":720},"avatar",[710,1121,919],{"class":834},[710,1123,1124],{"class":842}," alt",[710,1126,861],{"class":834},[710,1128,1129],{"class":834},"\"\"",[710,1131,958],{"class":842},[710,1133,861],{"class":834},[710,1135,919],{"class":834},[710,1137,1138],{"class":720},"width:240px;height:240px;border-radius:50%",[710,1140,919],{"class":834},[710,1142,1143],{"class":834}," \u002F>\n",[710,1145,1147,1149,1151],{"class":712,"line":1146},15,[710,1148,938],{"class":834},[710,1150,977],{"class":838},[710,1152,846],{"class":834},[710,1154,1156,1158,1161],{"class":712,"line":1155},16,[710,1157,851],{"class":834},[710,1159,1160],{"class":838},"script",[710,1162,846],{"class":834},[710,1164,1166,1169,1172,1175],{"class":712,"line":1165},17,[710,1167,1168],{"class":730},"(",[710,1170,1171],{"class":842},"function",[710,1173,1174],{"class":834}," ()",[710,1176,1177],{"class":834}," {\n",[710,1179,1181,1184,1187,1190,1193,1196,1199,1201,1205,1208],{"class":712,"line":1180},18,[710,1182,1183],{"class":842},"var",[710,1185,1186],{"class":730}," v",[710,1188,1189],{"class":834}," =",[710,1191,1192],{"class":730}," window",[710,1194,1195],{"class":834},".",[710,1197,1198],{"class":730},"__hyperframes",[710,1200,1195],{"class":834},[710,1202,1204],{"class":1203},"s2Zo4","getVariables",[710,1206,1207],{"class":838},"()",[710,1209,1210],{"class":834},";\n",[710,1212,1214,1217,1219,1222,1224,1226,1228,1230,1233,1235,1238,1240,1242,1244,1246],{"class":712,"line":1213},19,[710,1215,1216],{"class":730},"document",[710,1218,1195],{"class":834},[710,1220,1221],{"class":1203},"getElementById",[710,1223,1168],{"class":838},[710,1225,919],{"class":834},[710,1227,929],{"class":720},[710,1229,919],{"class":834},[710,1231,1232],{"class":838},")",[710,1234,1195],{"class":834},[710,1236,1237],{"class":730},"textContent",[710,1239,1189],{"class":834},[710,1241,1186],{"class":730},[710,1243,1195],{"class":834},[710,1245,929],{"class":730},[710,1247,1210],{"class":834},[710,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1272,1274,1277,1279,1281,1283,1286],{"class":712,"line":1250},20,[710,1252,1216],{"class":730},[710,1254,1195],{"class":834},[710,1256,1221],{"class":1203},[710,1258,1168],{"class":838},[710,1260,919],{"class":834},[710,1262,1083],{"class":720},[710,1264,919],{"class":834},[710,1266,1232],{"class":838},[710,1268,1195],{"class":834},[710,1270,1271],{"class":730},"style",[710,1273,1195],{"class":834},[710,1275,1276],{"class":730},"background",[710,1278,1189],{"class":834},[710,1280,1186],{"class":730},[710,1282,1195],{"class":834},[710,1284,1285],{"class":730},"accentColor",[710,1287,1210],{"class":834},[710,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1312,1314,1316,1318,1321],{"class":712,"line":1290},21,[710,1292,1216],{"class":730},[710,1294,1195],{"class":834},[710,1296,1221],{"class":1203},[710,1298,1168],{"class":838},[710,1300,919],{"class":834},[710,1302,1119],{"class":720},[710,1304,919],{"class":834},[710,1306,1232],{"class":838},[710,1308,1195],{"class":834},[710,1310,1311],{"class":730},"src",[710,1313,1189],{"class":834},[710,1315,1186],{"class":730},[710,1317,1195],{"class":834},[710,1319,1320],{"class":730},"avatarUrl",[710,1322,1210],{"class":834},[710,1324,1326,1329,1332],{"class":712,"line":1325},22,[710,1327,1328],{"class":834},"}",[710,1330,1331],{"class":730},")()",[710,1333,1210],{"class":834},[710,1335,1337,1339,1341],{"class":712,"line":1336},23,[710,1338,938],{"class":834},[710,1340,1160],{"class":838},[710,1342,846],{"class":834},[710,1344,1346,1348,1350],{"class":712,"line":1345},24,[710,1347,938],{"class":834},[710,1349,955],{"class":838},[710,1351,846],{"class":834},[710,1353,1355,1357,1359],{"class":712,"line":1354},25,[710,1356,938],{"class":834},[710,1358,827],{"class":838},[710,1360,846],{"class":834},[692,1362,1363,1364,1366,1367,1370,1371,1374],{},"运行时辅助函数以全局变量的形式暴露——",[696,1365,821],{},"——而不是可导入的模块。使用普通 ",[696,1368,1369],{},"\u003Cscript>","（而非 ",[696,1372,1373],{},"\u003Cscript type=\"module\">","），确保脚本执行时运行时已初始化。",[809,1376,1377],{"id":1377},"声明变量",[692,1379,1380,1382],{},[696,1381,817],{}," 数组中的每个条目描述一个变量。支持的字段：",[1384,1385,1386,1401],"table",{},[1387,1388,1389],"thead",{},[1390,1391,1392,1396,1399],"tr",{},[1393,1394,1395],"th",{},"字段",[1393,1397,1398],{},"必填",[1393,1400,23],{},[1402,1403,1404,1420,1447,1462],"tbody",{},[1390,1405,1406,1412,1415],{},[1407,1408,1409],"td",{},[696,1410,1411],{},"id",[1407,1413,1414],{},"是",[1407,1416,1417],{},[696,1418,1419],{},"\"title\"",[1390,1421,1422,1427,1429],{},[1407,1423,1424],{},[696,1425,1426],{},"type",[1407,1428,1414],{},[1407,1430,1431,1434,1435,1434,1438,1434,1441,1434,1444],{},[696,1432,1433],{},"\"string\"","、",[696,1436,1437],{},"\"number\"",[696,1439,1440],{},"\"color\"",[696,1442,1443],{},"\"boolean\"",[696,1445,1446],{},"\"enum\"",[1390,1448,1449,1454,1457],{},[1407,1450,1451],{},[696,1452,1453],{},"label",[1407,1455,1456],{},"推荐",[1407,1458,1459],{},[696,1460,1461],{},"\"Headline\"",[1390,1463,1464,1469,1471],{},[1407,1465,1466],{},[696,1467,1468],{},"default",[1407,1470,1456],{},[1407,1472,1473],{},[696,1474,1475],{},"\"Welcome\"",[692,1477,1478,1479,1483,1484,1486,1487,1490],{},"详见 ",[1480,1481,1482],"a",{"href":47},"Variables"," 了解每种类型的编辑器组件和仅用于 ",[696,1485,1446],{}," 的 ",[696,1488,1489],{},"options"," 字段。",[692,1492,1493,1496,1497,1500,1501,1504,1505,1490],{},[696,1494,1495],{},"getVariables()"," 返回声明的默认值与调用者覆盖值的合并结果，因此具有合理默认值的 composition 在预览模式和生产环境中无需更改即可渲染。渲染时的覆盖来自 CLI 上的 ",[696,1498,1499],{},"--variables '{...}'"," 或 SDK 的 ",[696,1502,1503],{},"renderToLambda"," 调用中的 ",[696,1506,1507],{},"variables",[692,1509,1510],{},"变量是类型化的原始值；对于结构化数据（项目列表、嵌套记录），请在调用者侧序列化，在 composition 内部解析：",[701,1512,1514],{"className":825,"code":1513,"language":827,"meta":706,"style":706},"\u003Chtml data-composition-variables='[\n{\"id\":\"heroJson\",\"type\":\"string\",\"label\":\"Hero copy (JSON)\",\"default\":\"{\\\"title\\\":\\\"Hi\\\"}\"}\n]'>\n",[696,1515,1516,1531,1536],{"__ignoreMap":706},[710,1517,1518,1520,1522,1525,1527,1529],{"class":712,"line":713},[710,1519,851],{"class":834},[710,1521,827],{"class":838},[710,1523,1524],{"class":842}," data-composition-variables",[710,1526,861],{"class":834},[710,1528,864],{"class":834},[710,1530,867],{"class":720},[710,1532,1533],{"class":712,"line":734},[710,1534,1535],{"class":720},"{\"id\":\"heroJson\",\"type\":\"string\",\"label\":\"Hero copy (JSON)\",\"default\":\"{\\\"title\\\":\\\"Hi\\\"}\"}\n",[710,1537,1538,1540,1542],{"class":712,"line":745},[710,1539,889],{"class":720},[710,1541,864],{"class":834},[710,1543,846],{"class":834},[692,1545,1546,1547,1550,1551,1554],{},"运行时不会接受声明中的 ",[696,1548,1549],{},"type: \"object\"","——解析器会拒绝五种规范类型之外的任何内容并静默丢弃该声明，因此 ",[696,1552,1553],{},"--strict-variables"," 会将每个未声明的键标记出来。",[809,1556,1557],{"id":1557},"本地迭代循环",[692,1559,1560,1561,1563,1564,1567,1568,1571],{},"快速迭代是模板的全部意义——你不需要部署到 Lambda 就能看到效果。在本地使用 ",[696,1562,764],{}," 配合 ",[696,1565,1566],{},"--variables","（或 ",[696,1569,1570],{},"--variables-file","）来针对任意负载渲染模板：",[701,1573,1575],{"className":703,"code":1574,"language":705,"meta":706,"style":706},"hyperframes render --variables '{\"title\":\"Hello Alice\",\"accentColor\":\"#ff0000\"}' \\\n--output renders\u002Falice-preview.mp4\n",[696,1576,1577,1597],{"__ignoreMap":706},[710,1578,1579,1581,1584,1587,1590,1593,1595],{"class":712,"line":713},[710,1580,717],{"class":716},[710,1582,1583],{"class":720}," render",[710,1585,1586],{"class":720}," --variables",[710,1588,1589],{"class":834}," '",[710,1591,1592],{"class":720},"{\"title\":\"Hello Alice\",\"accentColor\":\"#ff0000\"}",[710,1594,864],{"class":834},[710,1596,731],{"class":730},[710,1598,1599,1602],{"class":712,"line":734},[710,1600,1601],{"class":730},"--output ",[710,1603,1604],{"class":720},"renders\u002Falice-preview.mp4\n",[692,1606,1607,1608,1610,1611,1613],{},"传入 ",[696,1609,1553],{}," 可以在类型与 ",[696,1612,817],{}," 声明不匹配时报错。不带该标志时，不匹配会显示为警告，渲染继续进行。",[701,1615,1617],{"className":703,"code":1616,"language":705,"meta":706,"style":706},"hyperframes render --variables-file .\u002Falice.json --strict-variables \\\n--output renders\u002Falice-preview.mp4\n",[696,1618,1619,1636],{"__ignoreMap":706},[710,1620,1621,1623,1625,1628,1631,1634],{"class":712,"line":713},[710,1622,717],{"class":716},[710,1624,1583],{"class":720},[710,1626,1627],{"class":720}," --variables-file",[710,1629,1630],{"class":720}," .\u002Falice.json",[710,1632,1633],{"class":720}," --strict-variables",[710,1635,731],{"class":730},[710,1637,1638,1640],{"class":712,"line":734},[710,1639,1601],{"class":730},[710,1641,1604],{"class":720},[809,1643,1645],{"id":1644},"部署到-lambda","部署到 Lambda",[692,1647,1648,1649,1652],{},"模板在标准的 ",[696,1650,1651],{},"hyperframes lambda"," 栈上渲染——没有专门的模板部署模式。运行：",[701,1654,1656],{"className":703,"code":1655,"language":705,"meta":706,"style":706},"hyperframes lambda deploy\n",[696,1657,1658],{"__ignoreMap":706},[710,1659,1660,1662,1664],{"class":712,"line":713},[710,1661,717],{"class":716},[710,1663,721],{"class":720},[710,1665,1666],{"class":720}," deploy\n",[692,1668,1669,1670,1673],{},"每个 AWS 账户\u002F区域只需运行一次。",[1480,1671,1672],{"href":158},"aws-lambda 部署指南"," 涵盖了 SAM 栈、IAM 策略和 CloudFormation 输出。",[692,1675,1676,1677,1680,1681,1684],{},"当同一模板需要生成多次渲染时，先用 ",[696,1678,1679],{},"lambda sites create"," 一次性上传项目，然后在后续每次渲染或批量中引用其内容寻址的 ",[696,1682,1683],{},"siteId","：",[701,1686,1688],{"className":703,"code":1687,"language":705,"meta":706,"style":706},"hyperframes lambda sites create .\u002Fmy-template\n# → Site ID: abc1234deadbeef0\n",[696,1689,1690,1705],{"__ignoreMap":706},[710,1691,1692,1694,1696,1699,1702],{"class":712,"line":713},[710,1693,717],{"class":716},[710,1695,721],{"class":720},[710,1697,1698],{"class":720}," sites",[710,1700,1701],{"class":720}," create",[710,1703,1704],{"class":720}," .\u002Fmy-template\n",[710,1706,1707],{"class":712,"line":734},[710,1708,1710],{"class":1709},"sHwdD","# → Site ID: abc1234deadbeef0\n",[809,1712,1713],{"id":1713},"单次个性化渲染",[692,1715,1716,1717,1720,1721,1723,1724,1726,1727,1684],{},"对于一次性渲染，传入 ",[696,1718,1719],{},"--site-id"," 加上每次渲染的 ",[696,1722,1566],{},"。CLI 从 ",[696,1725,1683],{}," 合成最小的站点句柄（无需重新打包）并调用 ",[696,1728,1503],{},[701,1730,1732],{"className":703,"code":1731,"language":705,"meta":706,"style":706},"hyperframes lambda render .\u002Fmy-template \\\n--site-id abc1234deadbeef0 \\\n--width 1920 --height 1080 \\\n--variables '{\"title\":\"Hello Alice\",\"accentColor\":\"#ff0000\"}' \\\n--output-key renders\u002Falice.mp4 \\\n--wait\n",[696,1733,1734,1746,1756,1769,1782,1792],{"__ignoreMap":706},[710,1735,1736,1738,1740,1742,1744],{"class":712,"line":713},[710,1737,717],{"class":716},[710,1739,721],{"class":720},[710,1741,1583],{"class":720},[710,1743,727],{"class":720},[710,1745,731],{"class":730},[710,1747,1748,1751,1754],{"class":712,"line":734},[710,1749,1750],{"class":730},"--site-id ",[710,1752,1753],{"class":720},"abc1234deadbeef0",[710,1755,731],{"class":730},[710,1757,1758,1760,1762,1764,1767],{"class":712,"line":745},[710,1759,748],{"class":730},[710,1761,752],{"class":751},[710,1763,755],{"class":720},[710,1765,1766],{"class":751}," 1080",[710,1768,731],{"class":730},[710,1770,1771,1774,1776,1778,1780],{"class":712,"line":798},[710,1772,1773],{"class":730},"--variables ",[710,1775,864],{"class":834},[710,1777,1592],{"class":720},[710,1779,864],{"class":834},[710,1781,731],{"class":730},[710,1783,1784,1787,1790],{"class":712,"line":804},[710,1785,1786],{"class":730},"--output-key ",[710,1788,1789],{"class":720},"renders\u002Falice.mp4",[710,1791,731],{"class":730},[710,1793,1794],{"class":712,"line":880},[710,1795,1796],{"class":730},"--wait\n",[692,1798,1799,1802,1803,1806],{},[696,1800,1801],{},"--wait"," 会流式输出进度行直到渲染完成；不带该标志时 CLI 立即返回，你可以通过 ",[696,1804,1805],{},"hyperframes lambda progress \u003CrenderId>"," 轮询。",[809,1808,1810],{"id":1809},"批量流水线核心功能","批量流水线（核心功能）",[692,1812,1813,1815],{},[696,1814,698],{}," 是核心的便捷功能：一条 CLI 命令即可调度 N 次个性化渲染。编写一个 JSONL 文件，每个接收者一行：",[701,1817,1821],{"className":1818,"code":1819,"language":1820,"meta":706,"style":706},"language-jsonl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\"outputKey\": \"renders\u002Falice.mp4\", \"variables\": {\"title\": \"Hi Alice\", \"accentColor\": \"#ff0000\"}}\n{\"outputKey\": \"renders\u002Fbob.mp4\",   \"variables\": {\"title\": \"Hi Bob\",   \"accentColor\": \"#00aa00\"}}\n{\"outputKey\": \"renders\u002Fcarol.mp4\", \"variables\": {\"title\": \"Hi Carol\", \"accentColor\": \"#0000ff\"}}\n{\"outputKey\": \"renders\u002Fdave.mp4\",  \"variables\": {\"title\": \"Hi Dave\",  \"accentColor\": \"#ff00aa\"}}\n{\"outputKey\": \"renders\u002Ferin.mp4\",  \"variables\": {\"title\": \"Hi Erin\",  \"accentColor\": \"#aa00ff\"}}\n","jsonl",[696,1822,1823,1828,1833,1838,1843],{"__ignoreMap":706},[710,1824,1825],{"class":712,"line":713},[710,1826,1827],{},"{\"outputKey\": \"renders\u002Falice.mp4\", \"variables\": {\"title\": \"Hi Alice\", \"accentColor\": \"#ff0000\"}}\n",[710,1829,1830],{"class":712,"line":734},[710,1831,1832],{},"{\"outputKey\": \"renders\u002Fbob.mp4\",   \"variables\": {\"title\": \"Hi Bob\",   \"accentColor\": \"#00aa00\"}}\n",[710,1834,1835],{"class":712,"line":745},[710,1836,1837],{},"{\"outputKey\": \"renders\u002Fcarol.mp4\", \"variables\": {\"title\": \"Hi Carol\", \"accentColor\": \"#0000ff\"}}\n",[710,1839,1840],{"class":712,"line":798},[710,1841,1842],{},"{\"outputKey\": \"renders\u002Fdave.mp4\",  \"variables\": {\"title\": \"Hi Dave\",  \"accentColor\": \"#ff00aa\"}}\n",[710,1844,1845],{"class":712,"line":804},[710,1846,1847],{},"{\"outputKey\": \"renders\u002Ferin.mp4\",  \"variables\": {\"title\": \"Hi Erin\",  \"accentColor\": \"#aa00ff\"}}\n",[692,1849,1850],{},"运行批量任务：",[701,1852,1854],{"className":703,"code":1853,"language":705,"meta":706,"style":706},"hyperframes lambda render-batch .\u002Fmy-template \\\n--batch .\u002Fusers.jsonl \\\n--width 1920 --height 1080 \\\n--max-concurrent 5\n",[696,1855,1856,1868,1876,1888],{"__ignoreMap":706},[710,1857,1858,1860,1862,1864,1866],{"class":712,"line":713},[710,1859,717],{"class":716},[710,1861,721],{"class":720},[710,1863,724],{"class":720},[710,1865,727],{"class":720},[710,1867,731],{"class":730},[710,1869,1870,1872,1874],{"class":712,"line":734},[710,1871,737],{"class":730},[710,1873,740],{"class":720},[710,1875,731],{"class":730},[710,1877,1878,1880,1882,1884,1886],{"class":712,"line":745},[710,1879,748],{"class":730},[710,1881,752],{"class":751},[710,1883,755],{"class":720},[710,1885,1766],{"class":751},[710,1887,731],{"class":730},[710,1889,1890,1893],{"class":712,"line":798},[710,1891,1892],{"class":730},"--max-concurrent ",[710,1894,1895],{"class":751},"5\n",[692,1897,1898,1899,1901,1902,1904,1905,1908,1909,1911,1912,1915],{},"该命令会一次性部署站点（或使用 ",[696,1900,1719],{}," 跳过），然后对每一行调用 ",[696,1903,1503],{},"。变量内联在每个 JSONL 条目中——",[696,1906,1907],{},"render-batch"," 不接受 ",[696,1910,1570],{},"，因为按条目传入负载正是其设计目的。并发的 Step Functions 启动数量受限于 ",[696,1913,1914],{},"--max-concurrent","（默认 50），这样 10,000 条的批量任务不会尝试同时启动 10,000 个执行并触发 AWS 账户的并发执行限制。",[692,1917,1918],{},"清单输出对每个输入行给出一行结果：",[701,1920,1925],{"className":1921,"code":1923,"language":1924},[1922],"language-text","Batch dispatched: 5 started, 0 failed-to-start.\n\n✓ line 1  renders\u002Falice.mp4  arn:aws:states:us-east-1:1234:execution:hf:hf-render-...\n✓ line 2  renders\u002Fbob.mp4    arn:aws:states:us-east-1:1234:execution:hf:hf-render-...\n✓ line 3  renders\u002Fcarol.mp4  arn:aws:states:us-east-1:1234:execution:hf:hf-render-...\n✓ line 4  renders\u002Fdave.mp4   arn:aws:states:us-east-1:1234:execution:hf:hf-render-...\n✓ line 5  renders\u002Ferin.mp4   arn:aws:states:us-east-1:1234:execution:hf:hf-render-...\n","text",[696,1926,1923],{"__ignoreMap":706},[692,1928,1929,1930,1933,1934,1684],{},"添加 ",[696,1931,1932],{},"--json"," 获取机器可读的格式，你的批量协调器可以管道传给 ",[696,1935,1936],{},"jq",[701,1938,1940],{"className":703,"code":1939,"language":705,"meta":706,"style":706},"hyperframes lambda render-batch .\u002Fmy-template --batch .\u002Fusers.jsonl \\\n--width 1920 --height 1080 --json \\\n| jq -r '.[] | select(.status == \"started\") | .executionArn'\n",[696,1941,1942,1960,1975],{"__ignoreMap":706},[710,1943,1944,1946,1948,1950,1952,1955,1958],{"class":712,"line":713},[710,1945,717],{"class":716},[710,1947,721],{"class":720},[710,1949,724],{"class":720},[710,1951,727],{"class":720},[710,1953,1954],{"class":720}," --batch",[710,1956,1957],{"class":720}," .\u002Fusers.jsonl",[710,1959,731],{"class":730},[710,1961,1962,1964,1966,1968,1970,1973],{"class":712,"line":734},[710,1963,748],{"class":730},[710,1965,752],{"class":751},[710,1967,755],{"class":720},[710,1969,1766],{"class":751},[710,1971,1972],{"class":720}," --json",[710,1974,731],{"class":730},[710,1976,1977,1980,1983,1986,1988,1991],{"class":712,"line":745},[710,1978,1979],{"class":834},"|",[710,1981,1982],{"class":716}," jq",[710,1984,1985],{"class":720}," -r",[710,1987,1589],{"class":834},[710,1989,1990],{"class":720},".[] | select(.status == \"started\") | .executionArn",[710,1992,892],{"class":834},[692,1994,1995,1996,1999,2000,1567,2003,2006],{},"使用 ",[696,1997,1998],{},"lambda progress"," 轮询每个 ",[696,2001,2002],{},"executionArn",[696,2004,2005],{},"renderId","）以跟踪完成状态：",[701,2008,2010],{"className":703,"code":2009,"language":705,"meta":706,"style":706},"hyperframes lambda progress arn:aws:states:us-east-1:1234:execution:hf:hf-render-abcd\n",[696,2011,2012],{"__ignoreMap":706},[710,2013,2014,2016,2018,2021],{"class":712,"line":713},[710,2015,717],{"class":716},[710,2017,721],{"class":720},[710,2019,2020],{"class":720}," progress",[710,2022,2023],{"class":720}," arn:aws:states:us-east-1:1234:execution:hf:hf-render-abcd\n",[692,2025,1995,2026,2029,2030,1684],{},[696,2027,2028],{},"--dry-run"," 在产生任何执行费用之前检查批量文件。每个条目的状态变为 ",[696,2031,2032],{},"would-invoke",[701,2034,2036],{"className":703,"code":2035,"language":705,"meta":706,"style":706},"hyperframes lambda render-batch .\u002Fmy-template --batch .\u002Fusers.jsonl \\\n--width 1920 --height 1080 --dry-run --json\n",[696,2037,2038,2054],{"__ignoreMap":706},[710,2039,2040,2042,2044,2046,2048,2050,2052],{"class":712,"line":713},[710,2041,717],{"class":716},[710,2043,721],{"class":720},[710,2045,724],{"class":720},[710,2047,727],{"class":720},[710,2049,1954],{"class":720},[710,2051,1957],{"class":720},[710,2053,731],{"class":730},[710,2055,2056,2058,2060,2062,2064,2067],{"class":712,"line":734},[710,2057,748],{"class":730},[710,2059,752],{"class":751},[710,2061,755],{"class":720},[710,2063,1766],{"class":751},[710,2065,2066],{"class":720}," --dry-run",[710,2068,2069],{"class":720}," --json\n",[809,2071,2073],{"id":2072},"通过-sdk-编程式调用","通过 SDK 编程式调用",[692,2075,2076,2077,2080],{},"同样的功能可以通过 ",[696,2078,2079],{},"@hyperframes\u002Faws-lambda\u002Fsdk"," 从 TypeScript 调用。一次性部署站点，然后并行渲染批量任务：",[701,2082,2086],{"className":2083,"code":2084,"language":2085,"meta":706,"style":706},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { deploySite, renderToLambda } from \"@hyperframes\u002Faws-lambda\u002Fsdk\";\n\nconst users = [\n{ name: \"Alice\", accentColor: \"#ff0000\" },\n{ name: \"Bob\",   accentColor: \"#00aa00\" },\n\u002F\u002F … 1 000 more rows …\n];\n\nconst siteHandle = await deploySite({\nprojectDir: \".\u002Fmy-template\",\nbucketName: process.env.HYPERFRAMES_BUCKET!,\n});\n\nconst handles = await Promise.all(\nusers.map((user) =>\nrenderToLambda({\nsiteHandle,\nbucketName: process.env.HYPERFRAMES_BUCKET!,\nstateMachineArn: process.env.HYPERFRAMES_SFN_ARN!,\nconfig: {\nfps: 30,\nwidth: 1920,\nheight: 1080,\nformat: \"mp4\",\nvariables: { title: `Hello ${user.name}`, accentColor: user.accentColor },\n},\noutputKey: `renders\u002F${user.name.toLowerCase()}.mp4`,\n}),\n),\n);\n\nconsole.log(`Started ${handles.length} renders`);\n","typescript",[696,2087,2088,2121,2127,2140,2175,2206,2211,2217,2221,2240,2257,2280,2288,2292,2314,2337,2345,2352,2370,2390,2399,2411,2423,2434,2450,2499,2504,2542,2551,2558,2565,2570],{"__ignoreMap":706},[710,2089,2090,2094,2097,2100,2103,2106,2109,2112,2115,2117,2119],{"class":712,"line":713},[710,2091,2093],{"class":2092},"s7zQu","import",[710,2095,2096],{"class":834}," {",[710,2098,2099],{"class":730}," deploySite",[710,2101,2102],{"class":834},",",[710,2104,2105],{"class":730}," renderToLambda",[710,2107,2108],{"class":834}," }",[710,2110,2111],{"class":2092}," from",[710,2113,2114],{"class":834}," \"",[710,2116,2079],{"class":720},[710,2118,919],{"class":834},[710,2120,1210],{"class":834},[710,2122,2123],{"class":712,"line":734},[710,2124,2126],{"emptyLinePlaceholder":2125},true,"\n",[710,2128,2129,2132,2135,2137],{"class":712,"line":745},[710,2130,2131],{"class":842},"const",[710,2133,2134],{"class":730}," users ",[710,2136,861],{"class":834},[710,2138,2139],{"class":730}," [\n",[710,2141,2142,2145,2148,2151,2153,2156,2158,2160,2163,2165,2167,2170,2172],{"class":712,"line":798},[710,2143,2144],{"class":834},"{",[710,2146,2147],{"class":838}," name",[710,2149,2150],{"class":834},":",[710,2152,2114],{"class":834},[710,2154,2155],{"class":720},"Alice",[710,2157,919],{"class":834},[710,2159,2102],{"class":834},[710,2161,2162],{"class":838}," accentColor",[710,2164,2150],{"class":834},[710,2166,2114],{"class":834},[710,2168,2169],{"class":720},"#ff0000",[710,2171,919],{"class":834},[710,2173,2174],{"class":834}," },\n",[710,2176,2177,2179,2181,2183,2185,2188,2190,2192,2195,2197,2199,2202,2204],{"class":712,"line":804},[710,2178,2144],{"class":834},[710,2180,2147],{"class":838},[710,2182,2150],{"class":834},[710,2184,2114],{"class":834},[710,2186,2187],{"class":720},"Bob",[710,2189,919],{"class":834},[710,2191,2102],{"class":834},[710,2193,2194],{"class":838},"   accentColor",[710,2196,2150],{"class":834},[710,2198,2114],{"class":834},[710,2200,2201],{"class":720},"#00aa00",[710,2203,919],{"class":834},[710,2205,2174],{"class":834},[710,2207,2208],{"class":712,"line":880},[710,2209,2210],{"class":1709},"\u002F\u002F … 1 000 more rows …\n",[710,2212,2213,2215],{"class":712,"line":886},[710,2214,889],{"class":730},[710,2216,1210],{"class":834},[710,2218,2219],{"class":712,"line":895},[710,2220,2126],{"emptyLinePlaceholder":2125},[710,2222,2223,2225,2228,2230,2233,2235,2237],{"class":712,"line":900},[710,2224,2131],{"class":842},[710,2226,2227],{"class":730}," siteHandle ",[710,2229,861],{"class":834},[710,2231,2232],{"class":2092}," await",[710,2234,2099],{"class":1203},[710,2236,1168],{"class":730},[710,2238,2239],{"class":834},"{\n",[710,2241,2242,2245,2247,2249,2252,2254],{"class":712,"line":950},[710,2243,2244],{"class":838},"projectDir",[710,2246,2150],{"class":834},[710,2248,2114],{"class":834},[710,2250,2251],{"class":720},".\u002Fmy-template",[710,2253,919],{"class":834},[710,2255,2256],{"class":834},",\n",[710,2258,2259,2262,2264,2267,2269,2272,2274,2277],{"class":712,"line":972},[710,2260,2261],{"class":838},"bucketName",[710,2263,2150],{"class":834},[710,2265,2266],{"class":730}," process",[710,2268,1195],{"class":834},[710,2270,2271],{"class":730},"env",[710,2273,1195],{"class":834},[710,2275,2276],{"class":730},"HYPERFRAMES_BUCKET",[710,2278,2279],{"class":834},"!,\n",[710,2281,2282,2284,2286],{"class":712,"line":1029},[710,2283,1328],{"class":834},[710,2285,1232],{"class":730},[710,2287,1210],{"class":834},[710,2289,2290],{"class":712,"line":1070},[710,2291,2126],{"emptyLinePlaceholder":2125},[710,2293,2294,2296,2299,2301,2303,2306,2308,2311],{"class":712,"line":1105},[710,2295,2131],{"class":842},[710,2297,2298],{"class":730}," handles ",[710,2300,861],{"class":834},[710,2302,2232],{"class":2092},[710,2304,2305],{"class":716}," Promise",[710,2307,1195],{"class":834},[710,2309,2310],{"class":1203},"all",[710,2312,2313],{"class":730},"(\n",[710,2315,2316,2319,2321,2324,2326,2328,2332,2334],{"class":712,"line":1146},[710,2317,2318],{"class":730},"users",[710,2320,1195],{"class":834},[710,2322,2323],{"class":1203},"map",[710,2325,1168],{"class":730},[710,2327,1168],{"class":834},[710,2329,2331],{"class":2330},"sHdIc","user",[710,2333,1232],{"class":834},[710,2335,2336],{"class":842}," =>\n",[710,2338,2339,2341,2343],{"class":712,"line":1155},[710,2340,1503],{"class":1203},[710,2342,1168],{"class":730},[710,2344,2239],{"class":834},[710,2346,2347,2350],{"class":712,"line":1165},[710,2348,2349],{"class":730},"siteHandle",[710,2351,2256],{"class":834},[710,2353,2354,2356,2358,2360,2362,2364,2366,2368],{"class":712,"line":1180},[710,2355,2261],{"class":838},[710,2357,2150],{"class":834},[710,2359,2266],{"class":730},[710,2361,1195],{"class":834},[710,2363,2271],{"class":730},[710,2365,1195],{"class":834},[710,2367,2276],{"class":730},[710,2369,2279],{"class":834},[710,2371,2372,2375,2377,2379,2381,2383,2385,2388],{"class":712,"line":1213},[710,2373,2374],{"class":838},"stateMachineArn",[710,2376,2150],{"class":834},[710,2378,2266],{"class":730},[710,2380,1195],{"class":834},[710,2382,2271],{"class":730},[710,2384,1195],{"class":834},[710,2386,2387],{"class":730},"HYPERFRAMES_SFN_ARN",[710,2389,2279],{"class":834},[710,2391,2392,2395,2397],{"class":712,"line":1250},[710,2393,2394],{"class":838},"config",[710,2396,2150],{"class":834},[710,2398,1177],{"class":834},[710,2400,2401,2404,2406,2409],{"class":712,"line":1290},[710,2402,2403],{"class":838},"fps",[710,2405,2150],{"class":834},[710,2407,2408],{"class":751}," 30",[710,2410,2256],{"class":834},[710,2412,2413,2416,2418,2421],{"class":712,"line":1325},[710,2414,2415],{"class":838},"width",[710,2417,2150],{"class":834},[710,2419,2420],{"class":751}," 1920",[710,2422,2256],{"class":834},[710,2424,2425,2428,2430,2432],{"class":712,"line":1336},[710,2426,2427],{"class":838},"height",[710,2429,2150],{"class":834},[710,2431,1766],{"class":751},[710,2433,2256],{"class":834},[710,2435,2436,2439,2441,2443,2446,2448],{"class":712,"line":1345},[710,2437,2438],{"class":838},"format",[710,2440,2150],{"class":834},[710,2442,2114],{"class":834},[710,2444,2445],{"class":720},"mp4",[710,2447,919],{"class":834},[710,2449,2256],{"class":834},[710,2451,2452,2454,2456,2458,2461,2463,2466,2469,2472,2474,2476,2479,2482,2484,2486,2488,2491,2493,2496],{"class":712,"line":1354},[710,2453,1507],{"class":838},[710,2455,2150],{"class":834},[710,2457,2096],{"class":834},[710,2459,2460],{"class":838}," title",[710,2462,2150],{"class":834},[710,2464,2465],{"class":834}," `",[710,2467,2468],{"class":720},"Hello ",[710,2470,2471],{"class":834},"${",[710,2473,2331],{"class":730},[710,2475,1195],{"class":834},[710,2477,2478],{"class":730},"name",[710,2480,2481],{"class":834},"}`",[710,2483,2102],{"class":834},[710,2485,2162],{"class":838},[710,2487,2150],{"class":834},[710,2489,2490],{"class":730}," user",[710,2492,1195],{"class":834},[710,2494,2495],{"class":730},"accentColor ",[710,2497,2498],{"class":834},"},\n",[710,2500,2502],{"class":712,"line":2501},26,[710,2503,2498],{"class":834},[710,2505,2507,2510,2512,2514,2517,2519,2521,2523,2525,2527,2530,2532,2534,2537,2540],{"class":712,"line":2506},27,[710,2508,2509],{"class":838},"outputKey",[710,2511,2150],{"class":834},[710,2513,2465],{"class":834},[710,2515,2516],{"class":720},"renders\u002F",[710,2518,2471],{"class":834},[710,2520,2331],{"class":730},[710,2522,1195],{"class":834},[710,2524,2478],{"class":730},[710,2526,1195],{"class":834},[710,2528,2529],{"class":1203},"toLowerCase",[710,2531,1207],{"class":730},[710,2533,1328],{"class":834},[710,2535,2536],{"class":720},".mp4",[710,2538,2539],{"class":834},"`",[710,2541,2256],{"class":834},[710,2543,2545,2547,2549],{"class":712,"line":2544},28,[710,2546,1328],{"class":834},[710,2548,1232],{"class":730},[710,2550,2256],{"class":834},[710,2552,2554,2556],{"class":712,"line":2553},29,[710,2555,1232],{"class":730},[710,2557,2256],{"class":834},[710,2559,2561,2563],{"class":712,"line":2560},30,[710,2562,1232],{"class":730},[710,2564,1210],{"class":834},[710,2566,2568],{"class":712,"line":2567},31,[710,2569,2126],{"emptyLinePlaceholder":2125},[710,2571,2573,2576,2578,2581,2583,2585,2588,2590,2593,2595,2598,2600,2603,2605,2607],{"class":712,"line":2572},32,[710,2574,2575],{"class":730},"console",[710,2577,1195],{"class":834},[710,2579,2580],{"class":1203},"log",[710,2582,1168],{"class":730},[710,2584,2539],{"class":834},[710,2586,2587],{"class":720},"Started ",[710,2589,2471],{"class":834},[710,2591,2592],{"class":730},"handles",[710,2594,1195],{"class":834},[710,2596,2597],{"class":730},"length",[710,2599,1328],{"class":834},[710,2601,2602],{"class":720}," renders",[710,2604,2539],{"class":834},[710,2606,1232],{"class":730},[710,2608,1210],{"class":834},[692,2610,2611,2613,2614,2616,2617,2620,2621,2613,2624,2627,2628,2631,2632,2634],{},[696,2612,2276],{}," 和 ",[696,2615,2387],{}," 来自部署栈。",[696,2618,2619],{},"hyperframes lambda deploy"," 会将它们打印为 ",[696,2622,2623],{},"RenderBucketName",[696,2625,2626],{},"RenderStateMachineArn","，也可以通过 ",[696,2629,2630],{},"aws cloudformation describe-stacks --query \"Stacks[0].Outputs\""," 获取。完整的 CloudFormation 输出表请参阅 ",[1480,2633,1672],{"href":158},"。",[692,2636,2637,2638,2641,2642,2645],{},"当批量任务足够大，无限制的突发可能会触发你的 AWS Lambda 并发执行配额时，请用信号量包装 ",[696,2639,2640],{},"Promise.all","（或使用 CLI 的 ",[696,2643,2644],{},"runWithConcurrencyLimit"," 模式）。",[809,2647,2648],{"id":2648},"处理大变量",[692,2650,2651,2652,2656,2657,2660],{},"变量在 Step Functions 标准执行输入中传输，AWS 对",[2653,2654,2655],"strong",{},"整个输入","（不仅仅是变量——限制是针对完整序列化载荷的）限制为 ",[2653,2658,2659],{},"256 KiB","。Express 工作流限制为 32 KiB；我们使用 Standard 是为了执行历史可见性，因此适用 256 KiB 的限制。",[692,2662,2663],{},"SDK 在客户端验证大小，在任何 AWS 调用之前拒绝超大输入并给出清晰的错误信息：",[701,2665,2668],{"className":2666,"code":2667,"language":1924},[1922],"[validateConfig] config: Step Functions execution input is 287422 bytes,\nwhich exceeds the 262144-byte (256 KiB) limit for Standard workflows.\nVariables are for typed data (strings, numbers, structured records);\nmedia assets (images, audio, video) should be passed as URL references\nhe composition resolves at render time, not inlined as base64. See\nhttps:\u002F\u002Fhyperframes.heygen.com\u002Fdeploy\u002Ftemplates-on-lambda#working-with-large-variables\nfor the URL-your-assets convention.\n",[696,2669,2667],{"__ignoreMap":706},[692,2671,2672],{},[2653,2673,2674],{},"规范：变量用于类型化数据；媒体资源是 composition 在渲染时解析的 URL 引用。",[692,2676,2677],{},"正确做法：",[701,2679,2683],{"className":2680,"code":2681,"language":2682,"meta":706,"style":706},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n\"title\": \"Hello Alice\",\n\"accentColor\": \"#ff0000\",\n\"avatarUrl\": \"https:\u002F\u002Fcdn.example.com\u002Favatars\u002Falice.png\"\n}\n","json",[696,2684,2685,2689,2708,2726,2744],{"__ignoreMap":706},[710,2686,2687],{"class":712,"line":713},[710,2688,2239],{"class":834},[710,2690,2691,2693,2695,2697,2699,2701,2704,2706],{"class":712,"line":734},[710,2692,919],{"class":834},[710,2694,929],{"class":842},[710,2696,919],{"class":834},[710,2698,2150],{"class":834},[710,2700,2114],{"class":834},[710,2702,2703],{"class":720},"Hello Alice",[710,2705,919],{"class":834},[710,2707,2256],{"class":834},[710,2709,2710,2712,2714,2716,2718,2720,2722,2724],{"class":712,"line":745},[710,2711,919],{"class":834},[710,2713,1285],{"class":842},[710,2715,919],{"class":834},[710,2717,2150],{"class":834},[710,2719,2114],{"class":834},[710,2721,2169],{"class":720},[710,2723,919],{"class":834},[710,2725,2256],{"class":834},[710,2727,2728,2730,2732,2734,2736,2738,2741],{"class":712,"line":798},[710,2729,919],{"class":834},[710,2731,1320],{"class":842},[710,2733,919],{"class":834},[710,2735,2150],{"class":834},[710,2737,2114],{"class":834},[710,2739,2740],{"class":720},"https:\u002F\u002Fcdn.example.com\u002Favatars\u002Falice.png",[710,2742,2743],{"class":834},"\"\n",[710,2745,2746],{"class":712,"line":804},[710,2747,2748],{"class":834},"}\n",[692,2750,2751],{},"错误做法（任何稍大的图片都会超出限制）：",[701,2753,2755],{"className":2680,"code":2754,"language":2682,"meta":706,"style":706},"{\n\"title\": \"Hello Alice\",\n\"avatarBase64\": \"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUh...\"\n}\n",[696,2756,2757,2761,2779,2797],{"__ignoreMap":706},[710,2758,2759],{"class":712,"line":713},[710,2760,2239],{"class":834},[710,2762,2763,2765,2767,2769,2771,2773,2775,2777],{"class":712,"line":734},[710,2764,919],{"class":834},[710,2766,929],{"class":842},[710,2768,919],{"class":834},[710,2770,2150],{"class":834},[710,2772,2114],{"class":834},[710,2774,2703],{"class":720},[710,2776,919],{"class":834},[710,2778,2256],{"class":834},[710,2780,2781,2783,2786,2788,2790,2792,2795],{"class":712,"line":745},[710,2782,919],{"class":834},[710,2784,2785],{"class":842},"avatarBase64",[710,2787,919],{"class":834},[710,2789,2150],{"class":834},[710,2791,2114],{"class":834},[710,2793,2794],{"class":720},"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUh...",[710,2796,2743],{"class":834},[710,2798,2799],{"class":712,"line":798},[710,2800,2748],{"class":834},[692,2802,2803],{},"在 composition 中，将变量绑定到 DOM 的脚本直接使用 URL——Lambda chunk worker 在捕获期间通过文件服务器获取资源，与本地渲染器的方式相同：",[701,2805,2807],{"className":825,"code":2806,"language":827,"meta":706,"style":706},"\u003Cscript>\n(function () {\nvar v = window.__hyperframes.getVariables();\ndocument.getElementById(\"avatar\").src = v.avatarUrl;\n})();\n\u003C\u002Fscript>\n",[696,2808,2809,2817,2827,2849,2881,2889],{"__ignoreMap":706},[710,2810,2811,2813,2815],{"class":712,"line":713},[710,2812,851],{"class":834},[710,2814,1160],{"class":838},[710,2816,846],{"class":834},[710,2818,2819,2821,2823,2825],{"class":712,"line":734},[710,2820,1168],{"class":730},[710,2822,1171],{"class":842},[710,2824,1174],{"class":834},[710,2826,1177],{"class":834},[710,2828,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847],{"class":712,"line":745},[710,2830,1183],{"class":842},[710,2832,1186],{"class":730},[710,2834,1189],{"class":834},[710,2836,1192],{"class":730},[710,2838,1195],{"class":834},[710,2840,1198],{"class":730},[710,2842,1195],{"class":834},[710,2844,1204],{"class":1203},[710,2846,1207],{"class":838},[710,2848,1210],{"class":834},[710,2850,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879],{"class":712,"line":798},[710,2852,1216],{"class":730},[710,2854,1195],{"class":834},[710,2856,1221],{"class":1203},[710,2858,1168],{"class":838},[710,2860,919],{"class":834},[710,2862,1119],{"class":720},[710,2864,919],{"class":834},[710,2866,1232],{"class":838},[710,2868,1195],{"class":834},[710,2870,1311],{"class":730},[710,2872,1189],{"class":834},[710,2874,1186],{"class":730},[710,2876,1195],{"class":834},[710,2878,1320],{"class":730},[710,2880,1210],{"class":834},[710,2882,2883,2885,2887],{"class":712,"line":804},[710,2884,1328],{"class":834},[710,2886,1331],{"class":730},[710,2888,1210],{"class":834},[710,2890,2891,2893,2895],{"class":712,"line":880},[710,2892,938],{"class":834},[710,2894,1160],{"class":838},[710,2896,846],{"class":834},[692,2898,2899,2900,2903,2904,2907],{},"同样的限制适用于 Remotion 的 ",[696,2901,2902],{},"inputProps","——如果你从 ",[696,2905,2906],{},"@remotion\u002Flambda"," 迁移过来，你的载荷应该已经是这种结构。",[692,2909,2910,2911,2917],{},"如果你的类型化数据载荷确实超过 256 KiB（例如每次渲染有很长的结构化记录且没有媒体资源），请",[1480,2912,2916],{"href":2913,"rel":2914},"https:\u002F\u002Fgithub.com\u002Fheygen-com\u002Fhyperframes\u002Fissues\u002Fnew",[2915],"nofollow","提交 issue","——通过 S3 托管变量文件有一个清晰的路径，但我们希望在设计 API 之前看到真实的需求。",[809,2919,2920],{"id":2920},"费用与规模",[692,2922,2923,2924,2927,2928,2931],{},"每次个性化渲染是一次 Step Functions 执行 + N 次 chunk Lambda 调用。按默认设置（",[696,2925,2926],{},"chunkSize: 240","，",[696,2929,2930],{},"maxParallelChunks: 16","），一个 5 秒 30fps 的 composition 为 1 个 chunk；一个 60 秒的 composition 约为 8 个 chunk。",[692,2933,2934],{},"费用调节参数：",[2936,2937,2938,2951,2961,2973],"ul",{},[2939,2940,2941,2946,2947,2950],"li",{},[2653,2942,2943],{},[696,2944,2945],{},"--max-parallel-chunks","：每次渲染，默认 16。较小的 composition 不会展开超过 ",[696,2948,2949],{},"ceil(totalFrames \u002F chunkSize)","。更高的值会增加 Lambda 调用费用但完成更快。",[2939,2952,2953,2956,2957,2960],{},[2653,2954,2955],{},"Lambda 预留并发","（",[696,2958,2959],{},"lambda deploy --concurrency=\u003CN>","）：限制渲染函数可以并行运行的 Lambda 调用数量。同一 AWS 账户中的其他工作负载共享相同的账户级并发池（大多数区域默认约 1,000），因此预留并发可以防止渲染函数饿死其他工作负载，反之亦然。",[2939,2962,2963,2968,2969,2972],{},[2653,2964,2965],{},[696,2966,2967],{},"render-batch --max-concurrent","：编排器侧。限制同时运行的 ",[696,2970,2971],{},"StartExecution"," 调用数量——与 Lambda 并发限制不同，后者位于更低一层的 chunk 调用层。CLI 无法强制执行 Lambda 的账户限制；它只能避免创建过多排队的 Step Functions 执行。",[2939,2974,2975,2956,2978,2981,2982,2985],{},[2653,2976,2977],{},"Lambda 内存",[696,2979,2980],{},"lambda deploy --memory","）：默认 10,240 MB（最大值）。更高的内存意味着更快的 Chrome 捕获 + 每个 chunk 更多的 vCPU；更低的内存节省费用但可能在重型 composition 上触发 ",[696,2983,2984],{},"15 分钟","超时。",[692,2987,2988,2989,2992,2993,2995],{},"每次 Step Functions 执行会展开到约 ",[696,2990,2991],{},"maxParallelChunks"," 个 Lambda 调用。因此，如果部署的预留并发为 8 而 ",[696,2994,2991],{}," 保持默认的 16，即使单次渲染也会被限流——在运行大批量任务之前请提高部署并发数。",[692,2997,2998,2999,3002,3003,3006],{},"对于小批量（\u003C 100 条），默认的 ",[696,3000,3001],{},"--max-concurrent 50"," 即可。对于大批量（> 1,000），一个有用的起点是 ",[696,3004,3005],{},"--max-concurrent ≈ floor(reservedConcurrency \u002F maxParallelChunks)","，使每个运行中的渲染获得完整的 chunk fan-out 预算；批量命令不会强制执行此值，这只是选择该标志值的参考。",[692,3008,3009,3010,3012],{},"进程内 vs 分布式交叉点：对于约 30 秒以下的单次渲染，进程内渲染器（",[696,3011,764],{},"）在延迟上更优，因为没有每个 chunk 的 S3 往返。分布式渲染在超过约 60 秒的渲染或需要个性化批量时更优——这就是该功能存在的全部原因。（Phase 7 的小型渲染快捷方式在上线后将缩小短渲染的差距。）",[809,3014,3016],{"id":3015},"从-remotionlambda-inputprops-迁移","从 @remotion\u002Flambda inputProps 迁移",[692,3018,3019,3020,3022,3023,3025],{},"Remotion 的 ",[696,3021,2902],{}," API 和 HyperFrames 的 ",[696,3024,1507],{}," 是同构的——两者都是在声明的 composition 默认值之上注入的渲染时覆盖的 JSON 对象。映射是机械化的：",[1384,3027,3028,3038],{},[1387,3029,3030],{},[1390,3031,3032,3035],{},[1393,3033,3034],{},"Remotion",[1393,3036,3037],{},"HyperFrames",[1402,3039,3040,3053,3070,3082,3090],{},[1390,3041,3042,3047],{},[1407,3043,3044],{},[696,3045,3046],{},"Composition.defaultProps",[1407,3048,3049,3050,3052],{},"根 HTML 元素上的 ",[696,3051,817],{}," 声明",[1390,3054,3055,3064],{},[1407,3056,3057,3060,3061],{},[696,3058,3059],{},"useCurrentFrame()"," + ",[696,3062,3063],{},"props.\u003Cx>",[1407,3065,3066,3069],{},[696,3067,3068],{},"window.__hyperframes.getVariables().\u003Cx>","（在 DOMContentLoaded 时读取一次）",[1390,3071,3072,3077],{},[1407,3073,3074],{},[696,3075,3076],{},"renderMediaOnLambda({ inputProps })",[1407,3078,3079],{},[696,3080,3081],{},"renderToLambda({ config: { variables } })",[1390,3083,3084,3087],{},[1407,3085,3086],{},"Lambda inputProps 256 KiB 限制",[1407,3088,3089],{},"Step Functions 执行输入 256 KiB 限制",[1390,3091,3092,3095],{},[1407,3093,3094],{},"inputProps URL 化大媒体模式",[1407,3096,3097],{},"相同规范——URL 引用，而非内联字节",[692,3099,3019,3100,3102,3103,3105],{},[696,3101,2902],{}," 有相同的 256 KiB 限制和相同的\"URL 化你的资源\"规范，因此迁移一个正常工作的 ",[696,3104,2902],{}," 流程是直接的 CLI\u002FSDK 替换，而非载荷重构。",[809,3107,3108],{"id":3108},"下一步",[2936,3110,3111,3117,3133],{},[2939,3112,3113,3116],{},[2653,3114,3115],{},"更小的批量原语","：除 JSONL 外支持 HTML 格式输入。如果你觉得有用请提交 issue。",[2939,3118,3119,1684,3125,3128,3129,3132],{},[2653,3120,3121,3122,3124],{},"从 ",[696,3123,817],{}," 生成 TypeScript 类型",[696,3126,3127],{},"hyperframes types generate \u003CprojectDir>"," 已有设计，可能在 v1.5 中实现；它将允许 SDK 调用者 ",[696,3130,3131],{},"import type { Variables } from \".\u002Ftemplate\u002Fvariables\""," 以获得自动补全和类型检查。",[2939,3134,3135,3138],{},[2653,3136,3137],{},"HDR 模板支持","：HDR mp4 目前在分布式模式下被拒绝（仅支持进程内）。v1.5 的下一个目标是为分布式渲染解锁 HDR，使模板可以生成广色域输出。",[692,3140,3141,3142,3146],{},"如果你的模板流水线遇到了文档未覆盖的问题，请",[1480,3143,3145],{"href":2913,"rel":3144},[2915],"在 GitHub 上提交 issue","——批量功能是新的，反馈循环很短。",[1271,3148,3149],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":706,"searchDepth":713,"depth":734,"links":3151},[3152,3153,3154,3155,3156,3157,3158,3159,3160,3161,3162],{"id":811,"depth":734,"text":811},{"id":1377,"depth":734,"text":1377},{"id":1557,"depth":734,"text":1557},{"id":1644,"depth":734,"text":1645},{"id":1713,"depth":734,"text":1713},{"id":1809,"depth":734,"text":1810},{"id":2072,"depth":734,"text":2073},{"id":2648,"depth":734,"text":2648},{"id":2920,"depth":734,"text":2920},{"id":3015,"depth":734,"text":3016},{"id":3108,"depth":734,"text":3108},"在 AWS Lambda 上使用 --variables 和 lambda render-batch 命令大规模渲染个性化模板视频。","md",null,{},{"title":161,"description":3163},"zrC_15EuiS-fdLM3EqY-Md-pWTa-9NBaFOsYaSGDwJs",[3170,3172],{"title":157,"path":158,"stem":159,"description":3171,"children":-1},"将分布式 HyperFrames 渲染部署到 AWS Lambda，并从笔记本电脑或 CI 驱动渲染。",{"title":165,"path":166,"stem":167,"description":3173,"children":-1},"面向从其他一键部署视频渲染器迁移到 HyperFrames 的用户的并排概念映射。",1780322253335]