{
  "id": "050f8b14-d5ae-47f5-9dc9-73b86cbacbe9",
  "revision": 0,
  "last_node_id": 7,
  "last_link_id": 5,
  "nodes": [
    {
      "id": 1,
      "type": "MarkdownNote",
      "pos": [
        20,
        60
      ],
      "size": [
        480,
        330
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [],
      "title": "How to use",
      "properties": {},
      "widgets_values": [
        "## Character Sheet\n\nOne **identity sheet** of an invented character: back full-body, front full-body and a face close-up, on plain gray with neutral light. Use it as the character reference for later shots.\n\n1. Rewrite **Character (change me)**: age, face, hair, and **only the clothes and accessories worn in every scene**.\n2. Optional: change **Photo style**.\n3. Run, then check **Save Image**.\n\nThe fixed rules (neutral expression, gray background, no held props) live in **Build the sheet prompt**. Keep held items and sometimes-worn items (sunglasses, a hat) off the sheet and make them a **Prop Sheet** instead.\n\nBefore the first run, add your ModelArk API key in **Settings > BytePlus**. No other key is needed."
      ],
      "widgets_values_named": {
        "text": "## Character Sheet\n\nOne **identity sheet** of an invented character: back full-body, front full-body and a face close-up, on plain gray with neutral light. Use it as the character reference for later shots.\n\n1. Rewrite **Character (change me)**: age, face, hair, and **only the clothes and accessories worn in every scene**.\n2. Optional: change **Photo style**.\n3. Run, then check **Save Image**.\n\nThe fixed rules (neutral expression, gray background, no held props) live in **Build the sheet prompt**. Keep held items and sometimes-worn items (sunglasses, a hat) off the sheet and make them a **Prop Sheet** instead.\n\nBefore the first run, add your ModelArk API key in **Settings > BytePlus**. No other key is needed."
      },
      "color": "#432",
      "bgcolor": "#653"
    },
    {
      "id": 2,
      "type": "PrimitiveStringMultiline",
      "pos": [
        20,
        440
      ],
      "size": [
        480,
        300
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "value",
          "name": "value",
          "type": "STRING",
          "widget": {
            "name": "value"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING",
          "links": [
            1
          ]
        }
      ],
      "title": "Character (change me)",
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "a youthful attractive man in his early 30s, warm olive-brown skin, dark thick curly hair, thin mustache with a small soul-patch under the lip, faint stubble along the jaw, two small silver hoop earrings on the left ear, thin silver chain necklace, subtly asymmetrical face, a small subtle healed scar near the right eye. Age-of-sail pirate costume: faded mustard-yellow durag tied at the back with the tails hanging down, small shark tooth pendant attached to the durag above the left temple, open off-white linen shirt, worn dark leather vest, wide sash belt, baggy dark breeches, scuffed leather boots, weathered and dirty fabrics."
      ],
      "widgets_values_named": {
        "value": "a youthful attractive man in his early 30s, warm olive-brown skin, dark thick curly hair, thin mustache with a small soul-patch under the lip, faint stubble along the jaw, two small silver hoop earrings on the left ear, thin silver chain necklace, subtly asymmetrical face, a small subtle healed scar near the right eye. Age-of-sail pirate costume: faded mustard-yellow durag tied at the back with the tails hanging down, small shark tooth pendant attached to the durag above the left temple, open off-white linen shirt, worn dark leather vest, wide sash belt, baggy dark breeches, scuffed leather boots, weathered and dirty fabrics."
      }
    },
    {
      "id": 3,
      "type": "PrimitiveStringMultiline",
      "pos": [
        20,
        780
      ],
      "size": [
        480,
        180
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "value",
          "name": "value",
          "type": "STRING",
          "widget": {
            "name": "value"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING",
          "links": [
            2
          ]
        }
      ],
      "title": "Photo style",
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "Documentary editorial portrait photography, shot on a full-frame camera with a 50mm lens, natural skin texture with visible pores, fine flyaway hair, subtle film grain, professional character-sheet quality, consistent skin tone and wardrobe detail across all panels. Realistic, not airbrushed."
      ],
      "widgets_values_named": {
        "value": "Documentary editorial portrait photography, shot on a full-frame camera with a 50mm lens, natural skin texture with visible pores, fine flyaway hair, subtle film grain, professional character-sheet quality, consistent skin tone and wardrobe detail across all panels. Realistic, not airbrushed."
      }
    },
    {
      "id": 4,
      "type": "StringFormat",
      "pos": [
        560,
        60
      ],
      "size": [
        520,
        900
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "a",
          "name": "values.a",
          "shape": 7,
          "type": "*",
          "link": 1
        },
        {
          "localized_name": "b",
          "name": "values.b",
          "shape": 7,
          "type": "*",
          "link": 2
        },
        {
          "localized_name": "c",
          "name": "values.c",
          "shape": 7,
          "type": "*",
          "link": null
        },
        {
          "localized_name": "f_string",
          "name": "f_string",
          "type": "STRING",
          "widget": {
            "name": "f_string"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING",
          "links": [
            3,
            4
          ]
        }
      ],
      "title": "Build the sheet prompt",
      "properties": {
        "Node name for S&R": "StringFormat"
      },
      "widgets_values": [
        "Task:\nText-to-Image (T2I)\n\nSubject:\nCharacter reference sheet, single character: {a} Same person in all panels, consistent identity. Relaxed neutral expression in all panels: mouth relaxed and closed, eyes looking straight into camera, no smile, no frown, no raised brows, no emotion. Three-panel sheet only: one full-body back view, one full-body front view, and one face close-up panel. Worn outfit elements only, nothing held in the hands, no props, no weapons.\n\nSetting:\nClean plain gray studio background, consistent across all three panels, with thin subtle vertical divider lines separating the panels. No props, no held objects, no furniture, no background variation.\n\nStyle:\n{b}\n\nLighting:\nSoft, even, neutral studio light, flat fill, neutral white balance, no mood, no dramatic shadows, no light reflection on the skin, no specular shine or flash on the skin, identical lighting across all panels.\n\nComposition:\nThree-panel character sheet with even spacing: back full-body view on the left, front full-body view in the center, face close-up on the right. Eye-level camera, consistent framing across the two body panels, relaxed neutral expression in every panel.\n\nConstraints:\nQuality: 16:9 horizontal sheet, rich skin texture, natural hair detail, consistent character identity across all panels\nNegative: no props in hands, no held objects, no weapons, no background variation, no scene lighting or color cast, no exaggerated expressions, no smiling, no frowning, no strong emotions, no glossy skin, no light reflection on the skin, no specular shine or flash on the skin, no plastic skin, no airbrushed skin, no over-smoothing, no waxy texture, no CGI sheen, no unnatural symmetry, no extra panels, no side profile, no 3/4 view, no text overlays, no watermarks, no distorted anatomy, no extra fingers"
      ],
      "widgets_values_named": {
        "f_string": "Task:\nText-to-Image (T2I)\n\nSubject:\nCharacter reference sheet, single character: {a} Same person in all panels, consistent identity. Relaxed neutral expression in all panels: mouth relaxed and closed, eyes looking straight into camera, no smile, no frown, no raised brows, no emotion. Three-panel sheet only: one full-body back view, one full-body front view, and one face close-up panel. Worn outfit elements only, nothing held in the hands, no props, no weapons.\n\nSetting:\nClean plain gray studio background, consistent across all three panels, with thin subtle vertical divider lines separating the panels. No props, no held objects, no furniture, no background variation.\n\nStyle:\n{b}\n\nLighting:\nSoft, even, neutral studio light, flat fill, neutral white balance, no mood, no dramatic shadows, no light reflection on the skin, no specular shine or flash on the skin, identical lighting across all panels.\n\nComposition:\nThree-panel character sheet with even spacing: back full-body view on the left, front full-body view in the center, face close-up on the right. Eye-level camera, consistent framing across the two body panels, relaxed neutral expression in every panel.\n\nConstraints:\nQuality: 16:9 horizontal sheet, rich skin texture, natural hair detail, consistent character identity across all panels\nNegative: no props in hands, no held objects, no weapons, no background variation, no scene lighting or color cast, no exaggerated expressions, no smiling, no frowning, no strong emotions, no glossy skin, no light reflection on the skin, no specular shine or flash on the skin, no plastic skin, no airbrushed skin, no over-smoothing, no waxy texture, no CGI sheen, no unnatural symmetry, no extra panels, no side profile, no 3/4 view, no text overlays, no watermarks, no distorted anatomy, no extra fingers"
      }
    },
    {
      "id": 5,
      "type": "PreviewAny",
      "pos": [
        1140,
        60
      ],
      "size": [
        440,
        360
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "source",
          "name": "source",
          "type": "*",
          "link": 3
        }
      ],
      "outputs": [
        {
          "localized_name": "STRING",
          "name": "STRING",
          "type": "STRING",
          "links": null
        }
      ],
      "title": "Prompt sent to Seedream",
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "widgets_values_named": {}
    },
    {
      "id": 6,
      "type": "BytePlusSeedream",
      "pos": [
        1140,
        480
      ],
      "size": [
        440,
        480
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "prompt",
          "name": "prompt",
          "type": "STRING",
          "widget": {
            "name": "prompt"
          },
          "link": 4
        },
        {
          "localized_name": "model",
          "name": "model",
          "type": "COMFY_DYNAMICCOMBO_V3",
          "widget": {
            "name": "model"
          },
          "link": null
        },
        {
          "localized_name": "size_preset",
          "name": "model.size_preset",
          "type": "COMBO",
          "widget": {
            "name": "model.size_preset"
          },
          "link": null
        },
        {
          "localized_name": "width",
          "name": "model.width",
          "type": "INT",
          "widget": {
            "name": "model.width"
          },
          "link": null
        },
        {
          "localized_name": "height",
          "name": "model.height",
          "type": "INT",
          "widget": {
            "name": "model.height"
          },
          "link": null
        },
        {
          "localized_name": "image_1",
          "name": "model.images.image_1",
          "shape": 7,
          "type": "IMAGE",
          "link": null
        },
        {
          "localized_name": "prompt_optimization",
          "name": "model.prompt_optimization",
          "type": "COMBO",
          "widget": {
            "name": "model.prompt_optimization"
          },
          "link": null
        },
        {
          "localized_name": "seed",
          "name": "model.seed",
          "type": "INT",
          "widget": {
            "name": "model.seed"
          },
          "link": null
        },
        {
          "localized_name": "watermark",
          "name": "model.watermark",
          "type": "BOOLEAN",
          "widget": {
            "name": "model.watermark"
          },
          "link": null
        },
        {
          "localized_name": "thinking",
          "name": "model.thinking",
          "type": "BOOLEAN",
          "widget": {
            "name": "model.thinking"
          },
          "link": null
        },
        {
          "localized_name": "generation_count",
          "name": "model.generation_count",
          "type": "INT",
          "widget": {
            "name": "model.generation_count"
          },
          "link": null
        },
        {
          "localized_name": "output_format",
          "name": "model.output_format",
          "type": "COMBO",
          "widget": {
            "name": "model.output_format"
          },
          "link": null
        },
        {
          "localized_name": "background",
          "name": "model.background",
          "type": "COMBO",
          "widget": {
            "name": "model.background"
          },
          "link": null
        },
        {
          "localized_name": "reference_mask",
          "name": "model.reference_mask",
          "shape": 7,
          "type": "MASK",
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "IMAGE",
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            5
          ]
        },
        {
          "localized_name": "response",
          "name": "response",
          "type": "STRING",
          "links": null
        },
        {
          "localized_name": "mask",
          "name": "mask",
          "type": "MASK",
          "links": null
        }
      ],
      "title": "Paint the sheet (Seedream 5.0 Pro)",
      "properties": {
        "Node name for S&R": "BytePlusSeedream",
        "cnr_id": "ComfyUI-BytePlus-ModelArk",
        "ver": "0.6.1"
      },
      "widgets_values": [
        "",
        "seedream 5.0 pro",
        "(2K) 2848x1600 (16:9)",
        2848,
        1600,
        "standard",
        42,
        "randomize",
        false,
        true,
        1,
        "jpeg",
        "opaque",
        "randomize"
      ],
      "widgets_values_named": {
        "prompt": "",
        "model": "seedream 5.0 pro",
        "model.size_preset": "(2K) 2848x1600 (16:9)",
        "model.width": 2848,
        "model.height": 1600,
        "model.prompt_optimization": "standard",
        "model.seed": 42,
        "control_after_generate#1": "randomize",
        "model.watermark": false,
        "model.thinking": true,
        "model.generation_count": 1,
        "model.output_format": "jpeg",
        "model.background": "opaque",
        "control_after_generate": "randomize"
      }
    },
    {
      "id": 7,
      "type": "SaveImage",
      "pos": [
        1640,
        480
      ],
      "size": [
        460,
        480
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "link": 5
        },
        {
          "localized_name": "filename_prefix",
          "name": "filename_prefix",
          "type": "STRING",
          "widget": {
            "name": "filename_prefix"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "localized_name": "images",
          "name": "images",
          "type": "IMAGE",
          "links": null
        }
      ],
      "title": "Save the sheet",
      "properties": {
        "cnr_id": "comfy-core",
        "ver": "0.33.2",
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "BytePlus/Image/character_sheet"
      ],
      "widgets_values_named": {
        "filename_prefix": "BytePlus/Image/character_sheet"
      }
    }
  ],
  "links": [
    [
      3,
      4,
      0,
      5,
      0,
      "STRING"
    ],
    [
      5,
      6,
      0,
      7,
      0,
      "IMAGE"
    ],
    [
      4,
      4,
      0,
      6,
      0,
      "STRING"
    ],
    [
      1,
      2,
      0,
      4,
      0,
      "STRING"
    ],
    [
      2,
      3,
      0,
      4,
      1,
      "STRING"
    ]
  ],
  "groups": [
    {
      "id": 1,
      "title": "1 · Describe the character",
      "bounding": [
        0,
        0,
        520,
        1000
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 2,
      "title": "2 · Build the prompt",
      "bounding": [
        540,
        0,
        560,
        1000
      ],
      "color": "#3f789e",
      "flags": {}
    },
    {
      "id": 3,
      "title": "3 · Paint and save",
      "bounding": [
        1120,
        0,
        1000,
        1000
      ],
      "color": "#3f789e",
      "flags": {}
    }
  ],
  "config": {},
  "extra": {
    "ds": {
      "scale": 0.5,
      "offset": [
        40,
        40
      ]
    },
    "frontendVersion": "1.53.6"
  },
  "version": 0.4
}