Files
hermes-skills/ltx-video-pipeline/references/programmatic-workflow-modification.md
T

2.4 KiB

Programmatic Workflow JSON Modification

When modifying multiple LTX workflow JSONs with the same changes (sampler, duration, imageFile, prompt), use a Python script rather than manual JSON editing. This avoids quoting errors in shell heredocs and ensures consistent modifications across clips.

Pattern

  1. Write the modification script locally (on Hermes host)
  2. scp it to .202
  3. Run it via SSH

Example: build_clips.py (2026-07-22)

import json

# Load templates
c1 = json.load(open("/tmp/api_cyberpunk_C1.json"))
c2 = json.load(open("/tmp/api_cyberpunk_C2.json"))

# Common modifications for both clips
for d, name in [(c1, "C1"), (c2, "C2")]:
    p = d["prompt"]
    
    # Node 20: sampler
    p["20"]["inputs"]["sampler_name"] = "euler_ancestral_cfg_pp"
    
    # Node 131: duration -> 121 frames / 5.04s
    p["131"]["inputs"]["duration_frames"] = 121
    p["131"]["inputs"]["end_frame"] = 121
    p["131"]["inputs"]["duration_seconds"] = 5.04
    p["131"]["inputs"]["end_second"] = 5.04
    
    # Node 131 timeline_data
    td = json.loads(p["131"]["inputs"]["timeline_data"])
    td["normalDurationFrames"] = 121
    seg = td["segments"][0]
    seg["length"] = 121
    seg["end"] = 5.04

# C1-specific: boss pan right
p1 = c1["prompt"]
td1 = json.loads(p1["131"]["inputs"]["timeline_data"])
td1["segments"][0]["imageFile"] = "ltx_boss_A.png"
td1["segments"][0]["prompt"] = "..."  # full prompt
p1["131"]["inputs"]["timeline_data"] = json.dumps(td1)

# C2-specific: frame-B -> woman reveal
p2 = c2["prompt"]
td2 = json.loads(p2["131"]["inputs"]["timeline_data"])
td2["segments"][0]["imageFile"] = "ltx_boss_B.png"  # CRITICAL: pre-rendered empty frame B
td2["segments"][0]["prompt"] = "..."  # full prompt
p2["131"]["inputs"]["timeline_data"] = json.dumps(td2)

# Write both
json.dump(c1, open("/tmp/api_boss_C1_fixed.json", "w"), indent=2)
json.dump(c2, open("/tmp/api_boss_C2_fixed.json", "w"), indent=2)

Why Not Shell Heredocs?

Shell heredocs with Python inside them have quoting issues:

  • Single quotes inside the Python string break the heredoc delimiter
  • Multi-line prompts with special characters get mangled
  • Escaping is fragile and error-prone

The scp + remote execution pattern avoids all of this.

Dispatch

# Write script locally
write_file /tmp/build_clips.py

# scp to .202 and run
sshpass -p 'passw0rd' scp /tmp/build_clips.py [email protected]:/tmp/build_clips.py
sshpass -p 'passw0rd' ssh [email protected] 'python3 /tmp/build_clips.py'