604d3d4feb
- comfyui.md: bloque de tamaño real del grupo (126 funciones tag comfyui: 63 puras, 50 impuras, 13 pipelines) con punteros a los sub-grupos (comfyui-skill, comfyui-styles, comfyui-judge, gamedev-2d). Corrige la firma corta de build_flux (variant/steps=None/ weight_dtype='default' + camino custom-advanced) que arrastraba drift del report 0205. Añade sección Styles con las 5 funciones del sub-grupo. - comfyui-styles.md (NUEVA): página madre del sub-grupo de estilo (catálogo WAS + style presets gamedev), tabla de las 5 funciones, ejemplos canónicos alineados con los retornos reales y fronteras. - comfyui-overview.md: añade audio (05b) y styles (04b) al mapa cross-grupo y a la tabla resumen; referencia las nuevas páginas madre comfyui-styles y gamedev-2d. - INDEX.md: comfyui 29→126 con descripción actualizada; nueva fila comfyui-styles. - comfyui_build_parallax_background_workflow.md: añade sección ## Ejemplo lanzable (el indexer extrae example del cuerpo, no del frontmatter) — cobertura del grupo pasa a 126/126 con ejemplo. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7.1 KiB
7.1 KiB
ComfyUI Styles — presets y catálogo de estilo
Tag: comfyui-styles (+ gamedev-2d para los dos presets gamedev). Sub-grupo de
comfyui que añade una capa de estilo reutilizable sobre los builders de
workflow: en vez de repetir a mano los mismos modificadores de cámara/iluminación/render en cada
prompt, el estilo se trata como un dato curado y reusable.
Dos vertientes complementarias:
- Catálogo WAS (
comfyui-styles): ~190 estilos curados en el formato exacto del selector WAS de ComfyUI (Prompt Styles Selector / Prompt Multiple Styles Selector), generación de estilos nuevos por LLM, y fusión segura sobre elstyles.jsondel usuario. - Style presets gamedev (
gamedev-2d): recetas que empaquetan como datos puros el look de un juego entero (prefijo/sufijo de prompt, checkpoint, LoRA, negative, tamaño, post-proceso) y se traducen a los kwargs que consume un builder de sujeto del grupogamedev-2d.
Filtro MCP: mcp__registry__fn_search query="" tag="comfyui-styles" (catálogo WAS) y
mcp__registry__fn_search query="style preset" tag="gamedev-2d" (presets gamedev).
Funciones del grupo
Catálogo WAS — dominio ml (tag comfyui-styles)
| ID | Firma corta | Qué hace |
|---|---|---|
| comfyui_curated_styles_catalog_py_ml | curated_styles_catalog(category=None) -> dict |
Catálogo curado (~190 estilos) en el formato exacto {nombre: {prompt, negative_prompt}} que consume el selector WAS. Cada prompt son modificadores de estilo potentes (cámara, lente, iluminación, render engine, medio artístico, paleta, mood), no descripciones de escena. Filtra por category. Pura. |
| comfyui_generate_styles_llm_py_ml | generate_styles_llm(category, n=8, prefix='', avoid=None, model='claude-haiku-4-5-20251001') -> dict |
Genera N estilos de una categoría temática usando ask_llm (grupo claude-direct, API directa, arranque 0), en el mismo formato {nombre: {prompt, negative_prompt}}. avoid evita duplicar nombres ya existentes. Impura (LLM). |
| comfyui_append_styles_py_ml | append_styles(new_styles, styles_path=DEFAULT_STYLES_PATH, overwrite=False, backup=True, dry_run=False) -> dict |
Fusiona (merge + dedup por nombre) un dict de estilos sobre el styles.json del selector WAS de forma SEGURA y NO destructiva: preserva todos los existentes (ganan salvo overwrite=True), hace backup con timestamp antes de escribir. dry_run=True previsualiza sin tocar disco. Impura (I/O disco). |
Style presets gamedev — dominio ml (tag gamedev-2d)
| ID | Firma corta | Qué hace |
|---|---|---|
| comfyui_get_gamedev_style_preset_py_ml | get_gamedev_style_preset(name=None) -> dict |
Devuelve la receta de un style preset gamedev curado (gameboy, ghibli, pixel-art-retro) o el catálogo de nombres si name=None. Un preset empaqueta como DATOS puros el look de un juego entero: subject_prefix/suffix, style, negative, checkpoint recomendado, LoRA + strength, size, transparent, post-proceso. Pura. |
| comfyui_apply_style_preset_py_ml | apply_style_preset(preset, subject, *, style=None, negative=None) -> dict |
Traduce un style preset gamedev (de get_gamedev_style_preset) + un subject del usuario a lo que necesita un builder de sujeto del grupo gamedev-2d: el subject combinado con el prefijo/sufijo del estilo y los kwargs comunes (style, checkpoint, lora, lora_strength, negative, resolución) listos para **spread. style/negative permiten override puntual. Pura. |
Ejemplo canónico — generar un estilo, fusionarlo y aplicarlo
Dos flujos típicos: (1) ampliar el catálogo del selector WAS, y (2) usar un preset gamedev para generar un asset con look consistente.
A) Ampliar el catálogo WAS con estilos nuevos por LLM
import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from ml.comfyui_generate_styles_llm import comfyui_generate_styles_llm
from ml.comfyui_append_styles import comfyui_append_styles
# 1. Pedir 6 estilos de una categoría. Devuelve el dict {nombre: {prompt, negative_prompt}}
# directo (best-effort: {} si el LLM falla).
nuevos = comfyui_generate_styles_llm("film noir cinematic", n=6, prefix="noir-")
# 2. Previsualizar la fusión (no escribe), luego aplicar con backup.
if nuevos:
print(comfyui_append_styles(nuevos, dry_run=True)["total_after"]) # nº tras fusionar, sin tocar disco
res = comfyui_append_styles(nuevos) # backup + merge + dedup + escritura
print(res["total_before"], "->", res["total_after"], "añadidos:", len(res["added"]))
B) Aplicar un style preset gamedev a un sujeto
import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from ml.comfyui_get_gamedev_style_preset import comfyui_get_gamedev_style_preset
from ml.comfyui_apply_style_preset import comfyui_apply_style_preset
from ml.comfyui_build_enemy_creature_workflow import comfyui_build_enemy_creature_workflow
preset = comfyui_get_gamedev_style_preset("gameboy") # receta pura del look Game Boy
ap = comfyui_apply_style_preset(preset, "a wizard casting a spell")
# ap = {subject, builder_kwargs, size, transparent, post, ...} listo para un builder gamedev-2d:
wf = comfyui_build_enemy_creature_workflow(
ap["subject"], size=ap["size"], transparent=ap["transparent"], **ap["builder_kwargs"]
)
El catálogo curado completo se consulta sin red (devuelve el dict plano directo):
from ml.comfyui_curated_styles_catalog import comfyui_curated_styles_catalog
print(comfyui_curated_styles_catalog("__categories__")) # {'categories': {...}, 'total': 190}
todos = comfyui_curated_styles_catalog() # dict {nombre: {prompt, negative_prompt}}
print(len(todos), list(todos)[:5])
Fronteras
- No genera imágenes: este sub-grupo produce y gestiona DATOS de estilo (dicts de prompt /
negative, presets). Generar el asset es trabajo de los builders del grupo
comfyuiygamedev-2d, o de los pipelines oneshot (p.ej.comfyui_generate_styled_asset_oneshot_py_pipelines, que compone un preset + un builder + submit). - El catálogo WAS asume el custom node WAS instalado:
append_stylesescribe sobre elstyles.jsonque lee el selector WAS en la UI. Sin ese node, el catálogo sigue siendo usable como dict de modificadores, pero el selector no aparecerá en el grafo. - Los dos presets gamedev (
get/apply) llevan taggamedev-2d, nocomfyui-styles: son la vía de estilo para los builders de assets de juego, no para el selector WAS genérico. Se listan aquí por afinidad de capacidad (estilo reutilizable). - Formato exacto: el dict de estilos es
{nombre: {prompt, negative_prompt}}. Los prompts son modificadores (cámara/lente/luz/render/medio/paleta/mood), no descripciones de escena — la escena la pone elsubjectdel usuario.