Sistema de templates
Templates se expandem em clips normais em runtime. Eles não devem ser tratados como contêineres pai que passam automaticamente estilo ou animação para seus filhos gerados.
1. Templates registrados
Atualmente suportados:
product-introslideshowsubtitle-videotalking-headcomparisoncountdowntext-revealnewsquotelist
2. Limites compartilhados
Estes campos no próprio clip de template não estão documentados como herdados pelos clips filhos gerados:
transformstyleanimationskeyframestransition
O controle específico do template deve ser passado por data.
3. product-intro
Campos efetivos:
nametaglinefeaturespriceimagecta
Comportamento:
- Imagem opcional do produto à esquerda
- Título do produto e texto de apoio à direita
- Lista opcional de recursos
- Preço opcional
- Texto de CTA opcional
Exemplo:
{
"type": "template",
"template": "product-intro",
"start": 0,
"duration": 8,
"data": {
"name": "Smart Watch Pro",
"tagline": "Built for modern teams",
"features": ["AMOLED display", "7-day battery", "Health tracking"],
"price": "$299",
"image": "https://example.com/watch.png",
"cta": "Order Now"
}
}4. slideshow
Campos efetivos:
imagesdurationPerSlideshowCaptions
Comportamento:
- Cada imagem se expande em um clip
image - Os slides usam o comportamento atual de transição embutida
- Texto de legenda é gerado quando um slide inclui
captioneshowCaptions !== false
Exemplo:
{
"type": "template",
"template": "slideshow",
"start": 0,
"duration": 9,
"data": {
"images": [
{ "image": "https://example.com/slide-1.jpg", "caption": "Welcome" },
{ "image": "https://example.com/slide-2.jpg", "caption": "New Features" },
{ "image": "https://example.com/slide-3.jpg", "caption": "Get Started" }
],
"durationPerSlide": 3,
"showCaptions": true
}
}5. subtitle-video
Campos efetivos:
srcwordsconfigsourcevolumemutedplaybackRate
Comportamento:
- Gera um
videoem tela cheia - Gera um
subtitle
Exemplo:
{
"type": "template",
"template": "subtitle-video",
"start": 0,
"duration": 8,
"data": {
"src": { "$ref": "host-video" },
"words": { "$ref": "subtitle-main" },
"muted": false,
"volume": 1,
"config": {
"position": "bottom",
"fontSize": 58,
"highlightColor": "#22d3ee"
}
}
}6. talking-head
Campos efetivos:
srcwordsconfigsourcevolumemutedplaybackRatespeakerroletitleshowLowerThird
Comportamento:
- Gera um vídeo principal em tela cheia
- Título superior opcional
- Bloco lower-third opcional
- Faixa de legendas opcional
Exemplo:
{
"type": "template",
"template": "talking-head",
"start": 0,
"duration": 8,
"data": {
"src": { "$ref": "host-video" },
"words": { "$ref": "subtitle-main" },
"title": "Weekly Update",
"speaker": "Alex Chen",
"role": "Founder",
"showLowerThird": true,
"config": {
"position": "bottom",
"fontSize": 60,
"highlightColor": "#22d3ee"
}
}
}7. comparison
Campos efetivos:
left.titleleft.itemsleft.imageright.titleright.itemsright.imagevsText
Comportamento:
- Gera blocos de comparação à esquerda e à direita
- Imagens e listas opcionais para ambos os lados
- Gera o divisor central e o texto VS
Exemplo:
{
"type": "template",
"template": "comparison",
"start": 0,
"duration": 7,
"data": {
"left": {
"title": "Before",
"items": ["Manual workflow", "Slow review", "Higher cost"],
"image": "https://example.com/before.png"
},
"right": {
"title": "After",
"items": ["Automated workflow", "Fast review", "Lower cost"],
"image": "https://example.com/after.png"
},
"vsText": "VS"
}
}8. countdown
Campos efetivos:
fromtoshowTextonComplete
Comportamento:
- Renderiza uma sequência de contagem regressiva
- Pode mostrar texto auxiliar próximo ao final
- Pode mostrar uma mensagem de conclusão
Exemplo:
{
"type": "template",
"template": "countdown",
"start": 0,
"duration": 6,
"data": {
"from": 5,
"to": 0,
"showText": true,
"onComplete": "Launch"
}
}9. text-reveal
Campos efetivos:
textstylefontSizecolortextAlignposition
Valores de estilo documentados:
fadeslidezoom
Comportamento:
- Gera um ou mais clips de texto para uma revelação em etapas
- Usa o estilo de revelação selecionado onde ele estiver implementado atualmente
Exemplo:
{
"type": "template",
"template": "text-reveal",
"start": 0,
"duration": 5,
"data": {
"text": "Ship faster with AI video",
"style": "slide",
"fontSize": 72,
"color": "#ffffff",
"textAlign": "center",
"position": "center"
}
}10. news
Campos efetivos:
headlinecontentreporterlocationshowLowerThird
Comportamento:
- Título principal
- Bloco de conteúdo opcional
- Bloco de informação lower-third opcional
Exemplo:
{
"type": "template",
"template": "news",
"start": 0,
"duration": 8,
"data": {
"headline": "Quarterly results exceed expectations",
"content": "Revenue grew 38% year over year, driven by strong subscription growth.",
"reporter": "Maya Lin",
"location": "San Francisco",
"showLowerThird": true
}
}11. quote
Campos efetivos:
quoteauthorsource
Comportamento:
- Renderiza o texto da citação
- Linha opcional de autor e fonte
Exemplo:
{
"type": "template",
"template": "quote",
"start": 0,
"duration": 6,
"data": {
"quote": "Simplicity scales better than complexity.",
"author": "Alex Chen",
"source": "Team Memo"
}
}12. list
Campos efetivos:
titleitemsstyleitemDurationanimation
Comportamento:
- Gera um título quando fornecido
- Gera itens de lista em sequência
- Suporta estilo de marcador e animação dos itens
itemDuration: "auto"distribui automaticamente o tempo total
Exemplo:
{
"type": "template",
"template": "list",
"start": 0,
"duration": 8,
"data": {
"title": "Release Checklist",
"items": ["Finalize copy", "Export assets", "Publish update"],
"style": "checkmark",
"itemDuration": "auto",
"animation": "fadeIn"
}
}