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.
- Procure por
FAL_KEYno ambiente do processo, depois em um.envlocal do projeto. A CLI lê apenas o ambiente, então carregue o arquivo no shell que o executa, por exemplo comset -a; . ./.env; set +a, e nunca imprima o valor. - 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.
- Nunca ecoe, registre, resuma, coloque em um prompt ou faça commit da chave. Armazene-a apenas em um
.envlocal ignorado com modo0600, e verifique se o Git ignora o arquivo antes de qualquer commit ou push. - 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 cominktofilm 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-codexpara julgamento, e o planejador e juiz padrão deinktofilm 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, ouinktofilm 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-commande--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.
- Escreva
script.mdeplan.jsonvocê mesmo, depoisinktofilm 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. - Grave com
--no-judgequando você for julgar no loop, ou com--judge-claudequando a execução for sem supervisão.--no-judgeexecuta as verificações de mídia, seleciona a tentativa mais recente de cada cena, escrevesuite.jsonpara os clipes selecionados e monta umfinal.mp4com corte simples. - Para cada cena,
inktofilm frames shots/<cena>-attempt-1.mp4amostra os quadros que um juiz veria. Olhe para eles, escreva o arquivo de resultados revisados e reproduza-o cominktofilm run suite.json --semantic-results reviewed.json -o review. - 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.jsonefinal.mp4seguem a escolha do revisor. - 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
charactersda 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
dialoguedo 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,
concatemite uma base de tempo de microssegundos que umxfadesubsequente rejeita; fixe cada cadeia de vídeo parasettb=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_stylepara 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_promptereference_promptvazios e carregue a identidade nadescriptionde 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.