toobusy Keyframe Maker
From one-line idea to a full storyboard's keyframe prompts
- clip
- product_image
- product_brief
- shot_beats
- visual_anchor
- keyframe_prompts
- keyframe_prompt_line
- korean_story
- transition_prompts
- prompt_relay_block
- shot_table_json
- validation_report
The pre-production gap in ComfyUI is real: the tools for thinking about a video are barely there, so people plan ad campaigns in Google Docs and storyboard in Photoshop, then drag the results into the graph. toobusy Keyframe Maker drags the planning step into ComfyUI itself. You give it a one-line idea, a style note, and a shot count; it returns a full planning package - product brief, shot beats, a visual anchor, keyframe prompts, transition prompts, even a Korean story interpretation. It's the node that turns "Idea → storyboard → shoot" from a document chore into a graph.
How it works
It's a staged LLM pipeline over ComfyUI's TextGenerate node (so it needs a text-generation-capable clip): first a product brief from your idea + product image, then shot beats, then a visual anchor, then the per-keyframe image prompts, then transition prompts between keyframes. output_mode controls how deep the pipeline goes - fast stops at keyframe image prompts (fastest), standard adds transitions (for video production), full adds the Korean story interpretation (for review/explaining to a client). Each stage has its own output socket, so you can grab the pipeline at any depth.
The product_image input is worth understanding because of its three modes: exact product identity (the image defines what the product is), design reference only (the idea defines the product, the image supplies shape/material/color - the default), and packaging/form reference. There's also a product_brief_override and shot_beats_override - paste a brief or beats you already wrote and the node skips straight past that stage, which is handy when you have a real client brief you don't want the LLM re-deriving.
The inputs that matter
clip- the LLM. The README says it plainly: output quality is entirely downstream of what you connect here.idea- the core event/transformation/product usage. This is your whole creative input; make it specific.style- tone, shooting style, lighting, composition.fixed_elements- what must survive every cut (product, characters, palette, background rules). Anything that should change goes inidea, not here.mode- Product Commercial / Music Video / Short Drama; picks the framing templates.shot_count(6) - how many keyframes/shots. 1–24.output_mode- fast / standard / full as above.
Outputs and where they go
product_brief,shot_beats,visual_anchor,keyframe_prompts,transition_prompts- the planning text, stage by stage.keyframe_prompt_line- a LIST output of individual keyframe prompts, which is the one that feeds batch generation.korean_story- the full-mode narrative interpretation.prompt_relay_block,shot_table_json,validation_report- structured/aggregated forms for other nodes or review.
Wire keyframe_prompt_line into a batch or a TextGenerate-driven image node, or feed keyframe_prompts into the pack's Storyboard Board. The output is text; the point is that it's the right text, structured for generation.
Install and gotchas
Standard pack install (Manager "toobusy", or clone + restart); no optional deps. The clip is the real prerequisite, and the pack's own warning applies hardest here: for ComfyUI's TextGenerate wrapper, Gemma-family models are the safe choice - a model that loads fine but can't actually run generate() will fail silently-ish, and that's a clip problem, not a Keyframe Maker bug.
Two notes from using it. First, garbage in, garbage out - the node turns a specific idea into a consistent plan, but a vague idea ("make something cool") produces six vague keyframes. The fixed_elements field is where you stop concept drift across cuts; use it. Second, the LLM's imagination is a feature until it isn't - it will happily add details you didn't specify (the subject-drift failure mode from the prompt-enhancer world). If a shot comes back wrong, tighten fixed_elements and style, not the output mode.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| mode | COMBO | Product Commercial | 3 options: Product Commercial, Music Video, Short Drama |
| output_mode | COMBO | standard | fast: 가장 빠름. 키프레임 이미지 프롬프트까지만 생성 / standard: 영상 제작용. 전환 프롬프트까지 생성 / full: 설명/검수용. 한국어 스토리 해석까지 생성 |
| idea | STRING | 한 여성이 집안에서 향수를 공중에 뿌리자, 집이 갑자기 궁전으로 변하며 여자의 모습도 화려한 공주로 변하게된다. | 광고의 핵심 사건, 변신, 제품 사용 상황을 적습니다. |
| style | STRING | cinematic, 고급 향수 광고, elegant composition | 광고 톤, 촬영 스타일, 조명, 구도, 장르 느낌을 적습니다. |
| fixed_elements | STRING | 금빛 조명,웜톤 | 모든 컷에서 반드시 유지할 제품, 인물, 색감, 배경 규칙을 적습니다. 변신해야 하는 요소는 idea에 적어주세요. |
| shot_count | INT | 61–24 | 생성할 키프레임/샷 개수입니다. |
| seed | INT | 10–18446744073709550000 | — |
| product_imageopt | IMAGE | Optional product/reference image. By default this image is used as a visual design reference for shape, material, color, and packaging tone. The core idea still decides what the product is and how it is used. To let the image define product identity, set product_image_mode to exact product identity. | |
| product_image_modeopt | COMBO | design reference only | exact product identity: image defines product/category. design reference only: idea defines product/use; image supplies shape/material/color. packaging/form reference: idea defines product/use, image form is borrowed more strongly. |
| product_brief_overrideopt | STRING | 제품/주제 분석 결과를 직접 넣으면 이미지/텍스트 분석 단계를 건너뜁니다. | |
| shot_beats_overrideopt | STRING | 샷 비트를 직접 넣으면 샷 비트 생성 단계를 건너뜁니다. |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| product_brief | STRING | — |
| shot_beats | STRING | — |
| visual_anchor | STRING | — |
| keyframe_prompts | STRING | — |
| keyframe_prompt_line | STRING | — |
| korean_story | STRING | — |
| transition_prompts | STRING | — |
| prompt_relay_block | STRING | — |
| shot_table_json | STRING | — |
| validation_report | STRING | — |