Instructions to use hgjc/ltx-ugc-bundle with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LTX.io
How to use hgjc/ltx-ugc-bundle with LTX.io:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --frozen
# Download the weights from this repo, plus the Gemma text encoder hf download hgjc/ltx-ugc-bundle --local-dir models/ltx-ugc-bundle hf download google/gemma-3-12b-it-qat-q4_0-unquantized --local-dir models/gemma-3-12b
# Fast pipeline (distilled model, no distilled LoRA needed) uv run python -m ltx_pipelines.distilled \ --distilled-checkpoint-path models/ltx-ugc-bundle/<distilled-checkpoint>.safetensors \ --spatial-upsampler-path models/ltx-ugc-bundle/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8# HQ pipeline (two-stage, higher quality) uv run python -m ltx_pipelines.ti2vid_two_stages_hq \ --checkpoint-path models/ltx-ugc-bundle/<checkpoint>.safetensors \ --distilled-lora models/ltx-ugc-bundle/<distilled-lora>.safetensors 0.8 \ --spatial-upsampler-path models/ltx-ugc-bundle/<spatial-upsampler>.safetensors \ --gemma-root models/gemma-3-12b \ --prompt "A beautiful sunset over the ocean" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Notebooks
- Google Colab
- Kaggle
| import re | |
| class StringFunction: | |
| def INPUT_TYPES(s): | |
| return { | |
| "required": { | |
| "action": (["append", "replace"], {}), | |
| "tidy_tags": (["yes", "no"], {}), | |
| }, | |
| "optional": { | |
| "text_a": ("STRING", {"multiline": True, "dynamicPrompts": False}), | |
| "text_b": ("STRING", {"multiline": True, "dynamicPrompts": False}), | |
| "text_c": ("STRING", {"multiline": True, "dynamicPrompts": False}) | |
| } | |
| } | |
| RETURN_TYPES = ("STRING",) | |
| FUNCTION = "exec" | |
| CATEGORY = "utils" | |
| OUTPUT_NODE = True | |
| def exec(self, action, tidy_tags, text_a="", text_b="", text_c=""): | |
| tidy_tags = tidy_tags == "yes" | |
| out = "" | |
| if action == "append": | |
| out = (", " if tidy_tags else "").join(filter(None, [text_a, text_b, text_c])) | |
| else: | |
| if text_c is None: | |
| text_c = "" | |
| if text_b.startswith("/") and text_b.endswith("/"): | |
| regex = text_b[1:-1] | |
| out = re.sub(regex, text_c, text_a) | |
| else: | |
| out = text_a.replace(text_b, text_c) | |
| if tidy_tags: | |
| out = re.sub(r"\s{2,}", " ", out) | |
| out = out.replace(" ,", ",") | |
| out = re.sub(r",{2,}", ",", out) | |
| out = out.strip() | |
| return {"ui": {"text": (out,)}, "result": (out,)} | |
| NODE_CLASS_MAPPINGS = { | |
| "StringFunction|pysssss": StringFunction, | |
| } | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| "StringFunction|pysssss": "String Function 🐍", | |
| } | |