Monólogo envolvente (16:9)
Referência: Ali Abdaal, "How I'd Create Content in 2026 (If I Had To Start Over)" (youtu.be/A8PxRHQrLJ8, 16 min, 1080p).
A linguagem de movimento é copiada desse vídeo. O visual é do kit FringeLines v2.1:
My Drive/FringeLines Design System files/Fringe Lines Design system v2_1/ e os tokens em …/handoff/fringelines-tokens.css.
O que torna a referência eficaz
Medido a partir do vídeo a 1 quadro a cada 2 s, além de amostras densas perto das transições.
- Cerca de 55% de cabeça falante pura. Uma câmera fixa, plano médio. Cortes a cada ~5 s (mediana): cerca de 122 cortes em 16 min. Cada corte alterna entre aberto e com zoom, parecendo intencional.
- Dois layouts, nunca mais:
- Orador em tela cheia com elementos sobrepostos: barras inferiores com nome, cartão de chamada colorido no canto superior esquerdo com uma pílula de etiqueta, frases serifadas brancas na parte inferior, chips coloridos perto da cabeça e uma pílula de CTA/patrocínio no centro inferior.
- Tela de papel. O orador é reduzido a um PiP retrato (cantos arredondados, moldura branca, lado direito, cerca de 400×560) enquanto um gráfico é construído sobre uma página off-white quente com um leve swoosh. A tela contém frases cinéticas, cartões numerados de roadmap, diagramas em pílula, pirâmides e capturas de tela ou b-roll em cartões arredondados com uma legenda abaixo.
- Sem legendas contínuas. O texto na tela é escolhido. Uma frase de cada vez, revelada palavra por palavra em sincronia com a fala. Cada palavra começa fraca e desfocada, depois se torna nítida. A frase-chave muda de cor.
- Diagramas são construídos peça por peça à medida que cada item é dito. Pílulas aparecem com um pequeno overshoot. Camadas de pirâmide caem de cima.
- A câmera se move dentro dos gráficos. O roadmap de 5 cartões retorna a cada capítulo, amplia o cartão ativo e desfoca os outros.
- Saídas desfocam em vez de cortar. A transição tela cheia↔PiP é uma morph rápida e suave de cerca de 0,4 s.
- Ritmo: uma nova ideia visual a cada 10–20 s, um momento de ênfase (preto e branco) por seção e uma barra inferior na primeira aparição de cada pessoa.
- Som: whooshes suaves nas mudanças de layout e pops leves quando os itens chegam, sempre abaixo da voz.
Como mapear para o FringeLines (não se desvie disso)
| Referência | Versão FringeLines |
|---|---|
| Serifa quente com destaques coral | Instrument Serif para todo texto de exibição. O destaque é uma frase em itálico, azul-tinta #1A4F6B sobre papel ou branco sobre vídeo. Laranja #D4622A apenas para o número que importa ([7 AM], a estatística). |
| Sem arredondada em pílulas | Archivo 500–600 para pílulas, chips, itens de lista, rótulos de pilha |
| Rótulos em versalete | IBM Plex Mono 600, maiúsculo, +0,14em, ≥ 22 px: sobrancelhas, pílulas de etiqueta, fontes, meta |
| Chamadas com gradiente coral/vermelho | Gradientes do kit: verde (padrão), azul (segunda ideia), laranja (aviso ou "erro") |
| Cartões pastel de roadmap | Lavagens verde, azul e laranja, um crachá numérico mono e um conector laranja tracejado |
| Papel creme + swoosh | Papel #F7F7F5 com um leve swoosh verde |
| Sombras | Nenhuma. Superfícies planas, traços de 2 px #E3E5DF, uma moldura branca no PiP, raio 16–18 |
| Pílula de patrocínio | Pílula CTA branca (fringelines.co / newsletter) com uma aba laranja mono "Link na descrição" |
| Outro do canal | Cartão final verde, a capa do Clip Slides: sobrancelha mono, linha laranja, título serifado com uma frase em itálico, subtítulo Archivo, ● fringelines.co |
As regras do kit ainda se aplicam:
- uma ideia por tela;
- um laranja por tela;
- verde é o padrão, azul a comparação;
- toda estatística tem uma
source; - nada abaixo de 22 px.
Peças
- Template:
pipeline/remotion/src/Monologue.tsx, a composiçãoMonologueem 1920×1080 / 30 fps. Reutiliza o rastreamento facial deShortV2.tsx. - Build:
pipeline/build_monologue.py, que tem duas etapas,cuterender. - Pasta de trabalho:
work/monologue/<slug>/contémclip.mp4,props.json,transcript.txt,beats.jsonefaces.json. - Saída:
out/monologue/<slug>.mp4, normalizado para −14 LUFS. - Exemplo trabalhado:
work/monologue/morning-loop-test/beats.json, um clipe de 62 s de Quinn do episódio de 30 de outubro.
1. Obter uma gravação
Uma gravação 16:9 com uma única câmera, áudio bom, uma pessoa, aproximadamente 1–15 min. Coloque em inbox/monologue/<slug>/take.mp4.
Para extrair um trecho solo de um episódio, multiplexe a câmera com a trilha de som de estúdio. Pegue os offsets do XML do Descript com build_short.xml_offsets; veja como morning-loop-test foi feito:
ffmpeg -ss <t0-videoOffset> -t <dur> -i Quinn.mp4 -ss <t0-audioOffset> -t <dur> -i studio-sound-Quinn.m4a -map 0:v -map 1:a … take.mp4
2. Cortar
~/.shorts-skill/bin/python pipeline/build_monologue.py cut --slug <slug> --src inbox/monologue/<slug>/take.mp4 \
[--range 12.0:95.5 --range 120:180] [--replace "gtm=>GTM" --replace "quick=>Quick"]
O que a etapa de corte faz:
- Transcreve a gravação com Whisper (armazenado em cache em
words-src.json). - Remove vícios de linguagem, gaguejos e pausas longas, usando o mesmo planejador dos shorts.
- Alterna o zoom (1.0 / 1.12, centrado no rosto) a cada corte.
- Escreve
transcript.txt, comword@secondsno relógio cortado.
--replace apenas corrige as palavras usadas para temporizar as revelações; nada é legendado automaticamente.
3. Escrever work/monologue/<slug>/beats.json
Leia transcript.txt e planeje os beats contra ele.
{"brand": "FringeLines", "beats": [
{"type": "title", "at": 0.2, "end": 2.0, "eyebrow": "FringeLines · Monologue", "text": "The *morning loop*"},
{"type": "name", "at": 2.1, "end": 5.4, "text": "Quinn", "role": "Host · Fringe Lines"},
{"type": "chips", "at": 3.0, "end": 7.4, "items": [{"text": "GTM loops", "at": 3.1}, {"text": "Coding loops", "at": 5.1, "tone": "blue"}]},
{"type": "text", "at": 7.6, "end": 11.3, "eyebrow": "What's a loop?", "text": "Loop's just a *stated goal* and then it works *autonomously*"},
{"type": "callout", "at": 11.5, "end": 16.2, "label": "The setup", "tone": "green", "text": "I use Quick Desktop with routines that execute at any time"},
{"type": "overlay", "at": 16.4, "end": 18.3, "text": "I usually run it at [7 AM]"},
{"type": "stack", "at": 22.4, "end": 36.4, "title": "My core team · 4 people", "items": [{"text": "Account executive", "at": 25.6}, "…"]},
{"type": "stat", "at": 51.2, "end": 55.1, "kicker": "My regular account team", "value": 14, "text": "people I'm interacting with on a regular basis", "source": "Quinn's own count · Fringe Lines, Oct 30 2026"},
{"type": "end", "at": 58.4, "end": 61.4, "text": "Building the *morning loop*", "sub": "The full walkthrough is in this week's episode."}
]}
Tempos
- Os tempos estão em segundos no clipe cortado.
end(ouhold) encerra um beat, e sua saída desfoca ao longo de 0,3 s. - O texto é revelado palavra por palavra em sincronia com a fala. Cada palavra em
texté combinada com a transcrição dentro da janela do beat.- Cite o orador literalmente (pequenos ajustes são aceitáveis) para que a sincronia funcione.
- Se o texto for uma paráfrase, a revelação recai para uma distribuição uniforme. Force isso com
"reveal": "even".
- Os tempos dos itens (
at) padrão distribuem-se uniformemente. Defina-os para o momento em que cada item é dito, cerca de 0,1 s antes da palavra.
Marcação
*destaque em itálico*: uma frase por tela.[número de destaque]: laranja, um por tela, apenas números.
Tipos de beat
Orador em tela cheia (sobreposições):
| tipo | campos | uso |
|---|---|---|
title | text, eyebrow? | Título de abertura sobre um quadro escurecido (primeiros 2–3 s) |
name | text, role? | Barra inferior na primeira aparição de uma pessoa |
overlay | text | Uma frase falada em serifa branca na parte inferior: a linha que você quer que seja lembrada |
callout | text, label?, tone?, side? | Cartão colorido no canto superior esquerdo (ou direito) com uma pílula de etiqueta mono: "Erro #1", "A configuração", "Regra" |
chips | items[{text, at, tone?}], side?, tone? | 2–3 tags curtas aparecendo ao lado da cabeça: voz interior, nomes, opções |
cta | text, sub? | Pílula inferior: a newsletter, o episódio ou a oferta. Uma vez, geralmente no meio do vídeo |
bw | (nenhum) | Ênfase em preto e branco no orador; combine com um overlay |
media + "full": true | src, video?, from? | B-roll em tela cheia com o orador no PiP |
Tela de papel (o orador se move para o PiP):
| tipo | campos | uso |
|---|---|---|
text | text, eyebrow?, align? | Uma frase cinética: definições, a tese, a linha "mais importante…" |
stack | items[{text, at, tone?}] (de baixo para cima), title? | Pirâmide ou camadas: fundamentos → estratégia → resultado, camadas de equipe |
compare | title?, left{label, items}, right{label, items}, winner? | A vs B: hobby vs receita, antes vs depois. O perdedoro se torna cinza perto do final |
roadmap | items[{text}] (≤6), active?, zoom? | Os capítulos do vídeo. Mostre uma vez no início e reutilize por capítulo com active = índice do capítulo e zoom = quando ampliar |
steps | items[{text, at}], title? | Uma lista numerada com linhas finas: especialistas, ferramentas, etapas |
stat | value, prefix?, suffix?, decimals?, kicker?, text, source | Um número contando em laranja; fonte (source) obrigatória |
media | src, title?, meta?, video?, from? | Uma captura de tela ou b-roll em um cartão arredondado com legenda (título + linha mono meta). Os arquivos vão para a pasta de trabalho |
end | text, eyebrow?, sub?, url?, tone? | O cartão final verde (2–4 s) |
Beats de papel com menos de 0,7 s de diferença permanecem no layout PiP, para que o orador não oscile.
Regras de ritmo (da referência)
- Abra com um
titlee umname, ambos nos primeiros 5 s. - Beats de papel ocupam 35–45% do tempo de execução. Nunca fique mais de ~20 s sem uma mudança visual e nunca permaneça no papel por mais de ~15 s.
- Alterne os dois layouts. Não coloque dois
calloutconsecutivos; coloque umtextou um diagrama entre eles. - Uma ideia por beat. Mantenha beats
textcom ≤ 14 palavras e callouts com ≤ 16. - Itens de diagrama devem chegar na palavra, nunca todos de uma vez. O primeiro item de um diagrama deve chegar dentro de ~1 s do início do beat; caso contrário, o beat começa mais tarde.
- Seções:
- Mostre um
roadmapno final da introdução. - Reutilize-o no início de cada seção com
activedefinido. - Feche cada seção com um
overlayde sua linha-chave, combwpara a maior delas.
- Mostre um
- No máximo um
ctaa cada 5 min, nunca nos primeiros 30 s. - Termine no cartão
end. Ele pode continuar após a última palavra.
Honestidade
- Números na tela devem ser o que foi dito ou vir de uma fonte nomeada em
source. - Capturas de tela de conteúdo de outras pessoas precisam de crédito em
meta. - Não coloque palavras na boca do orador: um beat
overlayoutextque não seja uma citação deve funcionar como um rótulo, não como fala.
4. Renderizar
~/.shorts-skill/bin/python pipeline/build_monologue.py render --slug <slug> [--sfx-db -22]
- Ele rastreia o rosto uma vez (
faces.json; exclua se você recortar novamente). - O tempo de renderização cresce com a duração do vídeo; um teste de 1 minuto levou alguns minutos no Mac mini.
- Efeitos sonoros: um whoosh em cada mudança de layout, um pop quando um item chega, um crescendo no título e nos cartões finais. Aumente
--sfx-dbpara −18 para mais energia.
5. QA (sempre)
for t in 1.5 5 10 20 30 40 50 60; do ffmpeg -v error -y -ss $t -i out/monologue/<slug>.mp4 -frames:v 1 -vf scale=640:-1 /tmp/m_$t.png; done
Verifique cada um destes itens:
- Texto: nenhum texto passa por baixo do PiP (a área de papel termina em x = 1320). Rótulos de pilha cabem em uma linha.
- Destaques: nenhum
*ou[solto. Há no máximo um laranja por tela. - Enquadramento do rosto: o rosto está centralizado no PiP e os zooms não cortam a cabeça.
- Tempo das revelações: as revelações chegam na palavra falada. Se um beat mostrar palavras fracas por muito tempo, seu
atestá muito cedo. - Loudness:
ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:"lê cerca de −14.
Relate ao usuário:
- o tempo de execução e a lista de beats (tempo → tipo → texto);
- o que ainda precisa ser verificado: números, nomes e créditos de capturas de tela;
- qualquer beat que tenha caído para uma revelação uniforme, porque seu texto não era literal.
Ainda não construído
- Uma versão 9:16: a composição é apenas 16:9. Para vertical, corte um short com a habilidade
editorial-short. - Planejamento automático: escrever
beats.jsoné uma questão de julgamento, por isso é feito manualmente ou pelo Claude a partir detranscript.txt.