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

78 lines
2.4 KiB
Markdown

# 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)
```python
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
```bash
# 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'
```