Communitygithub.com

Kambaxon/Kambax-tiktok

Padrão para TODOS os vídeos de TikTok do usuário. Narra histórias, eventos e experimentos mentais em cenas 3D estilizadas com Three.js em HyperFrames, no estilo das referências (Tsunami 2004, Titanic 1912, Falso Alarme 1983). Sempre em português e no tratamento informal "você", com título de contagem regressiva no canto superior esquerdo, legendas palavra por palavra em itálico com palavras-chave azuis e uma seção explicativa ("Por quê?") como gráfico esquemático plano. Aplicado a qualquer solicitação de vídeo, tema ou roteiro para seu canal.

O que é Kambax-tiktok?

Este skill define um formato padronizado para criar vídeos de documentário em 3D para o TikTok, utilizando HyperFrames e Three.js. Ele é projetado para narrar histórias históricas, eventos e experimentos mentais de forma envolvente, sempre em português e na segunda pessoa do singular ("você"). O formato inclui uma contagem regressiva no canto superior esquerdo, legendas palavra por palavra em itálico com palavras-chave destacadas em azul, e termina com uma seção explicativa "Por quê?" apresentada como um gráfico esquemático plano. O skill suporta as plataformas HyperFrames (para renderização de cenas 3D) e Three.js (para criação de ambientes 3D estilizados). O processo envolve a criação de um roteiro, geração de voz (de preferência com arquivo ElevenLabs do usuário), construção de cenas 3D com personagens articulados e adereços, e renderização final. O skill enfatiza qualidade sobre velocidade, com vídeos padronizados em 1080×1920, 30 fps e duração de 60 a 90 segundos. Também inclui diretrizes para tratamento de temas históricos sensíveis e geração de música e efeitos sonoros sintéticos.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kambaxon/Kambax-tiktok/tree/HEAD/.claude/skills/doku-3d-video

Perguntar na sua IA favorita

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

Documentação

Vídeos Doco-3D (TikTok, Português)

Tudo é construído em código: HyperFrames mais Three.js. Leia primeiro o skill hyperframes, onde estão contrato, check, snapshot e render. Idioma: sempre português. Isso vale para roteiro, voz, título, legendas e para respostas ao usuário.

O Formato (medido a partir de três vídeos de referência)

  • Técnica: 1080×1920, 30 fps.
  • Duração: PADRÃO 60–90 segundos (pedido expresso do usuário; ~150–200 palavras, 10–14 tomadas). Mais curto apenas a pedido explícito.
  • Perspectiva: O espectador é VOCÊ. "Você vai para a praia." "Você senta em um bunker perto de Moscou." "Seu despertador toca."
  • Estrutura de contagem regressiva: O tempo é a espinha dorsal. "Em 3 horas" → "Ainda 2,5 h" → "Ainda 30 min" → "Hora 0" → "+40 min". Alternativamente "Minuto 0/25/100/160" ou "Dia 1/3/7/10". O ponto de virada é "Hora 0" ou "Minuto 0".
  • Estrutura:
    1. Abertura calma (idílica ou cotidiana), data e local na linha superior.
    2. Sinais e escalada, cada tomada um salto temporal.
    3. Catástrofe ou ponto de virada.
    4. Balanço com um número duro, de preferência em um mapa estilizado ("≈ 230.000", números vermelhos em alarmes).
    5. Seção explicativa "… na média" / "Por quê?" com painel escuro e gráfico esquemático plano, legenda "ESQUEMA, NÃO EM ESCALA".
    6. Fim: uma lição ou uma pergunta para "você".
  • Corte: cortes secos entre tomadas (a cada 2–4 s). Dentro de cada tomada, a câmera se move lentamente, como um dolly ou push-in, com smooth() ao longo de toda a tomada.

Design

Mundo 3D (Three.js r149, assets/vendor/three.min.js, carregar no <template> da cena):

  • Mundo low-poly estilizado e suave com materiais lisos (roughness ~0.8), sol quente e sombras suaves (PCFSoft, mapa 1024).
  • Céu como textura gradiente, além de névoa. Tone mapping ACES com exposição ~0.62, caso contrário, tudo parece desbotado.
  • Personagens = bonecos articulados: pernas, tronco e braços em cápsula, cabeça esférica, touca de cabelo, roupas em cor sólida, sem rostos. Auxiliar person(seed, {top, pants, scale}), animação com idle() / walk(), fases nunca sincronizadas.
  • Adereços feitos de caixa, cilindro e esfera, detalhes via canvasTex() (mostradores, placas, janelas).
  • Cenas noturnas com janelas emissivas; luz apagada = emissiveIntensity graduado por distância.
  • Cada tomada é W.<id> = {scene, camera, update(tLoc, T)}, SHOTS define os tempos. Renderizado via um proxy GSAP (onUpdate → renderAt) e adicionalmente via hf-seek.
  • Modelo: templates/exemplo-ninguem-trabalha/mundo.html, com estas cenas: quarto + despertador, escritório aberto, ponto de ônibus, supermercado, corredor de hospital, rua de lixo + ratos, cidade à noite (luz apagada), cozinha com vela, janela/varanda. Copiar auxiliares, cenas e renderizador, reutilizar ou substituir cenas.
  • O enquadramento do retrato é estreito (~27° horizontal): coloque a câmera mais longe do que você pensa e posicione os personagens no centro da imagem.
  • Hold-shots sob painéis: { id, t0, t1, hold: true } renderiza a cena no estado final.

Bloco de título superior esquerdo (scripts/titulo.py, dados em titulo.json), Open Sans, branco, sombra suave:

  • Linha superior, 32 px, 600, maiúsculas com espaçamento, ex.: "26 DE DEZEMBRO DE 2004, ≈ 10:00".
  • Título, 132 px, 700, ex.: "Ainda 30 min", "Minuto 0", "Dia 7". Em alarme pode ser vermelho ("cor":"#ff4b3e").
  • Linha inferior, 32 px, 600, maiúsculas, ex.: "O MAR RECUA".
  • Posição: esquerda 72 px, topo 228 px. Muda a cada corte (blur-in 0,2 s).

Legendas (scripts/legenda.py):

  • Open Sans 700 itálico, 54 px, centralizado em y ≈ 1210.
  • Uma frase (até a pontuação ou no máx. 5 palavras) aparece. Palavras ainda não ditas ficam esmaecidas (0.5) e acendem ao serem faladas.
  • Palavras-chave em azul claro #6cc0ff (--azul "Mar,Onda").

Mapa de balanço (modelo balanco.html, caminhos de europa-paths.json ou Natural Earth):

  • Mapa plano: mar #123f73, terra bege #e9dfc6, país alvo mais claro com borda branca, pontos amarelos de cidades.
  • Anéis brancos pulsam do centro, número grande no bloco de título aumenta e fica vermelho.

Seção explicativa (modelos explicacao.html = cadeia, estoque.html = duas fases na mesma faixa):

  • Cena fortemente escurecida (rgba(20,26,38,.97) em cima, um pouco de visão em baixo).
  • Bloco de título "A CAUSA / Por quê? / ESQUEMA, NÃO EM ESCALA".
  • Uma faixa de imagem clara (y 640–1040) com ilustração plana (corte transversal, cadeia, câmaras…) e rótulos em maiúsculas.
  • Frase de status em ciano #5fd0e8 abaixo da faixa.
  • Cruz vermelha ou visto verde como ícones (OpenMoji).

Áudio: A voz é o relógio. Efeitos sonoros com moderação:

  • whoosh-curto em cortes
  • impact-grave no ponto de virada
  • erro/pop na cruz ou alarme

Música apenas se o usuário fornecer um arquivo.

Fluxo (sem perguntas adicionais, quando um tópico é mencionado)

  1. bash scripts/setup.sh (uma vez por contêiner), depois bash scripts/projeto.sh <slug>.
  2. Escrever script.txt: uma linha por tomada, forma "você", frases curtas.
    • Duração: 60 s ≈ 150 palavras, 70 s ≈ 165, 90 s ≈ 210 (Piper ~2,5 palavras/s incluindo pausas).
    • Números escritos por extenso para a voz, exibição com doze{12}.
    • Fatos apenas se confiáveis; estimativas com "cerca de"/"aproximadamente", experimentos mentais no modo condicional/ como cenário.
  3. python3 scripts/voz.py script.txt assets/audio --speed 1.08 --gap 0.45
    • Resultado: voz.wav e palavras.json, tomadas cortadas por lines[].start.
    • Gravação própria do usuário tem prioridade.
  4. titulo.json → python3 scripts/titulo.py titulo.json compositions/titulo.html
  5. python3 scripts/legenda.py assets/audio/palavras.json compositions/legenda.html --azul "..."
  6. Construir compositions/mundo.html (3D) e compositions/explicacao.html (esquema); copiar index.html do modelo (camadas: mundo 1, explicacao 2, titulo 3, legenda 4, Áudio).
  7. npx hyperframes check --json (erros devem ser resolvidos; avisos de contraste contra céu claro são estilísticos).
    • Depois npx hyperframes snapshot --at a,b,c,d,e,f --no-end -o snap, no máximo cerca de 6 pontos de tempo por chamada.
    • Visualizar imagens e corrigir.
  8. Render em segundo plano: npx hyperframes render -o renders/<slug>.mp4 -q delivery -w 2 --quiet.
    • WebGL roda na CPU, leva alguns minutos.
    • Depois verificar com ffprobe, visualizar contato e enviar o arquivo ao usuário.

Voz (desejo do usuário: voz feminina amigável)

  • Preferido: arquivo ElevenLabs do usuário (anteriormente "Jessica – Playful, Bright, Warm", eleven_v4). Fluxo:
    1. Dar ao usuário o script como bloco de texto para gravar (uma linha por tomada).
    2. Gerar referência com tempos de palavra: python3 scripts/voz.py script.txt /tmp/ref --voice ~/.cache/geo-voice/vits-piper-de_DE-kerstin-low/de_DE-kerstin-low.onnx --gap 0.4
    3. Alinhar: python3 scripts/alinhar.py /tmp/ref assets/audio/<eleven>.mp3 assets/audio (DTW via MFCC, inícios de linha ajustados a pausas reais). Resultado: voz.wav + palavras.json; verificar limites de linha com silencedetect.
    4. Derivar todos os tempos (cortes, títulos, efeitos, painéis) dos novos tempos de palavra.
  • Substituição sem arquivo: vozes femininas Piper (Kerstin/Ramona/Eva, GitHub k2-fsa/sherpa-onnx release tts-models). Soam sintéticas; apenas como solução temporária, informar o usuário.
  • Não é possível clonagem de voz (modelos bloqueados), não construir vozes de estranhos ou celebridades.

Música e Sons

O usuário sempre quer uma música de fundo suave e efeitos sonoros. Openverse, Freesound, Pixabay, archive.org e HeyGen estão bloqueados, portanto ambos são gerados sinteticamente com scripts/som.py.

  • Música: python3 scripts/som.py musica musica-plano.json assets/music/musica.wav
    • musica-plano.json define por seção: acorde, energia, brilho e opcionalmente um pulso em BPM. Além disso, algumas notas de piano.
    • As seções seguem a dramaturgia: sombrio → tensão (pulso) → ponto baixo quase silêncio → acorde maior quente na esperança.
    • No vídeo com data-volume ~0,22 abaixo da voz (arquivo de música ≈ −18 LUFS).
  • Efeitos: python3 scripts/som.py sfx assets/sfx gera vento, trovão, rádio, relógio, passos, coluna, sirene, sino, coração, zumbido, explosão.
    • Além dos whoosh/impact/riser fornecidos em media-use.
    • Volumes 0.15–0.45, sons contínuos com data-fade-in/out.
  • Controle: ver espectro com showspectrumpic (cliques = linhas verticais). Não posso ouvir, portanto informar ao usuário que a mixagem foi medida e não ouvida.
  • Em temas sensíveis (Holocausto, vítimas) reduzir a música; apenas vento ou zumbido.

Temas Históricos Sensíveis

  • Sem suásticas, runas SS ou outros símbolos nazistas e sem retratos de perpetradores com rosto (TikTok bloqueia, mesmo em contexto histórico). Bandeiras e uniformes manter abstratos.
  • Campos e violência apenas sugerir (cerca, torre de vigia, névoa), não mostrar vítimas. Tom objetivo e crítico.
  • Em cenários de "e se", ao final contextualizar a realidade ("A Realidade" / "Por que é quase impossível") e mostrar a libertação.

Sempre Melhorar (desejo do usuário)

Cada projeto deve elevar atmosfera, efeitos, animação e som em relação ao anterior. O estado atual está em templates/exemplo-chernobyl/:

  • Partículas particles(cena, n, seed, {x,y,z,v,deriva,grav,vida,cor,tamanho,opacidade,adicionar,nevoeiro}): determinísticas e sempre com a textura redonda suave SOFT (sem ela aparecem quadrados). Usadas para fogo, brasas, fumaça, chuva, poeira, jato d'água e folhas.
  • Luz como narrativa: luzes de alarme piscando, PointLights de fogo tremeluzindo, feixe de luz aditivo, brilho no horizonte como plano gradiente (não esfera).
  • Câmera: tremer em impactos (exp(-u*2.2)), dollys lentos por tomada.
  • Camada de aparência look.html (z-index acima do mundo, abaixo dos títulos/legendas): grão de filme (15 fps, determinístico), vinheta, flash branco em explosões, fade para preto em momentos de silêncio, fade final para preto.
  • Som: som.py sfx2 para Geiger (3 densidades), alarme, explosão, fogo, sirene2, ônibus, chuva e rangido. Em musica-plano.json há ar (harmônicos), sub (sub-grave) e silêncio (janelas de silêncio duro, ex. logo após o estrondo). Além disso, um riser que converge exatamente para o ponto de virada (início = impacto − 10,03 s).
  • Estrutura que sustenta: início e fim se espelham (você dorme ↔ você fica acordado na janela), mapa e esquema entre eles.

Armadilhas

  • cam() tem apenas 400 m de alcance visual. Para tudo que está mais longe (horizonte, usina, arcos), usar camFar(3000+) e definir névoa suficientemente distante, senão fica invisível.

  • Janela retrato: planejar objetos de fundo exatamente através da abertura (ângulo = atan(altura/distância)).

  • Qualidade antes da velocidade (desejo do usuário): sempre 1080×1920, -q delivery, sombras completas e antisserrilhamento. Uma renderização de 70 s leva na nuvem (CPU-WebGL) cerca de 40–60 min. Avisar isso com antecedência e não reduzir.

  • pkill -f <padrão> atinge o próprio shell se o padrão estiver no comando. Em vez disso, encerrar processos por PID.

  • A voz Piper soa sintética (16 kHz). Oferecer uma gravação própria ou um arquivo ElevenLabs.

  • Em linhas com fonema desconhecido, não há alinhamento. voz.py então distribui as palavras por energia e comprimento de sílaba; verificar timing no snapshot.

  • IDs de cena devem ser únicos (prefixos er-, ti-, lg-).

  • O contêiner é efêmero: enviar vídeos imediatamente. Skill e projetos só persistem se forem enviados a um repositório Git.

Individual skills in this repo

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

Habilidades Relacionadas