Communitygithub.com

yingwang/inktofilm

Transforme uma ideia ou roteiro em um filme de IA finalizado, com cada cena verificada em relação à história antes de ser aprovada. Uma skill para Claude Code e Codex.

O que é inktofilm?

A skill InkToFilm permite que desenvolvedores e criadores transformem prompts em linguagem natural em filmes completos de IA, sem a necessidade de escrever código ou entender modelos. Ela gerencia todo o processo, desde o planejamento e geração até a avaliação e edição, garantindo que cada cena seja revisada antes do corte final. A skill suporta Claude Code e Codex, oferecendo integrações específicas para cada plataforma. No Claude Code, o usuário atua como planejador e juiz, escrevendo roteiros e planos manualmente e inspecionando frames para garantir a qualidade. No Codex, a interface de linha de comando automatiza o processo de julgamento. O fluxo de trabalho é dividido em etapas: criação do script e plano, geração de retratos e stills para revisão visual, gravação de cenas com julgamento manual ou automatizado, e montagem final com FFmpeg. A skill também gerencia chaves de API, orçamentos e configurações de ambiente de forma segura, evitando expor informações sensíveis.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add yingwang/inktofilm

Perguntar na sua IA favorita

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

Documentação

O que inktofilm faz?

Trate um prompt em linguagem natural como um ponto de partida completo. O usuário não precisa escrever código, executar comandos, entender modelos ou preparar um roteiro.

Experiência do usuário

  • Comece pela ideia do usuário. Quando uma direção criativa importante estiver faltando, tome uma decisão forte por padrão ou offereça um conceito conciso para aprovação; faça apenas perguntas que alterariam materialmente o filme.
  • Faça a configuração, o planejamento, a geração, a avaliação, as repetições e a edição em nome do usuário. Não exiba comandos internos, payloads de provedores ou detalhes de implementação a menos que o usuário pergunte.
  • Por padrão, produza um curta-metragem cinematográfico ou trailer completo de 30 segundos no formato 16:9 quando a duração e o formato não forem especificados. Para um longa-metragem ou série, crie primeiro um prova de conceito curta aprovada, depois continue em capítulos ou episódios com uma bíblia de personagens e mundo compartilhada.

Configuração privada e geração paga

Use um checkout existente do InkToFilm quando disponível. Caso contrário, prepare um checkout local do projeto a partir de https://github.com/yingwang/inktofilm e um ambiente local do projeto; não modifique a configuração do sistema não relacionada. Verifique FFmpeg, FFprobe e o cliente fal antes da produção; inktofilm doctor informa o que está faltando.

  1. Procure por FAL_KEY no ambiente do processo, depois em um .env local do projeto. A CLI lê apenas o ambiente, então carregue o arquivo no shell que o executa, por exemplo com set -a; . ./.env; set +a, e nunca imprima o valor.
  2. Se estiver ausente, pergunte ao usuário uma vez pela chave da API fal. Quando um navegador com sessão ativa estiver disponível, offereça criar e copiar uma chave com escopo de API com aprovação explícita em vez de fazer o usuário expô-la no chat.
  3. Nunca ecoe, registre, resuma, coloque em um prompt ou faça commit da chave. Armazene-a apenas em um .env local ignorado com modo 0600, e verifique se o Git ignora o arquivo antes de qualquer commit ou push.
  4. Leia os preços atuais do provedor, estime o número de segundos gerados e a margem para repetições, declare um limite de gastos rígido e obtenha confirmação imediatamente antes da primeira requisição paga. Pare antes de exceder o limite aprovado. a fal fatura MiniMax H3 Max por segundo gerado e nano-banana por imagem estática, então um filme de 30 segundos com cinco cenas, imagens estáticas e algumas repetições geralmente custa alguns dólares; verifique as páginas do modelo para as taxas atuais em vez de supor.

Faça o filme

Faça o trabalho criativo e de julgamento com o agente que está executando esta skill, e use fal MiniMax H3 Max como o gerador de vídeo padrão, respeitando qualquer modelo que o usuário escolher explicitamente.

  • No Claude Code, você é o planejador e o juiz. Escreva o roteiro, o plano e o conjunto de testes você mesmo, e trabalhe nas etapas abaixo para que cada imagem seja examinada antes que um crédito de vídeo seja gasto nela. Para julgar uma cena, amostre os mesmos quadros uniformemente espaçados que o avaliador usa com inktofilm frames, inspecione-os diretamente, escreva o JSON de resultados revisados por caso e reproduza-o com inktofilm run suite.json --semantic-results. Pontue apenas o que está visível nos quadros amostrados e registre seu próprio nome de modelo na proveniência do resultado.
  • No Codex, a integração embutida da CLI faz o mesmo trabalho através do Codex CLI autenticado: inktofilm run --semantic-codex para julgamento, e o planejador e juiz padrão de inktofilm produce.
  • Quando o usuário quiser que a execução termine sem supervisão, passe o julgamento para uma CLI em vez de fazê-lo no loop: inktofilm run --semantic-claude, ou inktofilm produce --judge-claude, que precisa apenas do Claude Code e de uma chave fal. Prefira julgar no loop quando você já estiver presente, pois custa um modelo em vez de dois e você pode perceber o que nenhuma asserção perguntou sobre.
  • Qualquer outro modelo pode ser conectado através dos hooks JSON stdin/stdout: --semantic-command, --planner-command, --judge-command e --video-command.
  • Qualquer que seja o juiz que execute, ele apenas pontua as asserções que o plano escreveu. Escreva asserções para as falhas que realmente ocorrem, incluindo texto inventado na tela, letterboxing embutido em um quadro, um figurino se desviando para a cultura errada e uma expressão que contradiz a cena.

O fluxo de trabalho em etapas

inktofilm produce é retomável: retratos, imagens estáticas e tentativas de cena que já existem no diretório de saída são reutilizados, então o mesmo comando pode ser executado novamente após uma revisão e apenas o trabalho faltante é pago.

  1. Escreva script.md e plan.json você mesmo, depois inktofilm produce script.md --plan plan.json --stills-only -o <projeto>. Isso renderiza um retrato por personagem e uma imagem estática por cena e para. Abra cada imagem. Um retrato que não é o personagem, uma imagem estática com o enquadramento errado, um rosto com a idade errada, uma pessoa extra ou texto em um adereço é barato de corrigir aqui e caro de corrigir em um clipe: exclua o arquivo, ajuste seu prompt e execute o mesmo comando novamente.
  2. Grave com --no-judge quando você for julgar no loop, ou com --judge-claude quando a execução for sem supervisão. --no-judge executa as verificações de mídia, seleciona a tentativa mais recente de cada cena, escreve suite.json para os clipes selecionados e monta um final.mp4 com corte simples.
  3. Para cada cena, inktofilm frames shots/<cena>-attempt-1.mp4 amostra os quadros que um juiz veria. Olhe para eles, escreva o arquivo de resultados revisados e reproduza-o com inktofilm run suite.json --semantic-results reviewed.json -o review.
  4. Regere apenas o que falhou: --reshoot <id_da_cena> dá a essa cena uma nova tentativa, numerada após as que estão no disco, e todo o resto é reutilizado. Edite o prompt primeiro quando a falha foi culpa do prompt. Julgue a nova tentativa em relação à antiga em vez de assumir que é melhor; quando a tentativa anterior vencer, --select <id_da_cena>=<tentativa> a torna novamente o clipe da cena, então o manifesto, suite.json e final.mp4 seguem a escolha do revisor.
  5. Monte a edição final você mesmo com FFmpeg quando o filme precisar de mais do que um corte simples: sobreposições, pontes sonoras, diálogo e um cartão de título formatado localmente.

Escrevendo prompts que sobrevivem à geração

  • A bíblia do elenco em cada prompt de vídeo cobre apenas os personagens que a cena lista, então liste-os. Uma cena de personagem único que descreve todo o elenco tende a sentar os outros no fundo.
  • Os retratos de referência são entregues ao editor de imagem estática na ordem dos characters da cena. Refira-se a eles por essa ordem no prompt da imagem estática, por exemplo "a mulher da primeira imagem de referência", e reafirme seu cabelo, pele e figurino de qualquer forma; a referência fixa a identidade, as palavras fixam o quadro.
  • Descreva uma imagem estática como uma fotografia: enquadramento, onde cada pessoa está, o que estão fazendo no instante em que a cena começa, a luz, a lente. Diga "sem texto" em qualquer coisa que pudesse carregá-lo, como um remendo, uma placa ou uma tela, e termine cada prompt de imagem estática com "preenche o quadro inteiro de borda a borda, sem barras pretas, sem letterbox": tomadas de estabelecimento amplas geralmente retornam com barras de cinema embutidas na imagem, que o vídeo então herda.
  • Os retratos tendem a ficar mais velhos e mais arrumados do que o escrito. Dê uma idade duas vezes ("25, parece vinte e cinco e não mais velho"), descreva o cabelo por comprimento e comportamento ("cinco centímetros no topo, penteado para um lado, não penteado para trás, não um corte militar") e nomeie a luz e a paleta que o resto do filme usa, ou uma cena solitária retorna em uma temperatura de cor diferente dos seus vizinhos.
  • Quando uma imagem estática for rejeitada, mova-a para uma pasta rejected/ ao lado das outras em vez de deletá-la. A reexecução renderiza apenas o que está faltando, e a tentativa anterior permanece disponível se a nova perder uma composição que estava correta.
  • Abra um prompt de vídeo com "Comece exatamente no quadro fornecido" quando a cena tiver uma imagem estática e diga quem mantém o mesmo rosto, cabelo e roupas. Nomeie o número de adereços que não devem se multiplicar.
  • MiniMax H3 Max gera som nativo e fala sincronizada com os lábios. Para uma fala, cite as palavras exatas no prompt, nomeie o falante e peça movimento labial natural e sem legendas; coloque as mesmas palavras no campo dialogue do plano para que o juiz possa verificá-las. As durações aceitas são de 5 a 15 segundos por cena em 480P ou 768P; duas falas de diálogo precisam de seis segundos em vez de cinco. Os quadros não podem confirmar o que foi dito, então transcreva o áudio nativo (um whisper.cpp local é suficiente) e compare-o com o roteiro; o modelo também improvisa falas murmurantes em cenas de multidão, então leia a transcrição inteira, não apenas as falas que você escreveu.
  • Luz "pegando" ou "refletida" nos olhos de um personagem é renderizada literalmente como íris brilhantes. Diga que os olhos mantêm sua cor natural e proíba luz colorida neles.
  • Dois adereços segurados à mão tendem a se fundir em uma mão dentro de alguns quadros, independentemente do que a imagem estática mostra. Quando um adereço for importante, dê a ele um lugar que não seja uma mão (boca, bolso, mesa) ou planeje que ele seja opcional, e julgue a tentativa pela encenação em vez de qual mão segura o quê.
  • Termine uma cena com uma linha de visão em direção ao sujeito da próxima cena (um olhar para a primeira fila antes do corte para ela se virar) para que a junção seja lida como causa e efeito em vez de duas gerações.
  • Na montagem do FFmpeg, concat emite uma base de tempo de microssegundos que um xfade subsequente rejeita; fixe cada cadeia de vídeo para settb=1/<fps> antes e depois do concat ao misturar dissolves e cortes secas. Corte cada clipe para sua duração planejada para que o cartão de título mantenha sua execução completa e leia as durações do clipe dos arquivos em vez de assumi-las.
  • Escreva o prompt de vídeo como um diretor de fotografia, não como um gerente de palco. Abra com o meio e a física antes de qualquer bloqueio: "filme live-action fotorrealista <gênero>, não animação, não uma cena de corte de jogo", a lente, de onde a luz vem, o que o ar está fazendo (névoa, poeira de geada, chuva) e "tecido, cabelo e peso fisicamente críveis". Um prompt que é principalmente bloqueio e proibições ("permanece sentado", "ninguém se move do seu lugar", "mesmo rosto do primeiro quadro") retorna uma fotografia que se contorce: o modelo anima o que é instruído a animar e congela o resto, e a imobilidade parece falsa. Nomeie o que deve permanecer estável em uma cláusula (uma espada, ambos os rostos), não em cinco.
  • Dê a cada ação um relógio: "dentro do primeiro meio segundo", "no ponto médio", "no último segundo". Uma ação sem tempo ou nunca chega ou é gasta em uma preparação, e uma cena sem batida temporal retorna como um push-in lento em pessoas segurando uma pose.
  • Nunca escreva "câmera lenta" ou "elegante, sem pressa" em visual_style para um filme com uma luta nele: o estilo é reafirmado em cada cena, então cada troca chega flutuante e a luta não tem ritmo. Diga "velocidade em tempo real" no estilo e construa o tempo dentro dos prompts de luta: conte as trocas ("três cortes e três paradas nos primeiros dois segundos"), nomeie a parada ("lâminas travam, uma batida segurada"), depois a liberação ("ela quebra o travamento e o próximo ataque é mais rápido") e deixe uma rampa de velocidade existir apenas em um impacto. Contraste é o que se lê como ritmo; graça uniforme se lê como lento.
  • Uma saída para baixo se lê como uma queda. Uma figura que "pisa do beiral e cai na névoa" é vista por um espectador como alguém pulando de um prédio, por mais leve que o prompt faça parecer. Termine uma cena no telhado (um brinde, uma espada embainhada, um olhar), ou faça a descida em uma cena própria com uma aterrissagem visível que carregue peso.
  • Diálogo que sobrevive a um espectador é diálogo dramático, não aforismo. Dois epigramas simétricos ("a geada é fria, o vinho não") soam escritos; uma troca simples com uma reviravolta soa falada. Quando o usuário nomeia uma cena que ama, pegue emprestada a lógica de troca dessa cena (uma regra enunciada, uma brecha reivindicada, uma ordem seca, uma recusa atrevida) e coloque-a na boca de seus próprios personagens em seu próprio registro, depois mantenha cada linha curta o suficiente para ser dita nos segundos que você deu a ela.
  • Escolha texto-para-vídeo para tomadas amplas, paisagem, ação e escala. O modelo possui o movimento e o clipe parece filmado. Reserve imagem-para-vídeo para cenas cujo rosto ou composição exata deve corresponder a uma imagem estática e concentre a ação lá também. Uma imagem estática polida é uma responsabilidade para o movimento: quanto mais arrumada a fotografia, mais o clipe parece uma fotografia acordando. Quando o usuário preferir movimento convincente a um rosto idêntico, diga isso no plano: deixe still_prompt e reference_prompt vazios e carregue a identidade na description de cada personagem, que o prompt de produção reafirma textualmente em cada cena que lista o personagem.
  • Julgue a codificação pela fonte, não pelo tamanho do arquivo. Compare a taxa de bits de um clipe bruto do provedor com a do filme montado: um número final muito menor sob as mesmas configurações de codificador significa que os clipes eram estáticos, não que a codificação foi com perdas. Monte com CRF 16 ou inferior com -preset slow, mantenha o tamanho do quadro do provedor (sem redimensionar um clipe 768P em nenhuma direção) e diga isso na nota de entrega quando o usuário perguntar se a qualidade foi perdida na pós-produção.
  • Antes de cortar uma cena de diálogo para sua duração planejada, leia os carimbos de data/hora das palavras da transcrição (whisper-cli -ml 1) e mantenha o clipe longo o suficiente para que a última palavra termine antes do fade de áudio de saída começar; uma linha que sobrevive ao clipe ainda pode perder sua sílaba final para um dissolve. Retranscreva a janela de diálogo do filme montado, não apenas o clipe bruto.
  • Uma transcrição de um clipe sem fala não é prova de fala. whisper inventa linhas curtas e créditos de legenda sobre ambiência constante; antes de regravar para uma linha "improvisada", confirme-a com carimbos de data/hora e um envelope de volume (a fala aparece como picos sobre o piso de ambiência).
  • Uma imagem estática editada a partir de um retrato de referência herda o rosto do retrato, mas inventa o clima. Fixe o céu, a precipitação e a estação em cada prompt de imagem estática ("noite clara, geada nas telhas, sem neve") ou um close-up com correspondência facial chega em uma nevasca que o resto do filme não tem.

Habilidades Relacionadas