Communitygithub.com

Comic Story Video

Transforma qualquer tópico em um vídeo curto vertical onde as imagens contam a história — traços de lineart gerados sequencialmente, balões de fala adicionados por código, narração em voz única e legendas grandes. O áudio é a linha principal: a narração deve ser uma história compreensível por si só.

O que é Comic Story Video?

Comic Story Video é uma skill para agentes de IA (como Claude Code, Cursor, Codex) que automatiza a produção de vídeos verticais no estilo 'história em quadrinhos narrada', com duração de 110 a 135 segundos (1080×1920). Ela é ideal para criadores de conteúdo que desejam produzir vídeos de divulgação científica, história, humor ácido ou qualquer tema que se beneficie de uma narrativa visual com desenhos animados. A skill opera em cinco estágios principais: definição da história (com story_line, question e answer obrigatórios), geração de imagens (respeitando prompts consistentes e referência de estilo), montagem do vídeo (com narração, balões, legendas e renderização traço a traço), verificação de qualidade e entrega. Suporta plataformas como macOS, Linux e Windows, utilizando scripts Python e FFmpeg. Entre suas regras rigorosas, destaca-se a exigência de que a narração conte uma história completa e compreensível, que os balões de fala não sejam renderizados no motor (para evitar perda de qualidade) e que a geração de imagens seja feita com baixa similaridade à referência (0.3-0.5) para garantir variação de poses. A skill também fornece referências detalhadas para criação de roteiros, prompts, solução de problemas e design de voz, garantindo que o resultado final seja profissional e coerente.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liangdabiao/comic-story-video/tree/HEAD

Perguntar na sua IA favorita

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

Documentação


name: comic-story-video version: 3.0.0 display_name: 漫画面讲故事 display_name_en: Comic Story Video description_zh: 把任意选题做成「图片在讲故事」的竖屏短视频——生成式线稿逐笔描出 + 代码叠台词气泡 + 单口配音 + 大字幕。声音是主线:念白本身必须是一条听得懂的故事。适用于漫画风格解说、历史与知识类短视频、贱萌吐槽向科普,或用户要求「像混子哥那样讲」「图片讲故事」「漫画分镜视频」时。 description_en: Turns any topic into a vertical "pictures tell the story" short video — generated line art traced stroke by stroke, speech bubbles composited in code, single-voice narration with burned-in subtitles. Audio leads: the narration alone must be a followable story. Use for comic-style explainers, history/knowledge shorts, snarky pop-science, or requests like "mixige-style", "comic storytelling", "let the images tell the story". description: 把任意选题做成「图片在讲故事」的竖屏短视频——生成式线稿逐笔描出 + 代码叠台词气泡 + 单口配音 + 大字幕。声音是主线:念白本身必须是一条听得懂的故事。适用于漫画风格解说、历史与知识类短视频、贱萌吐槽向科普,或用户要求「像混子哥那样讲」「图片讲故事」「漫画分镜视频」时。触发词:漫画讲故事、混子哥风格、图片讲故事、漫画分镜视频、贱萌科普、历史短视频、comic storytelling、mixige。 agent_created: true

História em Quadrinhos Contada por Imagens

Transforme qualquer tópico em um vídeo vertical de 110–135 segundos: o traço do desenho é desenhado traço por traço, os balões de fala aparecem um por um, narração em voz única com legendas grandes. Produto: <projeto>/out/final.mp4 (1080×1920).

O áudio é a linha principal. Se você ouvir a faixa de áudio sozinha, deve ser uma história que faz sentido; as imagens são responsáveis por adicionar drama, não são pré-requisito para a compreensão.


Cinco Passos

① Definir a História → <projeto>/story.json

Crie o diretório, copie o modelo:

mkdir -p <projeto>/raw && cp templates/comic/story.example.json <projeto>/story.json

Primeiro preencha as três primeiras linhas do arquivo. Se não conseguir preencher, não escreva os quadros:

"story_line": "Quem / quer fazer o quê / onde está travado / resultado, em uma frase",
"question":   "A pergunta que abre o vídeo",
"answer":     "A resposta que fecha o último quadro e responde a pergunta"

A question deve destacar um ponto "que não faz sentido", não "o que é isso". A resposta não deve ser uma linha do tempo.

Em seguida, escreva a narration (narração) e bubbles[].text (texto dos balões) para cada quadro. A narração deve ter 440–540 caracteres (pontuação conta), calculando com base em 4.0 caracteres/segundo.

python scripts/pipeline.py <projeto> --stage script     # Mas não prossiga

Critério para ①: As três linhas estão completas → contagem de caracteres dentro do intervalo → cada quadro tem narração → balões não saem do quadro → a função existe em charts.py.

② Gerar Imagens → <projeto>/raw/<id>.png

Escreva todos os prompts primeiro, depois gere as imagens de uma vez. Gerar uma imagem de cada vez pode levar uma ou duas horas, e alterar prompts no meio do caminho pode fazer o estilo visual variar.

python scripts/comic_gen.py <projeto> --list     # Lista prompts não gerados, pula os já gerados

Gere as imagens uma a uma seguindo os prompts listados. Salve as imagens em raw/. Deve ser imagem para imagem, usando assets/reference/01-style-anchor.png como referência, com similaridade baixa.

python scripts/contact_sheet.py <projeto>        # Monte uma folha de contato, veja uma vez
python scripts/pipeline.py <projeto> --stage image

Critério para ②: Na folha de contato, verifique apenas duas coisas: se quem deve estar presente está presente e se não há áreas totalmente pretas ou em branco. Ignorar todo o resto (texto esparso nas imagens, diferença de meia cabeça na altura, linhas sujas, cauda deslocada por dezenas de pixels) e seguir em frente.

③ Produção → final.mp4

python scripts/comic_run.py <projeto>

Execute sequencialmente: narração → camada de balões / infográficos → tela de encerramento → renderização traço a traço → composição vertical → queima de legendas. Para reexecutar uma etapa específica, use o comic_*.py correspondente.

④ Verificação

python scripts/verify_media.py --file <projeto>/out/final.mp4 --expect <segundos>
ffmpeg -y -ss 3 -i <projeto>/out/final.mp4 -vframes 1 <projeto>/check/03.png

Extraia dois frames (no 3º segundo e na duração total do quadro × 0,75) e compare: a imagem está se movendo? a cor de fundo está correta? as legendas estão saindo do quadro? Em seguida, extraia a faixa de áudio e ouça de olhos fechados: se você consegue dizer "quem queria o quê, o que aconteceu em cada etapa, como terminou", está aprovado.

⑤ Entrega

<projeto>/out/final.mp4. Se precisar da versão widescreen, use out/story_flat.mp4.


Dez Regras Rígidas

As três primeiras regras são sobre a história; se violadas, significa que "depois de ouvir, não se sabe o que está sendo dito". As sete seguintes são sobre a produção; se violadas, significa que a imagem ou o som está errado.

1. Preencha primeiro story_line / question / answer. Se não conseguir preencher, não escreva os quadros. Sem essas três linhas, escrever oito quadros e só perceber que está desconexo depois é o tipo mais caro de retrabalho.

2. Escolha a estrutura com base na relação entre protagonista e obstáculo; não use a mesma tabela de quadros para todos os tópicos.

Protagonista vs. ObstáculoEstrutura
Um adversário específico, vai e voltaAtaca → defende → intensifica → defende → golpe mais forte → defende
O próprio caminho não funciona maisO velho ofício está morrendo → tenta várias coisas sem sucesso → algo inesperado surge → aposta nisso → dá certo → só então entende o que estava vendendo
Um fenômeno inexplicável, investiga ao contrárioO fato estranho → encontra a pessoa → a dificuldade dela na época → como ela resolveu
Chegou ao topo, derrubado por algo insignificanteO auge → uma rachadura → ninguém levou a sério → aposta errada → colapso

O número de quadros segue a história, de 5 a 9 quadros.

3. Não numere eventos paralelos como rodadas. Se você trocar "primeira rodada" por "primeira vez" e a história não perder nada, então não é uma rodada — é um rótulo colado — delete-o. Da mesma forma, não use jargões de comentarista como "intensificar", "atingir o ápice", "mostrar as cartas", "segredos" — o público ouve códigos.

4. A narração deve ser uma história completa e compreensível; os balões devem ser falados. "Ele respondeu algo", "Ela escreveu duas palavras", "Uma frase o iluminou" — o ouvinte só sabe que alguém falou, mas não o que foi dito. Balões que repetem a narração não são um erro; a legenda é uma repetição do áudio.

5. O modelo gerador desenha apenas o traço; o texto é sobreposto por código. No prompt, escreva "não desenhe nenhum texto" — isso é uma prevenção, não um critério de aceitação da imagem.

6. Balões não entram no mecanismo de renderização. O mecanismo binariza cores em blocos pretos. Os balões são cronometrados na composição, com ritmo mais controlável.

7. Não passe element_plan. Se passar, cada objeto desenha no máximo 1,6 segundos e para; um quadro inteiro pode ser desenhado em dois segundos. Sem ele, o orçamento é distribuído por √área, com duração total constante.

8. Deve ser imagem para imagem; a similaridade com a imagem de referência deve ser baixa (0,3–0,5). Com similaridade alta, o modelo copia a pose da imagem de referência, ignorando a ação que você escreveu.

9. Os personagens devem ser escritos em characters, e no prompt use {nome} para referenciá-los; quaisquer dois personagens devem ter pelo menos três diferenças. Descreva claramente: adereços de cabeça, barba, roupas, tipo físico. O protagonista deve usar adereços de cabeça incomuns (lenço macio / sem coroa); coroas e capacetes quadrados são para antagonistas e soldados.

10. Use colorkey + overlay para cor de fundo; as legendas devem ser queimadas no ASS e declarar PlayResX/Y. Usar blend=all_mode=multiply torna a cor de fundo verde fluorescente; SRT enviado ao libass cai no sistema de coordenadas 384×288, fazendo o texto voar para fora do quadro.


O Que Consultar em Caso de Problemas

SituaçãoLeia
Não sabe como transformar um tópico em história, o que colocar em cada quadro, como terminarreferences/story.md
Escrever prompts, definir personagens, layout de balões, TTS, parâmetros de renderização e composiçãoreferences/production.md
Erros de imagem / som / duraçãoreferences/troubleshooting.md
Modelos específicos de prompt e palavras de restriçãoreferences/prompt-recipes.md
Sílabas / timbre de vozreferences/voice-design.md
Erro 403 no edge-ttsreferences/apiz-tts-fallback.md

Estrutura de Diretórios

<projeto>/
├── story.json      Configuração única: título, história em três linhas, narração/balões/prompt de cada quadro
├── charts.py       Funções de plotagem para quadros de infográfico (necessário apenas se houver quadro de gráfico)
├── raw/            Imagens originais do modelo gerador ← Você coloca aqui
├── boards/ bubbles/ charts/ audio/ out/    ← Saídas dos scripts
└── subs.ass

Primeira Vez Usando

bash scripts/setup.sh                                          # macOS / Linux / Git Bash
powershell -ExecutionPolicy Bypass -File scripts/setup.ps1      # Windows
python scripts/self_test.py                                    # 6 verificações automáticas, execute uma vez

Habilidades Relacionadas