Communitygithub.com

ai-short-drama

Transforme uma ideia de história, roteiro ou capítulo de romance em um episódio completo de minissérie — personagens consistentes em todos os planos, diálogos falados ou narrador em voice-over, legendas e um MP4 no final. Usa apimodels.app (Seedance 2.0 para vídeo, Nano Banana para imagens, MiniMax para voz) com uma única chave de API.

O que é ai-short-drama?

Esta skill transforma uma ideia narrativa, roteiro ou capítulo em um episódio completo de minissérie vertical em formato MP4, com personagens consistentes em todos os planos, diálogos ou narração em voice-over, e legendas sincronizadas. Ela é ideal para criadores de conteúdo, escritores e desenvolvedores que desejam produzir vídeos de drama curtos, minisséries, adaptações de roteiros ou '漫剧' (donghua IA) de forma automatizada e acessível. A skill utiliza um único script (`scripts/drama.mjs`) que gerencia todo o pipeline: estimativa de custos, geração de fichas de personagens/locais (via Nano Banana), renderização de cada plano (via Seedance 2.0), síntese de voz (narração via MiniMax), e montagem final com ffmpeg (normalização, mixagem, legendas). A consistência dos personagens é garantida gerando uma ficha de referência (retrato + vistas frontal/lateral/traseira) para cada um, que é passada como imagem de referência para o Seedance 2.0 em cada plano. A skill suporta dois modos: diálogo (personagens falam com sincronia labial) ou narração (voz do narrador sobre som ambiente). O fluxo é seguro contra falhas e custos duplicados: cada tarefa tem um ID persistente que permite retomada após crash ou timeout sem cobrança extra. O usuário deve executar `scripts/drama.mjs` sempre, jamais chamar a API diretamente. A skill prioriza transparência de custos: sempre execute `estimate` primeiro e mostre ao usuário a lista de planos, duração total, modelos e tabela de preços antes de prosseguir. Ela também exige consentimento para pessoas reais e rejeita conteúdo sexual, odioso ou difamatório. As saídas são baixadas localmente na pasta do projeto; os URLs da API expiram em 30 dias.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/stimQQ/ai-short-drama/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

AI short drama (minissérie IA)

História entra, episódio sai. Você escreve a história em um project.json (personagens, locais, planos). O scripts/drama.mjs cuida de tudo que custa dinheiro ou é fácil de errar:

project.json ─ estimativa ─ elenco ─ (voz) ─ planos ─ montagem ─▶ episode.mp4 + .srt
               gratuita      imagem de   narração   Seedance   ffmpeg: normaliza,
               valida       referência  modo only   renderiza  mixa a narração,
               + preços     por person. cada plano  junta, legendas
                             e local

Como os personagens permanecem os mesmos: cada personagem recebe uma ficha de referência (retrato + vistas frontal/lateral/traseira). Cada plano passa as fichas dos personagens presentes para o Seedance 2.0 como imagens de referência, e o prompt diz qual imagem é quem.

Regras

  1. Sempre execute scripts/drama.mjs. Não chame a API com curl ou fetch. O script armazena cada ID de tarefa no momento em que ela existe, então uma falha ou um timeout retoma a mesma tarefa em vez de pagar por ela novamente. Chamadas manuais perdem isso.
  2. Leia references/project-schema.md e references/shot-writing.md antes de escrever project.json. O guia de escrita de planos decide se o episódio parece um filme ou doze clipes desconexos.
  3. Execute estimate primeiro e mostre ao usuário o resultado: lista de planos, duração total, modelos e a tabela de preços. Aguarde uma confirmação antes de cast / shots. O script recusa qualquer etapa acima de $1 sem --yes. Só passe --yes depois que o usuário concordou com esse valor.
  4. Mostre ao usuário as fichas de personagens antes de renderizar os planos. As fichas custam cerca de $0,02 cada; os planos custam 10–100× mais. Se um rosto, uma roupa ou o estilo estiver errado, corrija a aparência (look) e execute cast --redo <id> agora. Cada plano herdará isso.
  5. Para um novo projeto, renderize um plano primeiro (shots --only s1). Veja-o com o usuário, depois renderize o restante. Pule isso apenas para projetos muito curtos (três planos ou menos) ou quando o usuário disser.
  6. Nunca invente um nome de modelo. Use apenas os modelos na tabela abaixo. Se o usuário pedir outro, diga que esta skill não oferece suporte a ele.
  7. Tarefas com falha nunca são cobradas. Diga isso claramente quando uma falhar, explique o porquê (o script imprime o motivo e o próximo passo), e ofereça a repetição.
  8. Não mencione provedores upstream ou roteamento. Fale sobre os nomes dos modelos neste arquivo e nada por trás deles.
  9. Nada de pessoas reais identificáveis sem seu consentimento, e nada sexual, odioso ou difamatório sobre alguém real. Recuse esses pedidos.

Fluxo de trabalho

S=/caminho/absoluto/para/esta/skill/scripts/drama.mjs     # você sabe seu diretório base; use-o
node $S check                                         # chave, saldo, ffmpeg
mkdir -p dramas/meu-episodio                            # uma pasta por episódio, no workspace do usuário
# escreva dramas/meu-episodio/project.json               (veja references/project-schema.md)
node $S estimate dramas/meu-episodio/project.json --prompts
node $S cast     dramas/meu-episodio/project.json      # depois MOSTRE as imagens em cast/
node $S voice    dramas/meu-episodio/project.json      # modo narração apenas
node $S shots    dramas/meu-episodio/project.json --only s1   # verifique um, depois:
node $S shots    dramas/meu-episodio/project.json
node $S assemble dramas/meu-episodio/project.json --burn-subs
node $S status   dramas/meu-episodio/project.json      # a qualquer momento: progresso, gasto, o que falta
  • Renderizações são lentas. Um plano geralmente leva de 2 a 8 minutos, e os planos rodam 3 de cada vez. Antes de shots, informe ao usuário aproximadamente quanto tempo levará. Não o deixe olhando para um terminal silencioso.
  • Qualquer comando pode ser reexecutado com segurança. O trabalho concluído é ignorado. As tarefas em andamento são retomadas de onde pararam. Planos com falha são repetidos apenas com --retry-failed.
  • Editar um plano após sua renderização não o re-renderiza. status marca como "inputs alterados". Re-renderize-o propositalmente com shots --redo <id>; isso é pago novamente.
  • Mostre o resultado: o caminho final do MP4, sua duração, e o .srt. Depois diga o que foi gasto: status imprime o valor exato cobrado, lido de volta da API.
  • Tudo é baixado para a pasta do projeto. Os URLs de resultado da API expiram após 30 dias, então a pasta é a cópia que dura.

Diálogo ou narração

Escolha antes de escrever os planos:

"mode": "dialogue""mode": "narration"
Quem falaPersonagens na tela, com sincronia labial. O Seedance gera as vozes junto com o vídeo.Um narrador em voice-over (texto para fala), mixado sobre o som ambiente de cada plano.
Bom paraCenas movidas por conversa; minisséries estilo live-action.漫剧 / dramas de IA em quadrinhos, adaptações de romances, vídeos de recapitulação e narrativa.
Consistência de vozA voz de um personagem pode variar um pouco de plano para plano.Uma voz idêntica para todo o episódio.
Duração do planoVocê define duration (4–15 s). Mantenha cada fala curta o suficiente para caber.Definida automaticamente para caber cada linha de narração, até 15 s.
LimitesCerca de 1–2 falas curtas por plano de 5 s. Sem controle exato sobre quem fala quando.Personagens não falam na tela.

Se o usuário não disser, use narração para qualquer coisa descrita como 漫剧, um quadrinho, um romance ou uma recapitulação de história. Use diálogo para cenas construídas em conversa.

Modelos e custos

O script escolhe um video_model padrão baseado no estilo. Looks estilizados (anime, quadrinhos, 国漫, cartoon, aquarela) recebem dreamina-seedance-2-0-mini. Todo o resto recebe seedance-2.0-mini. Substitua em project.json quando o usuário quiser algo diferente.

O usuário quervideo_modelResoluçõesPor segundo de vídeo
Episódio estilizado (anime, quadrinhos, 国漫); rascunhosdreamina-seedance-2-0-mini480p / 720p$0,0225 / $0,048
Estilizado, um passo acima do minidreamina-seedance-2-0-fast480p / 720p$0,0644 / $0,1372
Estilizado, qualidade final até 1080pdreamina-seedance-2-0480p / 720p / 1080p$0,10 / $0,22 / $0,55
Pessoas fotorrealistasseedance-2.0-mini480p / 720p$0,044 / $0,095
Fotorrealista, um passo acima do miniseedance-2.0-fast480p / 720p$0,071 / $0,153
Fotorrealista, qualidade final até 1080pseedance-2.0480p / 720p / 1080p$0,092 / $0,197 / $0,492

Outros custos:

  • Fichas de personagem e local: nano-banana-2-1, $0,022 cada em 1K.
  • Narração: minimax-speech-2.8-turbo, $0,04 por 1.000 caracteres. Um clipe curto é cobrado no mínimo $0,004.

Um episódio de um minuto (12 planos × 5 s, 5 fichas) custa cerca de:

  • $1,46 em dreamina-seedance-2-0-mini 480p
  • $2,99 em dreamina-seedance-2-0-mini 720p
  • $2,75 em seedance-2.0-mini 480p
  • $29,63 em seedance-2.0 1080p

Sugira 480p para a primeira passagem. Uma segunda passagem em 720p apenas re-renderiza os planos ("resolution": "720p", depois shots --redo <ids>). As fichas permanecem.

Por que as linhas fotorrealistas existem: os modelos dreamina-* recusam imagens de referência que pareçam uma pessoa real, e uma ficha de personagem fotorrealista pode acionar isso. O script reconhece essa recusa e diz para você trocar para seedance-2.0-mini. A tarefa recusada não é cobrada.

Os preços são preços de tabela, verificados em 30/09/2026. status mostra o que foi realmente cobrado.

A chave da API

Execute node $S check primeiro. A chave vem de APIMODELS_API_KEY, ou de ~/.apimodels/credentials, ou de ~/.apimodels/credentials.json. O último é escrito por npx apimodels-mcp login, então um usuário que já fez login em qualquer ferramenta apimodels já está configurado.

Se não houver chave, execute node $S login você mesmo e dê ao usuário o link que ela imprime. Eles fazem login em apimodels.app e clicam em Autorizar. Uma nova chave é escrita em ~/.apimodels/credentials e nunca aparece nesta conversa. Depois execute check novamente e prossiga.

Se login não funcionar (sem navegador na máquina), não peça a chave no chat. Dê ao usuário um comando para colar em uma nova janela de terminal, com o caminho absoluto do script preenchido:

read -s KEY && printf %s "$KEY" | node /CAMINHO/ABSOLUTO/scripts/drama.mjs save-key && unset KEY

As chaves são criadas em https://apimodels.app/console/api-keys.

Manipulação da chave:

  • Nunca a ecoe de volta.
  • Nunca a passe como argumento de comando.
  • Nunca a escreva na pasta do projeto.
  • Se uma chave aparecer na conversa, diga ao usuário para rotacioná-la.

Erros

O script imprime o motivo e o próximo passo. Em palavras simples:

Você vêSignificadoFaça
401Chave ruim ou ausenteExecute login novamente
402Saldo insuficienteRecarregue em https://apimodels.app/console/credits. Os planos finalizados são mantidos.
"looks like a real person"dreamina-* recusou uma imagem de referênciaTroque video_model para seedance-2.0-mini, depois shots --retry-failed
Recusa de revisão de conteúdoO prompt ou uma linha foi recusadoReformule esse plano. Repetir o mesmo texto não adiantará.
Ocupado / timeoutCarga upstreamExecute shots --retry-failed um pouco mais tarde
"still running"Mais de 25 minutosExecute shots novamente mais tarde; ele retoma a tarefa, sem pagamento
código de saída 3Etapa custa mais de $1Confirme o valor com o usuário, depois adicione --yes

O sucesso não é 100%: um plano ocasional falha, e uma repetição geralmente funciona.

O que esta skill não faz

Diga diretamente, em vez de improvisar:

  • Não garante consistência perfeita. Rostos podem variar em planos abertos e com três ou mais personagens no mesmo quadro. Mantenha 1–2 personagens por plano (veja shot-writing).
  • Nenhum plano tem mais de 15 s. Momentos mais longos são divididos em vários planos.
  • Não sincroniza lábios com uma faixa de voz gravada pelo usuário.
  • Não controla o primeiro quadro exato de um plano. Os planos são orientados por imagens de referência e pelo prompt.
  • Os tempos das legendas são aproximados. Eles são distribuídos uniformemente dentro de cada plano. Edite o .srt se o tempo exato for importante.
  • Não publica em lugar nenhum. A saída é um MP4 local mais um SRT.

Habilidades Relacionadas