Communitygithub.com

Moh4696/cinematic-film

Cria filmes cinematográficos narrados inteiramente a partir de código, sobre qualquer assunto. Uma câmera contínua desliza sobre um mundo projetado de fotos, documentos, cartões, mapas com rotas e grandes números, com cada carimbo, destaque e número caindo na palavra do narrador, além de efeitos sonoros, trilha opcional e legendas incorporadas. Para documentários e história, lançamentos de produtos, histórias de marcas e fundadores, explicadores de ciência e tecnologia, biografias e true crime. Abrange roteiro, narração de qualquer TTS dividida em takes.

O que é cinematic-film?

Esta skill transforma qualquer roteiro em um filme cinematográfico narrado, gerado inteiramente por código. Uma única câmera contínua percorre um mundo visual composto por fotos, documentos, cartões, mapas, recortes e números organizados em um grande painel. Cada elemento visual é sincronizado com precisão à palavra falada pelo narrador, e efeitos sonoros, trilha sonora opcional e legendas são gerados automaticamente. A skill é baseada em Python (Skia) e garante resultados consistentes e reproduzíveis para qualquer tema. Ela oferece ferramentas de linha de comando para verificação de ambiente (Python, skia-python, ffmpeg, fontes), criação de projetos, geração automática de batidas (quadros de cena), narração experimental com TTS local, busca de imagens no Wikimedia Commons com atribuição, geração de mapas com limites de domínio público, preparação de assets com uniformização estilística, renderização paralela e mixagem de áudio. A skill é compatível com macOS (voz nativa `say`), Windows e Linux (espeak-ng ou qualquer comando TTS), e é adequada para documentários, histórias de marca, explicadores de ciência e tecnologia, biografias e true crime. O fluxo de trabalho organizado em 11 etapas com 4 pontos de aprovação (Gates) garante controle de qualidade em cada fase, desde a pesquisa e roteiro até a renderização final e legendagem. A estrutura de projeto tem um template funcional ("From Cherry to Cup") e um exemplo completo de documentário sobre o primeiro voo ("Twelve Seconds") que demonstra todos os tipos de itens e estilos visuais. A skill é extensível e integra-se com outras skills como `motion-assets` (para gerar imagens de IA) e `frame-capture` (para capturar páginas web como vídeo).

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Moh4696/cinematic-skill/tree/HEAD/skills/cinematic-film

Perguntar na sua IA favorita

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

Documentação

Filme cinematográfico

Um filme feito desta forma é um único movimento de câmera sobre um único mundo. Cada foto, cartão, recorte, mapa e número vive em um grande painel, e a câmera viaja entre eles ao longo de fios, rotas e setas conforme a história avança. Cada acerto visual é sincronizado com a palavra que o narrador diz. É tudo código (Skia em Python), então renderiza da mesma forma a cada execução, qualquer tema se encaixa, e uma nova voz reajusta todo o filme automaticamente.

Construído a partir de um documentário de 5:22 sobre Al Capone e depois aberto para qualquer assunto. As regras aqui foram escritas a partir do que quebrou enquanto o fazia.

Ferramentas

ArquivoO que faz
scripts/check_setup.pyVerifica Python, skia-python, ffmpeg, fontes e memória; informa o que instalar
scripts/get_fonts.pyObtém fontes de licença aberta (Bebas Neue, Homemade Apple) para qualquer papel de texto que esta máquina não possua
scripts/new_project.pyInicia um projeto a partir de assets/template/ (um explicador executável), ou o exemplo de documentário com --example
scripts/make_beats.pyEscreve beats.md, a tabela que você aprova; valida cronologia, tamanho da linha, dígitos no texto falado
scripts/tts_say.pyVoz experimental gratuita (macOS say, espeak-ng ou qualquer comando TTS) para ajustar o filme antes da voz final
scripts/split_takes.pyCorta takes de seções inteiras em um clipe por linha e sinaliza cortes suspeitos
scripts/build_narration.pyJunta as linhas em audio/narration.m4a e audio/timing.json, que são a base do filme
scripts/fetch_commons.pyPesquisa no Wikimedia Commons, baixa com licença e crédito, recusa arquivos não livres, escreve credits.md
scripts/make_map.pyProjeta limites de domínio público (qualquer país ou região) para o mapa
scripts/prep_assets.pyUniformiza todas as imagens em um único visual (preto e branco, sépia ou cor natural); gera as texturas do painel
scripts/engine.pyO motor do filme: câmera, foco, itens, mapas, visuais, finalização do filme
scripts/render.pyStills, tiras de contato, a lista de deixa e a renderização MP4 paralela
scripts/build_sfx.pySintetiza todos os efeitos sonoros a partir da lista de deixa (sem amostras, nada a licenciar)
scripts/mix_soundtrack.pyVoz, efeitos e música opcional, com ducking e normalização de loudness
scripts/burn_captions.pyGrava um dos quatro estilos de legenda no filme finalizado e escreve um arquivo SRT

Requer Python 3.9+, pip install skia-python numpy pillow (scipy opcional) e ffmpeg. Execute scripts/check_setup.py primeiro; no Linux ou Windows, execute também scripts/get_fonts.py por projeto. Todos os comandos aceitam --project <pasta>.

Escolha o filme

TipoVisualImagensItens típicos
História, true crime, investigaçãowall, slateFotos de arquivo e documentos, uniformizadas bwImpressões, recortes rasgados, carimbos, barbante vermelho, rotas de mapa
Lançamento de produto, história de marca ou fundadorstudio, charcoalSuas fotos de produto e fotos da equipe, uniformizadas naturalCartões, números grandes, contadores, setas
Ciência, engenharia, como funcionablueprint, paperDiagramas, imagens de arquivo ou IACartões, contadores, marcas de caneta, mapas
Tecnologia, espaço, trailersnightCapturas de tela, renders, imagens de IALetras grandes, contadores, rotas, cartões

Misture livremente: os visuais são um painel e um acabamento, e todos os itens funcionam em todos os visuais. references/story.md tem um formato de história para cada tipo.

As regras

  1. Um herói por linha. Cada linha de narração tem exatamente uma coisa na qual a câmera está. O foco escurece todo o resto.
  2. Os acertos caem na palavra falada. Um carimbo bate em "acusado", não no início da linha. Cronometre tudo com doc.W(linha, "palavra").
  3. Mostre uma frase de uma forma só. Ou digite-a na tela ou mostre-a em um documento real, nunca ambos. O texto do corpo em documentos são linhas cinzas, nunca palavras de preenchimento.
  4. O tempo só avança após a abertura. Uma abertura fria pode pular para frente. Após uma linha de ponte ("Quatro anos antes..."), o tempo da história só avança.
  5. Texto legível em um telefone em um segundo. Maiúsculas condensadas grandes. Um rótulo digitado na tela deve ter cerca de 3% ou mais da altura do quadro.
  6. Menos é mais. Os fios desaparecem após sua batida e os itens antigos escurecem. O recuo final deve parecer composto, não confuso.
  7. Nada inventado que pareça real. Fotos e documentos reais recebem créditos. Um documento desenhado em código é rotulado como recriação e cita apenas palavras que foram realmente escritas. Imagens de IA são aceitáveis para ilustração, mas nunca como evidência de um evento real ou de uma pessoa real.

Fluxo de trabalho

Pare para aprovação do usuário nos quatro portões (marcados Portão).

  1. História. Pesquise, depois escreva script.json: takes (seções) de linhas, cada uma com text, spoken (números por extenso), hero e typed. Mantenha notas factuais junto. 60 a 90 segundos equivalem a cerca de 150 a 230 palavras. Detalhes em references/story.md.
  2. Tabela de batidas. Execute scripts/make_beats.py e corrija todos os avisos de lint. Portão: o usuário aprova beats.md, incluindo os fatos.
  3. Imagens. Liste cada imagem em photos.json: seu id, tipo e origem.
    • Imagens de arquivo: fetch_commons.py search, category e get.
    • Arquivos do próprio usuário: coloque-os em <projeto>/assets/photos/.
    • Stills de IA: gere-os em um único estilo (a skill motion-assets planeja e precifica).
    • references/archive.md cobre outros arquivos e as regras de direitos.
  4. Voz experimental. Execute tts_say.py, depois split_takes.py, depois build_narration.py. Ouça cada linha que split_takes.py sinalizar. Agora os tempos são reais.
  5. Assets. Execute make_map.py se a história viajar, depois prep_assets.py.
  6. Cena. Escreva scene.py: organize o painel em clusters por seção, adicione itens nos tempos doc.L/doc.W, depois a câmera e as chaves de foco (film.shot). Leia references/film.md. Ambos os projetos enviados mostram os padrões: assets/template/scene.py (explicador, visual studio) e assets/wright-flyer/scene.py (documentário, todos os tipos de item).
  7. Teste de visual. Execute render.py --probe em um still por linha em 1280x720 e olhe para todos, depois --strip em cada grande movimento de câmera. Portão: mostre ao usuário stills da abertura e do visual.
  8. Rascunho. Renderize os primeiros 30 segundos em 1280x720 com a voz experimental. Portão: o usuário assiste.
  9. Voz final. Grave com qualquer TTS ou uma pessoa (references/voice.md). Execute split, build e probes novamente; nada na cena muda.
  10. Som. Execute render.py --cues, depois build_sfx.py, depois mix_soundtrack.py, adicionando uma trilha, se desejado. Leia references/sound.md.
  11. Finalização. Faça a renderização completa, depois burn_captions.py e o SRT. Leia references/performance.md antes de renderizar em 1440p ou 4K. Entregue credits.md junto com o filme.

Auto-revisão, sempre

Olhe para os stills antes de afirmar que algo funciona. Estes são os erros que apareceram, todos em uma renderização real:

  • Tinta escura em um painel escuro: invisível. Use texto claro em visuais escuros, ou bar_h=0.92 para um bloco de rótulo completo atrás de texto escuro.
  • A câmera se moveu, mas o foco ficou para trás, deixando um quadro escuro. Use film.shot() a menos que devam se separar.
  • Escala do mapa muito pequena: uma costa inteira menor que uma foto. Escolha K para que cada lugar com impressões tenha seu próprio espaço (references/film.md).
  • Rótulos do mapa colidindo. Coloque o rótulo no lado oposto ao seu vizinho.
  • Um cluster na borda do mapa. Mantenha clusters no mapa ou claramente fora dele.
  • Destaques alguns pixels fora de suas palavras. Use PaperDoc.phrase_spans e doc.on(print, fx, fy) com frações lidas de uma grade de sobreposição da imagem.

Projetos enviados

  • assets/template/: "From Cherry to Cup", um explicador de 25 segundos no visual studio, feito de cartões, setas e um contador, sem imagens. new_project.py my-film copia. Dê uma voz experimental e ele renderiza.
  • assets/wright-flyer/: "Twelve Seconds", um documentário de 90 segundos sobre o primeiro voo e o rival de $50.000 que caiu duas vezes. Usa sete fotos de domínio público, o mapa dos EUA, dois documentos tipografados e todos os tipos de item.
python3 scripts/new_project.py wright --example
python3 scripts/fetch_commons.py get --project wright
python3 scripts/make_map.py --project wright && python3 scripts/prep_assets.py --project wright
python3 scripts/tts_say.py --project wright && python3 scripts/split_takes.py --project wright && python3 scripts/build_narration.py --project wright
python3 scripts/render.py --project wright --size 1280x720 --out out/draft.mp4 --audio audio/narration.m4a

Skills relacionadas

De Open 3D Skills: motion-assets planeja e precifica stills de IA quando um filme precisa de ilustração, e frame-capture grava páginas web em vez de filmes desenhados em código.

Habilidades Relacionadas