diff --git a/README.md b/README.md index e0e4eeb..27d4d68 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,13 @@ Clone this repo into your comfyui folder. ## Projects Included +### Update notes + +- **Node Updates** + Gemini Generate Image Node v6 was replaced with Gemini Generate Image Node v8. The v8 version has removed models that do not return an image. The v8 version also has added the Gemini-3-Pro-Image_Preview model. +- **Workflow Updates** + All workflows have been updated to have the Gemini Generate Image Node v8. + ### 🧩 Custom Nodes: Comfyui_FSL_Nodes - **manual_alpha_mask_painter.py** Custom node to manually convert black mask areas into alpha transparency. Useful with GRIPTAPE when inpainting and creating the mask by right clicking on the loaded image and select load mask editor. Griptape requires an alpha channel mask. @@ -15,7 +22,7 @@ Clone this repo into your comfyui folder. Designed to remove the Alpha Channel But Keep Transparent Parts as Background Color (not currently used) - **fsl_save_and_strip_alpha** Strips alpha channel from RGBA image. (not currently used) -- **FSLGeminiGenerateImageV6.py** +- **FSLGeminiGenerateImageV8.py** Allows for the use of Gemini API's to create image. This node also provide for whether or not the preceding image is used for iterative generation. The dimension fields are just to support Metadata. They do not effect the image. - **fsl_image_memory.py** Provides 4 nodes. Image Memory Store and Image Memory Recall stores an image to the key entered in the 'key' field. Image memory recall recalls the image for subsequent use. Image Memory Clear is used to delete the stored image based on the entered key. Image Memory Clear All clears all keys that have been entered. @@ -64,6 +71,14 @@ Located in the [`Comfyui_FSL_Nodes/`](https://github.com/fredlef/comfyui_project --- +### Clarification - Init Image vs Image +- **Gemini Generate Image Node v8** +This node has input sockets for both Init-Image and Images. This was primarily designed to support the iterative workflow. The Init-Image socket is specifically for the iterative workflow and should be set to "True" after the first image is created. For the first image both the Init-Image and Images socket should be set to "False". + +If the iterative workflow has a front loader for the first image then for the first run the Images socket should be set to "True" and the Init-Image should be set to "False". After the first run the Images socket should be changed to "False" and the Init-images socket should be set to True. + +I am using this node generally for all my nano banana workflows so if this is for a workflow other than the iterative workflow the Images socket should always be set to "True" and the Init-Image socket should always be set to false. + ## Acknowledgements - **Thanks to Alex and ComfyuiStudio for allowing me to use his excellent upscaler** - **Mycroft Holmes - AKA ChatGPT for assistance and guidance in the creation of Custom Nodes** diff --git a/custom_nodes/Comfyui_FSL_Nodes/FSLGeminiGenerateImageV6.py b/custom_nodes/Comfyui_FSL_Nodes/FSLGeminiGenerateImageV6.py deleted file mode 100644 index f870c29..0000000 --- a/custom_nodes/Comfyui_FSL_Nodes/FSLGeminiGenerateImageV6.py +++ /dev/null @@ -1,294 +0,0 @@ - -import os -import time -import base64 -import random -from io import BytesIO -from typing import Any, Dict, List, Optional, Tuple - -import numpy as np -import requests - -try: - import torch -except Exception: - torch = None - -try: - from PIL import Image -except Exception: - Image = None - - -# ---------------- Helpers ---------------- - -def _tensor_to_png_b64(t) -> str: - """Convert torch.Tensor or np.ndarray image to base64 PNG.""" - if torch is not None and isinstance(t, torch.Tensor): - x = t.detach().cpu().float() - if x.dim() == 4 and x.shape[0] > 0: - x = x[0] - if x.dim() == 3 and x.shape[0] in (1, 3, 4) and x.shape[-1] not in (3, 4): - x = x.permute(1, 2, 0) - arr = x.numpy() - elif isinstance(t, np.ndarray): - arr = t - else: - raise TypeError(f"Expected image as torch.Tensor or np.ndarray, got {type(t)}") - - if arr.max() <= 1.5: - arr = arr * 255.0 - arr = np.clip(arr, 0, 255).astype(np.uint8) - - if Image is None: - raise RuntimeError("Pillow is required to encode PNG images.") - im = Image.fromarray(arr) - buf = BytesIO() - im.save(buf, format="PNG") - return base64.b64encode(buf.getvalue()).decode("utf-8") - - -def _extract_base64_image(resp_json: Dict[str, Any]) -> Optional[str]: - """Return first inline image payload from Gemini JSON response.""" - def _walk(node): - if isinstance(node, dict): - for k, v in node.items(): - yield k, v - yield from _walk(v) - elif isinstance(node, list): - for item in node: - yield from _walk(item) - - for k, v in _walk(resp_json): - if k in ("inline_data", "inlineData") and isinstance(v, dict): - data = v.get("data") - mime = v.get("mime_type") or v.get("mimeType") or "" - if data and ("image/" in mime or mime == "" or mime is None): - return data - return None - - -def _post_with_backoff(url: str, headers: Dict[str, str], params: Dict[str, Any], payload: Dict[str, Any]): - delay = 1.0 - last = None - for _ in range(4): - r = requests.post(url, headers=headers, params=params, json=payload, timeout=60) - last = r - if r.status_code != 429: - return r - time.sleep(delay) - delay *= 2 - return last - - -MODEL_CHOICES = ( - "gemini-2.5-flash-image", - "gemini-2.5-flash-image-preview", - "gemini-2.5-pro", - "gemini-2.0-flash-exp", - "gemini-2.0-pro-exp", - "gemini-1.5-pro", - "gemini-1.5-flash", - "gemini-1.0-pro-vision", - "gemini-2.5-flash-audio-preview", - "gemini-2.5-vision-preview", -) - - -class FSLGeminiGenerateImageV6: - """Gemini image generator with iterative + external image toggles.""" - - @classmethod - def INPUT_TYPES(cls) -> Dict[str, Any]: - return { - "required": { - "prompt": ("STRING", {"multiline": True, "default": ""}), - "model": (MODEL_CHOICES, {"default": "gemini-2.5-flash-image-preview"}), - "width": ("INT", {"default": 1024, "min": 64, "max": 2048, "step": 64}), - "height": ("INT", {"default": 1024, "min": 64, "max": 2048, "step": 64}), - "temperature": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.1}), - "seed": ("INT", {"default": -1, "min": -1, "max": 0x7FFFFFFF}), - "use_init_image": ("BOOLEAN", {"default": True}), - "use_images": ("BOOLEAN", {"default": False}), - "refresh_models": ("BOOLEAN", {"default": False}), - "output_prompt": ("BOOLEAN", {"default": False}), - }, - "optional": { - "init_image": ("IMAGE",), - "images": ("IMAGE",), - "api_key": ("STRING", {"default": "", "multiline": False, "placeholder": "Leave blank to use GEMINI_API_KEY env var"}), - }, - } - - RETURN_TYPES = ("IMAGE", "STRING", "STRING", "INT", "INT", "FLOAT", "INT", "STRING", "DICT") - RETURN_NAMES = ( - "image", - "prompt", - "model", - "width", - "height", - "temperature", - "seed", - "seed_mode", - "metadata", - ) - FUNCTION = "generate" - CATEGORY = "FSL" - - # ---------- internals ---------- - - def _resolve_api_key(self, key_in: str) -> str: - k = (key_in or "").strip() - if not k: - k = os.environ.get("GEMINI_API_KEY", "").strip() - if not k: - raise RuntimeError("Gemini API key missing. Provide it in the node or set GEMINI_API_KEY env var.") - return k - - def _append_tensor_as_part(self, img_like, out: List[Dict[str, Any]]): - b64 = _tensor_to_png_b64(img_like) - out.append({"inline_data": {"mime_type": "image/png", "data": b64}}) - - def _collect_reference_parts( - self, - use_init_image: bool, - init_image, - use_images: bool, - images, - ) -> List[Dict[str, Any]]: - parts: List[Dict[str, Any]] = [] - - # init first (if enabled) - if use_init_image and init_image is not None: - if isinstance(init_image, (list, tuple)): - if len(init_image) > 0: - self._append_tensor_as_part(init_image[0], parts) - elif torch is not None and isinstance(init_image, torch.Tensor): - if init_image.dim() == 4 and init_image.shape[0] > 0: - self._append_tensor_as_part(init_image[0], parts) - else: - self._append_tensor_as_part(init_image, parts) - elif isinstance(init_image, np.ndarray): - self._append_tensor_as_part(init_image, parts) - - # then all external images (if enabled) - if use_images and images is not None: - if isinstance(images, (list, tuple)): - for t in images: - self._append_tensor_as_part(t, parts) - elif torch is not None and isinstance(images, torch.Tensor): - if images.dim() == 4: - for i in range(images.shape[0]): - self._append_tensor_as_part(images[i], parts) - else: - self._append_tensor_as_part(images, parts) - elif isinstance(images, np.ndarray): - self._append_tensor_as_part(images, parts) - - return parts - - # ---------- main ---------- - - def generate( - self, - prompt: str, - model: str, - width: int, - height: int, - temperature: float, - seed: int, - use_init_image: bool, - refresh_models: bool, - output_prompt: bool, - use_images: bool = False, - init_image: Optional["torch.Tensor"] = None, - images: Optional["torch.Tensor"] = None, - api_key: str = "", - ) -> Tuple["torch.Tensor", str, str, int, int, float, int, str, Dict[str, Any]]: - - seed_mode = "fixed" - if seed == -1: - seed = random.randint(0, 0x7FFFFFFF) - seed_mode = "randomize" - - api_key = self._resolve_api_key(api_key) - endpoint = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent" - headers = {"Content-Type": "application/json"} - - parts: List[Dict[str, Any]] = [{"text": prompt}] - ref_parts = self._collect_reference_parts(use_init_image, init_image, use_images, images) - parts.extend(ref_parts) - - payload: Dict[str, Any] = { - "contents": [{"role": "user", "parts": parts}], - "generationConfig": { - "temperature": float(temperature), - "seed": int(seed), - }, - } - - _ = refresh_models # UI no-op - - resp = _post_with_backoff(endpoint, headers=headers, params={"key": api_key}, payload=payload) - - # Parse response - try: - resp_json = resp.json() - except Exception as e: - raise RuntimeError(f"Gemini response was not JSON: {e}") - - if isinstance(resp_json, dict) and "error" in resp_json: - err = resp_json["error"] - raise RuntimeError(f"Gemini error: {err.get('status')} - {err.get('message')}") - - b64_img = _extract_base64_image(resp_json) - if not b64_img: - raise RuntimeError(f"Failed to find inline image in Gemini response. First 1k of JSON: {str(resp_json)[:1000]}") - - try: - img_bytes = base64.b64decode(b64_img) - if Image is None: - raise RuntimeError("Pillow is required to decode returned image.") - pil = Image.open(BytesIO(img_bytes)).convert("RGBA") - except Exception as e: - raise RuntimeError(f"Failed to decode inline image: {e}") - - np_img = np.array(pil).astype(np.float32) / 255.0 - if torch is None: - raise RuntimeError("torch is required for IMAGE tensor output.") - image_tensor = torch.from_numpy(np_img)[None, ...] - - out_prompt = prompt if output_prompt else "" - - metadata_output = { - "prompt": prompt, - "model": model, - "width": width, - "height": height, - "temperature": temperature, - "seed": seed, - "seed_mode": seed_mode, - "use_init_image": bool(use_init_image and init_image is not None), - "use_images": bool(use_images and images is not None), - "init_image_connected": bool(init_image is not None), - "batch_images": ( - int(images.shape[0]) if (torch is not None and isinstance(images, torch.Tensor) and images.dim() == 4) - else (len(images) if isinstance(images, (list, tuple)) else (1 if images is not None else 0)) - ), - } - - return ( - image_tensor, - out_prompt, - model, - width, - height, - temperature, - seed, - seed_mode, - metadata_output, - ) - - -NODE_CLASS_MAPPINGS = {"FSLGeminiGenerateImageV6": FSLGeminiGenerateImageV6} -NODE_DISPLAY_NAME_MAPPINGS = {"FSLGeminiGenerateImageV6": "FSL Gemini Generate Image V6"} diff --git a/custom_nodes/Comfyui_FSL_Nodes/FSLGeminiGenerateImageV8.py b/custom_nodes/Comfyui_FSL_Nodes/FSLGeminiGenerateImageV8.py new file mode 100644 index 0000000..3123edb --- /dev/null +++ b/custom_nodes/Comfyui_FSL_Nodes/FSLGeminiGenerateImageV8.py @@ -0,0 +1,386 @@ +# FSLGeminiGenerateImageV8.py +import os, time, base64, random +from io import BytesIO +from typing import Any, Dict, List, Optional, Tuple + +import numpy as np +import requests + +try: + import torch +except Exception: + torch = None + +try: + from PIL import Image, ImageOps, ImageFilter +except Exception: + Image = None + + +# -------- helpers -------- +def _tensor_like_to_numpy(img_like): + """Accept torch or np tensor/array and return uint8 ndarray in HxWxC or HxW.""" + if torch is not None and isinstance(img_like, torch.Tensor): + t = img_like.detach().cpu().float() + if t.dim() == 4: + t = t[0] + if t.dim() == 3 and t.shape[0] in (1, 3, 4) and t.shape[-1] not in (1, 3, 4): + t = t.permute(1, 2, 0) # CHW -> HWC + arr = t.numpy() + elif isinstance(img_like, np.ndarray): + arr = img_like + else: + raise TypeError(f"Expected torch.Tensor or np.ndarray, got {type(img_like)}") + + # scale to 0..255 + if arr.dtype != np.uint8 or arr.max() <= 1.5: + arr = np.clip(arr * (255.0 if arr.max() <= 1.5 else 1.0), 0, 255).astype(np.uint8) + return arr + + +def _to_pil(img_like) -> Image.Image: + arr = _tensor_like_to_numpy(img_like) + if Image is None: + raise RuntimeError("Pillow is required.") + if arr.ndim == 2: + return Image.fromarray(arr, "L") + c = arr.shape[2] if arr.ndim == 3 else 1 + if c == 1: + return Image.fromarray(arr[:, :, 0], "L") + if c == 3: + return Image.fromarray(arr, "RGB") + if c == 4: + return Image.fromarray(arr, "RGBA") + return Image.fromarray(arr[:, :, :3], "RGB") + + +def _tensor_to_png_b64(img_like) -> str: + pil = _to_pil(img_like) + buf = BytesIO() + pil.save(buf, format="PNG") + return base64.b64encode(buf.getvalue()).decode("utf-8") + + +def _prepare_mask_png_b64( + mask_like=None, + mask_image_like=None, + target_size=None, + invert: bool = False, + feather_radius: int = 0, + strength: float = 1.0, +) -> Optional[str]: + """ + Build an 8-bit 'L' mask PNG b64. + - White (255) = editable + - Black (0) = preserved + Optional transforms: invert, feather (GaussianBlur), strength (0..1 linear scale). + """ + if mask_like is None and mask_image_like is None: + return None + src = mask_like if mask_like is not None else mask_image_like + m = _to_pil(src).convert("L") + if target_size is not None and m.size != target_size: + m = m.resize(target_size, resample=Image.NEAREST) + if invert: + m = ImageOps.invert(m) + if feather_radius and feather_radius > 0: + m = m.filter(ImageFilter.GaussianBlur(radius=int(feather_radius))) + if strength is not None: + s = max(0.0, min(1.0, float(strength))) + if s < 1.0: + # linear scale towards 0 (stronger protection) + m = m.point(lambda px: int(px * s)) + buf = BytesIO() + m.save(buf, format="PNG") + return base64.b64encode(buf.getvalue()).decode("utf-8") + + +def _extract_base64_image(resp_json: Dict[str, Any]) -> Optional[str]: + def _walk(n): + if isinstance(n, dict): + for k, v in n.items(): + yield k, v + yield from _walk(v) + elif isinstance(n, list): + for i in n: + yield from _walk(i) + for k, v in _walk(resp_json): + if k in ("inline_data", "inlineData") and isinstance(v, dict): + data = v.get("data") + mime = v.get("mime_type") or v.get("mimeType") or "" + if data and ("image/" in mime or mime in ("", None)): + return data + return None + + +def _post_with_backoff(url: str, headers: Dict[str, str], params: Dict[str, Any], payload: Dict[str, Any]): + delay = 1.0 + last = None + for _ in range(4): + r = requests.post(url, headers=headers, params=params, json=payload, timeout=60) + last = r + if r.status_code != 429: + return r + time.sleep(delay) + delay *= 2 + return last + + +MODEL_CHOICES = ( + "gemini-3-pro-image-preview", + "gemini-2.5-flash-image", + "gemini-2.5-flash-image-preview", + "gemini-2.0-flash-exp", +) + + +class FSLGeminiGenerateImageV8: + """Gemini image generator with inpainting support. + Base selection: auto / init_image / images. + Mask inputs: MASK or IMAGE, with invert/feather/strength options. + """ + + @classmethod + def INPUT_TYPES(cls) -> Dict[str, Any]: + return { + "required": { + "prompt": ("STRING", {"multiline": True, "default": ""}), + "model": (MODEL_CHOICES, {"default": "gemini-2.5-flash-image-preview"}), + "width": ("INT", {"default": 1024, "min": 64, "max": 2048, "step": 64}), + "height": ("INT", {"default": 1024, "min": 64, "max": 2048, "step": 64}), + "temperature": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.1}), + "seed": ("INT", {"default": -1, "min": -1, "max": 0x7FFFFFFF}), + "use_init_image": ("BOOLEAN", {"default": True}), + "use_images": ("BOOLEAN", {"default": False}), + "use_mask": ("BOOLEAN", {"default": False}), + "base_for_inpaint": (("auto", "init_image", "images"), {"default": "auto"}), + "refresh_models": ("BOOLEAN", {"default": False}), + "output_prompt": ("BOOLEAN", {"default": False}), + }, + "optional": { + "init_image": ("IMAGE",), + "images": ("IMAGE",), + "mask": ("MASK",), # true mask + "mask_image": ("IMAGE",), # image as mask + "invert_mask": ("BOOLEAN", {"default": False}), + "feather_radius": ("INT", {"default": 0, "min": 0, "max": 64, "step": 1}), + "mask_strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.05}), + "api_key": ("STRING", {"default": "", "multiline": False, "placeholder": "Leave blank to use GEMINI_API_KEY env var"}), + }, + } + + RETURN_TYPES = ("IMAGE", "STRING", "STRING", "INT", "INT", "FLOAT", "INT", "STRING", "DICT") + RETURN_NAMES = ("image", "prompt", "model", "width", "height", "temperature", "seed", "seed_mode", "metadata") + FUNCTION = "generate" + CATEGORY = "FSL" + + # ---- internals ---- + def _resolve_api_key(self, k: str) -> str: + k = (k or "").strip() or os.environ.get("GEMINI_API_KEY", "").strip() + if not k: + raise RuntimeError("Gemini API key missing. Provide it in the node or set GEMINI_API_KEY.") + return k + + def _append_tensor_as_part(self, img_like, out: List[Dict[str, Any]]): + out.append({"inline_data": {"mime_type": "image/png", "data": _tensor_to_png_b64(img_like)}}) + + def _iter_imgs(self, imgs): + if imgs is None: + return [] + if isinstance(imgs, (list, tuple)): + return list(imgs) + if torch is not None and isinstance(imgs, torch.Tensor): + if imgs.dim() == 4: + return [imgs[i] for i in range(imgs.shape[0])] + return [imgs] + if isinstance(imgs, np.ndarray): + return [imgs] + return [] + + def _collect_parts_with_base_choice( + self, + base_choice: str, + use_init_image: bool, init_image, + use_images: bool, images, + use_mask: bool, mask, mask_image, + invert_mask: bool, feather_radius: int, mask_strength: float, + ) -> Tuple[List[Dict[str, Any]], Optional[Tuple[int, int]], str]: + """ + Returns (parts, base_size, base_source) + base_source in {"init_image","images","none"} + """ + parts: List[Dict[str, Any]] = [] + base_size = None + base_source = "none" + + imgs_list = self._iter_imgs(images) + + if base_choice == "init_image" and use_init_image and init_image is not None: + # base = init_image + if isinstance(init_image, (list, tuple)) and len(init_image) > 0: + pil = _to_pil(init_image[0]); base_size = pil.size; self._append_tensor_as_part(init_image[0], parts) + elif torch is not None and isinstance(init_image, torch.Tensor): + t = init_image[0] if (init_image.dim() == 4 and init_image.shape[0] > 0) else init_image + pil = _to_pil(t); base_size = pil.size; self._append_tensor_as_part(t, parts) + elif isinstance(init_image, np.ndarray): + pil = _to_pil(init_image); base_size = pil.size; self._append_tensor_as_part(init_image, parts) + base_source = "init_image" + + # mask after base + if use_mask and (mask is not None or mask_image is not None): + b64 = _prepare_mask_png_b64(mask, mask_image, base_size, invert_mask, feather_radius, mask_strength) + if b64: + parts.append({"inline_data": {"mime_type": "image/png", "data": b64}}) + + # remaining refs + if use_images and imgs_list: + for t in imgs_list: + self._append_tensor_as_part(t, parts) + return parts, base_size, base_source + + if base_choice == "images" and use_images and imgs_list: + # promote first image as base + first = imgs_list[0] + pil = _to_pil(first); base_size = pil.size; self._append_tensor_as_part(first, parts) + base_source = "images" + + # mask after base + if use_mask and (mask is not None or mask_image is not None): + b64 = _prepare_mask_png_b64(mask, mask_image, base_size, invert_mask, feather_radius, mask_strength) + if b64: + parts.append({"mime_type": "image/png", "inline_data": {"mime_type": "image/png", "data": b64}}) # keep schema consistent + # Note: either {"inline_data":{...}} or the same dict; we use the same structure as other parts + parts[-1] = {"inline_data": {"mime_type": "image/png", "data": b64}} + + # rest as refs + for t in imgs_list[1:]: + self._append_tensor_as_part(t, parts) + return parts, base_size, base_source + + # no valid base selected — still push refs if present + if use_images and imgs_list: + for t in imgs_list: + if base_size is None: + base_size = _to_pil(t).size + self._append_tensor_as_part(t, parts) + + # If mask without a base, we can still send it (model may ignore) + if use_mask and (mask is not None or mask_image is not None): + b64 = _prepare_mask_png_b64(mask, mask_image, base_size, invert_mask, feather_radius, mask_strength) + if b64: + parts.append({"inline_data": {"mime_type": "image/png", "data": b64}}) + + return parts, base_size, base_source + + # ---- main ---- + def generate( + self, + prompt: str, model: str, width: int, height: int, temperature: float, seed: int, + use_init_image: bool, use_images: bool, use_mask: bool, base_for_inpaint: str, + refresh_models: bool, output_prompt: bool, + init_image: Optional["torch.Tensor"] = None, images: Optional["torch.Tensor"] = None, + mask: Optional["torch.Tensor"] = None, mask_image: Optional["torch.Tensor"] = None, + invert_mask: bool = False, feather_radius: int = 0, mask_strength: float = 1.0, + api_key: str = "", + ): + seed_mode = "fixed" + if seed == -1: + seed = random.randint(0, 0x7FFFFFFF) + seed_mode = "randomize" + + api_key = self._resolve_api_key(api_key) + endpoint = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent" + headers = {"Content-Type": "application/json"} + + # Resolve effective base with AUTO fallback + requested = base_for_inpaint + have_init = bool(use_init_image and (init_image is not None)) + have_images = bool(use_images and (images is not None)) + + if requested == "auto": + base_choice = "init_image" if have_init else ("images" if have_images else "none") + else: + if requested == "init_image" and not have_init: + base_choice = "images" if have_images else "none" + elif requested == "images" and not have_images: + base_choice = "init_image" if have_init else "none" + else: + base_choice = requested + + # Build parts + parts: List[Dict[str, Any]] = [] + if use_mask and (mask is not None or mask_image is not None): + parts.append({"text": + "INPAINT MODE: You are given a base image and a mask image. " + "Modify ONLY pixels where the mask is white; keep black (unmasked) pixels exactly the same as the base image. " + "Respect edges and composition." + }) + parts.append({"text": prompt}) + + ref_parts, base_size, resolved_base = self._collect_parts_with_base_choice( + base_choice=base_choice, + use_init_image=use_init_image, init_image=init_image, + use_images=use_images, images=images, + use_mask=use_mask, mask=mask, mask_image=mask_image, + invert_mask=invert_mask, feather_radius=feather_radius, mask_strength=mask_strength, + ) + parts.extend(ref_parts) + + if use_mask and (mask is not None or mask_image is not None) and resolved_base == "none": + raise RuntimeError("Inpaint requires a base image. Enable and connect either init_image or images.") + + payload = { + "contents": [{"role": "user", "parts": parts}], + "generationConfig": {"temperature": float(temperature), "seed": int(seed)}, + } + _ = refresh_models # UI no-op + + resp = _post_with_backoff(endpoint, headers=headers, params={"key": api_key}, payload=payload) + + # Parse response + try: + resp_json = resp.json() + except Exception as e: + raise RuntimeError(f"Gemini response was not JSON: {e}") + + if isinstance(resp_json, dict) and "error" in resp_json: + err = resp_json["error"] + raise RuntimeError(f"Gemini error: {err.get('status')} - {err.get('message')}") + + b64_img = _extract_base64_image(resp_json) + if not b64_img: + raise RuntimeError(f"Failed to find inline image in Gemini response. First 1k of JSON: {str(resp_json)[:1000]}") + + try: + img_bytes = base64.b64decode(b64_img) + if Image is None: + raise RuntimeError("Pillow is required to decode returned image.") + pil = Image.open(BytesIO(img_bytes)).convert("RGBA") + except Exception as e: + raise RuntimeError(f"Failed to decode inline image: {e}") + + np_img = np.array(pil).astype(np.float32) / 255.0 + if torch is None: + raise RuntimeError("torch is required for IMAGE tensor output.") + image_tensor = torch.from_numpy(np_img)[None, ...] + + out_prompt = prompt if output_prompt else "" + metadata = { + "prompt": prompt, "model": model, "width": width, "height": height, + "temperature": temperature, "seed": seed, "seed_mode": seed_mode, + "use_init_image": bool(use_init_image and init_image is not None), + "use_images": bool(use_images and images is not None), + "use_mask": bool(use_mask and (mask is not None or mask_image is not None)), + "mask_source": "MASK" if mask is not None else ("IMAGE" if mask_image is not None else "none"), + "requested_base_for_inpaint": base_for_inpaint, + "effective_base_for_inpaint": base_choice, + "resolved_base_source": resolved_base, + "invert_mask": bool(invert_mask), + "feather_radius": int(feather_radius), + "mask_strength": float(mask_strength), + } + return (image_tensor, out_prompt, model, width, height, temperature, seed, seed_mode, metadata) + + +NODE_CLASS_MAPPINGS = {"FSLGeminiGenerateImageV8": FSLGeminiGenerateImageV8} +NODE_DISPLAY_NAME_MAPPINGS = {"FSLGeminiGenerateImageV8": "FSL Gemini Generate Image V8"} diff --git a/workflows/nano_banana/Nano Banana Iterative-Base.json b/workflows/nano_banana/Nano Banana Iterative-Base.json index 984a019..13e85d4 100644 --- a/workflows/nano_banana/Nano Banana Iterative-Base.json +++ b/workflows/nano_banana/Nano Banana Iterative-Base.json @@ -1 +1 @@ -{"id":"8308f63e-e1ae-4006-adcf-df07c490ba28","revision":0,"last_node_id":231,"last_link_id":381,"nodes":[{"id":214,"type":"FSLImageMemoryStore","pos":[2613.50146484375,-134.72097778320312],"size":[285.8443298339844,58],"flags":{},"order":10,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":381},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[367,368]}],"properties":{"Node name for S&R":"FSLImageMemoryStore","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.0.1"}},"widgets_values":["last"]},{"id":222,"type":"FSLImageMemoryRecallSafe","pos":[2595.37353515625,-16.184179306030273],"size":[333.2994079589844,58],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[372,373,380]}],"properties":{"Node name for S&R":"FSLImageMemoryRecallSafe","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.0.1"}},"widgets_values":["last"]},{"id":201,"type":"PreviewImage","pos":[1795.44091796875,-649.9224243164062],"size":[663.215576171875,683.7775268554688],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":372}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":110,"type":"PreviewImage","pos":[3018.059814453125,-1052.4462890625],"size":[331.3426208496094,324.6829528808594],"flags":{},"order":12,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":368}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[],"color":"#223","bgcolor":"#335"},{"id":109,"type":"SaveImage","pos":[3009.668701171875,-659.6617431640625],"size":[781.212646484375,658.311767578125],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":367},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["NanoIter\\nanoi"],"color":"#223","bgcolor":"#335"},{"id":229,"type":"Note","pos":[3785.260986328125,-1074.4326171875],"size":[237.19744873046875,88],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["It is not necessary to connect this node. Just enter the name of the key to clear and execute the node."],"color":"#432","bgcolor":"#653"},{"id":230,"type":"Note","pos":[3791.572998046875,-909.0707397460938],"size":[240.98435974121094,88],"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["This node clears all keys when executed"],"color":"#432","bgcolor":"#653"},{"id":203,"type":"SaveImage","pos":[1722.9217529296875,-998.1715698242188],"size":[405.7691650390625,270],"flags":{"collapsed":false},"order":8,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":373},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["ComfyUI"]},{"id":231,"type":"Note","pos":[2154.365478515625,-992.3828735351562],"size":[326.82110595703125,184.96815490722656],"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["Start by clearing key if necessary or enter a new key.\n\nFor the first run set use_init_image to false then enter prompt and run.\n\nFor suubsequent images set use_init_image to true. Enter a new prompt for each iteration."],"color":"#432","bgcolor":"#653"},{"id":200,"type":"FSLPromptCompose","pos":[2537.281494140625,-985.4965209960938],"size":[400,200],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"STRING","widget":{"name":"positive"},"link":null},{"localized_name":"negative","name":"negative","type":"STRING","widget":{"name":"negative"},"link":null},{"localized_name":"lock_scene","name":"lock_scene","type":"BOOLEAN","widget":{"name":"lock_scene"},"link":null}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[379]}],"properties":{"Node name for S&R":"FSLPromptCompose","ue_properties":{"widget_ue_connectable":{"positive":true,"negative":true,"lock_scene":true},"version":"7.0.1"}},"widgets_values":["replace the foundation with a massive log cabin style mansion complete with fountain, and firepit exuding the idea of wealth and power\n","studio backdrop, black background, portrait-only, isolation, cropping",false]},{"id":227,"type":"FSLImageMemoryClear","pos":[3405.308349609375,-1039.0880126953125],"size":[285.8374938964844,58],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClear","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["last"]},{"id":228,"type":"FSLImageMemoryClearAll","pos":[3410.357177734375,-866.1527709960938],"size":[324.8109130859375,56.29530715942383],"flags":{},"order":6,"mode":0,"inputs":[],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClearAll","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":226,"type":"FSLGeminiGenerateImageV6","pos":[2543.154296875,-712.1513061523438],"size":[400,512],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":380},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":379},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[381]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":null}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV6","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["","gemini-2.5-flash-image",1024,1024,1,1542538355,"randomize",false,false,false,false,""]}],"links":[[367,214,0,109,0,"IMAGE"],[368,214,0,110,0,"IMAGE"],[372,222,0,201,0,"IMAGE"],[373,222,0,203,0,"IMAGE"],[379,200,0,226,2,"STRING"],[380,222,0,226,0,"IMAGE"],[381,226,0,214,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8714220715383929,"offset":[-1980.4230494544126,1068.9082954089424]},"frontendVersion":"1.25.10","VHS_MetadataImage":true,"VHS_latentpreview":false,"VHS_KeepIntermediate":true,"VHS_latentpreviewrate":0,"ue_links":[],"links_added_by_ue":[]},"version":0.4} \ No newline at end of file +{"id":"8308f63e-e1ae-4006-adcf-df07c490ba28","revision":0,"last_node_id":233,"last_link_id":384,"nodes":[{"id":201,"type":"PreviewImage","pos":[1795.44091796875,-649.9224243164062],"size":[663.215576171875,683.7775268554688],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":372}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":110,"type":"PreviewImage","pos":[3018.059814453125,-1052.4462890625],"size":[331.3426208496094,324.6829528808594],"flags":{},"order":12,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":368}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[],"color":"#223","bgcolor":"#335"},{"id":109,"type":"SaveImage","pos":[3009.668701171875,-659.6617431640625],"size":[781.212646484375,658.311767578125],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":367},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["NanoIter\\nanoi"],"color":"#223","bgcolor":"#335"},{"id":229,"type":"Note","pos":[3785.260986328125,-1074.4326171875],"size":[237.19744873046875,88],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["It is not necessary to connect this node. Just enter the name of the key to clear and execute the node."],"color":"#432","bgcolor":"#653"},{"id":230,"type":"Note","pos":[3791.572998046875,-909.0707397460938],"size":[240.98435974121094,88],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["This node clears all keys when executed"],"color":"#432","bgcolor":"#653"},{"id":203,"type":"SaveImage","pos":[1722.9217529296875,-998.1715698242188],"size":[405.7691650390625,270],"flags":{"collapsed":false},"order":8,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":373},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["ComfyUI"]},{"id":227,"type":"FSLImageMemoryClear","pos":[3405.308349609375,-1039.0880126953125],"size":[285.8374938964844,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClear","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["last"]},{"id":228,"type":"FSLImageMemoryClearAll","pos":[3410.357177734375,-866.1527709960938],"size":[324.8109130859375,56.29530715942383],"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClearAll","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":231,"type":"Note","pos":[2154.365478515625,-992.3828735351562],"size":[326.82110595703125,184.96815490722656],"flags":{},"order":4,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["Start by clearing key if necessary or enter a new key.\n\nFor the first run set use_init_image to false then enter prompt and run.\n\nFor suubsequent images set use_init_image to true. Enter a new prompt for each iteration.\n\nHeight and width in gemini node are for metadata purposes only. They do not effect image."],"color":"#432","bgcolor":"#653"},{"id":222,"type":"FSLImageMemoryRecallSafe","pos":[2590.783336984039,37.75064921745094],"size":[333.2994079589844,58],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[372,373,382]}],"properties":{"Node name for S&R":"FSLImageMemoryRecallSafe","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.0.1"}},"widgets_values":["last"]},{"id":214,"type":"FSLImageMemoryStore","pos":[2595.140672154906,-75.04840154445802],"size":[285.8443298339844,58],"flags":{},"order":10,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":384},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[367,368]}],"properties":{"Node name for S&R":"FSLImageMemoryStore","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.0.1"}},"widgets_values":["last"]},{"id":233,"type":"FSLGeminiGenerateImageV8","pos":[2522.066433775331,-756.7748196985827],"size":[400,632],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":382},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":null},{"localized_name":"mask","name":"mask","shape":7,"type":"MASK","link":null},{"localized_name":"mask_image","name":"mask_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":383},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"use_mask","name":"use_mask","type":"BOOLEAN","widget":{"name":"use_mask"},"link":null},{"localized_name":"base_for_inpaint","name":"base_for_inpaint","type":"COMBO","widget":{"name":"base_for_inpaint"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"invert_mask","name":"invert_mask","shape":7,"type":"BOOLEAN","widget":{"name":"invert_mask"},"link":null},{"localized_name":"feather_radius","name":"feather_radius","shape":7,"type":"INT","widget":{"name":"feather_radius"},"link":null},{"localized_name":"mask_strength","name":"mask_strength","shape":7,"type":"FLOAT","widget":{"name":"mask_strength"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[384]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":null}],"properties":{"ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{}},"Node name for S&R":"FSLGeminiGenerateImageV8"},"widgets_values":["","gemini-3-pro-image-preview",1024,1024,1,-1,"randomize",true,false,false,"auto",false,false,false,0,1,""]},{"id":200,"type":"FSLPromptCompose","pos":[2536.1339445975723,-1029.1034036321003],"size":[400,200],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"STRING","widget":{"name":"positive"},"link":null},{"localized_name":"negative","name":"negative","type":"STRING","widget":{"name":"negative"},"link":null},{"localized_name":"lock_scene","name":"lock_scene","type":"BOOLEAN","widget":{"name":"lock_scene"},"link":null}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[383]}],"properties":{"Node name for S&R":"FSLPromptCompose","ue_properties":{"widget_ue_connectable":{"positive":true,"negative":true,"lock_scene":true},"version":"7.0.1"}},"widgets_values":["replace the foundation with a massive log cabin style mansion complete with fountain, and firepit exuding the idea of wealth and power\n","studio backdrop, black background, portrait-only, isolation, cropping",false]}],"links":[[367,214,0,109,0,"IMAGE"],[368,214,0,110,0,"IMAGE"],[372,222,0,201,0,"IMAGE"],[373,222,0,203,0,"IMAGE"],[382,222,0,233,0,"IMAGE"],[383,200,0,233,4,"STRING"],[384,233,0,214,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8714220715383929,"offset":[-1980.4230494544124,1099.8921330713667]},"frontendVersion":"1.25.10","VHS_MetadataImage":true,"VHS_latentpreview":false,"VHS_KeepIntermediate":true,"VHS_latentpreviewrate":0,"ue_links":[],"links_added_by_ue":[]},"version":0.4} \ No newline at end of file diff --git a/workflows/nano_banana/Nano Banana Iterative-Base.png b/workflows/nano_banana/Nano Banana Iterative-Base.png index 06debbc..d5edfa9 100644 Binary files a/workflows/nano_banana/Nano Banana Iterative-Base.png and b/workflows/nano_banana/Nano Banana Iterative-Base.png differ diff --git a/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.json b/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.json index 20a7d8f..c1f7aa1 100644 --- a/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.json +++ b/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.json @@ -1 +1 @@ -{"id":"2288dbf7-786d-489b-a2ed-9e8677912f34","revision":0,"last_node_id":274,"last_link_id":422,"nodes":[{"id":110,"type":"PreviewImage","pos":[2513.16796875,-1120.122314453125],"size":[331.3426208496094,324.6829528808594],"flags":{},"order":19,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":368}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[],"color":"#223","bgcolor":"#335"},{"id":245,"type":"FSLGeminiGenerateImageV6","pos":[2060.907958984375,-860.9055786132812],"size":[400,512],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":395},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":422},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":397},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[396]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":null}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV6","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["","gemini-2.5-flash-image-preview",1024,1024,1,1377763067,"randomize",false,true,false,false,""]},{"id":109,"type":"SaveImage","pos":[2511.11083984375,-702.0146484375],"size":[781.212646484375,658.311767578125],"flags":{},"order":18,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":367},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["NanoIter\\nanoi"],"color":"#223","bgcolor":"#335"},{"id":214,"type":"FSLImageMemoryStore","pos":[2064.054443359375,-277.7234802246094],"size":[285.8443298339844,58],"flags":{},"order":17,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":396},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[367,368]}],"properties":{"Node name for S&R":"FSLImageMemoryStore","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.0.1"}},"widgets_values":["last-2"]},{"id":222,"type":"FSLImageMemoryRecallSafe","pos":[2062.821533203125,-146.02183532714844],"size":[333.2994079589844,58],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[372,395,399]}],"properties":{"Node name for S&R":"FSLImageMemoryRecallSafe","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.1","input_ue_unconnectable":{}}},"widgets_values":["last-2"]},{"id":201,"type":"PreviewImage","pos":[1360.77099609375,-645.6987915039062],"size":[663.215576171875,683.7775268554688],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":372}],"outputs":[],"title":"Iterative Image","properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":200,"type":"FSLPromptCompose","pos":[2061.289794921875,-1126.2139892578125],"size":[400,200],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"STRING","widget":{"name":"positive"},"link":null},{"localized_name":"negative","name":"negative","type":"STRING","widget":{"name":"negative"},"link":null},{"localized_name":"lock_scene","name":"lock_scene","type":"BOOLEAN","widget":{"name":"lock_scene"},"link":null}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[397]}],"properties":{"Node name for S&R":"FSLPromptCompose","ue_properties":{"widget_ue_connectable":{"positive":true,"negative":true,"lock_scene":true},"version":"7.0.1"}},"widgets_values":["","studio backdrop, black background, portrait-only, isolation, cropping",false]},{"id":267,"type":"Note","pos":[967.9016723632812,-1112.7979736328125],"size":[260.3798522949219,129.693603515625],"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["Image 1 - Scene\nImage 2 - Person\nFor multiple images connect image output f\nrom batch node to 'images' in gemini node\n\nHeight and width in gemini node are for metadata purposes only. they do not effect image."],"color":"#432","bgcolor":"#653"},{"id":249,"type":"Note","pos":[2875.49462890625,-1125.0057373046875],"size":[367.5962219238281,119.58016204833984],"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["Node\t Needs wiring?\tEffect\nFSLImageMemoryClearAll\t❌ No\tClears the entire memory dictionary\nFSLImageMemoryClear\t❌ No (✅ optional)\tClears only the key you specify"],"color":"#432","bgcolor":"#653"},{"id":248,"type":"FSLImageMemoryClear","pos":[2886.496337890625,-956.8795166015625],"size":[285.8374938964844,58],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClear","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["last"]},{"id":247,"type":"FSLImageMemoryClearAll","pos":[2889.6025390625,-837.6253051757812],"size":[309.63232421875,46.25725555419922],"flags":{},"order":5,"mode":0,"inputs":[],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClearAll","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":257,"type":"LoadImage","pos":[973.365966796875,-423.67523193359375],"size":[277.14801025390625,331.3240051269531],"flags":{},"order":6,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[409]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 5","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["00000-998563309.png","image"]},{"id":258,"type":"LoadImage","pos":[668.9918823242188,-423.9723815917969],"size":[277.14801025390625,331.3240051269531],"flags":{},"order":7,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[408]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 4","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["00000-998563309.png","image"]},{"id":259,"type":"LoadImage","pos":[385.9632568359375,-422.0635070800781],"size":[251.13314819335938,328.5221252441406],"flags":{},"order":8,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[407]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 3","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["Screenshot 2025-10-12 185513.png","image"]},{"id":254,"type":"LoadImage","pos":[381.40728759765625,-807.6578369140625],"size":[270,326],"flags":{"collapsed":false},"order":9,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[405]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 1","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["grip_00310_.png","image"]},{"id":255,"type":"LoadImage","pos":[673.3596801757812,-806.506103515625],"size":[276.2181701660156,326],"flags":{},"order":10,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[406]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 2","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["2025-10-02-111049_1975936534.png","image"]},{"id":250,"type":"Note","pos":[387.67437744140625,-1074.2576904296875],"size":[347.63018798828125,198.10414123535156],"flags":{},"order":11,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["To start:\n\n1. set use_ini_image = false\n2. set use_images = true\n3. Enter positive prompt \n\nFor subsequent iterations:\n\n4. set use_ini_image = true (leave true for subsequent runs)\n5. set use_images = false\n6. bypass load image group"],"color":"#432","bgcolor":"#653"},{"id":274,"type":"Fast Groups Bypasser (rgthree)","pos":[96.36329650878906,-1114.8670654296875],"size":[236.74765014648438,82],"flags":{},"order":12,"mode":0,"inputs":[],"outputs":[{"name":"OPT_CONNECTION","type":"*","links":null}],"properties":{"matchColors":"","matchTitle":"","showNav":true,"showAllGraphs":true,"sort":"position","customSortAlphabet":"","toggleRestriction":"default","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}}},{"id":242,"type":"PreviewImage","pos":[1362.629150390625,-1126.8250732421875],"size":[644.0482177734375,425.1871032714844],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":399}],"outputs":[],"title":"Griptape Image","properties":{"cnr_id":"comfy-core","ver":"0.3.65","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":256,"type":"ImageBatchMultiple+","pos":[978.8824462890625,-913.9879150390625],"size":[270,138],"flags":{},"order":15,"mode":0,"inputs":[{"localized_name":"image_1","name":"image_1","type":"IMAGE","link":405},{"localized_name":"image_2","name":"image_2","shape":7,"type":"IMAGE","link":406},{"localized_name":"image_3","name":"image_3","shape":7,"type":"IMAGE","link":407},{"localized_name":"image_4","name":"image_4","shape":7,"type":"IMAGE","link":408},{"localized_name":"image_5","name":"image_5","shape":7,"type":"IMAGE","link":409},{"localized_name":"method","name":"method","type":"COMBO","widget":{"name":"method"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[422]}],"properties":{"cnr_id":"comfyui_essentials","ver":"1.1.0","Node name for S&R":"ImageBatchMultiple+","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["lanczos"]}],"links":[[367,214,0,109,0,"IMAGE"],[368,214,0,110,0,"IMAGE"],[372,222,0,201,0,"IMAGE"],[395,222,0,245,0,"IMAGE"],[396,245,0,214,0,"IMAGE"],[397,200,0,245,2,"STRING"],[399,222,0,242,0,"IMAGE"],[405,254,0,256,0,"IMAGE"],[406,255,0,256,1,"IMAGE"],[407,259,0,256,2,"IMAGE"],[408,258,0,256,3,"IMAGE"],[409,257,0,256,4,"IMAGE"],[422,256,0,245,1,"IMAGE"]],"groups":[{"id":2,"title":"Iterative Nano Banana","bounding":[1343.6209716796875,-1209.766357421875,1961.9517822265625,1260.2283935546875],"color":"#3f789e","font_size":24,"flags":{}},{"id":3,"title":"Images","bounding":[355.9539489746094,-1201.8511962890625,936.4111328125,1140.2022705078125],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ds":{"scale":1,"offset":[-402.36329650878906,1238.8250732421875]},"frontendVersion":"1.25.10","VHS_MetadataImage":true,"VHS_latentpreview":false,"VHS_KeepIntermediate":true,"VHS_latentpreviewrate":0,"ue_links":[],"links_added_by_ue":[]},"version":0.4} \ No newline at end of file +{"id":"2288dbf7-786d-489b-a2ed-9e8677912f34","revision":0,"last_node_id":275,"last_link_id":426,"nodes":[{"id":110,"type":"PreviewImage","pos":[2513.16796875,-1120.122314453125],"size":[331.3426208496094,324.6829528808594],"flags":{},"order":19,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":368}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[],"color":"#223","bgcolor":"#335"},{"id":109,"type":"SaveImage","pos":[2511.11083984375,-702.0146484375],"size":[781.212646484375,658.311767578125],"flags":{},"order":18,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":367},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["NanoIter\\nanoi"],"color":"#223","bgcolor":"#335"},{"id":201,"type":"PreviewImage","pos":[1360.77099609375,-645.6987915039062],"size":[663.215576171875,683.7775268554688],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":372}],"outputs":[],"title":"Iterative Image","properties":{"cnr_id":"comfy-core","ver":"0.3.56","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":267,"type":"Note","pos":[967.9016723632812,-1112.7979736328125],"size":[260.3798522949219,129.693603515625],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["Image 1 - Scene\nImage 2 - Person\nFor multiple images connect image output f\nrom batch node to 'images' in gemini node\n\nHeight and width in gemini node are for metadata purposes only. they do not effect image."],"color":"#432","bgcolor":"#653"},{"id":249,"type":"Note","pos":[2875.49462890625,-1125.0057373046875],"size":[367.5962219238281,119.58016204833984],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["Node\t Needs wiring?\tEffect\nFSLImageMemoryClearAll\t❌ No\tClears the entire memory dictionary\nFSLImageMemoryClear\t❌ No (✅ optional)\tClears only the key you specify"],"color":"#432","bgcolor":"#653"},{"id":248,"type":"FSLImageMemoryClear","pos":[2886.496337890625,-956.8795166015625],"size":[285.8374938964844,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClear","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["last"]},{"id":247,"type":"FSLImageMemoryClearAll","pos":[2889.6025390625,-837.6253051757812],"size":[309.63232421875,46.25725555419922],"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[],"properties":{"Node name for S&R":"FSLImageMemoryClearAll","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":257,"type":"LoadImage","pos":[973.365966796875,-423.67523193359375],"size":[277.14801025390625,331.3240051269531],"flags":{},"order":4,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[409]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 5","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["00000-998563309.png","image"]},{"id":258,"type":"LoadImage","pos":[668.9918823242188,-423.9723815917969],"size":[277.14801025390625,331.3240051269531],"flags":{},"order":5,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[408]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 4","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["00000-998563309.png","image"]},{"id":259,"type":"LoadImage","pos":[385.9632568359375,-422.0635070800781],"size":[251.13314819335938,328.5221252441406],"flags":{},"order":6,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[407]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 3","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["Screenshot 2025-10-12 185513.png","image"]},{"id":254,"type":"LoadImage","pos":[381.40728759765625,-807.6578369140625],"size":[270,326],"flags":{"collapsed":false},"order":7,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[405]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 1","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["grip_00310_.png","image"]},{"id":255,"type":"LoadImage","pos":[673.3596801757812,-806.506103515625],"size":[276.2181701660156,326],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[406]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"title":"Load Image 2","properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"widget_ue_connectable":{}},"widgets_values":["2025-10-02-111049_1975936534.png","image"]},{"id":250,"type":"Note","pos":[387.67437744140625,-1074.2576904296875],"size":[347.63018798828125,198.10414123535156],"flags":{},"order":9,"mode":0,"inputs":[],"outputs":[],"properties":{"ue_properties":{"widget_ue_connectable":{},"version":"7.2.2","input_ue_unconnectable":{}}},"widgets_values":["To start:\n\n1. set use_ini_image = false\n2. set use_images = true\n3. Enter positive prompt \n\nFor subsequent iterations:\n\n4. set use_ini_image = true (leave true for subsequent runs)\n5. set use_images = false\n6. bypass load image group"],"color":"#432","bgcolor":"#653"},{"id":274,"type":"Fast Groups Bypasser (rgthree)","pos":[96.36329650878906,-1114.8670654296875],"size":[236.74765625,82],"flags":{},"order":10,"mode":0,"inputs":[],"outputs":[{"name":"OPT_CONNECTION","type":"*","links":null}],"properties":{"matchColors":"","matchTitle":"","showNav":true,"showAllGraphs":true,"sort":"position","customSortAlphabet":"","toggleRestriction":"default","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}}},{"id":242,"type":"PreviewImage","pos":[1362.629150390625,-1126.8250732421875],"size":[644.0482177734375,425.1871032714844],"flags":{},"order":15,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":399}],"outputs":[],"title":"Griptape Image","properties":{"cnr_id":"comfy-core","ver":"0.3.65","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":256,"type":"ImageBatchMultiple+","pos":[978.8824462890625,-913.9879150390625],"size":[270,138],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"image_1","name":"image_1","type":"IMAGE","link":405},{"localized_name":"image_2","name":"image_2","shape":7,"type":"IMAGE","link":406},{"localized_name":"image_3","name":"image_3","shape":7,"type":"IMAGE","link":407},{"localized_name":"image_4","name":"image_4","shape":7,"type":"IMAGE","link":408},{"localized_name":"image_5","name":"image_5","shape":7,"type":"IMAGE","link":409},{"localized_name":"method","name":"method","type":"COMBO","widget":{"name":"method"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[424]}],"properties":{"cnr_id":"comfyui_essentials","ver":"1.1.0","Node name for S&R":"ImageBatchMultiple+","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["lanczos"]},{"id":200,"type":"FSLPromptCompose","pos":[2061.289794921875,-1126.2139892578125],"size":[400,200],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"STRING","widget":{"name":"positive"},"link":null},{"localized_name":"negative","name":"negative","type":"STRING","widget":{"name":"negative"},"link":null},{"localized_name":"lock_scene","name":"lock_scene","type":"BOOLEAN","widget":{"name":"lock_scene"},"link":null}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[425]}],"properties":{"Node name for S&R":"FSLPromptCompose","ue_properties":{"widget_ue_connectable":{"positive":true,"negative":true,"lock_scene":true},"version":"7.0.1"}},"widgets_values":["","studio backdrop, black background, portrait-only, isolation, cropping",false]},{"id":222,"type":"FSLImageMemoryRecallSafe","pos":[2070.807533203125,-46.19683532714841],"size":[333.2994079589844,58],"flags":{},"order":12,"mode":0,"inputs":[{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[372,399,423]}],"properties":{"Node name for S&R":"FSLImageMemoryRecallSafe","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.1","input_ue_unconnectable":{}}},"widgets_values":["last-2"]},{"id":214,"type":"FSLImageMemoryStore","pos":[2070.7094433593757,-152.60948022460946],"size":[285.8443298339844,58],"flags":{},"order":17,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":426},{"localized_name":"key","name":"key","type":"STRING","widget":{"name":"key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[367,368]}],"properties":{"Node name for S&R":"FSLImageMemoryStore","ue_properties":{"widget_ue_connectable":{"key":true},"version":"7.0.1"}},"widgets_values":["last-2"]},{"id":275,"type":"FSLGeminiGenerateImageV8","pos":[2062.583387417883,-862.8158005149152],"size":[400,632],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":423},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":424},{"localized_name":"mask","name":"mask","shape":7,"type":"MASK","link":null},{"localized_name":"mask_image","name":"mask_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":425},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"use_mask","name":"use_mask","type":"BOOLEAN","widget":{"name":"use_mask"},"link":null},{"localized_name":"base_for_inpaint","name":"base_for_inpaint","type":"COMBO","widget":{"name":"base_for_inpaint"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"invert_mask","name":"invert_mask","shape":7,"type":"BOOLEAN","widget":{"name":"invert_mask"},"link":null},{"localized_name":"feather_radius","name":"feather_radius","shape":7,"type":"INT","widget":{"name":"feather_radius"},"link":null},{"localized_name":"mask_strength","name":"mask_strength","shape":7,"type":"FLOAT","widget":{"name":"mask_strength"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[426]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":null}],"properties":{"ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{}},"Node name for S&R":"FSLGeminiGenerateImageV8"},"widgets_values":["","gemini-3-pro-image-preview",1024,1024,1,-1,"randomize",true,false,false,"auto",false,false,false,0,1,""]}],"links":[[367,214,0,109,0,"IMAGE"],[368,214,0,110,0,"IMAGE"],[372,222,0,201,0,"IMAGE"],[399,222,0,242,0,"IMAGE"],[405,254,0,256,0,"IMAGE"],[406,255,0,256,1,"IMAGE"],[407,259,0,256,2,"IMAGE"],[408,258,0,256,3,"IMAGE"],[409,257,0,256,4,"IMAGE"],[423,222,0,275,0,"IMAGE"],[424,256,0,275,1,"IMAGE"],[425,200,0,275,4,"STRING"],[426,275,0,214,0,"IMAGE"]],"groups":[{"id":2,"title":"Iterative Nano Banana","bounding":[1343.6209716796875,-1209.766357421875,1961.9517822265625,1260.2283935546875],"color":"#3f789e","font_size":24,"flags":{}},{"id":3,"title":"Images","bounding":[355.9539489746094,-1201.8511962890625,936.4111328125,1140.2022705078125],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ds":{"scale":1.1,"offset":[-1269.093660145153,1110.1727096058237]},"frontendVersion":"1.25.10","VHS_MetadataImage":true,"VHS_latentpreview":false,"VHS_KeepIntermediate":true,"VHS_latentpreviewrate":0,"ue_links":[],"links_added_by_ue":[]},"version":0.4} \ No newline at end of file diff --git a/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.png b/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.png index df736e3..32b5d96 100644 Binary files a/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.png and b/workflows/nano_banana/Nano Banana Iterative-Load 5 Images.png differ diff --git a/workflows/nano_banana/Nano Banana img2img Base.json b/workflows/nano_banana/Nano Banana img2img Base.json index ec871d5..83cb8d8 100644 --- a/workflows/nano_banana/Nano Banana img2img Base.json +++ b/workflows/nano_banana/Nano Banana img2img Base.json @@ -1 +1 @@ -{"id":"3dc30bdf-87e0-4554-973c-a4b1299f7326","revision":0,"last_node_id":47,"last_link_id":138,"nodes":[{"id":3,"type":"PreviewImage","pos":[-1021.0228881835938,217.05055236816406],"size":[566.0535888671875,487.79541015625],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":126}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":4,"type":"SaveImage","pos":[-1460.7557373046875,802.17529296875],"size":[824.0883178710938,654.5703125],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":125},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["nanob\\nano"]},{"id":6,"type":"CivitaiGalleryNode","pos":[-2321.05712890625,901.6752319335938],"size":[827.8665161132812,670],"flags":{},"order":0,"mode":4,"inputs":[],"outputs":[{"localized_name":"positive_prompt","name":"positive_prompt","type":"STRING","links":null},{"localized_name":"negative_prompt","name":"negative_prompt","type":"STRING","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":[]},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Civitai_Gallery","ver":"d8ac26cd125d4f6aeb6ff0d9012a452cabdbc3a7","Node name for S&R":"CivitaiGalleryNode","civitai_gallery_unique_id":"civitai-gallery-12td9ij","aux_id":"Firetheft/ComfyUI_Civitai_Gallery","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection_data":"{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}"},"widgets_values":["","{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}",""]},{"id":46,"type":"FSLGeminiGenerateImageV6","pos":[-1462.651123046875,206.432373046875],"size":[400,512],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":134},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":138},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[123,125,126]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":[124]}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV6","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["","gemini-2.5-flash-image",1024,1024,1,1165349873,"randomize",false,true,false,false,""]},{"id":45,"type":"FSLImageSaverWithMetadataV5","pos":[-590.2478637695312,801.359375],"size":[310.0025329589844,462],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":123},{"localized_name":"external_metadata","name":"external_metadata","shape":7,"type":"DICT","link":124},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"save_to_subfolder","name":"save_to_subfolder","type":"STRING","widget":{"name":"save_to_subfolder"},"link":null},{"localized_name":"append_datetime","name":"append_datetime","shape":7,"type":"BOOLEAN","widget":{"name":"append_datetime"},"link":null},{"localized_name":"model_string","name":"model_string","shape":7,"type":"STRING","widget":{"name":"model_string"},"link":null},{"localized_name":"modelname","name":"modelname","shape":7,"type":"STRING","widget":{"name":"modelname"},"link":null},{"localized_name":"seed_string","name":"seed_string","shape":7,"type":"STRING","widget":{"name":"seed_string"},"link":null},{"localized_name":"width_string","name":"width_string","shape":7,"type":"STRING","widget":{"name":"width_string"},"link":null},{"localized_name":"height_string","name":"height_string","shape":7,"type":"STRING","widget":{"name":"height_string"},"link":null},{"localized_name":"temperature_string","name":"temperature_string","shape":7,"type":"STRING","widget":{"name":"temperature_string"},"link":null},{"localized_name":"positive_string","name":"positive_string","shape":7,"type":"STRING","widget":{"name":"positive_string"},"link":null},{"localized_name":"negative_string","name":"negative_string","shape":7,"type":"STRING","widget":{"name":"negative_string"},"link":null},{"localized_name":"cfg_string","name":"cfg_string","shape":7,"type":"STRING","widget":{"name":"cfg_string"},"link":null},{"localized_name":"steps_string","name":"steps_string","shape":7,"type":"STRING","widget":{"name":"steps_string"},"link":null},{"localized_name":"sampler_string","name":"sampler_string","shape":7,"type":"STRING","widget":{"name":"sampler_string"},"link":null},{"localized_name":"scheduler_string","name":"scheduler_string","shape":7,"type":"STRING","widget":{"name":"scheduler_string"},"link":null},{"localized_name":"guidance_scale_string","name":"guidance_scale_string","shape":7,"type":"STRING","widget":{"name":"guidance_scale_string"},"link":null},{"localized_name":"watermark_string","name":"watermark_string","shape":7,"type":"STRING","widget":{"name":"watermark_string"},"link":null}],"outputs":[{"localized_name":"metadata_raw","name":"metadata_raw","type":"METADATA_RAW","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":null}],"properties":{"Node name for S&R":"FSLImageSaverWithMetadataV5","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["Gem_Img2Img","metadata",true,"","","","","","","","","","","","","",""]},{"id":5,"type":"LocalImageGalleryNode","pos":[-2813.092041015625,135.8258056640625],"size":[800,670],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[134]},{"localized_name":"paths","name":"paths","type":"LMM_ALL_PATHS","links":null},{"localized_name":"path","name":"path","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Local_Image_Gallery","ver":"5b4bc0b097335c9111e5cb77e668a3b777b13349","Node name for S&R":"LocalImageGalleryNode","gallery_unique_id":"gallery-tt4x8isoh","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection":"[{\"path\":\"c:\\\\users\\\\fredlef\\\\documents\\\\comfyui312\\\\comfyui\\\\input\\\\2025-09-04-131708_0.png\",\"type\":\"image\"}]"},"widgets_values":["","[{\"path\":\"c:\\\\users\\\\fredlef\\\\documents\\\\comfyui312\\\\comfyui\\\\input\\\\2025-09-04-131708_0.png\",\"type\":\"image\"}]",""]},{"id":47,"type":"FSLPromptCompose","pos":[-1941.127685546875,282.5074768066406],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"STRING","widget":{"name":"positive"},"link":null},{"localized_name":"negative","name":"negative","type":"STRING","widget":{"name":"negative"},"link":null},{"localized_name":"lock_scene","name":"lock_scene","type":"BOOLEAN","widget":{"name":"lock_scene"},"link":null}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[138]}],"properties":{"Node name for S&R":"FSLPromptCompose","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["Describe the change you want…","studio backdrop, black background, portrait-only, isolation, cropping",true]}],"links":[[123,46,0,45,0,"IMAGE"],[124,46,8,45,1,"DICT"],[125,46,0,4,0,"IMAGE"],[126,46,0,3,0,"IMAGE"],[134,5,0,46,1,"IMAGE"],[138,47,0,46,2,"STRING"]],"groups":[],"config":{},"extra":{"ue_links":[],"links_added_by_ue":[],"ds":{"scale":0.6695232520950839,"offset":[3255.4957892910566,170.05343578908503]}},"version":0.4} \ No newline at end of file +{"id":"3dc30bdf-87e0-4554-973c-a4b1299f7326","revision":0,"last_node_id":48,"last_link_id":144,"nodes":[{"id":3,"type":"PreviewImage","pos":[-1021.0228881835938,217.05055236816406],"size":[566.0535888671875,487.79541015625],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":140}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":6,"type":"CivitaiGalleryNode","pos":[-2321.05712890625,901.6752319335938],"size":[827.8665161132812,670],"flags":{},"order":0,"mode":4,"inputs":[],"outputs":[{"localized_name":"positive_prompt","name":"positive_prompt","type":"STRING","links":null},{"localized_name":"negative_prompt","name":"negative_prompt","type":"STRING","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":[]},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Civitai_Gallery","ver":"d8ac26cd125d4f6aeb6ff0d9012a452cabdbc3a7","Node name for S&R":"CivitaiGalleryNode","civitai_gallery_unique_id":"civitai-gallery-12td9ij","aux_id":"Firetheft/ComfyUI_Civitai_Gallery","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection_data":"{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}"},"widgets_values":["","{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}",""]},{"id":45,"type":"FSLImageSaverWithMetadataV5","pos":[-590.2478637695312,801.359375],"size":[310.0025329589844,462],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":142},{"localized_name":"external_metadata","name":"external_metadata","shape":7,"type":"DICT","link":143},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"save_to_subfolder","name":"save_to_subfolder","type":"STRING","widget":{"name":"save_to_subfolder"},"link":null},{"localized_name":"append_datetime","name":"append_datetime","shape":7,"type":"BOOLEAN","widget":{"name":"append_datetime"},"link":null},{"localized_name":"model_string","name":"model_string","shape":7,"type":"STRING","widget":{"name":"model_string"},"link":null},{"localized_name":"modelname","name":"modelname","shape":7,"type":"STRING","widget":{"name":"modelname"},"link":null},{"localized_name":"seed_string","name":"seed_string","shape":7,"type":"STRING","widget":{"name":"seed_string"},"link":null},{"localized_name":"width_string","name":"width_string","shape":7,"type":"STRING","widget":{"name":"width_string"},"link":null},{"localized_name":"height_string","name":"height_string","shape":7,"type":"STRING","widget":{"name":"height_string"},"link":null},{"localized_name":"temperature_string","name":"temperature_string","shape":7,"type":"STRING","widget":{"name":"temperature_string"},"link":null},{"localized_name":"positive_string","name":"positive_string","shape":7,"type":"STRING","widget":{"name":"positive_string"},"link":null},{"localized_name":"negative_string","name":"negative_string","shape":7,"type":"STRING","widget":{"name":"negative_string"},"link":null},{"localized_name":"cfg_string","name":"cfg_string","shape":7,"type":"STRING","widget":{"name":"cfg_string"},"link":null},{"localized_name":"steps_string","name":"steps_string","shape":7,"type":"STRING","widget":{"name":"steps_string"},"link":null},{"localized_name":"sampler_string","name":"sampler_string","shape":7,"type":"STRING","widget":{"name":"sampler_string"},"link":null},{"localized_name":"scheduler_string","name":"scheduler_string","shape":7,"type":"STRING","widget":{"name":"scheduler_string"},"link":null},{"localized_name":"guidance_scale_string","name":"guidance_scale_string","shape":7,"type":"STRING","widget":{"name":"guidance_scale_string"},"link":null},{"localized_name":"watermark_string","name":"watermark_string","shape":7,"type":"STRING","widget":{"name":"watermark_string"},"link":null}],"outputs":[{"localized_name":"metadata_raw","name":"metadata_raw","type":"METADATA_RAW","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":null}],"properties":{"Node name for S&R":"FSLImageSaverWithMetadataV5","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["Gem_Img2Img","metadata",true,"","","","","","","","","","","","","",""]},{"id":4,"type":"SaveImage","pos":[-1460.7557373046875,960.6777774127692],"size":[824.0883178710938,654.5703125],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":141},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["nanob\\nano"]},{"id":5,"type":"LocalImageGalleryNode","pos":[-2813.092041015625,135.8258056640625],"size":[800,670],"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[139]},{"localized_name":"paths","name":"paths","type":"LMM_ALL_PATHS","links":null},{"localized_name":"path","name":"path","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Local_Image_Gallery","ver":"5b4bc0b097335c9111e5cb77e668a3b777b13349","Node name for S&R":"LocalImageGalleryNode","gallery_unique_id":"gallery-tt4x8isoh","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection":"[{\"path\":\"c:\\\\users\\\\fredlef\\\\pictures\\\\Fred-pics\\\\bridgetopaz.png\",\"type\":\"image\"}]"},"widgets_values":["","[{\"path\":\"c:\\\\users\\\\fredlef\\\\pictures\\\\Fred-pics\\\\bridgetopaz.png\",\"type\":\"image\"}]",""]},{"id":47,"type":"FSLPromptCompose","pos":[-1958.8327502986006,332.2502777757743],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"positive","name":"positive","type":"STRING","widget":{"name":"positive"},"link":null},{"localized_name":"negative","name":"negative","type":"STRING","widget":{"name":"negative"},"link":null},{"localized_name":"lock_scene","name":"lock_scene","type":"BOOLEAN","widget":{"name":"lock_scene"},"link":null}],"outputs":[{"localized_name":"prompt","name":"prompt","type":"STRING","links":[144]}],"properties":{"Node name for S&R":"FSLPromptCompose","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["change the photo to a color image with blue sky and remove the haze","studio backdrop, black background, portrait-only, isolation, cropping",true]},{"id":48,"type":"FSLGeminiGenerateImageV8","pos":[-1476.7241312469089,231.69735921432522],"size":[400,632],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":139},{"localized_name":"mask","name":"mask","shape":7,"type":"MASK","link":null},{"localized_name":"mask_image","name":"mask_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":144},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"use_mask","name":"use_mask","type":"BOOLEAN","widget":{"name":"use_mask"},"link":null},{"localized_name":"base_for_inpaint","name":"base_for_inpaint","type":"COMBO","widget":{"name":"base_for_inpaint"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"invert_mask","name":"invert_mask","shape":7,"type":"BOOLEAN","widget":{"name":"invert_mask"},"link":null},{"localized_name":"feather_radius","name":"feather_radius","shape":7,"type":"INT","widget":{"name":"feather_radius"},"link":null},{"localized_name":"mask_strength","name":"mask_strength","shape":7,"type":"FLOAT","widget":{"name":"mask_strength"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[140,141,142]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":[143]}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV8","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.3"}},"widgets_values":["","gemini-3-pro-image-preview",1024,1024,1,759798791,"randomize",false,true,false,"auto",false,false,false,0,1,""]}],"links":[[139,5,0,48,1,"IMAGE"],[140,48,0,3,0,"IMAGE"],[141,48,0,4,0,"IMAGE"],[142,48,0,45,0,"IMAGE"],[143,48,8,45,1,"DICT"],[144,47,0,48,4,"STRING"]],"groups":[],"config":{},"extra":{"ue_links":[],"links_added_by_ue":[],"ds":{"scale":1.1861012820048196,"offset":[2490.971412024325,-133.05485559756858]}},"version":0.4} \ No newline at end of file diff --git a/workflows/nano_banana/Nano Banana img2img Base.png b/workflows/nano_banana/Nano Banana img2img Base.png index 65436e2..0979b14 100644 Binary files a/workflows/nano_banana/Nano Banana img2img Base.png and b/workflows/nano_banana/Nano Banana img2img Base.png differ diff --git a/workflows/nano_banana/Nano Banana img2img w_Griptape.json b/workflows/nano_banana/Nano Banana img2img w_Griptape.json index 76d20fa..8bd9a56 100644 --- a/workflows/nano_banana/Nano Banana img2img w_Griptape.json +++ b/workflows/nano_banana/Nano Banana img2img w_Griptape.json @@ -1 +1 @@ -{"id":"3eb481ac-fc11-4a3c-8682-9103814a2d9c","revision":0,"last_node_id":46,"last_link_id":134,"nodes":[{"id":19,"type":"Griptape Create: Rules","pos":[-3843.040771484375,263.70428466796875],"size":[380,160],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[73]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"NSFW Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["NSFW Blocker","Never include nudity, suggestive content, or explicit scenes in any prompts.\nAvoid adult themes, partial nudity, or sexual innuendo. Keep all prompts family friendly.\n"]},{"id":20,"type":"SetNode","pos":[-3303.041015625,723.7037963867188],"size":[210,34],"flags":{"collapsed":true},"order":14,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":64}],"outputs":[{"name":"*","type":"*","links":[]}],"title":"Set_GT-IMG-BAS-2","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-2"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":21,"type":"SetNode","pos":[-3303.041015625,643.7037963867188],"size":[210,34],"flags":{"collapsed":true},"order":15,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":65}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-1","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-1"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":22,"type":"SetNode","pos":[-3292.147705078125,773.4330444335938],"size":[210,34],"flags":{"collapsed":true},"order":16,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":66}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-3","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-3"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":23,"type":"Griptape Create: Rules","pos":[-3840.643310546875,314.90338134765625],"size":[400,200],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[75]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"General Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","You are an expert in creating image generation rules that are high quality and very beautiful.\nYou are an expert in creating amazing images of cats.\nAlways include the following information in the prompt: composition, lighting, design, style, camera lens information, camera angle, time of day, detailed description of character and emotion of the image."]},{"id":24,"type":"SetNode","pos":[-3616.699462890625,1065.2716064453125],"size":[210,58],"flags":{},"order":9,"mode":0,"inputs":[{"name":"STRING","type":"STRING","link":67}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-Clip-Encode","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-Clip-Encode"]},{"id":25,"type":"SetNode","pos":[-2894.857421875,1135.0672607421875],"size":[210,58],"flags":{},"order":12,"mode":0,"inputs":[{"name":"STRING","type":"STRING","link":68}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GripPos","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GripPos"]},{"id":28,"type":"Griptape Create: Image from Text","pos":[-3378.885498046875,601.3731079101562],"size":[403.1999816894531,200],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":70},{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":71},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"driver","name":"driver","shape":7,"type":"DRIVER","link":72},{"localized_name":"STRING","name":"STRING","type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[64,65,66,78,79]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":null},{"localized_name":"file_path","name":"file_path","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Image from Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[""]},{"id":29,"type":"Griptape Driver: OpenAI Image Generation","pos":[-3503.040771484375,223.70407104492188],"size":[504,130],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image_generation_model","name":"image_generation_model","shape":7,"type":"COMBO","widget":{"name":"image_generation_model"},"link":null},{"localized_name":"size","name":"size","shape":7,"type":"COMBO","widget":{"name":"size"},"link":null},{"localized_name":"api_key_env_var","name":"api_key_env_var","shape":7,"type":"STRING","widget":{"name":"api_key_env_var"},"link":null}],"outputs":[{"localized_name":"DRIVER","name":"DRIVER","type":"DRIVER","links":[72]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Driver: OpenAI Image Generation","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["dall-e-3","1024x1024","OPENAI_API_KEY",null]},{"id":30,"type":"Griptape Combine: Rules List","pos":[-3871.842041015625,422.0967102050781],"size":[352.79998779296875,86],"flags":{"collapsed":false},"order":6,"mode":0,"inputs":[{"localized_name":"rules_1","name":"rules_1","shape":7,"type":"RULESET","link":73},{"name":"rules_2","type":"RULESET","link":74},{"name":"rules_3","type":"RULESET","link":75},{"name":"rules_4","type":"RULESET","link":null}],"outputs":[{"localized_name":"RULESET","name":"RULESET","type":"RULESET","links":[76]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Combine: Rules List","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":31,"type":"Griptape Create: Rules","pos":[-3855.613525390625,364.72808837890625],"size":[400,200],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[74]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","dark background\nthe magic spiral\nthe golden hour"]},{"id":35,"type":"PreviewImage","pos":[-2923.041015625,203.70413208007812],"size":[480,320],"flags":{},"order":17,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":78}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"PreviewImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":36,"type":"SaveImage","pos":[-2937.13623046875,595.5859375],"size":[516.8700561523438,419.5692138671875],"flags":{},"order":18,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":79},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"SaveImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["griptape\\grip"]},{"id":34,"type":"Griptape Display: Text","pos":[-3832.888427734375,886.0450439453125],"size":[640,480],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"INPUT","name":"INPUT","shape":7,"type":"STRING","link":77},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[67,69,70]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Display: Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["Certainly! Here’s an image generation prompt for creating a person as a clown, following all your rules:\n\nPrompt:\n\nA whimsical clown stands in the center of the composition, set against a dark background. The scene is illuminated by the soft, warm glow of the golden hour, casting gentle highlights and long shadows. The clown wears a vibrant, multi-colored costume with oversized buttons and a ruffled collar, and their face is painted with a joyful expression, featuring a big red nose and a wide, cheerful smile. The magic spiral motif is subtly incorporated into the background, adding a sense of wonder and playfulness. The image is captured with a 50mm lens at eye level, creating an intimate and engaging perspective. The overall style is highly detailed and painterly, with rich textures and a sense of warmth and happiness."]},{"id":26,"type":"ShowText|pysssss","pos":[-3065.581298828125,1121.228759765625],"size":[412.6090087890625,242.69412231445312],"flags":{},"order":10,"mode":0,"inputs":[{"localized_name":"text","name":"text","type":"STRING","link":69}],"outputs":[{"localized_name":"STRING","name":"STRING","shape":6,"type":"STRING","links":[68,127]}],"properties":{"cnr_id":"comfyui-custom-scripts","ver":"ba22ba11e9073d45c5779d557593b2f106aac8b4","Node name for S&R":"ShowText|pysssss","ue_properties":{"version":"7.1","widget_ue_connectable":{},"input_ue_unconnectable":{}}},"widgets_values":[]},{"id":3,"type":"PreviewImage","pos":[-1021.0228881835938,217.05055236816406],"size":[566.0535888671875,487.79541015625],"flags":{},"order":20,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":126}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":4,"type":"SaveImage","pos":[-1460.7557373046875,802.17529296875],"size":[824.0883178710938,654.5703125],"flags":{},"order":19,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":125},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["nanob\\nano"]},{"id":6,"type":"CivitaiGalleryNode","pos":[-2321.05712890625,901.6752319335938],"size":[827.8665161132812,670],"flags":{},"order":4,"mode":4,"inputs":[],"outputs":[{"localized_name":"positive_prompt","name":"positive_prompt","type":"STRING","links":null},{"localized_name":"negative_prompt","name":"negative_prompt","type":"STRING","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":[]},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Civitai_Gallery","ver":"d8ac26cd125d4f6aeb6ff0d9012a452cabdbc3a7","Node name for S&R":"CivitaiGalleryNode","civitai_gallery_unique_id":"civitai-gallery-12td9ij","aux_id":"Firetheft/ComfyUI_Civitai_Gallery","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection_data":"{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}"},"widgets_values":["","{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}",""]},{"id":46,"type":"FSLGeminiGenerateImageV6","pos":[-1462.651123046875,206.432373046875],"size":[400,512],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":134},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":127},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[123,125,126]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":[124]}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV6","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["","gemini-2.5-flash-image",1024,1024,1,1165349873,"randomize",false,true,false,false,""]},{"id":45,"type":"FSLImageSaverWithMetadataV5","pos":[-590.2478637695312,801.359375],"size":[310.0025329589844,462],"flags":{},"order":21,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":123},{"localized_name":"external_metadata","name":"external_metadata","shape":7,"type":"DICT","link":124},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"save_to_subfolder","name":"save_to_subfolder","type":"STRING","widget":{"name":"save_to_subfolder"},"link":null},{"localized_name":"append_datetime","name":"append_datetime","shape":7,"type":"BOOLEAN","widget":{"name":"append_datetime"},"link":null},{"localized_name":"model_string","name":"model_string","shape":7,"type":"STRING","widget":{"name":"model_string"},"link":null},{"localized_name":"modelname","name":"modelname","shape":7,"type":"STRING","widget":{"name":"modelname"},"link":null},{"localized_name":"seed_string","name":"seed_string","shape":7,"type":"STRING","widget":{"name":"seed_string"},"link":null},{"localized_name":"width_string","name":"width_string","shape":7,"type":"STRING","widget":{"name":"width_string"},"link":null},{"localized_name":"height_string","name":"height_string","shape":7,"type":"STRING","widget":{"name":"height_string"},"link":null},{"localized_name":"temperature_string","name":"temperature_string","shape":7,"type":"STRING","widget":{"name":"temperature_string"},"link":null},{"localized_name":"positive_string","name":"positive_string","shape":7,"type":"STRING","widget":{"name":"positive_string"},"link":null},{"localized_name":"negative_string","name":"negative_string","shape":7,"type":"STRING","widget":{"name":"negative_string"},"link":null},{"localized_name":"cfg_string","name":"cfg_string","shape":7,"type":"STRING","widget":{"name":"cfg_string"},"link":null},{"localized_name":"steps_string","name":"steps_string","shape":7,"type":"STRING","widget":{"name":"steps_string"},"link":null},{"localized_name":"sampler_string","name":"sampler_string","shape":7,"type":"STRING","widget":{"name":"sampler_string"},"link":null},{"localized_name":"scheduler_string","name":"scheduler_string","shape":7,"type":"STRING","widget":{"name":"scheduler_string"},"link":null},{"localized_name":"guidance_scale_string","name":"guidance_scale_string","shape":7,"type":"STRING","widget":{"name":"guidance_scale_string"},"link":null},{"localized_name":"watermark_string","name":"watermark_string","shape":7,"type":"STRING","widget":{"name":"watermark_string"},"link":null}],"outputs":[{"localized_name":"metadata_raw","name":"metadata_raw","type":"METADATA_RAW","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":null}],"properties":{"Node name for S&R":"FSLImageSaverWithMetadataV5","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["Gem_Img2Img","metadata",true,"","","","","","","","","","","","","",""]},{"id":5,"type":"LocalImageGalleryNode","pos":[-2318.709716796875,153.74896240234375],"size":[800,670],"flags":{},"order":5,"mode":0,"inputs":[],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[134]},{"localized_name":"paths","name":"paths","type":"LMM_ALL_PATHS","links":null},{"localized_name":"path","name":"path","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Local_Image_Gallery","ver":"5b4bc0b097335c9111e5cb77e668a3b777b13349","Node name for S&R":"LocalImageGalleryNode","gallery_unique_id":"gallery-tt4x8isoh","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection":"[{\"path\":\"c:\\\\users\\\\fredlef\\\\documents\\\\comfyui312\\\\comfyui\\\\input\\\\2025-09-04-131708_0.png\",\"type\":\"image\"}]"},"widgets_values":["","[{\"path\":\"c:\\\\users\\\\fredlef\\\\documents\\\\comfyui312\\\\comfyui\\\\input\\\\2025-09-04-131708_0.png\",\"type\":\"image\"}]",""]},{"id":33,"type":"Griptape Create: Agent","pos":[-3880.5263671875,481.9798278808594],"size":[400,246],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":null},{"localized_name":"config","name":"config","shape":7,"type":"CONFIG","link":null},{"localized_name":"tools","name":"tools","shape":7,"type":"TOOL_LIST","link":null},{"localized_name":"rulesets","name":"rulesets","shape":7,"type":"RULESET","link":76},{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":null},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null},{"localized_name":"max_subtasks","name":"max_subtasks","shape":7,"type":"INT","widget":{"name":"max_subtasks"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[77]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":[71]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Agent","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["make the peron a clown",3]}],"links":[[64,28,0,20,0,"*"],[65,28,0,21,0,"*"],[66,28,0,22,0,"*"],[67,34,0,24,0,"*"],[68,26,0,25,0,"*"],[69,34,0,26,0,"STRING"],[70,34,0,28,0,"STRING"],[71,33,1,28,1,"AGENT"],[72,29,0,28,3,"DRIVER"],[73,19,0,30,0,"RULESET"],[74,31,0,30,1,"RULESET"],[75,23,0,30,2,"RULESET"],[76,30,0,33,3,"RULESET"],[77,33,0,34,0,"STRING"],[78,28,0,35,0,"IMAGE"],[79,28,0,36,0,"IMAGE"],[123,46,0,45,0,"IMAGE"],[124,46,8,45,1,"DICT"],[125,46,0,4,0,"IMAGE"],[126,46,0,3,0,"IMAGE"],[127,26,0,46,2,"STRING"],[134,5,0,46,1,"IMAGE"]],"groups":[{"id":1,"title":"Griptape Loader","bounding":[-3901.568603515625,124.50535583496094,1520,1260],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ue_links":[],"links_added_by_ue":[],"ds":{"scale":0.6695232520950839,"offset":[3876.833433201475,1.2766238614956782]}},"version":0.4} \ No newline at end of file +{"id":"3eb481ac-fc11-4a3c-8682-9103814a2d9c","revision":0,"last_node_id":48,"last_link_id":140,"nodes":[{"id":19,"type":"Griptape Create: Rules","pos":[-3843.040771484375,263.70428466796875],"size":[380,160],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[73]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"NSFW Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["NSFW Blocker","Never include nudity, suggestive content, or explicit scenes in any prompts.\nAvoid adult themes, partial nudity, or sexual innuendo. Keep all prompts family friendly.\n"]},{"id":20,"type":"SetNode","pos":[-3303.041015625,723.7037963867188],"size":[210,34],"flags":{"collapsed":true},"order":15,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":64}],"outputs":[{"name":"*","type":"*","links":[]}],"title":"Set_GT-IMG-BAS-2","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-2"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":21,"type":"SetNode","pos":[-3303.041015625,643.7037963867188],"size":[210,34],"flags":{"collapsed":true},"order":16,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":65}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-1","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-1"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":22,"type":"SetNode","pos":[-3292.147705078125,773.4330444335938],"size":[210,34],"flags":{"collapsed":true},"order":17,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":66}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-3","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-3"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":23,"type":"Griptape Create: Rules","pos":[-3840.643310546875,314.90338134765625],"size":[400,200],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[75]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"General Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","You are an expert in creating image generation rules that are high quality and very beautiful.\nYou are an expert in creating amazing images of cats.\nAlways include the following information in the prompt: composition, lighting, design, style, camera lens information, camera angle, time of day, detailed description of character and emotion of the image."]},{"id":24,"type":"SetNode","pos":[-3616.699462890625,1065.2716064453125],"size":[210,58],"flags":{},"order":10,"mode":0,"inputs":[{"name":"STRING","type":"STRING","link":67}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-Clip-Encode","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-Clip-Encode"]},{"id":25,"type":"SetNode","pos":[-2894.857421875,1135.0672607421875],"size":[210,58],"flags":{},"order":13,"mode":0,"inputs":[{"name":"STRING","type":"STRING","link":68}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GripPos","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GripPos"]},{"id":28,"type":"Griptape Create: Image from Text","pos":[-3378.885498046875,601.3731079101562],"size":[403.1999816894531,200],"flags":{},"order":12,"mode":0,"inputs":[{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":70},{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":71},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"driver","name":"driver","shape":7,"type":"DRIVER","link":72},{"localized_name":"STRING","name":"STRING","type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[64,65,66,78,79]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":null},{"localized_name":"file_path","name":"file_path","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Image from Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[""]},{"id":29,"type":"Griptape Driver: OpenAI Image Generation","pos":[-3503.040771484375,223.70407104492188],"size":[504,130],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image_generation_model","name":"image_generation_model","shape":7,"type":"COMBO","widget":{"name":"image_generation_model"},"link":null},{"localized_name":"size","name":"size","shape":7,"type":"COMBO","widget":{"name":"size"},"link":null},{"localized_name":"api_key_env_var","name":"api_key_env_var","shape":7,"type":"STRING","widget":{"name":"api_key_env_var"},"link":null}],"outputs":[{"localized_name":"DRIVER","name":"DRIVER","type":"DRIVER","links":[72]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Driver: OpenAI Image Generation","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["dall-e-3","1024x1024","OPENAI_API_KEY",null]},{"id":30,"type":"Griptape Combine: Rules List","pos":[-3871.842041015625,422.0967102050781],"size":[352.79998779296875,86],"flags":{"collapsed":false},"order":6,"mode":0,"inputs":[{"localized_name":"rules_1","name":"rules_1","shape":7,"type":"RULESET","link":73},{"name":"rules_2","type":"RULESET","link":74},{"name":"rules_3","type":"RULESET","link":75},{"name":"rules_4","type":"RULESET","link":null}],"outputs":[{"localized_name":"RULESET","name":"RULESET","type":"RULESET","links":[76]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Combine: Rules List","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":31,"type":"Griptape Create: Rules","pos":[-3855.613525390625,364.72808837890625],"size":[400,200],"flags":{"collapsed":true},"order":3,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[74]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","dark background\nthe magic spiral\nthe golden hour"]},{"id":35,"type":"PreviewImage","pos":[-2923.041015625,203.70413208007812],"size":[480,320],"flags":{},"order":18,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":78}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"PreviewImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":36,"type":"SaveImage","pos":[-2937.13623046875,595.5859375],"size":[516.8700561523438,419.5692138671875],"flags":{},"order":19,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":79},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"SaveImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["griptape\\grip"]},{"id":34,"type":"Griptape Display: Text","pos":[-3832.888427734375,886.0450439453125],"size":[640,480],"flags":{},"order":9,"mode":0,"inputs":[{"localized_name":"INPUT","name":"INPUT","shape":7,"type":"STRING","link":77},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[67,69,70]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Display: Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["Certainly! Here’s an image generation prompt for creating a person as a clown, following all your rules:\n\nPrompt:\n\nA whimsical clown stands in the center of the composition, set against a dark background. The scene is illuminated by the soft, warm glow of the golden hour, casting gentle highlights and long shadows. The clown wears a vibrant, multi-colored costume with oversized buttons and a ruffled collar, and their face is painted with a joyful expression, featuring a big red nose and a wide, cheerful smile. The magic spiral motif is subtly incorporated into the background, adding a sense of wonder and playfulness. The image is captured with a 50mm lens at eye level, creating an intimate and engaging perspective. The overall style is highly detailed and painterly, with rich textures and a sense of warmth and happiness."]},{"id":4,"type":"SaveImage","pos":[-1460.7557373046875,802.17529296875],"size":[824.0883178710938,654.5703125],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":140},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["nanob\\nano"]},{"id":6,"type":"CivitaiGalleryNode","pos":[-2321.05712890625,901.6752319335938],"size":[827.8665161132812,670],"flags":{},"order":4,"mode":4,"inputs":[],"outputs":[{"localized_name":"positive_prompt","name":"positive_prompt","type":"STRING","links":null},{"localized_name":"negative_prompt","name":"negative_prompt","type":"STRING","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":[]},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Civitai_Gallery","ver":"d8ac26cd125d4f6aeb6ff0d9012a452cabdbc3a7","Node name for S&R":"CivitaiGalleryNode","civitai_gallery_unique_id":"civitai-gallery-12td9ij","aux_id":"Firetheft/ComfyUI_Civitai_Gallery","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection_data":"{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}"},"widgets_values":["","{\"item\":{\"id\":64399178,\"url\":\"https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/db5208dd-da08-40c7-8ed4-bd67508740ac/original=true/db5208dd-da08-40c7-8ed4-bd67508740ac.jpeg\",\"hash\":\"U56*jp^f581lyEo#%f%M5EF4~p^d?b%1x]Ny\",\"width\":832,\"height\":1216,\"nsfwLevel\":\"None\",\"type\":\"image\",\"nsfw\":false,\"browsingLevel\":1,\"createdAt\":\"2025-04-11T19:56:34.648Z\",\"postId\":14356296,\"stats\":{\"cryCount\":1195,\"laughCount\":1981,\"likeCount\":14951,\"dislikeCount\":0,\"heartCount\":5329,\"commentCount\":27},\"meta\":{\"Size\":\"832x1216\",\"nsfw\":false,\"seed\":588815599,\"draft\":false,\"steps\":30,\"width\":832,\"height\":1216,\"prompt\":\"A close-up of a face adorned with intricate black and blue patterns. The left side of the face is predominantly yellow, with symbols and doodles, while the right side is dark, featuring mechanical elements. The eye on the left is a striking shade of yellow, contrasting sharply with the surrounding patterns. The face is partially covered by a hooded garment, cinematic_1940s cinematic_octane\",\"sampler\":\"Undefined\",\"cfgScale\":2.5,\"clipSkip\":2,\"fluxMode\":\"urn:air:flux1:checkpoint:civitai:618692@691639\",\"quantity\":4,\"workflow\":\"txt2img\",\"baseModel\":\"Flux1\",\"resources\":[],\"Created Date\":\"2025-03-19T0829:50.1337521Z\",\"civitaiResources\":[{\"type\":\"checkpoint\",\"modelVersionId\":691639,\"modelVersionName\":\"Dev\"},{\"type\":\"lora\",\"weight\":0.3,\"modelVersionId\":1527024,\"modelVersionName\":\"Cinematic 1940s\"},{\"type\":\"lora\",\"weight\":0.2,\"modelVersionId\":1526912,\"modelVersionName\":\"Cinematic Octane\"}]},\"username\":\"L10n_H34r7\",\"baseModel\":\"Flux.1 D\",\"modelVersionIds\":[691639,1526912,1527024]},\"download_image\":false}",""]},{"id":45,"type":"FSLImageSaverWithMetadataV5","pos":[-590.2478637695312,801.359375],"size":[310.0025329589844,462],"flags":{},"order":21,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":137},{"localized_name":"external_metadata","name":"external_metadata","shape":7,"type":"DICT","link":138},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"save_to_subfolder","name":"save_to_subfolder","type":"STRING","widget":{"name":"save_to_subfolder"},"link":null},{"localized_name":"append_datetime","name":"append_datetime","shape":7,"type":"BOOLEAN","widget":{"name":"append_datetime"},"link":null},{"localized_name":"model_string","name":"model_string","shape":7,"type":"STRING","widget":{"name":"model_string"},"link":null},{"localized_name":"modelname","name":"modelname","shape":7,"type":"STRING","widget":{"name":"modelname"},"link":null},{"localized_name":"seed_string","name":"seed_string","shape":7,"type":"STRING","widget":{"name":"seed_string"},"link":null},{"localized_name":"width_string","name":"width_string","shape":7,"type":"STRING","widget":{"name":"width_string"},"link":null},{"localized_name":"height_string","name":"height_string","shape":7,"type":"STRING","widget":{"name":"height_string"},"link":null},{"localized_name":"temperature_string","name":"temperature_string","shape":7,"type":"STRING","widget":{"name":"temperature_string"},"link":null},{"localized_name":"positive_string","name":"positive_string","shape":7,"type":"STRING","widget":{"name":"positive_string"},"link":null},{"localized_name":"negative_string","name":"negative_string","shape":7,"type":"STRING","widget":{"name":"negative_string"},"link":null},{"localized_name":"cfg_string","name":"cfg_string","shape":7,"type":"STRING","widget":{"name":"cfg_string"},"link":null},{"localized_name":"steps_string","name":"steps_string","shape":7,"type":"STRING","widget":{"name":"steps_string"},"link":null},{"localized_name":"sampler_string","name":"sampler_string","shape":7,"type":"STRING","widget":{"name":"sampler_string"},"link":null},{"localized_name":"scheduler_string","name":"scheduler_string","shape":7,"type":"STRING","widget":{"name":"scheduler_string"},"link":null},{"localized_name":"guidance_scale_string","name":"guidance_scale_string","shape":7,"type":"STRING","widget":{"name":"guidance_scale_string"},"link":null},{"localized_name":"watermark_string","name":"watermark_string","shape":7,"type":"STRING","widget":{"name":"watermark_string"},"link":null}],"outputs":[{"localized_name":"metadata_raw","name":"metadata_raw","type":"METADATA_RAW","links":null},{"localized_name":"image","name":"image","type":"IMAGE","links":null}],"properties":{"Node name for S&R":"FSLImageSaverWithMetadataV5","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["Gem_Img2Img","metadata",true,"","","","","","","","","","","","","",""]},{"id":33,"type":"Griptape Create: Agent","pos":[-3880.5263671875,481.9798278808594],"size":[400,246],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":null},{"localized_name":"config","name":"config","shape":7,"type":"CONFIG","link":null},{"localized_name":"tools","name":"tools","shape":7,"type":"TOOL_LIST","link":null},{"localized_name":"rulesets","name":"rulesets","shape":7,"type":"RULESET","link":76},{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":null},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null},{"localized_name":"max_subtasks","name":"max_subtasks","shape":7,"type":"INT","widget":{"name":"max_subtasks"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[77]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":[71]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Agent","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["make the peron a clown",3]},{"id":5,"type":"LocalImageGalleryNode","pos":[-2318.709716796875,153.74896240234375],"size":[800,670],"flags":{},"order":5,"mode":0,"inputs":[],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[135,140]},{"localized_name":"paths","name":"paths","type":"LMM_ALL_PATHS","links":null},{"localized_name":"path","name":"path","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null},{"localized_name":"info","name":"info","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI_Local_Image_Gallery","ver":"5b4bc0b097335c9111e5cb77e668a3b777b13349","Node name for S&R":"LocalImageGalleryNode","gallery_unique_id":"gallery-tt4x8isoh","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"},"selection":"[{\"path\":\"c:\\\\users\\\\fredlef\\\\pictures\\\\Fred-pics\\\\bridgetopaz.png\",\"type\":\"image\"}]"},"widgets_values":["","[{\"path\":\"c:\\\\users\\\\fredlef\\\\pictures\\\\Fred-pics\\\\bridgetopaz.png\",\"type\":\"image\"}]",""]},{"id":3,"type":"PreviewImage","pos":[-947.572162413578,184.4057853592682],"size":[566.0535888671875,487.79541015625],"flags":{},"order":20,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":136}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.52","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[]},{"id":26,"type":"ShowText|pysssss","pos":[-3065.581298828125,1121.228759765625],"size":[412.6090087890625,242.69412231445312],"flags":{},"order":11,"mode":0,"inputs":[{"localized_name":"text","name":"text","type":"STRING","link":69}],"outputs":[{"localized_name":"STRING","name":"STRING","shape":6,"type":"STRING","links":[68,139]}],"properties":{"cnr_id":"comfyui-custom-scripts","ver":"ba22ba11e9073d45c5779d557593b2f106aac8b4","Node name for S&R":"ShowText|pysssss","ue_properties":{"version":"7.1","widget_ue_connectable":{},"input_ue_unconnectable":{}}},"widgets_values":["Certainly! Here’s an image generation prompt for creating a person as a clown, following all your rules:\n\nPrompt:\n\nA whimsical clown stands in the center of the composition, set against a dark background. The scene is illuminated by the soft, warm glow of the golden hour, casting gentle highlights and long shadows. The clown wears a vibrant, multi-colored costume with oversized buttons and a ruffled collar, and their face is painted with a joyful expression, featuring a big red nose and a wide, cheerful smile. The magic spiral motif is subtly incorporated into the background, adding a sense of wonder and playfulness. The image is captured with a 50mm lens at eye level, creating an intimate and engaging perspective. The overall style is highly detailed and painterly, with rich textures and a sense of warmth and happiness."]},{"id":48,"type":"FSLGeminiGenerateImageV8","pos":[-1417.5374622287802,108.99066611135919],"size":[400,632],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":135},{"localized_name":"mask","name":"mask","shape":7,"type":"MASK","link":null},{"localized_name":"mask_image","name":"mask_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":139},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"use_mask","name":"use_mask","type":"BOOLEAN","widget":{"name":"use_mask"},"link":null},{"localized_name":"base_for_inpaint","name":"base_for_inpaint","type":"COMBO","widget":{"name":"base_for_inpaint"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"invert_mask","name":"invert_mask","shape":7,"type":"BOOLEAN","widget":{"name":"invert_mask"},"link":null},{"localized_name":"feather_radius","name":"feather_radius","shape":7,"type":"INT","widget":{"name":"feather_radius"},"link":null},{"localized_name":"mask_strength","name":"mask_strength","shape":7,"type":"FLOAT","widget":{"name":"mask_strength"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[136,137]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":[138]}],"properties":{"ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{}},"Node name for S&R":"FSLGeminiGenerateImageV8"},"widgets_values":["","gemini-2.5-flash-image-preview",1024,1024,1,-1,"randomize",false,true,false,"auto",false,false,false,0,1,""]}],"links":[[64,28,0,20,0,"*"],[65,28,0,21,0,"*"],[66,28,0,22,0,"*"],[67,34,0,24,0,"*"],[68,26,0,25,0,"*"],[69,34,0,26,0,"STRING"],[70,34,0,28,0,"STRING"],[71,33,1,28,1,"AGENT"],[72,29,0,28,3,"DRIVER"],[73,19,0,30,0,"RULESET"],[74,31,0,30,1,"RULESET"],[75,23,0,30,2,"RULESET"],[76,30,0,33,3,"RULESET"],[77,33,0,34,0,"STRING"],[78,28,0,35,0,"IMAGE"],[79,28,0,36,0,"IMAGE"],[135,5,0,48,1,"IMAGE"],[136,48,0,3,0,"IMAGE"],[137,48,0,45,0,"IMAGE"],[138,48,8,45,1,"DICT"],[139,26,0,48,4,"STRING"],[140,5,0,4,0,"IMAGE"]],"groups":[{"id":1,"title":"Griptape Loader","bounding":[-3901.568603515625,124.50535583496094,1520,1260],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ue_links":[],"links_added_by_ue":[],"ds":{"scale":0.7364755773045925,"offset":[2915.264070362384,139.34419741912566]}},"version":0.4} \ No newline at end of file diff --git a/workflows/nano_banana/Nano Banana img2img w_Griptape.png b/workflows/nano_banana/Nano Banana img2img w_Griptape.png index 0537917..67b86f6 100644 Binary files a/workflows/nano_banana/Nano Banana img2img w_Griptape.png and b/workflows/nano_banana/Nano Banana img2img w_Griptape.png differ diff --git a/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.json b/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.json index 055a60d..cf75d1b 100644 --- a/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.json +++ b/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.json @@ -1 +1 @@ -{"id":"d63c542e-7e99-454c-9b48-08f0dd2486b2","revision":0,"last_node_id":237,"last_link_id":392,"nodes":[{"id":190,"type":"Griptape Create: Rules","pos":[1362.9952392578125,-988.393310546875],"size":[380,160],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[308]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"NSFW Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["NSFW Blocker","Never include nudity, suggestive content, or explicit scenes in any prompts.\nAvoid adult themes, partial nudity, or sexual innuendo. Keep all prompts family friendly.\n"]},{"id":191,"type":"SetNode","pos":[1902.994873046875,-528.393798828125],"size":[210,34],"flags":{"collapsed":true},"order":18,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":301}],"outputs":[{"name":"*","type":"*","links":[]}],"title":"Set_GT-IMG-BAS-2","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-2"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":192,"type":"SetNode","pos":[1902.994873046875,-608.3941040039062],"size":[210,34],"flags":{"collapsed":true},"order":19,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":302}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-1","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-1"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":193,"type":"SetNode","pos":[1913.88818359375,-478.66455078125],"size":[210,34],"flags":{"collapsed":true},"order":20,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":303}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-3","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-3"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":194,"type":"Griptape Create: Rules","pos":[1365.3927001953125,-937.1946411132812],"size":[400,200],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[310]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"General Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","You are an expert in creating image generation rules that are high quality and very beautiful.\nYou are an expert in creating amazing images of cats.\nAlways include the following information in the prompt: composition, lighting, design, style, camera lens information, camera angle, time of day, detailed description of character and emotion of the image."]},{"id":195,"type":"SetNode","pos":[1589.3367919921875,-186.8256378173828],"size":[210,58],"flags":{},"order":15,"mode":0,"inputs":[{"name":"STRING","type":"STRING","link":304}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-Clip-Encode","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-Clip-Encode"]},{"id":196,"type":"Griptape Create: Image from Text","pos":[1827.150146484375,-650.7247924804688],"size":[403.1999816894531,200],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":305},{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":306},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"driver","name":"driver","shape":7,"type":"DRIVER","link":307},{"localized_name":"STRING","name":"STRING","type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[301,302,303,313,314]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":null},{"localized_name":"file_path","name":"file_path","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Image from Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[""]},{"id":199,"type":"Griptape Create: Rules","pos":[1350.4224853515625,-887.3697509765625],"size":[400,200],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[309]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","dark background\nthe magic spiral\nthe golden hour"]},{"id":206,"type":"CLIPTextEncode","pos":[3822.333740234375,-583.5554809570312],"size":[300,100],"flags":{},"order":10,"mode":4,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":316},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","slot_index":0,"links":[318]}],"title":"Positive Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"CLIPTextEncode","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"text":true}}},"widgets_values":["highly detailed, sharp focus, 8k"]},{"id":209,"type":"SaveImage","pos":[5820.3291015625,-545.6284790039062],"size":[869.017333984375,816.9860229492188],"flags":{},"order":30,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":322},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"SaveImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"filename_prefix":true}}},"widgets_values":["upscaled\\ups0"]},{"id":211,"type":"UnsharpMask","pos":[4544.38427734375,-815.3297729492188],"size":[300,314],"flags":{},"order":28,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":324},{"localized_name":"kernel_size","name":"kernel_size","type":"INT","widget":{"name":"kernel_size"},"link":null},{"localized_name":"sigma","name":"sigma","type":"FLOAT","widget":{"name":"sigma"},"link":null},{"name":"image","type":"IMAGE","link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[323,328]}],"properties":{"cnr_id":"comfyui_imageprocessing","ver":"1.0.0","Node name for S&R":"UnsharpMask","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"kernel_size":true,"sigma":true}}},"widgets_values":[3,1.0900000000000003]},{"id":214,"type":"Fast Bypasser (rgthree)","pos":[4539.89453125,-424.6376037597656],"size":[320.79998779296875,211.26718139648438],"flags":{},"order":32,"mode":4,"inputs":[{"dir":3,"name":"Restore Face 🌌 ReActor","type":"*","link":327},{"dir":3,"name":"Unsharp Mask","type":"*","link":328},{"dir":3,"name":"Load LoRA","type":"*","link":329},{"dir":3,"name":"","type":"*","link":null}],"outputs":[{"dir":4,"name":"OPT_CONNECTION","type":"*","links":null}],"properties":{"toggleRestriction":"default","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}}},{"id":215,"type":"CLIPTextEncode","pos":[3824.068115234375,-431.4895935058594],"size":[300,100],"flags":{},"order":11,"mode":4,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":330},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","slot_index":0,"links":[319]}],"title":"Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"CLIPTextEncode","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"text":true}}},"widgets_values":["blurry, deformed, low quality"]},{"id":217,"type":"UpscaleModelLoader","pos":[3819.691162109375,-284.2436828613281],"size":[315,58],"flags":{},"order":3,"mode":4,"inputs":[{"localized_name":"model_name","name":"model_name","type":"COMBO","widget":{"name":"model_name"},"link":null}],"outputs":[{"localized_name":"UPSCALE_MODEL","name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[321]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"UpscaleModelLoader","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"model_name":true}}},"widgets_values":["4x_foolhardy_Remacri.pth"]},{"id":218,"type":"CheckpointLoaderSimple","pos":[3815.888916015625,-177.26158142089844],"size":[315,98],"flags":{},"order":4,"mode":4,"inputs":[{"localized_name":"ckpt_name","name":"ckpt_name","type":"COMBO","widget":{"name":"ckpt_name"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[332]},{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":[316,330,333]},{"localized_name":"VAE","name":"VAE","type":"VAE","links":[320]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"CheckpointLoaderSimple","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"ckpt_name":true}}},"widgets_values":["realvisxlV40_v40LightningBakedvae.safetensors"]},{"id":219,"type":"LoraLoader","pos":[4558.12890625,-154.80162048339844],"size":[300,126],"flags":{},"order":12,"mode":4,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":332},{"localized_name":"clip","name":"clip","type":"CLIP","link":333},{"localized_name":"lora_name","name":"lora_name","type":"COMBO","widget":{"name":"lora_name"},"link":null},{"localized_name":"strength_model","name":"strength_model","type":"FLOAT","widget":{"name":"strength_model"},"link":null},{"localized_name":"strength_clip","name":"strength_clip","type":"FLOAT","widget":{"name":"strength_clip"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","slot_index":0,"links":[317,329]},{"localized_name":"CLIP","name":"CLIP","type":"CLIP","slot_index":1,"links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"LoraLoader","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"lora_name":true,"strength_model":true,"strength_clip":true}}},"widgets_values":["SDXLFaeTastic2400.safetensors",0.4000000000000001,0.4000000000000001]},{"id":197,"type":"Griptape Driver: OpenAI Image Generation","pos":[1702.9951171875,-1028.3931884765625],"size":[504,130],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"image_generation_model","name":"image_generation_model","shape":7,"type":"COMBO","widget":{"name":"image_generation_model"},"link":null},{"localized_name":"size","name":"size","shape":7,"type":"COMBO","widget":{"name":"size"},"link":null},{"localized_name":"api_key_env_var","name":"api_key_env_var","shape":7,"type":"STRING","widget":{"name":"api_key_env_var"},"link":null}],"outputs":[{"localized_name":"DRIVER","name":"DRIVER","type":"DRIVER","links":[307]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Driver: OpenAI Image Generation","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["dall-e-3","1024x1024","OPENAI_API_KEY",null]},{"id":208,"type":"Image Resize","pos":[4183.060546875,-1022.1375732421875],"size":[315,178],"flags":{},"order":6,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":null},{"localized_name":"mode","name":"mode","type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"supersample","name":"supersample","type":"COMBO","widget":{"name":"supersample"},"link":null},{"localized_name":"resampling","name":"resampling","type":"COMBO","widget":{"name":"resampling"},"link":null},{"localized_name":"rescale_factor","name":"rescale_factor","type":"FLOAT","widget":{"name":"rescale_factor"},"link":null},{"localized_name":"resize_width","name":"resize_width","type":"INT","widget":{"name":"resize_width"},"link":null},{"localized_name":"resize_height","name":"resize_height","type":"INT","widget":{"name":"resize_height"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[]}],"properties":{"cnr_id":"was-node-suite-comfyui","ver":"1014f8a1477b8ae0144e16ed4fd6476cd109fb23","Node name for S&R":"Image Resize","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"mode":true,"supersample":true,"resampling":true,"rescale_factor":true,"resize_width":true,"resize_height":true}}},"widgets_values":["rescale","true","lanczos",2.0000000000000004,1024,988]},{"id":207,"type":"UltimateSDUpscaleCustomSample","pos":[4159.59716796875,-569.7019653320312],"size":[346,676],"flags":{},"order":27,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":360},{"localized_name":"model","name":"model","type":"MODEL","link":317},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":318},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":319},{"localized_name":"vae","name":"vae","type":"VAE","link":320},{"localized_name":"upscale_model","name":"upscale_model","shape":7,"type":"UPSCALE_MODEL","link":321},{"localized_name":"custom_sampler","name":"custom_sampler","shape":7,"type":"SAMPLER","link":null},{"localized_name":"custom_sigmas","name":"custom_sigmas","shape":7,"type":"SIGMAS","link":null},{"localized_name":"upscale_by","name":"upscale_by","type":"FLOAT","widget":{"name":"upscale_by"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"mode_type","name":"mode_type","type":"COMBO","widget":{"name":"mode_type"},"link":null},{"localized_name":"tile_width","name":"tile_width","type":"INT","widget":{"name":"tile_width"},"link":null},{"localized_name":"tile_height","name":"tile_height","type":"INT","widget":{"name":"tile_height"},"link":null},{"localized_name":"mask_blur","name":"mask_blur","type":"INT","widget":{"name":"mask_blur"},"link":null},{"localized_name":"tile_padding","name":"tile_padding","type":"INT","widget":{"name":"tile_padding"},"link":null},{"localized_name":"seam_fix_mode","name":"seam_fix_mode","type":"COMBO","widget":{"name":"seam_fix_mode"},"link":null},{"localized_name":"seam_fix_denoise","name":"seam_fix_denoise","type":"FLOAT","widget":{"name":"seam_fix_denoise"},"link":null},{"localized_name":"seam_fix_width","name":"seam_fix_width","type":"INT","widget":{"name":"seam_fix_width"},"link":null},{"localized_name":"seam_fix_mask_blur","name":"seam_fix_mask_blur","type":"INT","widget":{"name":"seam_fix_mask_blur"},"link":null},{"localized_name":"seam_fix_padding","name":"seam_fix_padding","type":"INT","widget":{"name":"seam_fix_padding"},"link":null},{"localized_name":"force_uniform_tiles","name":"force_uniform_tiles","type":"BOOLEAN","widget":{"name":"force_uniform_tiles"},"link":null},{"localized_name":"tiled_decode","name":"tiled_decode","type":"BOOLEAN","widget":{"name":"tiled_decode"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[324]}],"properties":{"cnr_id":"comfyui_ultimatesdupscale","ver":"778a475dde8116a2066fe07f6c9ca15554e0b5be","Node name for S&R":"UltimateSDUpscaleCustomSample","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"upscale_by":true,"seed":true,"steps":true,"cfg":true,"sampler_name":true,"scheduler":true,"denoise":true,"mode_type":true,"tile_width":true,"tile_height":true,"mask_blur":true,"tile_padding":true,"seam_fix_mode":true,"seam_fix_denoise":true,"seam_fix_width":true,"seam_fix_mask_blur":true,"seam_fix_padding":true,"force_uniform_tiles":true,"tiled_decode":true}}},"widgets_values":[2,160128778766228,"randomize",12,2,"dpm_2","exponential",0.5000000000000001,"Linear",1024,1024,50,104,"None",1,304,64,304,false,false]},{"id":198,"type":"Griptape Combine: Rules List","pos":[1334.1939697265625,-830.0010986328125],"size":[352.79998779296875,86],"flags":{"collapsed":true},"order":9,"mode":0,"inputs":[{"localized_name":"rules_1","name":"rules_1","shape":7,"type":"RULESET","link":308},{"name":"rules_2","type":"RULESET","link":309},{"name":"rules_3","type":"RULESET","link":310},{"name":"rules_4","type":"RULESET","link":null}],"outputs":[{"localized_name":"RULESET","name":"RULESET","type":"RULESET","links":[311]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Combine: Rules List","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":228,"type":"FSLEnsureNHWCBatch","pos":[3846.474853515625,-800.3880615234375],"size":[208.72714233398438,26],"flags":{},"order":24,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":389}],"outputs":[{"localized_name":"image_nhwc","name":"image_nhwc","type":"IMAGE","links":[360,361]}],"properties":{"Node name for S&R":"FSLEnsureNHWCBatch","ue_properties":{"widget_ue_connectable":{},"version":"7.1","input_ue_unconnectable":{}}},"widgets_values":[]},{"id":109,"type":"SaveImage","pos":[3359.13525390625,-678.221923828125],"size":[349.9873352050781,391.2630310058594],"flags":{},"order":26,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":391},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["nanob\\nano"],"color":"#223","bgcolor":"#335"},{"id":210,"type":"ReActorRestoreFace","pos":[4535.76513671875,-1011.4796142578125],"size":[315,130],"flags":{},"order":29,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":323},{"localized_name":"facedetection","name":"facedetection","type":"COMBO","widget":{"name":"facedetection"},"link":null},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"visibility","name":"visibility","type":"FLOAT","widget":{"name":"visibility"},"link":null},{"localized_name":"codeformer_weight","name":"codeformer_weight","type":"FLOAT","widget":{"name":"codeformer_weight"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[322,325,327,331,382]}],"properties":{"Node name for S&R":"ReActorRestoreFace","cnr_id":"comfyui-reactor","ver":"d901609a1d5d1942a6b069b2f8f3778fee3a7134","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"facedetection":true,"model":true,"visibility":true,"codeformer_weight":true}}},"widgets_values":["retinaface_resnet50","none",1,0.5]},{"id":234,"type":"Preview from metadata [Crystools]","pos":[3497.969970703125,-201.40306091308594],"size":[210.32537841796875,222.50999450683594],"flags":{},"order":35,"mode":0,"inputs":[{"localized_name":"metadata_raw","name":"metadata_raw","shape":7,"type":"METADATA_RAW","link":384}],"outputs":[{"localized_name":"Metadata RAW","name":"Metadata RAW","type":"METADATA_RAW","links":null}],"properties":{"cnr_id":"comfyui-crystools","ver":"1.27.3","Node name for S&R":"Preview from metadata [Crystools]","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":235,"type":"PreviewImage","pos":[3495.722900390625,70.34211730957031],"size":[228.71023559570312,246],"flags":{},"order":36,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":385}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.63","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":212,"type":"PreviewImage","pos":[4953.79248046875,-920.6201171875],"size":[362.68011474609375,296.4696960449219],"flags":{},"order":31,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":325}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"PreviewImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":216,"type":"Image Comparer (rgthree)","pos":[4898.138671875,-531.0244140625],"size":[875.252197265625,822.8955688476562],"flags":{},"order":33,"mode":4,"inputs":[{"dir":3,"name":"image_a","type":"IMAGE","link":331},{"dir":3,"name":"image_b","type":"IMAGE","link":361}],"outputs":[],"properties":{"cnr_id":"rgthree-comfy","ver":"5dc53323e07a021038af9f2a4a06ebc071f7218c","comparer_mode":"Slide","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[[{"name":"A","selected":true,"url":"/api/view?filename=rgthree.compare._temp_xpppg_00003_.png&type=temp&subfolder=&rand=0.805584959104855"},{"name":"B","selected":true,"url":"/api/view?filename=rgthree.compare._temp_xpppg_00004_.png&type=temp&subfolder=&rand=0.24991398835054868"}]],"color":"#322","bgcolor":"#533"},{"id":94,"type":"ComfyUIDeployExternalText","pos":[2886.167236328125,-1039.5758056640625],"size":[391.5573425292969,244.14918518066406],"flags":{},"order":17,"mode":0,"inputs":[{"localized_name":"input_id","name":"input_id","type":"STRING","widget":{"name":"input_id"},"link":null},{"localized_name":"default_value","name":"default_value","shape":7,"type":"STRING","widget":{"name":"default_value"},"link":315},{"localized_name":"display_name","name":"display_name","shape":7,"type":"STRING","widget":{"name":"display_name"},"link":null},{"localized_name":"description","name":"description","shape":7,"type":"STRING","widget":{"name":"description"},"link":null}],"outputs":[{"localized_name":"text","name":"text","type":"STRING","links":[388]}],"title":"PROMPT","properties":{"cnr_id":"comfyui-deploy","ver":"b889f79baf9e099d5e54bd20bab4aa1e7c3296c0","Node name for S&R":"ComfyUIDeployExternalText","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["ACTION_MANUAL_PROMPT","a photorealistic orange tabby cat wearing scuba gear, underwater, 1:1","MANUA_PROMPT ","IF there is no OPENAI_API_KEY on the machine secrets. You will need to enter your full prompt and delete the AI_SYSTEM_PROMPT \n\nOtherwise you can use this to add a The Task to be preform by the model for example \"replace the cat from image1 with the dog on image2\" \n\nshe is wearing the same clothes but it has the logo on the swimsuit make sure it looks well integrated and part of the same material with the fabric and not just an overlay the logo should wrap with the swinsuit to the body of the model "],"color":"#232","bgcolor":"#353"},{"id":230,"type":"LoadImage","pos":[2894.280517578125,-53.485755920410156],"size":[274.080078125,314],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[387]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.59","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{"image":true,"upload":true},"version":"7.1","input_ue_unconnectable":{}}},"widgets_values":["01_FRAME-1024-150.png","image"]},{"id":233,"type":"FSLImageSaverWithMetadataV5","pos":[3203.047607421875,-138.11155700683594],"size":[268.4547119140625,462],"flags":{},"order":34,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":382},{"localized_name":"external_metadata","name":"external_metadata","shape":7,"type":"DICT","link":392},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"save_to_subfolder","name":"save_to_subfolder","type":"STRING","widget":{"name":"save_to_subfolder"},"link":null},{"localized_name":"append_datetime","name":"append_datetime","shape":7,"type":"BOOLEAN","widget":{"name":"append_datetime"},"link":null},{"localized_name":"model_string","name":"model_string","shape":7,"type":"STRING","widget":{"name":"model_string"},"link":null},{"localized_name":"modelname","name":"modelname","shape":7,"type":"STRING","widget":{"name":"modelname"},"link":null},{"localized_name":"seed_string","name":"seed_string","shape":7,"type":"STRING","widget":{"name":"seed_string"},"link":null},{"localized_name":"width_string","name":"width_string","shape":7,"type":"STRING","widget":{"name":"width_string"},"link":null},{"localized_name":"height_string","name":"height_string","shape":7,"type":"STRING","widget":{"name":"height_string"},"link":null},{"localized_name":"temperature_string","name":"temperature_string","shape":7,"type":"STRING","widget":{"name":"temperature_string"},"link":null},{"localized_name":"positive_string","name":"positive_string","shape":7,"type":"STRING","widget":{"name":"positive_string"},"link":null},{"localized_name":"negative_string","name":"negative_string","shape":7,"type":"STRING","widget":{"name":"negative_string"},"link":null},{"localized_name":"cfg_string","name":"cfg_string","shape":7,"type":"STRING","widget":{"name":"cfg_string"},"link":null},{"localized_name":"steps_string","name":"steps_string","shape":7,"type":"STRING","widget":{"name":"steps_string"},"link":null},{"localized_name":"sampler_string","name":"sampler_string","shape":7,"type":"STRING","widget":{"name":"sampler_string"},"link":null},{"localized_name":"scheduler_string","name":"scheduler_string","shape":7,"type":"STRING","widget":{"name":"scheduler_string"},"link":null},{"localized_name":"guidance_scale_string","name":"guidance_scale_string","shape":7,"type":"STRING","widget":{"name":"guidance_scale_string"},"link":null},{"localized_name":"watermark_string","name":"watermark_string","shape":7,"type":"STRING","widget":{"name":"watermark_string"},"link":null}],"outputs":[{"localized_name":"metadata_raw","name":"metadata_raw","type":"METADATA_RAW","links":[384]},{"localized_name":"image","name":"image","type":"IMAGE","links":[385]}],"properties":{"Node name for S&R":"FSLImageSaverWithMetadataV5","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["nanob_ups_%date_%time","metadata",true,"","","","","","","","","","","","","",""]},{"id":220,"type":"Fast Groups Bypasser (rgthree)","pos":[2619.082275390625,-1299.32861328125],"size":[236.74765014648438,130],"flags":{},"order":8,"mode":0,"inputs":[],"outputs":[{"name":"OPT_CONNECTION","type":"*","links":null}],"properties":{"matchColors":"","matchTitle":"","showNav":true,"showAllGraphs":true,"sort":"position","customSortAlphabet":"","toggleRestriction":"default","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}}},{"id":202,"type":"PreviewImage","pos":[2265.55029296875,-1043.997314453125],"size":[509.1957702636719,333.4749755859375],"flags":{},"order":21,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":313}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"PreviewImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":205,"type":"SaveImage","pos":[2275.5517578125,-656.6166381835938],"size":[523.1109619140625,464.4971618652344],"flags":{},"order":22,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":314},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"SaveImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["griptape\\grip"]},{"id":237,"type":"FSLGeminiGenerateImageV6","pos":[2887.32373046875,-732.8950805664062],"size":[400,512],"flags":{},"order":23,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":387},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":388},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[389,390,391]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":[392]}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV6","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["","gemini-2.5-flash-image",1024,1024,1,685775348,"randomize",true,false,false,false,""]},{"id":201,"type":"Griptape Display: Text","pos":[1524.5322265625,-369.6628723144531],"size":[640,480],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"INPUT","name":"INPUT","shape":7,"type":"STRING","link":312},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[304,305,315]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Display: Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["Certainly! Here’s a high-quality, family-friendly image generation prompt based on your request, following all the rules:\n\n**Prompt:** \nA stunning, iridescent bat with shimmering, multicolored wings outstretched against a dark background. The glowing night sky is filled with twinkling stars and subtle magical shadows swirling around, creating a mystical atmosphere. The composition centers the bat in mid-flight, wings catching the golden hour light, casting enchanting reflections. The design is elegant and magical, with a focus on the intricate patterns of the wings. Style is hyper-realistic with a touch of fantasy. Shot with a 50mm lens, low angle to emphasize the bat’s majesty, at dusk during the golden hour. The bat’s expression is serene and wise, evoking a sense of wonder and enchantment.\n\nLet me know if you’d like to add a cat to the scene or need further adjustments!"]},{"id":110,"type":"PreviewImage","pos":[3344.09765625,-1033.034423828125],"size":[326.4037780761719,290.91656494140625],"flags":{},"order":25,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":390}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[],"color":"#223","bgcolor":"#335"},{"id":200,"type":"Griptape Create: Agent","pos":[1331.383056640625,-757.8782348632812],"size":[456.1457214355469,322.3581848144531],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":null},{"localized_name":"config","name":"config","shape":7,"type":"CONFIG","link":null},{"localized_name":"tools","name":"tools","shape":7,"type":"TOOL_LIST","link":null},{"localized_name":"rulesets","name":"rulesets","shape":7,"type":"RULESET","link":311},{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":null},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null},{"localized_name":"max_subtasks","name":"max_subtasks","shape":7,"type":"INT","widget":{"name":"max_subtasks"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[312]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":[306]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Agent","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["iridiscent bat wings, with glowing night sky, magical shadows, mystical atmosphere use",3]}],"links":[[301,196,0,191,0,"*"],[302,196,0,192,0,"*"],[303,196,0,193,0,"*"],[304,201,0,195,0,"*"],[305,201,0,196,0,"STRING"],[306,200,1,196,1,"AGENT"],[307,197,0,196,3,"DRIVER"],[308,190,0,198,0,"RULESET"],[309,199,0,198,1,"RULESET"],[310,194,0,198,2,"RULESET"],[311,198,0,200,3,"RULESET"],[312,200,0,201,0,"STRING"],[313,196,0,202,0,"IMAGE"],[314,196,0,205,0,"IMAGE"],[315,201,0,94,1,"STRING"],[316,218,1,206,0,"CLIP"],[317,219,0,207,1,"MODEL"],[318,206,0,207,2,"CONDITIONING"],[319,215,0,207,3,"CONDITIONING"],[320,218,2,207,4,"VAE"],[321,217,0,207,5,"UPSCALE_MODEL"],[322,210,0,209,0,"IMAGE"],[323,211,0,210,0,"IMAGE"],[324,207,0,211,0,"IMAGE"],[325,210,0,212,0,"IMAGE"],[327,210,0,214,0,"*"],[328,211,0,214,1,"*"],[329,219,0,214,2,"*"],[330,218,1,215,0,"CLIP"],[331,210,0,216,0,"IMAGE"],[332,218,0,219,0,"MODEL"],[333,218,1,219,1,"CLIP"],[360,228,0,207,0,"IMAGE"],[361,228,0,216,1,"IMAGE"],[382,210,0,233,0,"IMAGE"],[384,233,0,234,0,"METADATA_RAW"],[385,233,1,235,0,"IMAGE"],[387,230,0,237,0,"IMAGE"],[388,94,0,237,2,"STRING"],[389,237,0,228,0,"IMAGE"],[390,237,0,110,0,"IMAGE"],[391,237,0,109,0,"IMAGE"],[392,237,8,233,1,"DICT"]],"groups":[{"id":1,"title":"Griptape Loader","bounding":[1304.4677734375,-1127.59130859375,1520,1260],"color":"#3f789e","font_size":24,"flags":{}},{"id":2,"title":"Nano Banana","bounding":[2868.8671875,-1121.8707275390625,869.5833740234375,1488.0997314453125],"color":"#3f789e","font_size":24,"flags":{}},{"id":3,"title":"Upscaler","bounding":[3781.543212890625,-1127.2529296875,3083.047119140625,1485.775146484375],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ds":{"scale":1.4342234566903949,"offset":[-906.0411018395172,1069.119156063596]},"frontendVersion":"1.25.10","VHS_MetadataImage":true,"VHS_latentpreview":false,"VHS_KeepIntermediate":true,"VHS_latentpreviewrate":0,"ue_links":[],"links_added_by_ue":[]},"version":0.4} \ No newline at end of file +{"id":"d63c542e-7e99-454c-9b48-08f0dd2486b2","revision":0,"last_node_id":238,"last_link_id":398,"nodes":[{"id":190,"type":"Griptape Create: Rules","pos":[1362.9952392578125,-988.393310546875],"size":[380,160],"flags":{"collapsed":true},"order":0,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[308]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"NSFW Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["NSFW Blocker","Never include nudity, suggestive content, or explicit scenes in any prompts.\nAvoid adult themes, partial nudity, or sexual innuendo. Keep all prompts family friendly.\n"]},{"id":191,"type":"SetNode","pos":[1902.994873046875,-528.393798828125],"size":[210,34],"flags":{"collapsed":true},"order":18,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":301}],"outputs":[{"name":"*","type":"*","links":[]}],"title":"Set_GT-IMG-BAS-2","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-2"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":192,"type":"SetNode","pos":[1902.994873046875,-608.3941040039062],"size":[210,34],"flags":{"collapsed":true},"order":19,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":302}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-1","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-1"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":193,"type":"SetNode","pos":[1913.88818359375,-478.66455078125],"size":[210,34],"flags":{"collapsed":true},"order":20,"mode":0,"inputs":[{"name":"IMAGE","type":"IMAGE","link":303}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-IMG-BAS-3","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-IMG-BAS-3"],"color":"#2a363b","bgcolor":"#3f5159"},{"id":194,"type":"Griptape Create: Rules","pos":[1365.3927001953125,-937.1946411132812],"size":[400,200],"flags":{"collapsed":true},"order":1,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[310]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"title":"General Rules","properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","You are an expert in creating image generation rules that are high quality and very beautiful.\nYou are an expert in creating amazing images of cats.\nAlways include the following information in the prompt: composition, lighting, design, style, camera lens information, camera angle, time of day, detailed description of character and emotion of the image."]},{"id":195,"type":"SetNode","pos":[1589.3367919921875,-186.8256378173828],"size":[210,58],"flags":{},"order":15,"mode":0,"inputs":[{"name":"STRING","type":"STRING","link":304}],"outputs":[{"name":"*","type":"*","links":null}],"title":"Set_GT-Clip-Encode","properties":{"previousName":"","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["GT-Clip-Encode"]},{"id":199,"type":"Griptape Create: Rules","pos":[1350.4224853515625,-887.3697509765625],"size":[400,200],"flags":{"collapsed":true},"order":2,"mode":0,"inputs":[{"localized_name":"name","name":"name","type":"STRING","widget":{"name":"name"},"link":null},{"localized_name":"rules","name":"rules","type":"STRING","widget":{"name":"rules"},"link":null}],"outputs":[{"localized_name":"RULES","name":"RULES","type":"RULESET","links":[309]},{"localized_name":"NAME","name":"NAME","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Rules","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["My rules","dark background\nthe magic spiral\nthe golden hour"]},{"id":206,"type":"CLIPTextEncode","pos":[3862.758654308637,-573.4492524384656],"size":[300,100],"flags":{},"order":10,"mode":4,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":316},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","slot_index":0,"links":[318]}],"title":"Positive Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"CLIPTextEncode","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"text":true}}},"widgets_values":["highly detailed, sharp focus, 8k"]},{"id":209,"type":"SaveImage","pos":[5860.754015636762,-535.5222504853406],"size":[869.017333984375,816.9860229492188],"flags":{},"order":30,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":322},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"SaveImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"filename_prefix":true}}},"widgets_values":["upscaled\\ups0"]},{"id":211,"type":"UnsharpMask","pos":[4584.809191418012,-805.2235444306531],"size":[300,314],"flags":{},"order":28,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":324},{"localized_name":"kernel_size","name":"kernel_size","type":"INT","widget":{"name":"kernel_size"},"link":null},{"localized_name":"sigma","name":"sigma","type":"FLOAT","widget":{"name":"sigma"},"link":null},{"name":"image","type":"IMAGE","link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","slot_index":0,"links":[323,328]}],"properties":{"cnr_id":"comfyui_imageprocessing","ver":"1.0.0","Node name for S&R":"UnsharpMask","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"kernel_size":true,"sigma":true}}},"widgets_values":[3,1.0900000000000003]},{"id":214,"type":"Fast Bypasser (rgthree)","pos":[4580.319445324262,-414.5313752412003],"size":[320.79998779296875,211.26718139648438],"flags":{},"order":32,"mode":4,"inputs":[{"dir":3,"name":"Restore Face 🌌 ReActor","type":"*","link":327},{"dir":3,"name":"Unsharp Mask","type":"*","link":328},{"dir":3,"name":"Load LoRA","type":"*","link":329},{"dir":3,"name":"","type":"*","link":null}],"outputs":[{"dir":4,"name":"OPT_CONNECTION","type":"*","links":null}],"properties":{"toggleRestriction":"default","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}}},{"id":215,"type":"CLIPTextEncode","pos":[3864.493029308637,-421.38336498729404],"size":[300,100],"flags":{},"order":11,"mode":4,"inputs":[{"localized_name":"clip","name":"clip","type":"CLIP","link":330},{"localized_name":"text","name":"text","type":"STRING","widget":{"name":"text"},"link":null}],"outputs":[{"localized_name":"CONDITIONING","name":"CONDITIONING","type":"CONDITIONING","slot_index":0,"links":[319]}],"title":"Negative Prompt","properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"CLIPTextEncode","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"text":true}}},"widgets_values":["blurry, deformed, low quality"]},{"id":217,"type":"UpscaleModelLoader","pos":[3860.116076183637,-274.1374543427628],"size":[315,58],"flags":{},"order":3,"mode":4,"inputs":[{"localized_name":"model_name","name":"model_name","type":"COMBO","widget":{"name":"model_name"},"link":null}],"outputs":[{"localized_name":"UPSCALE_MODEL","name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[321]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"UpscaleModelLoader","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"model_name":true}}},"widgets_values":["4x_foolhardy_Remacri.pth"]},{"id":218,"type":"CheckpointLoaderSimple","pos":[3856.313830089887,-167.15535290233294],"size":[315,98],"flags":{},"order":4,"mode":4,"inputs":[{"localized_name":"ckpt_name","name":"ckpt_name","type":"COMBO","widget":{"name":"ckpt_name"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","links":[332]},{"localized_name":"CLIP","name":"CLIP","type":"CLIP","links":[316,330,333]},{"localized_name":"VAE","name":"VAE","type":"VAE","links":[320]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"CheckpointLoaderSimple","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"ckpt_name":true}}},"widgets_values":["realvisxlV40_v40LightningBakedvae.safetensors"]},{"id":219,"type":"LoraLoader","pos":[4598.553820324262,-144.69539196483294],"size":[300,126],"flags":{},"order":12,"mode":4,"inputs":[{"localized_name":"model","name":"model","type":"MODEL","link":332},{"localized_name":"clip","name":"clip","type":"CLIP","link":333},{"localized_name":"lora_name","name":"lora_name","type":"COMBO","widget":{"name":"lora_name"},"link":null},{"localized_name":"strength_model","name":"strength_model","type":"FLOAT","widget":{"name":"strength_model"},"link":null},{"localized_name":"strength_clip","name":"strength_clip","type":"FLOAT","widget":{"name":"strength_clip"},"link":null}],"outputs":[{"localized_name":"MODEL","name":"MODEL","type":"MODEL","slot_index":0,"links":[317,329]},{"localized_name":"CLIP","name":"CLIP","type":"CLIP","slot_index":1,"links":[]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"LoraLoader","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"lora_name":true,"strength_model":true,"strength_clip":true}}},"widgets_values":["SDXLFaeTastic2400.safetensors",0.4000000000000001,0.4000000000000001]},{"id":197,"type":"Griptape Driver: OpenAI Image Generation","pos":[1702.9951171875,-1028.3931884765625],"size":[504,130],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"image_generation_model","name":"image_generation_model","shape":7,"type":"COMBO","widget":{"name":"image_generation_model"},"link":null},{"localized_name":"size","name":"size","shape":7,"type":"COMBO","widget":{"name":"size"},"link":null},{"localized_name":"api_key_env_var","name":"api_key_env_var","shape":7,"type":"STRING","widget":{"name":"api_key_env_var"},"link":null}],"outputs":[{"localized_name":"DRIVER","name":"DRIVER","type":"DRIVER","links":[307]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Driver: OpenAI Image Generation","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["dall-e-3","1024x1024","OPENAI_API_KEY",null]},{"id":208,"type":"Image Resize","pos":[4223.485460949262,-1012.0313447236218],"size":[315,178],"flags":{},"order":6,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":null},{"localized_name":"mode","name":"mode","type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"supersample","name":"supersample","type":"COMBO","widget":{"name":"supersample"},"link":null},{"localized_name":"resampling","name":"resampling","type":"COMBO","widget":{"name":"resampling"},"link":null},{"localized_name":"rescale_factor","name":"rescale_factor","type":"FLOAT","widget":{"name":"rescale_factor"},"link":null},{"localized_name":"resize_width","name":"resize_width","type":"INT","widget":{"name":"resize_width"},"link":null},{"localized_name":"resize_height","name":"resize_height","type":"INT","widget":{"name":"resize_height"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[]}],"properties":{"cnr_id":"was-node-suite-comfyui","ver":"1014f8a1477b8ae0144e16ed4fd6476cd109fb23","Node name for S&R":"Image Resize","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"mode":true,"supersample":true,"resampling":true,"rescale_factor":true,"resize_width":true,"resize_height":true}}},"widgets_values":["rescale","true","lanczos",2.0000000000000004,1024,988]},{"id":207,"type":"UltimateSDUpscaleCustomSample","pos":[4200.022082043012,-559.5957368134656],"size":[346,676],"flags":{},"order":27,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":360},{"localized_name":"model","name":"model","type":"MODEL","link":317},{"localized_name":"positive","name":"positive","type":"CONDITIONING","link":318},{"localized_name":"negative","name":"negative","type":"CONDITIONING","link":319},{"localized_name":"vae","name":"vae","type":"VAE","link":320},{"localized_name":"upscale_model","name":"upscale_model","shape":7,"type":"UPSCALE_MODEL","link":321},{"localized_name":"custom_sampler","name":"custom_sampler","shape":7,"type":"SAMPLER","link":null},{"localized_name":"custom_sigmas","name":"custom_sigmas","shape":7,"type":"SIGMAS","link":null},{"localized_name":"upscale_by","name":"upscale_by","type":"FLOAT","widget":{"name":"upscale_by"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"cfg","name":"cfg","type":"FLOAT","widget":{"name":"cfg"},"link":null},{"localized_name":"sampler_name","name":"sampler_name","type":"COMBO","widget":{"name":"sampler_name"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"denoise","name":"denoise","type":"FLOAT","widget":{"name":"denoise"},"link":null},{"localized_name":"mode_type","name":"mode_type","type":"COMBO","widget":{"name":"mode_type"},"link":null},{"localized_name":"tile_width","name":"tile_width","type":"INT","widget":{"name":"tile_width"},"link":null},{"localized_name":"tile_height","name":"tile_height","type":"INT","widget":{"name":"tile_height"},"link":null},{"localized_name":"mask_blur","name":"mask_blur","type":"INT","widget":{"name":"mask_blur"},"link":null},{"localized_name":"tile_padding","name":"tile_padding","type":"INT","widget":{"name":"tile_padding"},"link":null},{"localized_name":"seam_fix_mode","name":"seam_fix_mode","type":"COMBO","widget":{"name":"seam_fix_mode"},"link":null},{"localized_name":"seam_fix_denoise","name":"seam_fix_denoise","type":"FLOAT","widget":{"name":"seam_fix_denoise"},"link":null},{"localized_name":"seam_fix_width","name":"seam_fix_width","type":"INT","widget":{"name":"seam_fix_width"},"link":null},{"localized_name":"seam_fix_mask_blur","name":"seam_fix_mask_blur","type":"INT","widget":{"name":"seam_fix_mask_blur"},"link":null},{"localized_name":"seam_fix_padding","name":"seam_fix_padding","type":"INT","widget":{"name":"seam_fix_padding"},"link":null},{"localized_name":"force_uniform_tiles","name":"force_uniform_tiles","type":"BOOLEAN","widget":{"name":"force_uniform_tiles"},"link":null},{"localized_name":"tiled_decode","name":"tiled_decode","type":"BOOLEAN","widget":{"name":"tiled_decode"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[324]}],"properties":{"cnr_id":"comfyui_ultimatesdupscale","ver":"778a475dde8116a2066fe07f6c9ca15554e0b5be","Node name for S&R":"UltimateSDUpscaleCustomSample","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"upscale_by":true,"seed":true,"steps":true,"cfg":true,"sampler_name":true,"scheduler":true,"denoise":true,"mode_type":true,"tile_width":true,"tile_height":true,"mask_blur":true,"tile_padding":true,"seam_fix_mode":true,"seam_fix_denoise":true,"seam_fix_width":true,"seam_fix_mask_blur":true,"seam_fix_padding":true,"force_uniform_tiles":true,"tiled_decode":true}}},"widgets_values":[2,566519052998780,"randomize",12,2,"dpm_2","exponential",0.5000000000000001,"Linear",1024,1024,50,104,"None",1,304,64,304,false,false]},{"id":198,"type":"Griptape Combine: Rules List","pos":[1334.1939697265625,-830.0010986328125],"size":[352.79998779296875,86],"flags":{"collapsed":true},"order":9,"mode":0,"inputs":[{"localized_name":"rules_1","name":"rules_1","shape":7,"type":"RULESET","link":308},{"name":"rules_2","type":"RULESET","link":309},{"name":"rules_3","type":"RULESET","link":310},{"name":"rules_4","type":"RULESET","link":null}],"outputs":[{"localized_name":"RULESET","name":"RULESET","type":"RULESET","links":[311]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Combine: Rules List","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":228,"type":"FSLEnsureNHWCBatch","pos":[3886.899767589887,-790.2818330048718],"size":[208.7271484375,26],"flags":{},"order":25,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":394}],"outputs":[{"localized_name":"image_nhwc","name":"image_nhwc","type":"IMAGE","links":[360,361]}],"properties":{"Node name for S&R":"FSLEnsureNHWCBatch","ue_properties":{"widget_ue_connectable":{},"version":"7.1","input_ue_unconnectable":{}}},"widgets_values":[]},{"id":210,"type":"ReActorRestoreFace","pos":[4576.190050793012,-1001.3733857392468],"size":[315,130],"flags":{},"order":29,"mode":4,"inputs":[{"localized_name":"image","name":"image","type":"IMAGE","link":323},{"localized_name":"facedetection","name":"facedetection","type":"COMBO","widget":{"name":"facedetection"},"link":null},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"visibility","name":"visibility","type":"FLOAT","widget":{"name":"visibility"},"link":null},{"localized_name":"codeformer_weight","name":"codeformer_weight","type":"FLOAT","widget":{"name":"codeformer_weight"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[322,325,327,331,382]}],"properties":{"Node name for S&R":"ReActorRestoreFace","cnr_id":"comfyui-reactor","ver":"d901609a1d5d1942a6b069b2f8f3778fee3a7134","ue_properties":{"version":"7.0.1","widget_ue_connectable":{"facedetection":true,"model":true,"visibility":true,"codeformer_weight":true}}},"widgets_values":["retinaface_resnet50","none",1,0.5]},{"id":235,"type":"PreviewImage","pos":[3495.722900390625,70.34211730957031],"size":[228.71023559570312,246],"flags":{},"order":36,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":385}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.63","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":212,"type":"PreviewImage","pos":[4994.217394543012,-910.5138886689343],"size":[362.68011474609375,296.4696960449219],"flags":{},"order":31,"mode":4,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":325}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.29","Node name for S&R":"PreviewImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":216,"type":"Image Comparer (rgthree)","pos":[4938.563585949262,-520.9181855439343],"size":[875.252197265625,822.8955688476562],"flags":{},"order":33,"mode":4,"inputs":[{"dir":3,"name":"image_a","type":"IMAGE","link":331},{"dir":3,"name":"image_b","type":"IMAGE","link":361}],"outputs":[],"properties":{"cnr_id":"rgthree-comfy","ver":"5dc53323e07a021038af9f2a4a06ebc071f7218c","comparer_mode":"Slide","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[[{"name":"A","selected":true,"url":"/api/view?filename=rgthree.compare._temp_xpppg_00003_.png&type=temp&subfolder=&rand=0.805584959104855"},{"name":"B","selected":true,"url":"/api/view?filename=rgthree.compare._temp_xpppg_00004_.png&type=temp&subfolder=&rand=0.24991398835054868"}]],"color":"#322","bgcolor":"#533"},{"id":220,"type":"Fast Groups Bypasser (rgthree)","pos":[2619.082275390625,-1299.32861328125],"size":[236.74765625,130],"flags":{},"order":7,"mode":0,"inputs":[],"outputs":[{"name":"OPT_CONNECTION","type":"*","links":null}],"properties":{"matchColors":"","matchTitle":"","showNav":true,"showAllGraphs":true,"sort":"position","customSortAlphabet":"","toggleRestriction":"default","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}}},{"id":202,"type":"PreviewImage","pos":[2265.55029296875,-1043.997314453125],"size":[509.1957702636719,333.4749755859375],"flags":{},"order":21,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":313}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"PreviewImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[]},{"id":205,"type":"SaveImage","pos":[2275.5517578125,-656.6166381835938],"size":[523.1109619140625,464.4971618652344],"flags":{},"order":22,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":314},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.27","Node name for S&R":"SaveImage","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["griptape\\grip"]},{"id":110,"type":"PreviewImage","pos":[3344.09765625,-1033.034423828125],"size":[326.4037780761719,290.91656494140625],"flags":{},"order":24,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":393}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"PreviewImage","ue_properties":{"widget_ue_connectable":{},"version":"7.0.1"}},"widgets_values":[],"color":"#223","bgcolor":"#335"},{"id":201,"type":"Griptape Display: Text","pos":[1524.5322265625,-369.6628723144531],"size":[640,480],"flags":{},"order":14,"mode":0,"inputs":[{"localized_name":"INPUT","name":"INPUT","shape":7,"type":"STRING","link":312},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[304,305,315]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Display: Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["Here is a high-quality image generation prompt based on your description, following all rulesets:\n\n---\n\n**Prompt:**\n\nA magical, surreal scene set inside a painting: In the foreground, an elegant white horse stands gracefully before two young children, both in awe, surrounded by whimsical magical creatures such as fauns and small dragons. In the distance, a beautiful white unicorn with a shimmering golden mane and tail stands amidst vibrant flowers and lush greenery, partially hidden by the enchanted forest. The sun sets behind majestic mountains, casting a warm golden hour light that bathes the entire landscape in a soft, ethereal glow. A small river winds through the center, perfectly reflecting the fiery hues of the sunset sky. On the right, an ancient temple seamlessly grown from living trees adds a mystical touch. A group of people in elaborate fantasy attire stand together, holding hands, gazing at the magical scene with wonder and joy. The composition uses a dark background to enhance the glowing, magical elements, with the magic spiral subtly woven into the river’s flow. The style is painterly and highly detailed, evoking a sense of wonder and enchantment. Use a wide-angle lens (24mm), low camera angle to emphasize the grandeur of the scene, and capture the golden hour lighting for a dreamy, surreal effect. The overall emotion is one of awe, unity, and magical discovery.\n\n---\n\n**Composition:** Foreground focus on horse, children, and magical creatures; midground features unicorn and lush flora; background includes mountains, sunset, and temple; group of people on the right.\n**Lighting:** Golden hour, warm and soft, with magical glows.\n**Design/Style:** Painterly, surreal, highly detailed, dark background for contrast.\n**Camera Lens:** Wide-angle (24mm), low angle.\n**Time of Day:** Sunset/golden hour.\n**Character & Emotion:** Awe, unity, wonder, magical discovery.\n\n---\n\n*All content is family-friendly and follows NSFW Blocker rules.*"]},{"id":234,"type":"Preview from metadata [Crystools]","pos":[3501.338713542647,-202.52597519292655],"size":[210.32537841796875,222.50999450683594],"flags":{},"order":35,"mode":0,"inputs":[{"localized_name":"metadata_raw","name":"metadata_raw","shape":7,"type":"METADATA_RAW","link":384}],"outputs":[{"localized_name":"Metadata RAW","name":"Metadata RAW","type":"METADATA_RAW","links":null}],"properties":{"cnr_id":"comfyui-crystools","ver":"1.27.3","Node name for S&R":"Preview from metadata [Crystools]","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":[]},{"id":230,"type":"LoadImage","pos":[2894.280517578125,-53.485755920410156],"size":[274.080078125,314],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[396]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.59","Node name for S&R":"LoadImage","ue_properties":{"widget_ue_connectable":{"image":true,"upload":true},"version":"7.1","input_ue_unconnectable":{}}},"widgets_values":["01_FRAME-1024-150.png","image"]},{"id":94,"type":"ComfyUIDeployExternalText","pos":[2886.167236328125,-1039.5758056640625],"size":[391.5573425292969,244.14918518066406],"flags":{},"order":17,"mode":0,"inputs":[{"localized_name":"input_id","name":"input_id","type":"STRING","widget":{"name":"input_id"},"link":null},{"localized_name":"default_value","name":"default_value","shape":7,"type":"STRING","widget":{"name":"default_value"},"link":315},{"localized_name":"display_name","name":"display_name","shape":7,"type":"STRING","widget":{"name":"display_name"},"link":null},{"localized_name":"description","name":"description","shape":7,"type":"STRING","widget":{"name":"description"},"link":null}],"outputs":[{"localized_name":"text","name":"text","type":"STRING","links":[398]}],"title":"PROMPT","properties":{"cnr_id":"comfyui-deploy","ver":"b889f79baf9e099d5e54bd20bab4aa1e7c3296c0","Node name for S&R":"ComfyUIDeployExternalText","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["ACTION_MANUAL_PROMPT","a photorealistic orange tabby cat wearing scuba gear, underwater, 1:1","MANUA_PROMPT ","IF there is no OPENAI_API_KEY on the machine secrets. You will need to enter your full prompt and delete the AI_SYSTEM_PROMPT \n\nOtherwise you can use this to add a The Task to be preform by the model for example \"replace the cat from image1 with the dog on image2\" \n\nshe is wearing the same clothes but it has the logo on the swimsuit make sure it looks well integrated and part of the same material with the fabric and not just an overlay the logo should wrap with the swinsuit to the body of the model "],"color":"#232","bgcolor":"#353"},{"id":233,"type":"FSLImageSaverWithMetadataV5","pos":[3192.9413789033097,-28.065957582456967],"size":[272.9463690334246,462],"flags":{},"order":34,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":382},{"localized_name":"external_metadata","name":"external_metadata","shape":7,"type":"DICT","link":397},{"localized_name":"filename","name":"filename","type":"STRING","widget":{"name":"filename"},"link":null},{"localized_name":"save_to_subfolder","name":"save_to_subfolder","type":"STRING","widget":{"name":"save_to_subfolder"},"link":null},{"localized_name":"append_datetime","name":"append_datetime","shape":7,"type":"BOOLEAN","widget":{"name":"append_datetime"},"link":null},{"localized_name":"model_string","name":"model_string","shape":7,"type":"STRING","widget":{"name":"model_string"},"link":null},{"localized_name":"modelname","name":"modelname","shape":7,"type":"STRING","widget":{"name":"modelname"},"link":null},{"localized_name":"seed_string","name":"seed_string","shape":7,"type":"STRING","widget":{"name":"seed_string"},"link":null},{"localized_name":"width_string","name":"width_string","shape":7,"type":"STRING","widget":{"name":"width_string"},"link":null},{"localized_name":"height_string","name":"height_string","shape":7,"type":"STRING","widget":{"name":"height_string"},"link":null},{"localized_name":"temperature_string","name":"temperature_string","shape":7,"type":"STRING","widget":{"name":"temperature_string"},"link":null},{"localized_name":"positive_string","name":"positive_string","shape":7,"type":"STRING","widget":{"name":"positive_string"},"link":null},{"localized_name":"negative_string","name":"negative_string","shape":7,"type":"STRING","widget":{"name":"negative_string"},"link":null},{"localized_name":"cfg_string","name":"cfg_string","shape":7,"type":"STRING","widget":{"name":"cfg_string"},"link":null},{"localized_name":"steps_string","name":"steps_string","shape":7,"type":"STRING","widget":{"name":"steps_string"},"link":null},{"localized_name":"sampler_string","name":"sampler_string","shape":7,"type":"STRING","widget":{"name":"sampler_string"},"link":null},{"localized_name":"scheduler_string","name":"scheduler_string","shape":7,"type":"STRING","widget":{"name":"scheduler_string"},"link":null},{"localized_name":"guidance_scale_string","name":"guidance_scale_string","shape":7,"type":"STRING","widget":{"name":"guidance_scale_string"},"link":null},{"localized_name":"watermark_string","name":"watermark_string","shape":7,"type":"STRING","widget":{"name":"watermark_string"},"link":null}],"outputs":[{"localized_name":"metadata_raw","name":"metadata_raw","type":"METADATA_RAW","links":[384]},{"localized_name":"image","name":"image","type":"IMAGE","links":[385]}],"properties":{"Node name for S&R":"FSLImageSaverWithMetadataV5","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.2.2"}},"widgets_values":["nanob_ups_%date_%time","metadata",true,"","","","","","","","","","","","","",""]},{"id":238,"type":"FSLGeminiGenerateImageV8","pos":[2885.951386077175,-744.1343730243618],"size":[400,632],"flags":{},"order":23,"mode":0,"inputs":[{"localized_name":"init_image","name":"init_image","shape":7,"type":"IMAGE","link":396},{"localized_name":"images","name":"images","shape":7,"type":"IMAGE","link":null},{"localized_name":"mask","name":"mask","shape":7,"type":"MASK","link":null},{"localized_name":"mask_image","name":"mask_image","shape":7,"type":"IMAGE","link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":398},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","widget":{"name":"temperature"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"use_init_image","name":"use_init_image","type":"BOOLEAN","widget":{"name":"use_init_image"},"link":null},{"localized_name":"use_images","name":"use_images","type":"BOOLEAN","widget":{"name":"use_images"},"link":null},{"localized_name":"use_mask","name":"use_mask","type":"BOOLEAN","widget":{"name":"use_mask"},"link":null},{"localized_name":"base_for_inpaint","name":"base_for_inpaint","type":"COMBO","widget":{"name":"base_for_inpaint"},"link":null},{"localized_name":"refresh_models","name":"refresh_models","type":"BOOLEAN","widget":{"name":"refresh_models"},"link":null},{"localized_name":"output_prompt","name":"output_prompt","type":"BOOLEAN","widget":{"name":"output_prompt"},"link":null},{"localized_name":"invert_mask","name":"invert_mask","shape":7,"type":"BOOLEAN","widget":{"name":"invert_mask"},"link":null},{"localized_name":"feather_radius","name":"feather_radius","shape":7,"type":"INT","widget":{"name":"feather_radius"},"link":null},{"localized_name":"mask_strength","name":"mask_strength","shape":7,"type":"FLOAT","widget":{"name":"mask_strength"},"link":null},{"localized_name":"api_key","name":"api_key","shape":7,"type":"STRING","widget":{"name":"api_key"},"link":null}],"outputs":[{"localized_name":"image","name":"image","type":"IMAGE","links":[393,394,395]},{"localized_name":"prompt","name":"prompt","type":"STRING","links":null},{"localized_name":"model","name":"model","type":"STRING","links":null},{"localized_name":"width","name":"width","type":"INT","links":null},{"localized_name":"height","name":"height","type":"INT","links":null},{"localized_name":"temperature","name":"temperature","type":"FLOAT","links":null},{"localized_name":"seed","name":"seed","type":"INT","links":null},{"localized_name":"seed_mode","name":"seed_mode","type":"STRING","links":null},{"localized_name":"metadata","name":"metadata","type":"DICT","links":[397]}],"properties":{"Node name for S&R":"FSLGeminiGenerateImageV8","ue_properties":{"widget_ue_connectable":{},"input_ue_unconnectable":{},"version":"7.3"}},"widgets_values":["","gemini-3-pro-image-preview",1024,1024,1,1168972323,"randomize",true,false,false,"auto",false,false,false,0,1,""]},{"id":196,"type":"Griptape Create: Image from Text","pos":[1827.150146484375,-650.7247924804688],"size":[403.1999816894531,200],"flags":{},"order":16,"mode":0,"inputs":[{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":305},{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":306},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"driver","name":"driver","shape":7,"type":"DRIVER","link":307},{"localized_name":"STRING","name":"STRING","type":"STRING","widget":{"name":"STRING"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[301,302,303,313,314]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":null},{"localized_name":"file_path","name":"file_path","type":"STRING","links":null}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Image from Text","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":[""]},{"id":200,"type":"Griptape Create: Agent","pos":[1331.383056640625,-757.8782348632812],"size":[456.1457214355469,322.3581848144531],"flags":{},"order":13,"mode":0,"inputs":[{"localized_name":"agent","name":"agent","shape":7,"type":"AGENT","link":null},{"localized_name":"config","name":"config","shape":7,"type":"CONFIG","link":null},{"localized_name":"tools","name":"tools","shape":7,"type":"TOOL_LIST","link":null},{"localized_name":"rulesets","name":"rulesets","shape":7,"type":"RULESET","link":311},{"localized_name":"input_string","name":"input_string","shape":7,"type":"STRING","link":null},{"localized_name":"key_value_replacement","name":"key_value_replacement","shape":7,"type":"DICT","link":null},{"localized_name":"STRING","name":"STRING","shape":7,"type":"STRING","widget":{"name":"STRING"},"link":null},{"localized_name":"max_subtasks","name":"max_subtasks","shape":7,"type":"INT","widget":{"name":"max_subtasks"},"link":null}],"outputs":[{"localized_name":"OUTPUT","name":"OUTPUT","type":"STRING","links":[312]},{"localized_name":"AGENT","name":"AGENT","type":"AGENT","links":[306]}],"properties":{"cnr_id":"comfyui-griptape","ver":"2a70afd0f3d6118969cd40565e07376105661a21","Node name for S&R":"Griptape Create: Agent","ue_properties":{"version":"7.0.1","widget_ue_connectable":{}}},"widgets_values":["iA closeup of a beautiful white unicorn with a golden mane and tail stands in the distance of an enchanted forest, surrounded by vibrant flowers and lush greenery under a sunset sky. In front In the foreground is an elegant white horse standing in front of two young children surrounded by magical creatures like fauns and dragons. The sun sets behind majestic mountains, casting a golden light over everything. A small river flows through the center, reflecting the sky's hues.; is a group of people wearing fantasy attire, holding hands as they gaze at the magical scene; on their right side lies an ancient temple made from trees. The entire setting appears as if it is set inside a painting, giving off a surreal vibe.\n",3]},{"id":109,"type":"SaveImage","pos":[3359.13525390625,-678.221923828125],"size":[349.9873352050781,391.2630310058594],"flags":{},"order":26,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":395},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.43","Node name for S&R":"SaveImage","ue_properties":{"widget_ue_connectable":{"filename_prefix":true},"version":"7.0.1"}},"widgets_values":["nanob\\nano"],"color":"#223","bgcolor":"#335"}],"links":[[301,196,0,191,0,"*"],[302,196,0,192,0,"*"],[303,196,0,193,0,"*"],[304,201,0,195,0,"*"],[305,201,0,196,0,"STRING"],[306,200,1,196,1,"AGENT"],[307,197,0,196,3,"DRIVER"],[308,190,0,198,0,"RULESET"],[309,199,0,198,1,"RULESET"],[310,194,0,198,2,"RULESET"],[311,198,0,200,3,"RULESET"],[312,200,0,201,0,"STRING"],[313,196,0,202,0,"IMAGE"],[314,196,0,205,0,"IMAGE"],[315,201,0,94,1,"STRING"],[316,218,1,206,0,"CLIP"],[317,219,0,207,1,"MODEL"],[318,206,0,207,2,"CONDITIONING"],[319,215,0,207,3,"CONDITIONING"],[320,218,2,207,4,"VAE"],[321,217,0,207,5,"UPSCALE_MODEL"],[322,210,0,209,0,"IMAGE"],[323,211,0,210,0,"IMAGE"],[324,207,0,211,0,"IMAGE"],[325,210,0,212,0,"IMAGE"],[327,210,0,214,0,"*"],[328,211,0,214,1,"*"],[329,219,0,214,2,"*"],[330,218,1,215,0,"CLIP"],[331,210,0,216,0,"IMAGE"],[332,218,0,219,0,"MODEL"],[333,218,1,219,1,"CLIP"],[360,228,0,207,0,"IMAGE"],[361,228,0,216,1,"IMAGE"],[382,210,0,233,0,"IMAGE"],[384,233,0,234,0,"METADATA_RAW"],[385,233,1,235,0,"IMAGE"],[393,238,0,110,0,"IMAGE"],[394,238,0,228,0,"IMAGE"],[395,238,0,109,0,"IMAGE"],[396,230,0,238,0,"IMAGE"],[397,238,8,233,1,"DICT"],[398,94,0,238,4,"STRING"]],"groups":[{"id":1,"title":"Griptape Loader","bounding":[1304.4677734375,-1127.59130859375,1520,1260],"color":"#3f789e","font_size":24,"flags":{}},{"id":2,"title":"Nano Banana","bounding":[2868.8671875,-1121.8707275390625,907.7624595380184,1574.5641309930388],"color":"#3f789e","font_size":24,"flags":{}},{"id":3,"title":"Upscaler","bounding":[3821.968126964887,-1117.1467011689342,3083.047119140625,1485.775146484375],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ds":{"scale":0.89053992629068,"offset":[-1837.149448706055,991.1755145892937]},"frontendVersion":"1.25.10","VHS_MetadataImage":true,"VHS_latentpreview":false,"VHS_KeepIntermediate":true,"VHS_latentpreviewrate":0,"ue_links":[],"links_added_by_ue":[]},"version":0.4} \ No newline at end of file diff --git a/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.png b/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.png index 3b74d2b..2fa6c4e 100644 Binary files a/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.png and b/workflows/nano_banana/Nano Banana w_Griptape w_Upscaler.png differ