100 lines
4.6 KiB
Markdown
100 lines
4.6 KiB
Markdown
---
|
||
name: text-to-audio
|
||
description: Transformiert Quelltexte, Recherchen, Dossiers, Artikel oder Notizen in ein hochwertiges Audio-Dossier / Podcast. Unterstützt flexible Zieldauer (z.B. 2m, 5m, 10m), filtert Inhalte vorab nach Wichtigkeit (Pacing: ~130 Wörter/Minute) und generiert wahlweise Solo-Briefings oder lebendige Zwei-Sprecher-Dialoge (NotebookLM-Style) über OpenRouter TTS.
|
||
---
|
||
|
||
# 🎙️ Text-to-Audio Dossier & Podcast Producer
|
||
|
||
Dieser Skill fungiert als spezialisierter **Audio-Producer**. Er nimmt beliebige Quelltexte (Rechercheergebnisse, Dossiers, Notizen aus dem Knowledge-Wiki, tägliche Reports oder Artikel) entgegen, komprimiert sie nach Wichtigkeit auf eine gewünschte Hördauer und generiert eine fertige, abspielbare MP3.
|
||
|
||
---
|
||
|
||
## 🧭 Kern-Workflow
|
||
|
||
Wenn der User ein Audio-Dossier oder einen Podcast wünscht (z.B. *"Erstelle ein 3-Minuten Audio-Dossier über X"*, *"Mach einen Podcast zu Thema Y"*, *"Lies mir das als Audio vor"*), gehe strikt in folgenden 4 Schritten vor:
|
||
|
||
### 1. Zieldauer & Wortbudget ermitteln
|
||
Gesprochenes Deutsch / Englisch hat ein natürliches Sprechtempo von ca. **120–140 Wörtern pro Minute**.
|
||
Ermittle das Wortbudget:
|
||
* **Kurz-Briefing (`2m`):** ca. 250–300 Wörter.
|
||
* **Standard-Dossier (`3m`–`4m`, Default):** ca. 400–550 Wörter.
|
||
* **Ausführlicher Deep Dive (`5m`–`8m`):** ca. 650–1.000 Wörter.
|
||
* *Formel:* `Zielminuten × 130 Wörter`.
|
||
|
||
### 2. Redaktionelle Wichtigkeits-Filterung (Preprocessing)
|
||
Quelltexte sind für das Auge geschrieben, nicht für das Ohr. Bereite den Inhalt vor:
|
||
* **Wichtigkeits-Kompression:** Filter die 3 bis 5 wichtigsten Kernaussagen und Aha-Momente heraus. Streiche Nebensächlichkeiten, Tabellen, rohe URLs, Codeblöcke und Fußnoten.
|
||
* **Auditiver Schreibstil:** Formuliere in natürlicher, flüssiger gesprochener Sprache mit klaren Übergängen (*"Ein entscheidender Punkt hierbei ist..."*, *"Was viele überrascht: ..."*, *"Kurz gesagt: ..."*).
|
||
* **Keine Markdown-Artefakte:** Verwende im Skript keine Sterne (`**`), Listenstriche oder Links. Zahlen und Akronyme ausschreiben, wenn die Aussprache sonst unklar ist (z.B. "Kubernetes ein Punkt zweiunddreißig" statt "K8s 1.32").
|
||
|
||
### 3. Format-Entscheidung: Solo vs. Dialog (NotebookLM-Style)
|
||
|
||
#### A. Dialog-Modus (Empfohlen für Themen-Deep-Dives & Podcasts)
|
||
Zwei Sprecher spielen sich die Bälle zu:
|
||
* **Julius (`aura-2-julius-de`):** Host, moderiert an, stellt neugierige Fragen, zieht Zwischenfazits.
|
||
* **Lara (`aura-2-lara-de`):** Expertin / Co-Host, erklärt Zusammenhänge, bringt Hintergründe und Beispiele.
|
||
|
||
Schreibe das Skript als JSON-Array:
|
||
```json
|
||
[
|
||
{"speaker": "julius", "text": "Willkommen zum heutigen Audio-Dossier. Wir schauen uns heute das Thema X an. Lara, was ist da gerade los?"},
|
||
{"speaker": "lara", "text": "Hi Julius! Spannend ist vor allem, dass sich hier fundamental etwas geändert hat..."},
|
||
{"speaker": "julius", "text": "Das klingt nach einem großen Schritt. Wie wirkt sich das in der Praxis aus?"},
|
||
{"speaker": "lara", "text": "In der Praxis bedeutet das..."}
|
||
]
|
||
```
|
||
|
||
#### B. Solo-Modus (Empfohlen für schnelle Briefings & Reports)
|
||
Ein einzelner Erzähler führt durch das Dossier:
|
||
* Stimme: `aura-2-julius-de` (Deutsch) oder `aura-2-zeus-en` (Englisch).
|
||
|
||
---
|
||
|
||
## 🛠️ Ausführung & Synthese
|
||
|
||
Nutze das Synthese-Skript `scripts/text_to_audio.py`.
|
||
|
||
### A. Für Dialog-Modus:
|
||
1. Speichere das strukturierte Skript temporär:
|
||
```bash
|
||
cat << 'EOF' > /tmp/podcast_script.json
|
||
[
|
||
{"speaker": "julius", "text": "..."},
|
||
{"speaker": "lara", "text": "..."}
|
||
]
|
||
EOF
|
||
```
|
||
2. Generiere das Audio:
|
||
```bash
|
||
python3 /home/node/mop-skills/mop-skills/skills/text-to-audio/scripts/text_to_audio.py \
|
||
--dialog-file /tmp/podcast_script.json \
|
||
--title "Titel des Dossiers" \
|
||
--output /tmp/audio-dossier.mp3
|
||
```
|
||
|
||
### B. Für Solo-Modus:
|
||
```bash
|
||
python3 /home/node/mop-skills/mop-skills/skills/text-to-audio/scripts/text_to_audio.py \
|
||
--text "Dein aufbereitetes Skript..." \
|
||
--voice aura-2-julius-de \
|
||
--title "Titel des Dossiers" \
|
||
--output /tmp/audio-dossier.mp3
|
||
```
|
||
|
||
*(Hinweis: `scripts/text_to_audio.py` befindet sich relativ im Skill-Ordner, in OpenClaw erreichbar unter `/home/node/mop-skills/mop-skills/skills/text-to-audio/scripts/text_to_audio.py` oder `./skills/text-to-audio/scripts/text_to_audio.py`).*
|
||
|
||
---
|
||
|
||
## 📱 Auslieferung an den User
|
||
|
||
Das Skript gibt am Ende die Zeile `MEDIA:/tmp/...mp3` aus.
|
||
Übergib in deiner Antwort an Telegram:
|
||
|
||
```markdown
|
||
Hier ist dein persönliches Audio-Dossier zu **[Thema]** ([Dauer] Min.):
|
||
|
||
MEDIA:/tmp/audio-dossier.mp3
|
||
```
|
||
|
||
Telegram bindet daraufhin automatisch den integrierten Podcast-Player ein.
|