mirror of
https://github.com/Comfy-Org/comfy-skills.git
synced 2026-11-04 23:37:45 +00:00
[PR #38] [MERGED] docs(skills): add technique-consistent-characters recipe #36
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/comfy-skills#36
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/comfy-skills/pull/38
Author: @mattmillerai
Created: 10/5/2026
Status: ✅ Merged
Merged: 10/22/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-18928-technique-consistent-characters📝 Commits (1)
06d3d94docs(skills): add technique-consistent-characters recipe📊 Changes
1 file changed (+62 additions, -0 deletions)
View changed files
➕
skills/technique-consistent-characters.md(+62 -0)📄 Description
ELI-5
When you ask for the same two characters across several shots, the model drifts. Each shot gives them slightly different faces, and in two-person scenes it often draws one of them twice. This adds a recipe agents can fetch with
get_creative_technique(asconsistent-characters). It walks them through what works: make one clean reference per character, plug each reference into its own numbered slot, name each slot and the exact head-count in the prompt, and reuse the same references for every shot and every video clip.What this is
One new file,
skills/technique-consistent-characters.md(4,782 bytes). It is the thirdtechnique-*recipe and copies the shape oftechnique-combine-people.mdexactly: no frontmatter, a first line that ends in: $ARGUMENTS, thenFollow these steps exactly:, seven## Step Nsections and a closing## Key learnings:. Following the README authoring rule, it names node classes for steering but sends the agent toget_nodefor slot names and tosearch_templatesfor live templates.The content reaches agents on its own through the MCP server's daily skills refresh, which reads
skills/. No server change is needed.For a two-character still or video, the recipe tells the agent to make each character's reference in a separate run, wire one reference per auto-grow slot with slot names copied from
get_node, and state the person count and per-slot identity in every prompt. If a character still duplicates, it falls back to a split image-edit pass. Every shot reuses the same references and never chains the previous output. Reference-to-video templates and motion-control templates are found by search.Judgment calls
KlingOmniProImageToVideoNode.reference_imagesas an auto-grow slot. In the bundledobject_infosnapshot,reference_imageson bothKlingOmniProImageToVideoNodeandKlingOmniProImageNodeis a singleIMAGEinput that takes a batch ("Up to 7 reference images" / "Up to 10"). It is notCOMFY_AUTOGROW_V3. Wiring it per-slot would fail. So the recipe sends Kling references throughBatchImagesNode, with one reference per auto-grow slot. The auto-grow claim stays only where it holds:GeminiNanoBanana2V2(model.images.image_*, max 14) andMiniMaxH3ReferenceToVideo(ref_images, prefixref_image_, max 9).min: 0, so I did not guess whether the first slot is_0or_1. The recipe writesref_images.*and points toget_node.search_templates. I checked that each family has a template in the server'sdata/templates.json(e.g.api_seedance2_5_r2v,api_minimax_h3_r2v,api_wan3_0_r2v,api_google_gemini_omni_flash_1_1_r2v,video_wan21_scail2_character_replacement,api_kling_motion_control3,video_wan_animate2,api_google_nano_banana_create_turnaround_sheet). HappyHorse is backed by theHappyHorseReferenceVideoApinode class. I did not find a template whose title says "HappyHorse ... Reference to Video".gh pr list --state allon this repo shows notechnique-multi-scene-comicPR, open or merged. So there is no cross-link, and none of the storyboard-to-video content was duplicated.Verification
This repo has no test suite. I checked the file against the catalog and the code that consumes it (both from
comfy-cloud-mcp-server@main):GeminiNanoBanana2V2,KlingOmniProImageNode,KlingOmniProImageToVideoNode,MiniMaxH3ReferenceToVideo,BatchImagesNode;LoadImageappears in the JSON snippet) is present indata/object_info.json.gzwithdeprecatedfalse or unset. The deprecatedImageBatchandGeminiNanoBanana2are not named.{}). Its dotted keys matchGeminiNanoBanana2V2's dynamic-combo layout (model→imagesauto-grow, prefiximage_), the same conventiontechnique-combine-people.mduses.MAX_TECHNIQUE_RESULT_CHARS = 20_000incapTechniqueText(src/techniques.ts). Note that the real server cap is 20,000 chars, not 6 KB.upload_file,get_node,search_templates,run_template/input_overrides,partner_generate/medias[],use_previous_output, and the partner playbook) is referenced in the server'ssrc/.claude plugin validate ./claude-codepasses. This PR does not touch that directory.Residual
search_templateslive. I checked the queries"character turnaround sheet","reference to video"and"image edit reference"against the bundleddata/templates.jsontitles only, not against the running server's ranking. I found no match at all for"image edit reference"in that check.medias[]item with a role and defers to the partner playbook. I did not confirm which partner models accept more than one reference role.technique-multi-scene-comicrecipe lands later, it should link to this one, and this one should gain a "for comic panels see technique-multi-scene-comic" line.Provenance
claude plugin validate ./claude-code: passedreference_imageswiring differs from the plan (batch viaBatchImagesNode, not per-slot), because the catalog shows a single IMAGE input; the PR body carries no issue-tracker links because this repo is public; no comic recipe exists to cross-link🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.