Communitygithub.com

explainer-editor

Edite uma gravação vertical bruta (9:16) de alguém falando para a câmera em um curta finalizado na LINGUAGEM EXPLICATIVA do Pipecorn, com o movimento de uma edição no After Effects.

O que é explainer-editor?

O skill `explainer-editor` transforma uma única gravação vertical de uma pessoa falando para a câmera em um vídeo curto explicativo com um visual cinematográfico e dinâmico, semelhante a uma edição no After Effects. O orador é posicionado em um quadro com cantos arredondados na parte inferior de um palco escuro, com a cabeça e as mãos saindo do quadro (máscara de pessoa). Acima deles, o palco explica visualmente o que eles dizem, em cenas conectadas por movimentos de câmera (panorâmicas com rastro de luz, subidas, empurrões) com desfoque de movimento, molas e curvas de expoente, tudo com um fluxo lento e paralaxe. O skill gera automaticamente figuras (listas, pílulas, equações, cartões, contagens) para cada conceito mencionado, sincronizando-as com a fala, e adiciona legendas verbatim. Ele suporta os temas escuro e claro, música de fundo, e inclui opções bônus como o genérico do Pipecorn e melhoria de voz via ElevenLabs. O skill é baseado no motor do `short-editor` e foi refinado com base em feedback real de clientes para garantir movimento constante, sombras e brilhos nos elementos, e uma nova figura a cada segundo.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ihsaneGTM/gtm-skills/tree/main/plugins/video/skills/explainer-editor

Perguntar na sua IA favorita

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

Documentação

explainer-editor: uma explicação em um palco acima do orador

O usuário fornece uma gravação vertical de si mesmo falando para a câmera. Este skill os coloca em um quadro na parte inferior de um palco escuro iluminado como um cenário, com a cabeça saindo dele, e desenha o que eles explicam acima deles, enquanto falam, com o movimento e a luz de uma edição no After Effects: cenas que uma câmera percorre, figuras que voam, sobem e surgem com desfoque de movimento, cada uma com sua sombra e seu brilho, uma nova coisa no palco a cada segundo ou mais, um som em cada movimento. Suas palavras correm entre o palco e eles, uma de cada vez. Algumas vezes por minuto, um flash de câmera corta para eles em tela cheia.

A aparência de um curta está definida: § A linguagem explicativa (abaixo do pipeline). Foi medida quadro a quadro em um curta que o usuário editou para um cliente (108 s, um guia para ganchos de texto), depois revisada em uma primeira edição (2026-10-05: "não é After Effects, não é motion design, poucas coisas na tela, é chato, faltam os whooshes"), depois na segunda ("muito melhor; não há sombras e brilhos pequenos o suficiente atrás dos elementos, o fundo totalmente preto não os destaca; aqui está um pacote para muitos mais sons muito leves"): cada linha de ambos os veredictos agora é uma regra. Comece cada nova gravação a partir dela (init.sh a estrutura); não a reabra.

Este skill roda no motor do skill short-editor. Sua renderização, mixagem, máscara de pessoa, pré-visualizações, compilação e verificação são os arquivos do motor, conforme escrito em ../short-editor/SKILL.md § Pré-requisitos, § Onde as coisas ficam e § 4 a § 6; este arquivo diz o que é diferente. Os próprios deste skill: o layout (layout.mjs: o quadro do orador e as pausas em tela cheia, executado pelo build.sh e preview.mjs do motor no lugar do zoom deles), o palco (stage.mjs: a câmera, as cenas, o desfoque de movimento, as figuras, as legendas, os sons do movimento), o fundo (bed.mjs), as imagens paradas (stills.mjs) e as medições (measure.mjs). Leia antes do primeiro corte, toda execução:

  • ../../references/pitfalls.md § Transcrição e legendas, § Método de trabalho: as armadilhas com as quais uma edição é escrita (suas outras seções quando chegar a vez: § Áudio antes de um som medido manualmente, § ffmpeg e § O shell antes de um comando próprio; as ferramentas do motor seguem o resto)
  • ../../references/brand-kit.md, quando a edição as mostrar: os logotipos reais do usuário, capturas de tela e números, nunca inventados, e seu conjunto de marca uma vez em workspace/brand/ (§ Sua marca, definida uma vez)
  • $X/example/: o projeto de referência, cada arquivo de uma edição entregue (stage.theme: "light" para sua versão clara); $X/example-2/: o skill executado do zero em outra gravação (dois takes, uma gravação silenciosa, sem pausa), e o que essa execução mudou

Leia quando o passo precisar: ../../references/audio-spec.md nos níveis (o padrão de volume, como um nível é medido como ouvido). As figuras do motor: node plugins/video/skills/short-editor/scripts/api.mjs <módulo> [figura], nunca suas fontes.

Não consigo assistir ao vídeo nem ouvi-lo. Onde está a cabeça, onde uma palavra começa, quão alto um whoosh é ouvido: cada um é uma medição. verify.mjs fica entre "está pronto" e um arquivo quebrado; measure.mjs diz se o design de som é ouvido. Nunca os pule.

Todos os caminhos abaixo são relativos à raiz da pasta GTM by Pipecorn. $X significa plugins/video/skills/explainer-editor/scripts (este skill), $E significa plugins/video/skills/short-editor/scripts (o motor). Execute ambos pelo caminho absoluto.

Pré-requisitos (pré-voo: verifique antes de qualquer trabalho)

Os do motor: ffmpeg + ffprobe no PATH (brew install ffmpeg) e python3 (Ferramentas de Linha de Comando do Xcode) são necessários e não instaláveis daqui; pare e diga o comando se um estiver faltando. Todo o resto se provisiona: o bootstrap.mjs do motor (pacotes node, venv de fala-para-texto, a estante de música) é executado dentro de init.sh, transcribe.sh e build.sh, e init.sh busca as fontes: Inter (ExtraBold, Bold, SemiBold, Medium; Licença de Fonte Aberta SIL, do pacote npm inter-ui via jsDelivr) e Instrument Serif Italic (Google Fonts, OFL) para a pasta assets/fonts/ do projeto. Nada é instalado em todo o sistema. swiftc compila a máscara de pessoa: sem ela a cabeça não sai do quadro (o quadro simplesmente corta o orador) e o palco é desenhado na camada superior; diga isso.

Onde as coisas ficam

Como o motor diz, e apenas desta forma: um diretório de trabalho por edição, workspace/projects/<slug>/, um slug que nenhum outro projeto tem; o arquivo finalizado workspace/videos/<slug>.mp4; nunca arquivos de outro projeto, mesmo da mesma gravação; arquivos temporários na pasta tmp/ do projeto, nunca em /tmp. A pasta scripts/ do skill permanece somente leitura. As imagens do usuário (capturas de tela, logotipos, quadros de seus vídeos) vão para a pasta assets/ do projeto.

O pipeline

0. Configurar o diretório de trabalho

$X/init.sh workspace/projects/<slug> <source.mp4> workspace/videos/<slug>.mp4 [--theme light]

A estrutura do motor (project.json lido do arquivo, o pacote SFX em assets/sfx-top5/), depois plan.mjs e edl.mjs deste skill, as chaves da linguagem explicativa em project.json (style: "explainer", layout: o caminho de $X/layout.mjs, blurBand 0), sfxMasterDb definido na voz da gravação (seu volume + 15,3 dB, + 0,13 dB por dB abaixo de −20,5 LUFS: os sons da casa ouvidos como nos skills base, qualquer que seja o nível da gravação), as fontes, um mestre 1080x1920 para uma gravação vertical menor (mantido em uma segunda execução), e o tema (stage.theme: dark, a referência, ou light; --theme light o define; um projeto já definido mantém seu próprio). Execute todos os comandos posteriores a partir desse diretório.

0.2. Pergunte primeiro, em UMA pergunta

O tema (escuro, a referência, ou claro: o mesmo palco, vidro branco, palavras escuras, sombras mais suaves), a música (a estante, plugins/video/assets/music/; Convergence por padrão; diga que as faixas que não são Mixkit podem bloquear a monetização do vídeo), o ritmo (×1 por padrão; uma entrega lenta fica melhor em ×1,1), e as imagens que o usuário pode fornecer: capturas de tela de seu produto, quadros dos vídeos sobre os quais falam, seu logotipo, os números reais. O que o usuário não fornecer é desenhado com suas palavras e os pictogramas da casa, nunca com telas ou números inventados. Execute a partir da página do GTM by Pipecorn, o resumo do primeiro texto responde a ela (o tema a partir de suas notas: "light" lá significa o tema claro): decida pelas regras abaixo e não pergunte novamente.

O genérico Pipecorn: um BÔNUS de todo estilo, perguntado TODA vez, nunca ativado por padrão (plugins/video/references/pipecorn-generic.md): cerca de 6 s no final, Pipecorn, depois seus valores substituindo um ao outro em um único espaço, depois Pipecorn novamente, sem música. Não · Sim, com quais valores (1 a 4; node $E/generic.mjs --list; por padrão cobertura de telefone, taxa de conexão, pipeline).

Sua voz melhorada: um BÔNUS, perguntado TODA vez, nunca ativado por padrão (plugins/video/references/voice-clean.md): o isolador de voz do ElevenLabs remove o eco da sala e o ruído da gravação. Não · Sim, melhore minha voz. Precisa do conector ElevenLabs: sem uma chave, diga em uma linha que ele existe (Configurações › Conectores › Adicionar chave) e continue. Em caso de sim, antes do passo 1: node plugins/video/motion/voice.mjs clean <fonte>, então project.json › source é <…>-voice.<ext> (o mesmo comprimento, a imagem intacta).

1. Transcrever, verbatim

$E/transcribe.sh --lang en      # o idioma REALMENTE FALADO; depois project.json "lang"

words.json, no tempo da gravação bruta. Nunca traduzido. Uma gravação cheia de recomeços é montada primeiro com o rough-cut.mjs do motor (short-editor/SKILL.md § 0.7), depois transcrita novamente. Depois node $E/words.mjs (do motor): words-fixed.json, cada início de palavra movido de um silêncio para a voz e seu fim real antes de uma pausa, as duvidosas listadas; words.mjs env|end|say para ler uma (short-editor/SKILL.md § 1). Nunca um script próprio para isso.

2. A máscara e o quadro

node $E/matte.mjs                          # a máscara de pessoa (precisa de swiftc), ~1 min por minuto
node $X/layout.mjs --measure --write       # onde a cabeça está → project.json stage
node $X/layout.mjs --print                 # o quadro, a legenda, as pausas

--measure encontra os takes da gravação (seus cortes de origem, como verify.mjs os encontra) e lê a cabeça na máscara em cada um (32 quadros por take): a largura do quadro coloca a cabeça do take mais longo no tamanho da referência (226 px de largura; um take próximo recebe um quadro mais estreito, centralizado, para que seus ombros e peito entrem: 598 px no exemplo trabalhado, cuja cabeça tem 38 % da largura do take, 782 no segundo take; --keep-frame mantém os 942 da referência e avisa que o quadro mostrará principalmente o rosto); em cada take a borda superior do quadro passa 88 px abaixo do topo habitual da cabeça (a referência), de modo que a cabeça saia dele; a legenda sobe o quanto a cabeça sobe normalmente (no máximo 90 px) e fica 20 px acima dela; a tela cheia faz a cabeça ter 45 % da largura. Um take de vários takes recebe stage.shots (o corte de cada take, legenda e enquadramento em tela cheia; a câmera alterna no corte, o quadro permanece). Verifique em uma pré-visualização (§ 5). Neste estilo, um corte de origem acontece dentro do quadro do orador, uma pequena parte da imagem: verify.mjs pode relatá-lo "sob um quadro de tela cheia" (o segundo take); verifique que ele cai em seu quadro pelas próprias diferenças do quadro, não a olho nu.

3. Leia a transcrição, escreva o storyboard

Este é o passo de julgamento, e é todo o trabalho. Leia a transcrição de ponta a ponta e escreva o storyboard como uma lista antes de qualquer código: as cenas, e em cada uma, o que aparece em qual palavra.

  • Cenas, unidas por movimentos de câmera. Uma cena é uma ideia (a promessa, o produto, um processo, os passos, a lista, uma comparação): 4 a 8 segundos, então a câmera se move para a próxima. O movimento padrão é a panorâmica rápida (um giro para a direita: a cena antiga sai para a esquerda em um borrão, um rastro de luz cruza, a nova chega); uma subida quando a próxima ideia aprofunda (a cena antiga sai para cima); um empurrão através da cena antiga quando a nova a responde (um "porquê", uma revelação); um corte apenas atrás de uma pausa. Nunca dois do mesmo seguidos quando possível.

  • Uma cena chega composta. O que é colocado no tempo da própria cena viaja COM a câmera (já está lá quando o movimento termina: a referência nunca mostra um palco vazio após um movimento); o que vem depois entra em sua palavra. Quando as coisas da cena são nomeadas uma após a outra, coloque-as todas no tempo da cena, no escuro ou desfocadas (dim: 0,6, blur: 10), e ilumine cada em sua palavra (.blurTo(on(i), 0).lit(on(i)) e seu som): o palco está cheio desde o primeiro quadro e ainda se move em cada palavra (os personas e canais do segundo take, 2026-10-05).

  • Algo novo a cada segundo ou mais. Cada frase que nomeia uma coisa, um número, um passo, uma afirmação recebe uma figura ou um movimento em sua palavra: uma figura entrando, um rótulo revelado, uma marca desenhada em torno de algo, uma coisa iluminada, uma cena se movendo. Mais de 2 segundos sem nada novo no palco parece chato: foi o veredicto na primeira edição (2026-10-05).

  • O título nomeia a seção em duas linhas curtas, sua palavra-chave em serifada (*Killer* Text Hooks), uma caixa vermelha na linha com uma contagem ou uma afirmação (3 Winning Types Of). Muda com a seção, a antiga subindo antes que as novas palavras subam.

  • Qual figura para o quê:

    o que é ditoa figura
    uma lista de N coisas, passos, regrasS.list: barras voando da esquerda, rótulos desfocados até que cada um seja dito (reveal), o explicado iluminado (focus), seu veredicto aparecendo no final (glyph: "check", "cross"…); header transforma uma barra no cabeçalho da seção
    um nome, um termo, uma definiçãoS.pill (um pictograma dentro: glyph), S.arrow do que nomeia, S.ping (ring: true) em torno da coisa, S.mark (um círculo, um quadro, um sublinhado) desenhado na palavra que a enfatiza
    uma coisa feita de partes, uma causa e seus efeitos, uma cadeiaS.tree (filhos caindo, cada um conectado com uma faísca), S.wires entre quaisquer dois
    uma combinação, uma comparaçãoS.equation (+, =), um sinal VS com S.shake e o glitch
    um produto, uma ferramenta, uma plataformao logotipo do usuário (S.icon, seu brilho, ring para fazer um telefone tocar), sua captura de tela em S.card ou S.phone, S.prompt digitado quando é usado
    exemplos, vídeos, uma sérieS.cards de suas imagens, ou quadros da própria gravação (stills.mjs) com cartões player
    uma busca, muitas fontes, uma multidãouma grade de S.cards com glyphs, iluminados um após o outro (uma varredura)
    um númeroS.count subindo até ele, ou palavras coloridas ({g:22 Days} verde, {r:A Few Weeks} vermelho)
    bom / ruim, sim / nãoS.glyph (check em um bloco verde, cross em um vermelho), o veredicto de uma barra
    uma chamada para açãoum título (Comment "X", To Get The *Skill*), S.file para o que enviam
  • As pausas (FULL): um corte brusco para o orador em tela cheia (o flash da câmera no caminho de entrada, um whoosh no caminho de saída), nada desenhado além das legendas. Em uma confissão, uma piada, uma opinião forte; 2 a 6 s; nunca nos primeiros 15 s. Um take que não é a cabeça falante (b-roll, um plano geral) vai para tela cheia inteiro: [from, to, { zoom: 1 }]. A cena após uma pausa abre atrás dela (S.scene(<fim da pausa> - 0,45, "push")), para que esteja lá quando a pausa terminar.

  • Apenas nomes reais e números reais (brand-kit.md): uma figura que precisaria de uma tela ou um número que o usuário não forneceu é desenhada com suas palavras e os pictogramas da casa, ou cortada.

  • As legendas são verbatim: fi

…

[truncado para tradução]

Individual skills in this repo

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

Habilidades Relacionadas