Communitygithub.com

talking-explainer

Talking Explainer – transforme um tópico em um vídeo explicativo de motion design 16:9 (1920×1080, 60fps) com um apresentador cartoon FALANTE (sincronia labial real – seis bocais acionados pela voz, posas e gestos, piscadelas) que explica o assunto com a voz do próprio usuário, usando texto cinético curto e básico em inglês na tela, com visual elegante de produto APPLE (fundo branco, fonte Geist, cartões de vidro, molas criticamente amortecidas, ícones Solar, uma lente azul), além de close-in de câmera e batida de ênfase em cada cena, e a marca do usuário (abertura com logotipo, logotipo no canto, tela final com call to action). Roteiro com gancho no estilo de fala do usuário → ele grava o take → storyboard → trabalhadores paralelos → renderização com sincronia de palavras e verificação de zona. DEVE SER USADO quando o usuário pedir "talking explainer", "talking mascot", "make the mascot talk", "lip sync explainer", "explainer with a talking character", ou solicitar um vídeo explicativo onde o apresentador fala. Também cobre: criação do PRÓPRIO apresentador falante a partir de 3 prompts de imagem, troca do áudio ou idioma de um filme finalizado (retempo, sem reconstrução), cortes RETRATO/9:16 para TikTok/Reels/Shorts de um filme pronto (port, sem reconstruir), e demonstrações "how it works" com aplicativos e logotipos reais. Roda sobre os skills explainer-kit e spatial-film instalados ao lado.

O que é talking-explainer?

O skill **talking-explainer** cria vídeos explicativos totalmente narrados e animados em estilo Apple, com um apresentador cartoon que fala com sincronia labial real, usando a voz do usuário (gravada ou clonada via ElevenLabs) e textos cinéticos curtos em inglês básico. O sistema gera roteiros com gancho inicial, storyboard, e coordena paralelamente trabalhadores de IA (como Claude Sonnet) para renderizar cada cena em 60fps com zoom, ênfase, ícones Solar e elementos de marca personalizados. Suporta criação de personagens próprios a partir de prompts de imagem, substituição de áudio/idioma sem reconstrução (retempo), e adaptação para formato retrato (9:16) para redes sociais. Ideal para produtores de conteúdo, startups e criadores que precisam de vídeos explicativos profissionais com apresentador falante de forma rápida e consistente.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/brewed-ops/talking-explainer/tree/main/skills/talking-explainer

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Talking Explainer

A voz é o relógio, o apresentador FALA (sincronia labial), cada ideia é uma imagem do cotidiano primeiro, toda cena tem um zoom e um momento de ênfase, o visual é Apple, e o filme carrega a marca do usuário. Exemplo prático: "REA – Reverse Engineer Anything" (129,0s, 12 cenas) – references/example/ (SCRIPT, STORYBOARD, RETIME).

Caminhos usados abaixo:

  • <skill> = pasta deste skill. <kit> = <skill>/../explainer-kit. <engine> = <skill>/../spatial-film.
  • <home> = TALKING_EXPLAINER_HOME ou ~/.talking-explainer; perfil = <home>/profile/ (compartilhado com explainer-kit).
  • <py> = o comando python salvo em <home>/config.json pela verificação de configuração (py -3.12 no Windows, python3 no macOS).

Execute cada script de filme a partir da raiz do projeto do filme. Scripts são códigos testados – execute-os, nunca os regenere. Julgue as cenas por contact sheets, nunca lendo o HTML da cena na sessão principal. Trabalhadores recebem CAMINHOS DE ARQUIVO.

Configuração (apenas na primeira execução)

Se não existir <home>/profile/brand.json = execute a Fase S do explainer-kit (verificação de configuração, entrevista de marca + profile.mjs init, voice.md, música). A entrevista de marca define o nome do apresentador (--presenter). Mais duas coisas para este skill, perguntadas na mesma entrevista:

  • As falas de abertura e encerramento em voice.md, palavra por palavra, com o primeiro nome do usuário (a abertura com gancho é "<afirmação>? É verdade? aqui, da ... vamos detalhar isso.").
  • O apresentador: o demo de apresentador animado incluso (um cartoon sério de óculos), ou o próprio personagem do usuário – veja "Seu próprio apresentador falante" abaixo.

Padrões (não pergunte novamente)

  • Narração no idioma do perfil, no estilo do usuário conforme voice.md. Na tela = inglês básico curto (~6 palavras por linha de título). A duração é livre se a mensagem for transmitida (~150-160 ppm num take natural).
  • O usuário grava o take a partir do roteiro (clone de voz ElevenLabs ou microfone próprio). A Fase 1 entrega o roteiro como parágrafos prontos para colar e AGUARDA por um MP3. Gerar através da API (<engine>/scripts/el-tts.py, chave em variável de ambiente EL, nunca em disco) apenas quando solicitado.
  • Abertura = gancho primeiro: comece na afirmação mais surpreendente do tópico como pergunta, depois a linha de abertura de voice.md. O NOME do tópico vem no parágrafo 2. Encerramento = linha de encerramento de voice.md + cta do perfil.
  • Tópicos conceituais recebem UMA analogia cotidiana contada literalmente (REA: a receita secreta de um café). Tópicos "Como funciona" sobre a própria ferramenta ou sistema do usuário recebem um passo a passo real – use references/real-apps.md. O mesmo vale para ferramentas e plataformas de terceiros: nomeie os produtos reais, descreva o fluxo real da requisição, e use o texto, configurações e números das próprias plataformas lidos de suas páginas ativas. Padrão: passo a passo para qualquer tópico técnico.
  • Corte curto (<= 30s): ~2,6 palavras/s, 4 parágrafos = 4 quadros (gancho + identificação / nome / a única imagem / encerramento), uma linha de fechamento, 2 trabalhadores x 2 cenas.
  • Tópicos de notícias/atualidades: pesquise a cobertura ao vivo primeiro (veículos locais + uma análise aprofundada), depois escreva de forma equilibrada: toda afirmação tem seu dono na voz ("de acordo com a agência...", "críticos dizem..."), o medo tem sua escala real, depois uma lista numerada de pontos nebulosos onde declarações oficiais se contradizem ou um detalhe chave não é público, um parágrafo justo de pontos positivos, e uma conclusão de perguntas a fazer – nunca um veredito. Qualquer coisa dita apenas por um resumo de busca (a página em si não carregou) fica no bloco de fatos do SCRIPT.md marcado como "Não verificado, NÃO narrado". 16 quadros / ~700 palavras é aceitável para esses casos.
  • Roteiro a partir de uma transcrição colada: mantenha os fatos e a ordem de ideias da fonte, reescreva cada linha na voz do narrador (nunca traduza linha por linha) e corte as partes do apresentador original ("Eu construí...", demonstrações de código, seu nome). Colagens longas são truncadas em cerca de 50 mil caracteres: indique onde o corte ocorreu no SCRIPT.md, depois preencha a parte faltante com o mecanismo padrão, verificado como qualquer outra afirmação. Salve a colagem em references/source-transcript.txt no primeiro dia e mantenha as pessoas e marcos nomeados da fonte.
  • Pessoas reais = cartões de pessoa, nunca etiquetas de nome: retrato (foto duotona ou ilustração semelhante) + nome + cargo em uma linha + ano. Liste cada pessoa nomeada com sua cena no SCRIPT.md em "Pessoas na tela".
  • Visual = Apple: fundo branco (#F5F5F7), Geist com tracking específico por tamanho, vidro simulado (.ap-glass – nunca backdrop-filter dentro do rig 3D), painéis .ap-window / .ap-dark, molas criticamente amortecidas sp() (back.* proibido), contenção (uma ideia por quadro, pulsos <= 1,1), uma espinha LENS azul. Cor = significado, reescrita por filme. O scaffold define tudo.
  • Ícones = Solar (480 Design, https://solar-icons.vercel.app) – bold-duotone para ícones principais, linear para chrome da interface, de references/icons-solar.html. Nunca Lucide ou Phosphor. A arte é CC BY 4.0: cada entrega dá ao usuário a linha "Ícones: Solar por 480 Design (CC BY 4.0)" para a descrição do vídeo.
  • Movimento: títulos que se materializam em suas palavras (elevação + desfoque -> 0, mola), animação de interface para qualquer ferramenta, diagramas explicativos, MAIS um close-in de câmera (ZOOM) e uma batida de ênfase (EMPH: pulso, traço de marcador, sublinhado desenhado, puxada de foco, número destacado) em cada cena. Lei de suavidade 60fps.
  • 1920×1080, 60fps. Logotipo da marca no gancho, logotipo no canto no meio, tela final = logotipo + cta.

Fases

#FaseFaçaVerificação
1Roteiro + takePesquise o tópico (fatos reais, com fontes). Carregue <kit>/references/voice-script.md + <home>/profile/voice.md. Abertura com gancho + encerramento acima, sem "!", UMA analogia (ou o passo a passo), 12 parágrafos = 12 quadros (formato: references/example/SCRIPT.md). Soletre nomes ditos como letras ("R-E-A"). Afirmações sobre o que a IA "não pode fazer" devem ser verdadeiras para os modelos atuais. Sem números de jargão (páginas, não tokens; contagens arredondadas). Escreva <film>/SCRIPT.md, entregue os parágrafos ao usuário como TEXTO SIMPLES (sem bloco de código, nada após o último parágrafo – ele cola a mensagem inteira no ElevenLabs; dicas de gravação vão numa mensagem anterior), AGUARDE o MP3; ffprobe sua duraçãoo take em mãos, duração anotada
2Scaffold + temposnode <skill>/scripts/new-talking-explainer.mjs <film> --name <slug> --mp3 <take.mp3>; <py> <kit>/scripts/transcribe.py assets/audio/vo.mp3 src/timing --lang <código> --prompt "<nomes, jargão>"; <py> <kit>/scripts/words.py src/timing/vo-words.json (folha de deixa)transcrição corresponde ao roteiro
3StoryboardEscreva STORYBOARD.src.md em tempos GLOBAIS (abaixo) no formato de references/example/STORYBOARD.md: um quadro por parágrafo, cortes nas pausas das frases (soma = fim da voz + 2,8s), cabeçalhos um campo por linha (- start: / - duration: / - src:), cada bloco marca suas batidas ZOOM e EMPH em palavras de deixa, cor = significado, fatos reais + extras fictícios, uma COSTURA DE POSE onde duas cenas compartilham um objeto herói. <py> src/storyboard-local.py -> STORYBOARD.md. Mostre ao usuário a lista de quadros (uma linha cada)confirmação do usuário
4Contrato + apresentador + áudioEdite + execute src/set-film.py (cenas + duração da voz). Edite + execute src/set-presenter.py (poses ~0,1s antes de suas palavras de deixa; pensar/andar não têm bocas – nunca enquanto a voz fala). Base: <py> <engine>/scripts/bgm-cut.py assets/audio/bed.mp3 assets/audio/bgm-edit.wav --len <total> --a 0 <total+3> --fade-out 2,6 (um filme mais longo que a base repete o corpo: --a 0 <len> --b <bar> <len> --b ... --xfade 0,3) -> <py> <kit>/scripts/master-audio.py --len <total> -> <py> <engine>/scripts/build-presenter.py (imprime "sincronia labial: N poses") -> <py> <kit>/scripts/build-brand.py (imprime a janela do logotipo no canto). Reescreva cada parte [FILM] de frame.md com um script <engine>/scripts/patch_exact.py. Edite + execute src/set-cues.py. <py> <engine>/scripts/make-harness.py; <py> <skill>/scripts/make-packets.py; node <engine>/scripts/test-scene.mjs m-presenter "<5 vezes>"folha do apresentador: bocas abertas na fala, poses nas deixa
5Cenasreferences/workers.md: 6 trabalhadores Sonnet x 2 cenas, no máximo 4 de uma vez (uma rodada de correção conta), modelo de prompt (lei de zona incl. picos de push, clamp 0,12, apenas Solar, barra Apple, nunca inventar números). Revise os meios você mesmo; rodadas de correção para o MESMO trabalhadorcada folha corresponde ao seu bloco, legível na escala da folha
6Entrega<py> <engine>/scripts/fromto-scan.py compositions/s*.html (0) -> <py> <engine>/scripts/assemble.py -> npx hyperframes@<film.json hyperframes> lint . + check . -> <py> <engine>/scripts/seam-check.py + node <kit>/scripts/seam-diff-all.mjs -> node <engine>/scripts/render-final.mjs <slug>-1080p60 (segundo plano; termina com uma varredura de flash) -> transcreva o RENDER em .hyperframes/work/sync + <py> <kit>/scripts/sync-check.py src/timing/vo-words.json .hyperframes/work/sync/vo-words.json -> <py> <skill>/scripts/frames.py renders/<slug>-1080p60.mp4 frames.jpg --at <um por cena> e --zone --at <cada pico de ZOOM> -> node <engine>/scripts/encode-web.mjs renders/<slug>-1080p60.mp4 renders/web --name <slug> --poster <t> -> entregue os caminhos + a linha de crédito Solarlint/check 0 erros, costuras 0,00% fora da caixa do apresentador, 0 flashes, sincronia mediana ~0,000s, nada sobrando da linha vermelha em nenhum pico

Escreva tempos UMA VEZ, em segundos globais

Converter 20 cenas de tempos de palavras para locais manualmente é onde erros surgem. Em STORYBOARD.src.md, dê a cada quadro - start: <global> e marque palavras de deixa como "palavra"@g<global>; intervalos de ZOOM e tempos "saía em" podem ser números globais simples. <py> src/storyboard-local.py escreve STORYBOARD.md com todo tempo local, verifica que os inícios encadeiam e que cada deixa cabe em sua cena, e imprime a lista de cenas para set-film.py. Efeitos sonoros (src/set-cues.py) e o apresentador (src/set-presenter.py) também são escritos em segundos globais.

Troca de take / idioma / abertura após a construção (retempo, nunca reconstrução)

Um novo take -> faça backup de compositions/, film.json, STORYBOARD.md, src/ em .hyperframes/work/<antigo>/, mova o render antigo para renders/<antigo>/ -> copie o take para assets/audio/vo.mp3 -> transcreva -> novos cortes em set-film.py -> poses do apresentador, base, master, build-presenter, build-brand, set-cues, make-harness -> escreva RETIME.md (por cena: cada batida -> sua nova palavra de deixa @ hora local; cenas com CONTEÚDO NOVO recebem um bloco completo; formato references/example/RETIME.md; "este arquivo substitui os tempos do STORYBOARD.md") -> aplique patch de frame.md duração / janela de logotipo / costuras -> Envie Mensagem a cada MESMO trabalhador sua seção RETIME (4 de cada vez). Cenas ficam MAIS CURTAS em um take mais rápido: diga aos trabalhadores para encurtar molas antes de soltar uma batida.

Corte retrato / TikTok / Reels / Shorts (port, nunca reconstrução)

  1. <py> <skill>/scripts/port-portrait.py <film> <film>-9x16 – uma NOVA pasta (o filme 16:9 permanece intacto): copia fonte + áudio, move as cenas entregues para references/src-16x9/ (especificação dos trabalhadores), escreve o contrato retrato (zonas de frame.md para a interface do TikTok, briefing do trabalhador, starter 1080x1920, tamanho set-film), move o apresentador para o canto inferior esquerdo (escala x0,9, pés y 1640).
  2. A partir da nova raiz: <py> src/set-film.py -> build-presenter.py -> build-brand.py (logotipo vertical = centro superior em y 150, abaixo das abas da plataforma) -> make-harness.py -> test-scene.mjs m-presenter (apresentador x ~26-556, y ~1074-1640).
  3. Trabalhadores: mesmos pares, prompt = "PORT" (comece da fonte 16:9, mantenha cópia/batidas/deixas/cores/ícones/poses de costura, reescreva layout + câmera apenas) + lei da zona retrato: título y 260-500, palco x 60-1020 / y 520-1060 (texto x <= 920 abaixo de y 680), canto inferior direito x 580-920 / y 1080-1520, apresentador x 20-560 / y 1060-1660, nada acima de y 250 ou abaixo de y 1540. Pares que copiam o objeto de outro par vão por último.
  4. Entregue como fase 6 com render-final.mjs <slug>-1080x1920p60; frames.py --zone detecta retrato e desenha a caixa do apresentador + as linhas da interface da plataforma. O master 1080p60 envia para TikTok como está. Falhas de primeira passagem: objetos herói espremidos no canto inferior direito (transforme a batida em herói no palco, diminua o tipo de exibição); título de 2 linhas colidindo com uma pilha subindo em uma empurrada (>= 40px de gap no pico); cartão secundário arrastado após y 1540 por empurrada (recue/escureça durante essa empurrada).

Aplicativos reais + logotipos reais

Um filme sobre a própria configuração do usuário mostra os APLICATIVOS REAIS: logotipos da fonte, cores dos aplicativos do CSS do próprio aplicativo (scripts/app-tokens.py), nomes e números reais das pastas do usuário, uma lista de privacidade antes de qualquer trabalhador começar. Receita: references/real-apps.md. frame.md levanta a lista "no third-"

... [truncado para tradução]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas