Extensions/Seasonal Fashion Prompt Generator
ComfyUI Extension

Seasonal Fashion Prompt Generator

Seasonal fashion/scene prompts and local AI prompt writing for ComfyUI, with optional TIPO text/image tag expansion.

By raspie10032·Created 2 years ago·Updated 4 days ago· 2
raspie10032/RS-Seasonal-Prompt-Generator
Nodes11
On cloudLocal install
Categoryprompt, prompt/VRS/internal
Stars2
Updated4 days ago
Readme

RS-Seasonal-Prompt-Generator

English | 한국어

Create image-generation prompt ideas from seasonal CSVs, descriptions, or your own reference images and tags. This repository contains eleven user-facing ComfyUI nodes (plus an internal folder-import node) and the standalone VRS-INT command-line tool.

VRS-INT ships code, documentation, and fictional examples only. No starter memory, collected Danbooru images/tags, feature vectors, recommendation results, or model weights are included. You choose the material and build your own memory. Artist, character, and series names are retained as core information.

New: TIPO Image 30K — choose tipo_lora=image-30k for image-tag assistance. Compute-heavy: tested on 16GB NVIDIA GPUs. Outputs may be wrong or not match your taste. Korean edits, names and appearance remain unreliable. Read the setup, resource costs and evaluation before downloading.

Choose a starting point

Native runtime requirements: ComfyUI must support Gemma 4 generation/vision, with the required model files, supported PyTorch operations and sufficient RAM/VRAM. Native TIPO/VRS need no separate llama.cpp CUDA wheel or C++ compiler; they reuse ComfyUI's PyTorch. Starting ComfyUI alone does not guarantee model compatibility. NVIDIA inference and VRS CPU encoding have been checked; AMD/Intel/Apple full-model execution is unverified. VRS CPU inference requires explicit use_cpu consent.

| What you want | Use | Requirements | | --- | --- | --- | | Random seasonal clothing and scene prompts | Seasonal Fashion Prompt Generator | ComfyUI; no model or extra packages | | Expand text/image context into tags and natural-language instructions | Gemma Prompt Expander Native | Built-in Q4 or connected native Gemma 4 CLIP; optional personal tag dictionary | | Expand text/image prompts using ComfyUI PyTorch | Gemma TIPO Native | Gemma 4 capable ComfyUI; built-in Q4 GGUF or native safetensors | | Write English tags or prose from Korean/English requests | RS AI Prompt Writer | ComfyUI + a separate Qwen Writer, distinct from Gemma TIPO | | Expand Korean/English descriptions or tags | Gemma TIPO, text mode | ComfyUI + GGUF runtime/model; GPU-capable runtime plus gpu_layers=-1 enables GPU offload | | Generate prompt tags inspired by an image | Gemma TIPO, image mode | ComfyUI + GGUF + matching mmproj + llama.cpp vision runtime | | Retrieve tags and names from your own reference collection | VRS-INT | Native: ComfyUI PyTorch accelerator + Gemma vision support; CLI: Python 3.11+ / CUDA. Personal image/tag pairs required. |

VRS-INT retrieves creative reference material. It does not train the encoder, reliably identify an image's author, or write a finished natural-language prompt. Use its tags in your image prompt or a separate prompt writer. This public version includes four native VRS nodes for building, loading and recalling personal experience into the native Gemma Prompt Expander.

Optional TIPO LoRA: choose tipo_lora inside either native Gemma node; first use downloads a ~45.3MiB experimental adapter. A base is required: built-in Q4 (~3.22GiB text, ~4.14GiB with vision) or connected BF16 (~9.57GiB). Default is none; no extra loader node. See Q4 setup. See base setup, downloads and limitations.

Install for ComfyUI

1. Install under custom_nodes

From your ComfyUI directory:

git clone https://github.com/raspie10032/RS-Seasonal-Prompt-Generator.git custom_nodes/RS-Seasonal-Prompt-Generator

Alternatively, extract the repository ZIP with this layout. Avoid an extra nested folder.

ComfyUI/
  custom_nodes/
    RS-Seasonal-Prompt-Generator/
      __init__.py
      seasonal_fashion_prompt_node.py
      gemma_tipo_node.py
      data/

Restart ComfyUI. Find the nodes under prompt or search by display name. Prompt-generation nodes return STRING; native VRS nodes also return typed encoder, memory and generation-state connections. To connect a string to a text encoder, convert the encoder's prompt/text widget to an input when required by your ComfyUI version. A text preview node lets you inspect the string before generating an image.

2. Prepare Gemma TIPO Native (recommended)

For built-in Q4, install requirements.txt with ComfyUI's Python. It adds the pure Python gguf parser. Select model_source=heretic_ara_q4, disconnect clip, and keep paths empty for automatic downloads. Full Q4 setup and example. No llama.cpp, C++ compilation, CUDA wheels or replacement torch are needed.

For an existing full native safetensors, use model_source=connected_clip (default):

  1. Use ComfyUI with Gemma 4 and CLIP.generate support.
  2. Put a ComfyUI-format Gemma 4 E2B safetensors in ComfyUI/models/text_encoders/.
  3. Select it in Load CLIP, with type=stable_diffusion, device=default.
  4. Connect its CLIP to Gemma TIPO Native and enter a request. The image input is optional.
  5. Connect tags to Preview as Text or your image-generation text input.

Matching Gemma 4 E2B GGUF + mmproj can use the built-in Q4 path. If you have the fine-tuned full HF safetensors, use the model preparation/conversion guide to retain its trained language and vision projector together. A generic base Gemma is not the existing TIPO fine-tune. Repackaging does not require training.

Native setup, Windows commands and troubleshooting · API workflow example

The legacy Gemma TIPO GGUF node and RS AI Prompt Writer remain optional. Only those paths use requirements-legacy.txt. Select a matching llama-cpp-python GPU build first for GPU inference: a plain pip install can select CPU wheels or start a source build. To install only the category formatter, use ComfyUI's Python: python -m pip install --no-deps tipo-kgen. VRS-INT setup is separate.

Legacy vision prefers Vulkan on Windows/Linux to reduce separate CUDA runtime downloads. Set RS_TIPO_VISION_BACKEND=auto|vulkan|cuda|metal|cpu to select a backend explicitly. The CUDA prebuilt selector supports Windows x64 only. Vulkan still needs a compatible GPU driver and loader; loader detection does not prove full model compatibility. This setting affects legacy image TIPO only. Native TIPO and VRS follow ComfyUI's device settings. gpu_layers=0 and RS_TIPO_FORCE_CPU=1 retain their existing CPU meaning.

Seasonal Fashion Prompt Generator

  1. Add Seasonal Fashion Prompt Generator.
  2. Choose a season, leave clothing at random, and set background_toggle=on.
  3. Connect the output to a text preview or your image model's positive text input.
  4. Run the workflow. Optionally connect it to Gemma TIPO.prompt for expansion.

| Input | Meaning | | --- | --- | | season | random, spring, summer, autumn, winter | | background_toggle | on: seasonal scene; off: omit background block; simple: plain white/grey/black background | | weather_toggle, time_toggle | random, off, or listed value; used when background is on | | top_toggle, bottom_toggle, one_piece_toggle | Clothing choices; random or off | | accessory_toggle, hat_toggle, shoes_toggle, socks_toggle | Random accessory/hat/shoes/socks or turn off | | composition_toggle, gaze_toggle, pose_toggle, body_direction_toggle | random, off, or listed value | | additional_situation_toggle | Add CSV situation details when background/weather/time conditions match | | wanna_shot | Yes: special café/coffee/tumbler scene instead of the normal scene path | | seed | Reproducible selection, including seed 0 |

The same seed and inputs reproduce the selection, including seed 0, without changing the global random state. Top and bottom toggles work independently. When both separates and a one-piece are available, one outfit type is selected.

Customize CSVs

Edit UTF-8 files in data/, preserve headers/columns, and restart ComfyUI to reload cached data. Back up personal changes before updating code. Rows missing required values are skipped: clothing/backgrounds need three columns, weather/time need two. Single-column pose and composition lists remain valid.

| Files | Contents | | --- | --- | | seasonal_fashion.csv | Season, category, item. Categories: top, bottom, one_piece, accessory, hat, shoes, socks | | seasonal_backgrounds.csv | Season, background classification, description | | seasonal_weather.csv, seasonal_times.csv | Weather and time choices by season | | general_composition.csv, gaze_direction.csv, poses.csv, body_directions.csv | Composition, gaze, pose, and body-direction choices | | additional_situations.csv | Situation, \|-separated matching alternatives, description |

Quote CSV fields containing commas. Situation conditions support | for OR and & for AND, for example misty & lakeside|foggy & lakeside.

AI prompt writing

For descriptions such as “a woman in a white shirt and blue skirt standing in a park,” use RS AI Prompt Writer (Korean / English → Prompt). It uses an instruction-tuned model to preserve the requested scene while writing a coherent prompt. The older TIPO model remains available for tag expansion and images; it can omit or change requested details, even with stronger instructions.

  1. Add RS AI Prompt Writer from the prompt category.
  2. Enter a Korean/English description in prompt, or connect Seasonal Fashion Prompt Generator's STRING output to this input.
  3. Keep model at automatic. First use downloads approximately 2.50 GB of Qwen3-4B-Instruct-2507 Q4_K_M from Unsloth. The revision is pinned and its SHA-256 is checked. It runs locally without an API key or a paid API call.
  4. Choose tags for a comma-separated English prompt, or natural_language for one English paragraph. The output connects to Preview as Text or the positive prompt input of your image model's text encoder.
  5. Start with creativity=balanced, length=medium, temperature=0.6.

| Setting | Behavior | | --- | --- | | faithful | Translate/reorganize supplied details; instruct the model not to invent details. | | balanced | Preserve specified details and add compatible lighting, atmosphere and composition. | | creative | Elaborate unspecified details while retaining explicit requirements. | | length | Short / medium / long target; detail preservation has priority. | | seed | Repeatable sampling on the same model/backend; hardware/builds can differ. | | gpu_layers | -1 (default): all GPU layers, requiring a compatible llama-cpp-python GPU build. 0: explicitly select CPU. No automatic CPU retry. | | cpu_threads | 2 (default): CPU helper threads for both generation and prompt processing. Keep low to preserve desktop responsiveness. |

These are model instructions, not a guarantee of semantic correctness. Review important requirements in the output. Additional GPU checks found that balanced mode can still add unspecified weather (for example, rain when an umbrella was mentioned), and prose can contain fragments or minor grammatical errors. This node accepts text; image input remains in Gemma TIPO. Custom models belong in ComfyUI/models/gguf/; use an instruction- tuned language model with a chat template. Importing the nodes never downloads models. Generation errors stop the writer node with a visible error instead of silently returning the input. If an installed CUDA wheel cannot load its runtime, use a matching GPU runtime in the same Python environment as ComfyUI. RS_TIPO_FORCE_CPU=1 also applies to the writer, but cannot repair a broken wheel. CPU-only builds are rejected before downloading the writer model when GPU is requested. Select gpu_layers=0 explicitly if CPU execution is intended. With multiple GPUs, set CUDA_VISIBLE_DEVICES to the intended GPU's UUID before starting the Python process. This applies to the entire ComfyUI process.

Default model provenance: Qwen original model, Unsloth GGUF, Apache-2.0; revision a06e946bb6b655725eafa393f4a9745d460374c9, file Qwen3-4B-Instruct-2507-Q4_K_M.gguf, SHA-256 3605803b982cb64aead44f6c1b2ae36e3acdb41d8e46c8a94c6533bc4c67e597.

Gemma TIPO: text or image to prompt tags

This section describes the legacy GGUF node. For installation without llama.cpp, use Gemma TIPO Native.

One unified node. Connect an image → vision mode (the image is captioned via Gemma-4 vision = llama.cpp mtmd with the auto-downloaded co-trained vision model + mmproj; set gpu_layers=-1 to use an available GPU). No image → text mode (the prompt, Korean/English NL or tags, is expanded in-process via llama-cpp-python). Either way the output runs through the same kgen.formatter post-processing (sort / dedup / drop-redundant / count-conflict).

⚠️ Vision mode is TIPO-style, not a strict 1:1 labeler. With the co-trained vision model + mmproj it draws the image's main content from the picture, but it then plausibly expands that into a fuller Danbooru tag set (TIPO creative upsampling): expect some added tags that aren't literally in the image, and run-to-run variation with the seed. Great for turning a reference image into varied text-to-image prompts — for exact, faithful labeling use a dedicated tagger instead.

Text mode accepts Korean or English natural language, not just tags:

| Input | Output (example) | | --- | --- | | spring, white blouse, pleated skirt, park | spring, white blouse, pleated skirt, park, outdoors, school uniform, long sleeves, sitting, solo, … | | 빨간 원피스, 밀짚모자, 해변 (Korean) | straw hat, red one-piece swimsuit, sun hat, beach, ocean, swimsuit, outdoors, … |

Inputs:

  • prompt: text to convert (Korean/English NL or tags).
  • model: a dropdown of the *.gguf files found in ComfyUI/models/gguf/. Pick (auto: download default) to fetch the default model (gemma4-tipo-ko-v2-Q4_K_M.gguf from raspie/gemma4-tipo-ko-gguf) into that folder on first use — a progress bar shows on the node while it downloads (reused afterward, never re-downloaded); or drop your own .gguf into ComfyUI/models/gguf/ and select it (reload the node list to see new files).
  • tag_length: target verbosity (very_short … very_long).
  • sort: prompt-ordering preset applied by kgen.formatter (tags are categorized special/characters/copyrights/artist/general/quality/meta/rating):
    • danbooru (default): artist, rating, special, characters, copyrights, general, quality, meta.
    • quality_first: quality tags lead.
    • artist_first: artist/character lead.
    • general_only: keep only special + characters + general tags.
    • simple: only special, rating, general.
  • temperature: sampling temperature.
  • ban_tags: comma-separated tags to strip from the result.
  • seed: changes the expansion for variation.
  • (optional) image: connect a ComfyUI IMAGE to switch to vision mode (image → tags). Fully automatic — first vision use auto-downloads the prebuilt llama.cpp mtmd binary for your OS/arch and GPU (Windows/Linux → Vulkan preferred; Windows without Vulkan → compatible CUDA + cudart; macOS → Metal; otherwise CPU — no build) and the trained vision model + mmproj. Nothing to install or configure by hand.
  • (optional, vision only) mmproj_path: leave empty — the trained vision mmproj is auto-downloaded (paired with the vision model). Only set this to point at your own mmproj.
  • (optional, both modes) gpu_layers: 0 = CPU (default and saved workflow compatibility), -1 = GPU auto/all layers, positive values = layer count. Text mode requires a GPU-enabled llama-cpp-python build. If GPU offload is unavailable, text mode logs the error and returns the original prompt before downloading a model; it does not silently run the request on CPU. Vision retries on CPU if GPU initialization or inference fails. RS_TIPO_FORCE_CPU=1 forces CPU in both modes; LLAMA_MTMD_CLI selects a local binary. CPU mode also disables vision-projector offload.

Notes:

  • Longer / more detailed descriptions yield more and more accurate tags.
  • Korean descriptions are not mixed into successful tag output. Existing comma-separated English input tags are preserved before cleanup.
  • Ban matching ignores case and space/underscore differences. Ban filtering and deduplication still work if the optional category formatter is unavailable.
  • Redundant general tags are dropped to save tokens: if a more specific tag with the same head noun exists (e.g. white skirt), the bare skirt is removed. Distinct tags like dress/dress shirt are kept.
  • Conflicting person-count tags are collapsed per group: with 1girl present, 4girls / multiple girls are removed (1girl + 1boy is kept — groups are independent).
  • On model/dependency/inference failure, text returns the original prompt; vision returns an empty string. Check the [TIPO] / [TIPO-V] console log to distinguish fallback from generated output. Vision accepts one image; select one batch item before connecting a batch.
  • Downloads use temporary files and reject empty/truncated transfers. This checks transfer completeness, not cryptographic model integrity.

Supported environment & requirements

| | | | --- | --- | | OS | Windows / Linux / macOS — anywhere ComfyUI runs and a llama-cpp-python wheel exists (x86-64, Apple Silicon/arm64) | | Node 1 (Seasonal) | Any ComfyUI install. Zero dependencies, no model. | | Node 2 (Gemma TIPO) | Vision: optional GPU auto-selection (gpu_layers=-1, CUDA / Vulkan / Metal) with CPU fallback. Text: CPU by default (GPU via a CUDA llama-cpp-python build). | | RAM | min ~8 GB (≈5 GB used for the 4-bit model) · 16 GB+ recommended | | Disk | text ~4 GB (3.2 GB GGUF + deps); vision adds ~3.2 GB vision GGUF + ~1 GB mmproj + the GPU prebuilt (fetched once on first vision use) | | Speed | Vision can offload to GPU with gpu_layers=-1; speed depends on hardware. Text runs in-process via the explicitly installed llama-cpp-python backend; GPU acceleration requires a compatible GPU build. | | Python | ComfyUI's embedded env; llama-cpp-python >= 0.3.23 (legacy text only, explicitly installed by the user) |

Install (Node 2 only)

Generation never installs or upgrades Python packages. Prefer Gemma TIPO Native / native Q4 to avoid separate CUDA inference wheels. Only legacy text TIPO and Qwen Writer need an explicitly installed compatible llama-cpp-python >= 0.3.23. Missing or broken backends produce guidance; legacy text TIPO preserves its input and Writer raises an error. Without tipo-kgen, basic tag cleanup still works; category sorting is skipped. For optional sorting, use ComfyUI's Python: python -m pip install --no-deps tipo-kgen.

Install only if retaining legacy inference. Use ComfyUI's Python and explicitly select a matching GPU build when needed; the generic command below can select a CPU build or start a source build.

pip install -r requirements-legacy.txt

If the prebuilt llama-cpp-python wheel install can't find a wheel for your platform/Python, install it yourself once:

pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu

VRS-INT: personal reference memory

Run locally on your own PC: personal data is never uploaded or synced to an external repository by this extension. See local data and privacy for download behaviour and the scope of Git exclusion guards.

Your images + categorized tags → existing vision encoder → versioned personal memory
New reference image           → same vision encoder     → neighbor tags + name candidates
  1. Set up Python, CUDA, and the vision-only encoder.
  2. Prepare JSONL or image-sidecar pairs.
  3. Check, build, and recommend.
  4. Append or correct a batch.
  5. Back up, transfer, and roll back.

VRS-INT uses a separate Gemma E2B vision tower, not the language model or mmproj.gguf. Explicit artist/character/series names survive even with one occurrence. Captions and original tags remain audit metadata; a caption alone cannot build a searchable tag memory.

Keep personal material outside the repository or in ignored vrs-int-data/ and vrs-int-models/. Compressed memories retain tags and source metadata after decoding; compression is not anonymization. No automatic collection, upload, or shared-memory synchronization is performed.

Gemma checkpoint and experience inputs

See Gemma 4 TIPO runtime for the vision FP16 / PLE Q4 candidate, explicit model selection and measured limits. Text layers and vocabulary remain intact. This candidate is not a newly completed TIPO fine-tune. Internal FFN computation replay is not part of this checkpoint.

The state connection is available through the CLI and native VRS nodes. Negation and scene constraints still need output review. Vision TIPO exits its process after each call; legacy text TIPO caches one model shared with the legacy Prompt Writer. Changing its model or execution settings releases the previous model after generation finishes and before loading the replacement. Both use two CPU helper threads by default.

Troubleshooting

| Symptom | What to check | | --- | --- | | Nodes missing | Folder nesting, restart, startup import errors; search prompt or VRS Native. See native VRS requirements. | | TIPO returns original text | Dependency/model/inference failure can cause fallback. Read [TIPO] console messages. | | Vision output empty | Read [TIPO-V] logs. Check model/projector pairing, executable libraries, input image, and 600-second inference timeout. | | unknown model architecture: gemma4 | Check Gemma4-capable llama-cpp-python ≥0.3.23 in ComfyUI's interpreter; restart after upgrading. | | CPU remains busy | Check TIPO gpu_layers=-1 and a GPU-capable runtime. Legacy vision can retry CPU after GPU failure; inspect logs. VRS-INT settings are separate. | | Installed package still missing | Use ComfyUI's Python, not an unrelated system/venv interpreter. | | Model download failure | Check URL, network, disk, and console logs. Downloads reject empty or truncated transfers; verify custom files separately. | | VRS-INT errors | See VRS-INT troubleshooting. |

Updates and validation

For an unmodified Git installation, from the repository directory:

git pull --ff-only

Restart ComfyUI if using nodes. Preserve local CSV/code edits before updating. Code updates do not fetch a corpus or migrate/activate personal memories. Record your exact snapshot hash and encoder provenance.

The public offline suite uses fictional fixtures and substitute encoders:

python -m pip install numpy Pillow
python -m unittest discover -s tests -v
python scripts/check_code_only.py

It checks inputs, metadata, snapshots, updates, packages, and publication rules. CI covers Linux/Windows/macOS and Python 3.11/3.13. This is not GPU inference or recommendation-quality validation. The publication checker reads indexed Git blobs, including staged changes; review the diff too. Historical node changelogs: English / 한국어.

License and credits

Code: Apache-2.0. Model weights, datasets, and images retain their own terms; the code license does not relicense them.

| Project | Contribution | | --- | --- | | KGen / TIPO, z-tipo-extension | Prompt expansion concept, formatter, TIPO training-data lineage | | llama.cpp, llama-cpp-python | GGUF inference | | Gemma | Base family; separate model terms | | raspie/gemma4-tipo-ko-gguf | Default Korean TIPO model | | unsloth/gemma-4-E2B-it-GGUF | Earlier base projector source; current vision defaults use the paired trained projector | | p-e-w/gemma-4-E2B-it-heretic-ara | TIPO base lineage and source of VRS-INT's separately prepared vision tower |

Originally created with ChatGPT, then developed with Claude Code and Codex.

VRS inside ComfyUI / VRS 네이티브 구축·검색: 설치·연결·API 예제

Folder ingestion: VRS Folders registers image folders and ComfyUI output, preserves embedded prompts and indexes new files in small batches when the generation queue is idle. Includes start/stop/resume and a latest-search-ready memory node. Originals stay unchanged. Optional PixAI fallback tags images without usable metadata locally; VRS Save Image preserves final runtime prompts. The panel can add a connected VRS → TIPO workflow and optionally resume collection after restart. See the folder guide for dependencies and model costs. Use Check folders & setup before starting. It samples local metadata and checks setup without loading or downloading models; sample counts are not the full folder total. The panel shows saved and search-ready experiences separately.

Search data persists across restarts and reuses unchanged experiences when snapshots advance. Folder ingestion prepares search on idle CPU time and retains the previous ready snapshot meanwhile. See cache location, capacity, recovery and measurements. Voting documents are compressed automatically. For optional lossless source compaction inside ComfyUI, use VRS Native Compact Memory; it creates a separate copy with unchanged vector values and source records, requiring this version or newer.

VRS vision defaults to automatic standalone FP16 vision preparation (319.3 MiB) from the public vision repository. No full language base or GGUF parser is needed for this file; a verified cached TIPO mmproj can still be reused. Recall's request and image outputs connect directly to the Expander, alongside vrs_state. See automatic setup and compatibility. Use RS_MODELS_OFFLINE=1 to forbid missing native model/LoRA/vision downloads.