Initial import of transcript pipeline
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
# Whisper Transcript Pipeline
|
||||
|
||||
Diese Pipeline überwacht einen Ordner auf neue MacWhisper-Transkripte, erstellt mit OpenAI eine strukturierte Zusammenfassung, schreibt die Ergebnisdateien nach Obsidian, archiviert Audio-Dateien per `rclone` und kann die fertigen Notizen zusätzlich als private Quartz-Website veröffentlichen.
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Python 3.10+
|
||||
- `ffprobe`
|
||||
- `rclone`
|
||||
- optional `fswatch`
|
||||
- ohne `fswatch` nutzt die Pipeline automatisch Polling
|
||||
- `OPENAI_API_KEY`
|
||||
- für die Memos-Website zusätzlich Node.js 22+ und npm 10.9.2+ (Quartz 4)
|
||||
|
||||
## Einrichtung
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Danach in `.env` mindestens diese Werte setzen:
|
||||
|
||||
- `OPENAI_API_KEY`
|
||||
- `WATCH_DIR`
|
||||
- `OBSIDIAN_DIR`
|
||||
- optional für die Webveröffentlichung:
|
||||
- `MEMOS_ENABLED=true`
|
||||
- `MEMOS_QUARTZ_DIR`
|
||||
- `MEMOS_CONTENT_DIR`
|
||||
- `MEMOS_OUTPUT_DIR`
|
||||
- `MEMOS_RCLONE_REMOTE`
|
||||
- optional `MEMOS_RCLONE_EXCLUDES`
|
||||
|
||||
## Befehle
|
||||
|
||||
Einmaliger Lauf:
|
||||
|
||||
```bash
|
||||
python3 transcript_pipeline.py scan
|
||||
```
|
||||
|
||||
Nur ein bestimmtes Paar verarbeiten:
|
||||
|
||||
```bash
|
||||
python3 transcript_pipeline.py scan --basename "Neue Aufnahme 23"
|
||||
```
|
||||
|
||||
Dauerhafte Überwachung:
|
||||
|
||||
```bash
|
||||
python3 transcript_pipeline.py watch
|
||||
```
|
||||
|
||||
Archiv bereinigen:
|
||||
|
||||
```bash
|
||||
python3 transcript_pipeline.py cleanup
|
||||
```
|
||||
|
||||
## Steuerbefehl
|
||||
|
||||
Der zentrale Wrapper ist:
|
||||
|
||||
```bash
|
||||
./bin/transcript
|
||||
```
|
||||
|
||||
oder nach Verlinkung in `~/bin` einfach:
|
||||
|
||||
```bash
|
||||
transcript
|
||||
transkript
|
||||
```
|
||||
|
||||
Verfügbare Befehle:
|
||||
|
||||
```bash
|
||||
transcript install
|
||||
transcript start
|
||||
transcript stop
|
||||
transcript restart
|
||||
transcript status
|
||||
transcript logs pipeline
|
||||
transcript logs service
|
||||
transcript scan
|
||||
transcript cleanup
|
||||
transcript retry-uploads
|
||||
transcript memos-sync
|
||||
transcript memos-auth
|
||||
transcript migrate-archive
|
||||
transcript reprocess "Neue Aufnahme 23"
|
||||
transcript bundle
|
||||
```
|
||||
|
||||
## Hintergrunddienst
|
||||
|
||||
- auf macOS: `launchd`
|
||||
- auf Linux: `systemd --user`
|
||||
|
||||
Installieren und starten:
|
||||
|
||||
```bash
|
||||
./bin/transcript install
|
||||
```
|
||||
|
||||
Status:
|
||||
|
||||
```bash
|
||||
./bin/transcript status
|
||||
```
|
||||
|
||||
## Verhalten
|
||||
|
||||
- erwartet ein Audio-/Transkript-Paar mit gleichem Basenamen, z. B. `Aufnahme.m4a` und `Aufnahme.md`
|
||||
- nutzt [transkript-zusammenfassung-prompt.md](/Users/maddin/Desktop/Whisper/transkript-zusammenfassung-prompt.md) als Zusammenfassungsstandard
|
||||
- extrahiert Aufnahmedatum und Dauer aus der Audiodatei
|
||||
- erzeugt eine Obsidian-Notiz mit YAML-Frontmatter, Zusammenfassung und eingebettetem Transkript
|
||||
- puffert die Audio-Datei lokal in `archive/processed/<source_id>/audio/`
|
||||
- lädt die Audio-Datei verschlüsselt nach `transkripte:/<source_id>/audio/...` per `rclone` hoch
|
||||
- löscht lokale Audio-Caches nach 7 Tagen
|
||||
- aktualisiert vorhandene Obsidian-Notizen, wenn dieselbe Quelle später erneut verarbeitet wird
|
||||
- kann dieselben Notizen bereinigt nach `memos-content/` exportieren und mit Quartz nach `memos-site/` bauen
|
||||
- kann die fertige statische Website per `rclone sync` auf einen separaten Host veröffentlichen
|
||||
|
||||
## Migration nach Linux
|
||||
|
||||
Für einen portablen Export:
|
||||
|
||||
```bash
|
||||
transcript bundle
|
||||
```
|
||||
|
||||
Die Linux-Schritte stehen in [LINUX_MIGRATION.md](/Users/maddin/Desktop/Whisper/LINUX_MIGRATION.md).
|
||||
Reference in New Issue
Block a user