trend-explainer-video:Linha de Produção de Vídeos de Explicação de Rankings com Narração
Com o motor de renderização C:/Users/<seu-nome-de-usuario>/.workbuddy/skills/video-talkcraft (skill TalkCraft), esta skill fornece o esqueleto do projeto, scripts de ponta a ponta, identidade visual e solução de problemas prática para o tema de rankings. Para teoria de vídeo/validações gerais, consulte o TalkCraft em si; esta skill não os repete.
Etapas da Linha de Produção (comandos e armadilhas em references/pipeline.md)
- Capturar Snapshot: Captura única da página de ranking (curl com user-agent), salva em
data/snapshot.md/.jsoncomo a única fonte da verdade — classificação, estrelas, descrição, linguagem devem vir exclusivamente desta captura, sendo proibido inventar. - Roteiro Narrado
script.json: Estrutura fixa de 35 frases = 1 abertura + 10 projetos × (frase de classificação + detalhe/total de estrelas + frase "como usar" + total de estrelas) + 3 parágrafos finais (fechamento, frase de efeito, CTA). Regras rígidas: números todos em caracteres chineses; cada projeto deve começar obrigatoriamente com "Primeiro lugar... / Segundo lugar..."; cada projeto deve incluir uma frase de "como usar" (começando com verbo, explicando onde usar, como usar ou qual problema resolve). A abertura já entra no assunto: "Hoje, este ranking semanal do GitHub, vou apresentar os dez primeiros de uma vez." - Dublagem:
synth_voice.py(VOICE/RATE no topo, edge-tts precisa de HTTP_PROXY) →assemble_voice.py(full.wav + timestamps.json) →cp audio/full.wav remotion/public/narration.wav. - Reconstrução da Linha do Tempo:
make_timing.py→gen_beats.py(inclui geração de anchors.json) →gen_cues.py. As três tabelas de âncoras devem estar sincronizadas: REPO_ANCHORS do gen_beats, REPO_CFG do gen_cues, REPO_CFG do all.tsx, além do sceneFor em scenes/index.ts (os números das cenas chart/quote/cta nos parágrafos finais são deslocados devido à inserção de frases). Qualquer alteração nos parâmetros de dublagem = reconstrução completa da cadeia, nunca apenas substituir a faixa de áudio. - Implementação do Projeto: Copiar o esqueleto de
assets/remotion-template/; modificarsrc/data.ts(dados do snapshot), e as cinco tabelasREPO_CFG/USES/STEPS/ICONS/DETAILS+RANK_LIST(tabela de cenas de classificação) emsrc/scenes/all.tsx. O restante do código de cena é reutilizado como está. Executarnpx tsc --noEmitpara validação. - Renderização:
node <video-talkcraft>/scripts/render_shots.mjs --all --concat out/assembled.mp4 --audio out/full-mix.wav --mux out/v?.mp4(full-mix é re-renderizado automaticamente com base na impressão digital do timing). - Validações Automatizadas (apenas entregar se tudo estiver verde): beat_lint → motion_check (parado + tremor) → sfx_check solo+mix → workbench_contract_lint. Limiares e prescrições de falha estão no pipeline.md.
- Entrega: Duas passadas do loudnorm (medição → normalização linear) → delivery.mp4 → repetir sfx_check --mix → present_files.
- Capa:
gen_cover.pygera capa vertical 1080×1920 genérica (sem projetos específicos, reutilizável por muito tempo), produzindo cover_vertical.png/.jpg.
Diferenciais Visuais desta Linha de Produção (versão v16, consulte references/style-guide.md)
- Página Independente de Classificação
RankPage: A cena da palavra de classificação é renderizada em tela cheia como uma página independente "Nº X" (fonte dourada grande 240px + RANK #N + nome do repositório + número de estrelas + barra de progresso de 10 segmentos), sem compartilhar a tela com o conteúdo do projeto. - Três Tipos de Cenas de Conteúdo:
IllBgfundo de tela cheia com ilustração (blur30+escurecimento) +OgiCardcartão de ilustração dinâmico (EFFECT PREVIEW + Ken Burns + pontos de luz + varredura) +DemoPaneldemonstração em terminal/grid, acompanhado de 3 itens USES (com emoji) + carrossel de detalhesDetailBlock. - Cena "Como Usar" em Três Passos com Ilustrações
HowScene: Cada passo tem um cartão de ilustraçãoStepIcon(fundo gradiente + emoji grande + canto STEP), conduzido pelas duas tabelasSTEPS/ICONS. - Efeito Ambiental de Tela Cheia: Três faixas de luz varrendo a tela em fases defasadas, para resolver trechos parados detectados pelo motion_check (cenas com cards pequenos/texto estático devem obrigatoriamente incluir).
- Visual Escuro: Paleta de cores no style-guide.md; estrelas em dourado #FFC94D, aumento semanal em verde #63E6A4.
Armadilhas Frequentes (consulte references/pipeline.md)
- A geração de imagens pelo ImageGen pode sofrer rate limit 429 → usar cartões de ícone emoji (StepIcon) para as ilustrações, e capa programática com PIL (gen_cover.py), zero custo, estável e adequado; quando o serviço voltar, pode trocar por imagens de IA.
- Trechos parados no motion_check (freezedetect noise=0.003): em cenas com cards pequenos/texto estático/fundo desfocado, animações lentas com seno não resolvem → usar Ambient com três faixas de luz varrendo em fases defasadas (≥3 faixas, 2 faixas têm período de vácuo).
- Renderização de
<Video>no servidor sempre quebra → usarOffthreadVideo+muted. - fps do素材 ≠ fps do vídeo final → motion_check detecta "quadros repetidos"; usar
minterpolate=mi_mode=blendpara interpolação de fluxo óptico. - Windows: links simbólicos são todos rejeitados → copiar diretórios; ffmpeg 7+ não tem
-vsync→ usar-fps_mode passthrough. - edge-tts precisa de proxy:
HTTP_PROXY/HTTPS_PROXY=http://<seu-proxy>. - Modificar all.tsx usando reescrita atômica com python (concorrência EBUSY no Windows pode fingir que a edição deu certo); bash heredoc passando python com crases é truncado → usar Write para escrever .py e depois executar.
Referência Rápida de Ambiente
- bash PATH a cada sessão: complementar com
PortableGit usr/bin+ffmpeg-bin; python usar venv:C:/Users/<seu-nome-de-usuario>/.workbuddy/binaries/python/envs/default/Scripts/python.exe; node usar a versão gerenciada diretamente; tsc rodar comnode_modules/typescript/lib/tsc.js(bin/tsc é sequestrado pelo shim do fnm).