{
  "_comment": "Neyralfoundry ComfyUI workflow v1 — text-to-video reference. Import via ComfyUI Load button. Substitute the model node for your local checkpoint. Map the Studio bundle fields (prompt/seed/cfg/steps/duration) into the corresponding nodes. After render, run watermark step via ffmpeg or via the WatermarkOverlay node if installed.",
  "_studio_bundle_mapping": {
    "prompt": "→ CLIPTextEncode (positive)",
    "seed": "→ KSampler.seed",
    "cfg": "→ KSampler.cfg",
    "steps": "→ KSampler.steps",
    "duration_sec": "→ VideoFrames count = duration_sec * fps",
    "target.width": "→ EmptyLatentImage.width",
    "target.height": "→ EmptyLatentImage.height"
  },
  "nodes": {
    "1": {
      "class_type": "CheckpointLoaderSimple",
      "_note": "REPLACE ckpt_name with your local video diffusion checkpoint (e.g. hunyuan-video.safetensors)",
      "inputs": { "ckpt_name": "your_video_model.safetensors" }
    },
    "2": {
      "class_type": "CLIPTextEncode",
      "_note": "Positive prompt — map from bundle.prompt",
      "inputs": { "text": "PROMPT_FROM_BUNDLE", "clip": ["1", 1] }
    },
    "3": {
      "class_type": "CLIPTextEncode",
      "_note": "Negative prompt — recommended baseline",
      "inputs": { "text": "cartoon, anime, low quality, blurry, deformed, watermark", "clip": ["1", 1] }
    },
    "4": {
      "class_type": "EmptyLatentImage",
      "inputs": { "width": 1920, "height": 1080, "batch_size": 1 }
    },
    "5": {
      "class_type": "KSampler",
      "_note": "Map seed/cfg/steps from bundle",
      "inputs": {
        "seed": 1338843269,
        "steps": 30,
        "cfg": 6.0,
        "sampler_name": "dpmpp_2m_sde",
        "scheduler": "karras",
        "denoise": 1.0,
        "model": ["1", 0],
        "positive": ["2", 0],
        "negative": ["3", 0],
        "latent_image": ["4", 0]
      }
    },
    "6": {
      "class_type": "VAEDecode",
      "inputs": { "samples": ["5", 0], "vae": ["1", 2] }
    },
    "7": {
      "class_type": "SaveImage",
      "_note": "For video models with frame output, swap for SaveAnimatedWebP / VideoCombine / ffmpeg subprocess",
      "inputs": { "images": ["6", 0], "filename_prefix": "neyralfoundry_render" }
    }
  }
}
