Für Agenten
Skripte per Ablagefach einliefern, Live-Steuerung über die lokale API, Format für Kapitel und Regiehinweise.
Ein Skript einliefern
TalkPatch hat ein Ablagefach: ~/Library/Application Support/TalkPatch/Inbox/. Eine .md- oder .txt-Datei (UTF-8) dort ablegen, die laufende App übernimmt sie innerhalb einer Sekunde als neues Skript, wählt es aus und verschiebt die Datei nach Inbox/Importiert/. Gibt es schon ein Skript mit demselben Titel, wird dessen Text ersetzt: neue Fassung, gleiche Kennung, kein Neustart. Läuft die App nicht, passiert das beim nächsten Start.
cat > "$HOME/Library/Application Support/TalkPatch/Inbox/mein-video.md" <<'TXT'
# Mein Video
## Einstieg
Hallo und willkommen. Heute geht es um drei Dinge.
> Kamera: nah, lächeln
## Hauptteil
Erstens ...
TXT
Format
| Zeile beginnt mit | Bedeutung | Sichtbar | Vorgelesen | Sprachverfolgung |
|---|---|---|---|---|
# Titel (nur erste Zeile) |
Skripttitel; fehlt sie, gilt der Dateiname | nein | nein | nein |
## Kapitelname |
Kapitel, per Taste, Fernbedienung oder Stream Deck anspringbar | ja | nein | ausgenommen |
> Regiehinweis |
Anweisung an den Sprecher | nur im Editor | nein | ausgenommen |
| alles andere | Lauftext | ja | ja | ja |
Kein weiteres Markdown. Umlaute als echte Zeichen. Zahlen so schreiben, wie sie gesprochen werden.
Live-Steuerung
Die laufende App bietet eine lokale HTTP-API, dieselbe, die das Stream-Deck-Plugin nutzt. Sie ist nur auf dem eigenen Mac erreichbar (Loopback) und mit einem Token geschützt, das bei jedem Start neu erzeugt wird.
| Was | Wert |
|---|---|
| Discovery | ~/Library/Application Support/TalkPatch/control.json → {"apiVersion":1,"port":43219,"token":"…"} |
| Zustand | GET http://127.0.0.1:43219/v1/state |
| Kommandos | POST /v1/commands mit {"name":"…","value":…} oder {"commands":[…]}; Antwort enthält den neuen Zustand |
| Auth | Header Authorization: Bearer <token> |
C="$HOME/Library/Application Support/TalkPatch/control.json"
TOKEN=$(python3 -c "import json;print(json.load(open('$C'))['token'])")
curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:43219/v1/state
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"commands":[{"name":"setChapter","value":2},{"name":"perform","value":"togglePlayback"}]}' \
http://127.0.0.1:43219/v1/commands
Kommandos: perform (togglePlayback, stop, reset, previousChapter, nextChapter, lineBack, lineForward, faster, slower, toggleSpeech, togglePrompter, toggleRingLight, toggleRecording, toggleRecordingPause, …), selectScript, setChapter, seek, setSpeed/adjustSpeed, setFontSize/adjustFontSize, setTextWidth/adjustTextWidth, setPrompterVisible, setHeadingsVisible, setSpeechTracking, setRingLight, adjustRingLightSize, setRecordingMode, setUI (Panels, Editor, Kamera, Notch, Fenstergröße), screenshot (eigenes Fenster als PNG).
Die Bibliothek library.json nie direkt bearbeiten, solange die App läuft: Sie schreibt nach jeder Änderung und überschreibt Fremdänderungen.