一键导入
manga-generation
Generate multi-panel manga from character reference and story beats
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate multi-panel manga from character reference and story beats
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Align text to audio timestamps using Qwen3-ForcedAligner (~30ms precision)
Full pipeline from manga panels to animated video. Two audio modes: dialogue (Qwen3-TTS + karaoke captions) or music (ElevenLabs + rolling lyrics).
Burn karaoke captions into video using FFmpeg ASS subtitles (~20s for 16s video)
Generates original background music using Google's Music Generation API. Creates soundtracks matched to scene mood and timing.
Concatenates video clips and optionally adds background music using FFmpeg.
Generates anime character images from photo analysis using Nano Banana Pro (gemini-3-pro-image-preview). Creates character sheets with full body and portrait views at 2K resolution.
| name | Manga Generation |
| description | Generate multi-panel manga from character reference and story beats |
| triggers | ["User wants to create a manga","User provides story beats or narrative","Character has been created and user wants a story"] |
| model | gemini-3-pro-image-preview (Nano Banana Pro) |
Generate sequential manga panels with visual continuity using Nano Banana Pro.
| Parameter | Type | Required | Description |
|---|---|---|---|
character_image_path | Path | Yes | Reference image for character consistency |
character_name | str | Yes | Character name for prompts |
story_beats | list[str] | Yes | 2-6 visual descriptions (one per panel) |
dialogues | list[str] | No | Optional dialogue for each panel |
style | str | No | Visual style (default: manga) |
Include camera direction in story beats for best results:
"Close-up: Momo's eyes widen in surprise"
"Wide shot: The room is a mess of scattered toys"
"Low angle: Momo leaps heroically toward the treat"
"Medium shot: Momo lands gracefully, treat in mouth"
async for event in generator.generate_manga_streaming(...):
if event.type == 'panel':
show_panel(event.data['image_url'])
result = await generator.generate_manga(...)
for panel in result.panels:
print(panel.image_url)
from skills.generate_manga.generate_manga import MangaGenerator
generator = MangaGenerator(client=gemini_client)
# Streaming (for progressive UI)
async for event in generator.generate_manga_streaming(
character_image_path=Path("outputs/characters/momo_full_body.png"),
character_name="Momo",
story_beats=[
"Wide shot: Momo spots a butterfly in the garden",
"Medium shot: Momo crouches, ready to pounce",
"Close-up: Momo's intense focus, whiskers twitching",
"Low angle: Momo leaps into the air, paws extended"
],
dialogues=["Ooh!", "Must... catch...", "", "GOTCHA!"],
style="manga"
):
if event.type == 'panel':
# Display panel immediately
display(event.data['image_url'])
assets/outputs/manga/{manga_id}_panel_{n}.pngBefore generating panels, Gemini Pro (gemini-3-pro-preview) analyzes each character reference sheet and produces a 2-3 sentence appearance description. This runs once per character (~2s), not per panel.
Each panel prompt includes two anchors per character:
[IMAGE N]APPEARANCE: VibeCoder is an older man with long grey hair, full grey beard, black hoodie, gold headphones...This prevents the image model from hallucinating different characters on complex story beats.
For panels 2+, the prompt includes:
[IMAGE N - PREVIOUS PANEL])This ensures consistent backgrounds, lighting, color palette, and character identity across all panels.