~/h0wzy/work/viralvideogen LEIAME.mdworkcvprivacy-policyen

viralvideogen (storylab)

funcional, sem deploy produto próprio

2026-08-162026-08-18 · 38 commits

o_problema

Produzir vídeo de storytelling emocional para TikTok com consistência de personagem e retenção é trabalho manual repetitivo e caro: cada erro de prompt é uma chamada paga desperdiçada, e personagem que muda de rosto entre cenas destrói o vídeo inteiro.

o_que_faz

  • Video intelligence: detecção de cena, extração de keyframes, transcrição de áudio e análise visual, selecionando frames representativos em vez de mandar todo frame para um modelo.
  • Story intelligence: estrutura narrativa, arquétipos de personagem, história original em vez de personagem renomeado com diálogo traduzido, e estratégia de retenção com open loops e escalada emocional.
  • Character bible e visual bible fixando características imutáveis por personagem recorrente e a linguagem visual do ambiente.
  • Separação deliberada entre prompt de imagem, que define o estado visual, e prompt de animação, que define o que muda no tempo. Essa separação é o que torna a consistência de personagem controlável.
  • Publishing gate que mede o vídeo final, lê o ambiente atestado e recusa quando algo bloqueia. Nunca publica sozinho.
  • Treze arquivos JSON Schema versionados, um por shape persistida, como contratos machine-readable.

stack

outros

Python 3.11+ · Typer · Pydantic 2 · OpenCV · faster-whisper · Anthropic SDK · pytest · GitHub Spec Kit

medido

Specs em dois dias
14specs/, 38 commits de 16/08/2026 a 18/08/2026
Contratos machine-readable
13schemas/, um JSON Schema por shape persistida
Portão de lint
9.9 / 10limiar fail-under do pylint

como_foi_construido

Spec-driven, catorze specs em dois dias. A arquitetura tem uma regra clara: a camada de pipeline orquestra, um módulo por comando CLI seguindo ler-checar-escrever; os pacotes de domínio ao lado não tomam decisão de I/O; models é o único lugar onde uma shape persistida é declarada; e toda shape persistida tem contrato em schemas.

Não existe um comando `generate` que roda a cadeia inteira. Três estágios fazem chamada paga a modelo, e a decisão operacional é que histórias são escritas à mão no chat e entram por um passo de promoção, o caminho não pago.

O `record` não aceita resultado declarado como verdade. Um job de vídeo reportado como completo contra um arquivo local é decodificado antes de ser acreditado: arquivo que não é vídeo legível rebaixa o job para ausente, e arquivo que é tem sua duração medida gravada, substituindo a declarada. A razão está registrada: o primeiro render plan do próprio repositório gravou um job como completo contra um PNG, e um exists-check acreditou. O que não tem nada local para medir é gravado como reportado, porque inventar medição seria a mesma falha na direção oposta.

O `assemble` soma a duração medida, não a pedida. Um gap acima de um segundo vira warning, porque um provedor devolvendo clipes de cinco segundos para pedidos de oito passa por todo check do pipeline e produz um vídeo abaixo do mínimo.

Comandos determinísticos e sem LLM nunca modificam o arquivo de origem. Escrevem um arquivo novo ao lado. O armazenamento é separado por natureza: código, config, schemas, testes e manifestos leves no git; vídeo, imagem, frames, áudio e renders sincronizados fora dele.

limitacoes_conhecidas

  • Não existe comando fim-a-fim, e isso é deliberado e não uma falta: três estágios custam dinheiro por chamada, então a cadeia é conduzida estágio a estágio.
  • A publicação nunca é automática. O post final é manual, no telefone. O gate reporta pronto ou bloqueado, e um humano age sobre isso.
  • Resultado remoto sem artefato local é gravado como reportado, não como medido. A distinção fica no dado em vez de ser suavizada.
  • Sem deploy em lugar nenhum: é uma CLI local, rodada pelo autor.

tempo de código rastreado

104 hrs 37 mins Fonte: WakaTime · rastreado desde 2026-03-17 até agora

voltar para todos os trabalhos