Files
2026-04-15 00:01:38 +02:00

3.0 KiB

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

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:

python3 transcript_pipeline.py scan

Nur ein bestimmtes Paar verarbeiten:

python3 transcript_pipeline.py scan --basename "Neue Aufnahme 23"

Dauerhafte Überwachung:

python3 transcript_pipeline.py watch

Archiv bereinigen:

python3 transcript_pipeline.py cleanup

Steuerbefehl

Der zentrale Wrapper ist:

./bin/transcript

oder nach Verlinkung in ~/bin einfach:

transcript
transkript

Verfügbare Befehle:

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:

./bin/transcript install

Status:

./bin/transcript status

Verhalten

  • erwartet ein Audio-/Transkript-Paar mit gleichem Basenamen, z. B. Aufnahme.m4a und Aufnahme.md
  • nutzt 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:

transcript bundle

Die Linux-Schritte stehen in LINUX_MIGRATION.md.