// 07 AI · MEDIA PIPELINE

ContentForge

Pipeline autónomo de vídeo short-form que vai de tendência → render → publicação (estilo Opus/Vizard). Núcleo de render em produção; camada de gestão e analytics por cima.

// estado  núcleo de render em produção · auto-publicação em staging (pré go-live)

// Pipeline tendência → clip

Tendência
detetação e ingestão
faster-whisper
Análise
ContentScorer · transcrição
ffmpeg PT-aware
Render
multi-clip HD · face-zoom karaoke · emojis
orchestrator
Publicação
multi-conta · analytics (staging)
Arquitetura polyglot: o núcleo de render é um monólito Python 3.11 (decisão pragmática vs hexagonal por RPC); por cima corre a camada de gestão em Fastify/TypeScript + dashboard Angular 18.

// Núcleo de render (produção)

Um monólito Python 3.11 (run.py) que transcreve, pontua e renderiza - coeso e testável. Escolhido por pragmatismo depois de a via hexagonal por RPC partir o e2e.

Transcrição
faster-whisper converte áudio em texto com timestamps.
ContentScorer
Pontua segmentos para escolher os melhores momentos a recortar.
Render ffmpeg PT-aware
Multi-clip em HD com face-zoom, legendas karaoke e emojis contextuais.
run.py
# núcleo de render — produção
segments = whisper.transcribe(audio)     # faster-whisper
clips    = scorer.rank(segments, k=K)    # ContentScorer
for clip in clips:
    (ffmpeg(clip)
       .face_zoom()                  # enquadra o rosto
       .captions(style="karaoke", lang="pt")
       .emojis(clip.context)          # contextuais
       .export(hd=True))             # multi-clip HD

// Camada de inteligência

🎲
Hooks por Thompson sampling
Multi-armed bandit sobre padrões de hook: aprende o que converte e equilibra exploração vs exploração.
Copywriter de 5 variantes
Gera várias hipóteses de copy por clip para testar ângulos diferentes.
🔌
LLM swappable
Gateway OpenRouter com LLM_MODEL por env - o modelo é infraestrutura trocável, não uma dependência rígida.
💰
Custo controlado
~0,012 USD por clip, com o gateway a escolher o modelo mais barato que cumpre a tarefa.
~$0,012
custo de LLM por clip
44/44
testes pytest + vitest
5
variantes de copy por clip
HD
render multi-clip PT-aware

// Camada de gestão

🧮
Orchestrator Fastify/TS
Filas com BullMQ e queries type-safe com Kysely/PostgreSQL; Redis no suporte das filas.
💾
BFF + presign S3/MinIO
Backend-for-frontend que entrega URLs pré-assinados para upload/download direto ao object storage.
📊
Dashboard Angular 18
Multi-conta e multi-plataforma, com analytics reais: views, likes, top performers e trends.
🔗
Integração de publicação
Camada de publicação via Meta Graph API - em staging, ainda antes do go-live.

// Entrega (Gitea Actions, self-hosted)

Cada push passa por um quality gate em catraca e, em staging, um deploy que se protege a si próprio: smoke test e, se algo degrada, rollback automático com aviso.

Promote dev→main
Com git commit-tree (árvore exata, zero conflitos) e mirror filtrado para GitHub.
Disciplina de CI
Apanhei um teste mascarado por «|| true»; build fresco, tsc limpo e 44/44 no vitest.
gitea-actions · deploy:staging
$ act deploy:staging
 quality gate      ratchet · gitleaks · semgrep
 build images      python · ts · angular
 secrets ← vaultwarden
 compose up
 smoke test        200 OK
 health degraded   → rollback (auto)
 ntfy              "staging revertido"
 mirror → github   (filtrado)

// detalhes

// núcleoPython 3.11 · faster-whisper · ffmpeg
// gestãoFastify · BullMQ · Kysely/Postgres · Redis
// dashboardAngular 18 · multi-conta
// storageMinIO (S3) · Docker
// LLMOpenRouter (swappable) · ~0,012 USD/clip
// CI/CDGitea Actions · gate + smoke + rollback
// testespytest + vitest (44/44)
// papelAutoria completa - pipeline, gestão e entrega