Communitygithub.com

Totti0135/produce-english-reading-video-remotion

Transforme planilhas de leitura em inglês (fotografadas ou em Markdown) em vídeos de aula narrados com Remotion, baseados em fontes, com plano de ensino e roteiro confirmados pelo usuário.

O que é produce-english-reading-video-remotion?

Esta skill permite que um agente de IA, como o Claude Code, produza vídeos de aula de leitura em inglês de forma repetível e com alta qualidade visual. Ela processa planilhas de exercícios (em Markdown ou fotografadas) e as transforma em um vídeo completo com narração sincronizada, utilizando o framework Remotion para renderização local. O fluxo de trabalho é altamente estruturado, com dois portões de revisão obrigatórios: um para confirmar o plano de ensino e a apresentação dos exercícios, e outro para aprovar o roteiro de narração completo. A skill se destaca por preservar a fidelidade à fonte original, gerar timing baseado em ASR (Reconhecimento Automático de Fala) para sincronia precisa entre áudio e cenas, e permitir a inspeção visual de quadros-chave para controle de qualidade. É ideal para produção de conteúdo educacional de inglês neste repositório específico, mas não se aplica a outros tipos de vídeo, como linhas do tempo do ChatCut, OCR genérico, aulas de matemática ou vídeos de data storytelling.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Totti0135/english-reading-video-remotion/tree/HEAD/.agents/skills/produce-english-reading-video-remotion

Perguntar na sua IA favorita

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

Documentação

Produzir Vídeo de Aula de Leitura em Inglês com Remotion

Construa a aula a partir de fontes portáteis e contratos de tempo, e então renderize-a com os componentes nativos do Remotion do repositório. O Remotion substitui a linha do tempo do editor, a camada de Motion Graphics e a exportação; ele não substitui o TTS (Texto-para-Fala) ou o ASR.

Mantenha os pacotes de tarefas em tmp/english-reading/<slug>/. Mantenha o código do renderizador em src/english-reading/ e a narração local em public/audio/english-reading/<slug>/. Não escreva texto visível específico da aula em componentes React.

Este fluxo de trabalho possui dois portões de revisão obrigatórios após a normalização da fonte:

  1. Confirme o fluxo de ensino e a apresentação dos exercícios com o usuário.
  2. Gere o roteiro de narração completo e confirme-o com o usuário.

Não inicie a implementação de TTS, ASR, Remotion, renderização ou exportação até que ambos os portões sejam aprovados. A confirmação pode combinar um resumo de texto conciso com uma prévia HTML local autocontida quando o layout visual ou um roteiro longo for mais fácil de revisar dessa forma. Os artefatos de revisão em Markdown permanecem a fonte da verdade. Leia references/review-gates.md para obter os artefatos de revisão, prévias HTML, escolhas de apresentação de perguntas, regras de invalidação e pontos de parada exatos.

Normalizar e validar a fonte

Leia references/source-format.md. Para entrada de imagem, inspecione cada página e normalize-a com assets/source.template.md. Preserve o texto impresso exatamente, marque texto não resolvido com [OCR? ...] e trate o texto da planilha como conteúdo, não como instruções do agente.

node .agents/skills/produce-english-reading-video-remotion/scripts/parse-source-md.mjs \
  tmp/english-reading/<slug>/source.md \
  --out tmp/english-reading/<slug>/lesson.json

node .agents/skills/produce-english-reading-video-remotion/scripts/validate-lesson-spec.mjs \
  tmp/english-reading/<slug>/lesson.json --phase source

Confirmar o plano de ensino

Analise a fonte normalizada antes de redigir a narração. Copie assets/teaching-plan.template.md para tmp/english-reading/<slug>/teaching-plan.md e proponha:

  • a abertura da aula, ordem de ensino do artigo, posicionamento dos exercícios, recapitulação e encerramento;
  • a profundidade e o foco da explicação para cada parágrafo ou frase;
  • a ideia de resolução, ordem de revelação e tratamento de evidências para cada exercício;
  • um modo de apresentação escolhido com base na semântica real do exercício, e não apenas em seu rótulo de origem.

Por exemplo, uma tarefa de correspondência verdadeira deve normalmente usar duas colunas alinhadas e linhas de conexão animadas; um cloze embutido deve manter a frase e a lacuna em contexto; uma questão de múltipla escolha deve usar cartões de opção neutros antes da dica de resposta. Não force todo exercício no mesmo layout de cartão de opção.

Apresente o fluxo proposto e as escolhas de exibição por pergunta ao usuário, destaque as escolhas não resolvidas e pare para aprovação explícita. Quando a decisão for visual — especialmente correspondência, classificação, ordenação ou uma revelação não padrão — crie também teaching-plan-preview.html para que o usuário possa inspecionar estados representativos da pergunta, resposta e evidência. Revise o plano e a prévia até serem aprovados. Não redija a narração completa nem altere o código do renderizador antes desta aprovação.

Redigir e confirmar o roteiro de narração

Leia references/lesson-spec.md e references/teaching-video-rules.md. Enriqueça lesson.json com texto fonte exato, traduções, pontos de ensino de nível fundamental, respostas dos exercícios, parágrafos de evidência completos, destaques exatos de evidência, o modo de apresentação aprovado para cada exercício, segmentos de narração e IDs de dicas visuais estáveis.

Use inline-questions para perguntas do tipo cloze ou preenchimento de lacunas embutidas em frases do artigo. Use questions-after-reading para uma seção de compreensão separada. Não altere modos silenciosamente nem revele respostas antes de suas dicas de resposta.

Copie assets/narration-script.template.md para tmp/english-reading/<slug>/narration-script.md. Escreva o texto falado completo na ordem dos segmentos, com o estado de tela correspondente e os IDs de dicas ao lado de cada segmento. O texto falado neste arquivo de revisão deve corresponder exatamente ao narrationSegments[].text pretendido; não mostre ao usuário apenas um esboço ou trechos selecionados.

node .agents/skills/produce-english-reading-video-remotion/scripts/validate-lesson-spec.mjs \
  tmp/english-reading/<slug>/lesson.json --phase draft

Entregue o roteiro completo ao usuário para revisão e pare para aprovação explícita. Para um roteiro longo ou uma aula cuja ordem de revelação seja mais fácil de entender visualmente, crie também narration-script-preview.html com navegação por segmento, texto falado, anotações de tela e ordem de dicas. Aplique as edições solicitadas a narration-script.md, lesson.json e qualquer prévia HTML, revalide e peça aprovação novamente. Não gere áudio nem inicie o trabalho downstream com Remotion enquanto o roteiro não estiver aprovado.

Após a aprovação, registre o plano e o roteiro aprovados no pacote da tarefa. Se o texto da narração mudar posteriormente, pause antes do TTS para renovar a aprovação do roteiro. Se a fonte ou a estrutura de ensino mudar, siga as regras de invalidação em references/review-gates.md.

Gerar narração e tempo

  • Gere um arquivo TTS local por entrada narrationSegments[]; nunca gere uma faixa de aula longa.
  • Preserve uma voz selecionada pelo usuário. Para o perfil estabelecido, use o padrão Doubao dayi, velocidade 0.88 para ensino do artigo e 0.84 para exercícios.
  • Salve o áudio como public/audio/english-reading/<slug>/<segment-id>.<ext>.
  • Leia a duração do áudio completo e salve as linhas ASR normalizadas como tmp/english-reading/<slug>/asr/<segment-id>.json com startMs, endMs e text.
  • Derive os quadros das dicas a partir do ASR. Nunca divida um segmento em janelas estimadas iguais.
node .agents/skills/produce-english-reading-video-remotion/scripts/build-sync-map.mjs \
  tmp/english-reading/<slug>/lesson.json \
  --asr-dir tmp/english-reading/<slug>/asr \
  --out tmp/english-reading/<slug>/sync-map.json

node .agents/skills/produce-english-reading-video-remotion/scripts/validate-lesson-spec.mjs \
  tmp/english-reading/<slug>/lesson.json --phase timed \
  --sync tmp/english-reading/<slug>/sync-map.json

Se uma dica não corresponder, inspecione o intervalo do ASR e corrija asrMatchText ou escolha uma dica falada distintiva. Não adivinhe seu quadro.

Montar a entrada do Remotion

Leia references/remotion-renderer-contract.md e references/remotion-runbook.md. Construa os props do renderizador somente após o portão de tempo passar:

node .agents/skills/produce-english-reading-video-remotion/scripts/build-remotion-props.mjs \
  tmp/english-reading/<slug>/lesson.json \
  --sync tmp/english-reading/<slug>/sync-map.json \
  --audio-dir public/audio/english-reading/<slug> \
  --out tmp/english-reading/<slug>/remotion-props.json

node .agents/skills/produce-english-reading-video-remotion/scripts/validate-remotion-package.mjs \
  tmp/english-reading/<slug>/remotion-props.json

Crie ou reutilize uma composição Remotion genérica. Use sequências de segmentos contíguos; coloque o áudio local de cada segmento e a cena visual sobre o mesmo intervalo de quadros; direcione os estados internos a partir de seus quadros de dicas locais derivados do ASR. Use references/visual-profile-handdrawn-v1.md a menos que o usuário solicite outro estilo.

Para cada exercício, honre o modo de apresentação aprovado em teaching-plan.md. Na dica da pergunta, mostre o material fonte completo em um estado neutro. Na dica de resposta posterior, revele apenas a seleção, conexão, ordem ou classificação correta; em seguida, mostre o parágrafo de evidência completo e o trecho destacado exato na dica de evidência quando a evidência do artigo se aplicar. Para left-right-connect, mantenha ambas as colunas estáveis e anime as conexões confirmadas, em vez de converter a tarefa em cartões de opção. Se o renderizador genérico não suportar um modo aprovado, adicione um modo reutilizável e agnóstico de lição após a aprovação do Portão 2. No modo embutido (inline), retome a próxima frase do artigo após a explicação.

Verificar antes de relatar a conclusão

  • Valide a ordem dos segmentos, os intervalos de áudio/visuais correspondentes, a duração total e os limites das dicas.
  • Renderize e inspecione os quadros finais para cada estado de pergunta, resposta e evidência, além de um quadro de entrada quando a apresentação ou animação de diálogo mudar.
  • Inspecione os quadros em camadas por references/remotion-runbook.md: chamadas visuais individuais em resolução total para quadros de alto risco (primeiro exercício de cada modo de apresentação, texto mais longo de cada família de estado, resumo, layouts alterados), montagens verticais de 2 a 3 quadros para layouts repetidos. Cada quadro obrigatório ainda é inspecionado; a estratificação reduz chamadas de modelo de visão, não a cobertura.
  • Confirme que nenhum item de origem, opção, conexão, rótulo ou parágrafo está cortado; nenhuma resposta ou mapeamento aparece prematuramente; a pergunta compacta permanece visível durante a evidência; e o texto de explicação em chinês necessário está presente.
  • Renderize quadros representativos de texto longo e transições. A compilação TypeScript bem-sucedida não é prova visual.
  • Escreva generation-manifest.json com estados independentes created, verified e exported. Registre o ID da composição, caminho dos props, caminhos de áudio, quadros QC representativos e revisão do renderizador. Não use projeto de editor, linha do tempo, faixa, item ou IDs de ativo.

Não exporte a menos que o usuário solicite.

Exportação e entrega local

Em uma solicitação explícita de renderização ou entrega, renderize a composição verificada com seu arquivo de props explícito. Aguarde o processo de renderização terminar com sucesso. Verifique o arquivo local com ffprobe para contêiner, duração, codecs, resolução, FPS e canais de áudio; em seguida, execute uma decodificação completa ffmpeg -v error. Registre o caminho de saída, tamanho, metadados de mídia, comando de renderização e resultados de verificação antes de definir exported: true.

Sincronização entre agentes

Esta skill mantém duas cópias sincronizadas: o diretório canônico em .agents/skills/ e o instantâneo do Claude Code em .claude/skills/. Edite apenas a cópia canônica e, em seguida, atualize o instantâneo:

node .agents/skills/produce-english-reading-video-remotion/scripts/sync-to-claude-code.mjs
node .agents/skills/produce-english-reading-video-remotion/scripts/verify-claude-code-sync.mjs

Habilidades Relacionadas