129 lines
No EOL
7.4 KiB
Markdown
129 lines
No EOL
7.4 KiB
Markdown
---
|
||
name: meeting-report
|
||
description: Generates meeting reports from audio recordings using local Whisper ASR
|
||
version: 1.0.0
|
||
metadata:
|
||
openclaw:
|
||
requires:
|
||
env:
|
||
- WHISPER_URL
|
||
- WHISPER_API_KEY
|
||
- HOTWORDS_PATH
|
||
bins:
|
||
- ffmpeg
|
||
- ffprobe
|
||
- pandoc
|
||
- python3
|
||
- xelatex
|
||
primaryEnv: WHISPER_API_KEY
|
||
emoji: "📝"
|
||
os:
|
||
- linux
|
||
- darwin
|
||
---
|
||
|
||
# Meeting Report Skill
|
||
|
||
## Описание / Description
|
||
Этот навык транскрибирует аудиозаписи совещаний с помощью локально развёрнутого Whisper ASR, объединяет транскрипции из нескольких источников и создаёт структурированный отчёт о встрече в форматах Markdown и PDF.
|
||
|
||
## Триггеры / Triggers
|
||
- "meeting report", "generate report", "transcribe meeting", "audio report", "отчёт о встрече", "сформируй отчёт", "расшифруй запись"
|
||
|
||
## Инструкции / Instructions
|
||
|
||
### 1. Подготовка окружения / Environment setup
|
||
Убедитесь, что установлены требуемые переменные окружения:
|
||
- `WHISPER_URL` – URL локального Whisper сервера (например, `http://localhost:8000`)
|
||
- `WHISPER_API_KEY` – API ключ для доступа к Whisper серверу (Bearer токен)
|
||
|
||
### 2. Запуск генерации отчёта / Generate a report
|
||
```bash
|
||
bash scripts/generate_report.sh <meeting-date-dir>
|
||
```
|
||
|
||
Пример:
|
||
|
||
```bash
|
||
bash scripts/generate_report.sh 2026-04-29
|
||
```
|
||
Ожидаемая структура:
|
||
|
||
text
|
||
2026-04-29/
|
||
├── *.WAV # исходные аудиофайлы (Saramonic, Zoom H2n)
|
||
├── transcription/ # создаётся автоматически
|
||
├── merged.json # объединённые сегменты
|
||
├── merged_plain.txt # сплошной текст для LLM
|
||
└── report.pdf # финальный отчёт
|
||
3. Что делает generate_report.sh
|
||
Обнаруживает источники – Saramonic (*.WAV), Zoom H2n (SR*XY.WAV, SR*MS.WAV)
|
||
|
||
Конвертирует в MP3 и транскрибирует через Whisper (с поддержкой hotwords)
|
||
|
||
Объединяет транскрипции из нескольких источников (основной + аудитория)
|
||
|
||
Конвертирует готовый report.md в PDF с помощью pandoc и xelatex
|
||
|
||
4. Ручное использование скриптов / Manual script usage
|
||
Транскрипция одного файла:
|
||
|
||
bash
|
||
bash scripts/transcribe.sh <meeting_dir> <audio.WAV> <output_name>
|
||
Объединение двух JSON транскрипций:
|
||
|
||
bash
|
||
python3 scripts/merge_transcriptions.py <primary.json> <secondary.json> <output_dir>
|
||
Конкатенация WAV в MP3:
|
||
|
||
bash
|
||
bash scripts/concat_wav.sh <output.mp3> <input1.WAV> <input2.WAV> ...
|
||
Чанковое транскрибирование (очень длинные записи):
|
||
|
||
bash
|
||
bash scripts/transcribe_chunked.sh <input.mp3> <output_name> <output_dir>
|
||
5. Горячие слова / Hotwords
|
||
Файл hotwords.txt содержит термины, организацию, имена и аббревиатуры, повышающие точность распознавания. Переопределяется через переменную HOTWORKS_PATH.
|
||
|
||
## 6. Инструкции для агента по формированию отчёта / Agent instructions for report generation
|
||
|
||
После того как скрипт `generate_report.sh` завершил транскрипцию и объединение источников, агент **обязан** самостоятельно создать файл `report.md` в директории встречи.
|
||
|
||
### Требования к отчёту `report.md`
|
||
|
||
- **Содержание**: детальное, информативное описание хода встречи, включая:
|
||
- обсуждавшиеся темы и вопросы,
|
||
- принятые решения и договорённости,
|
||
- ход встречи
|
||
- назначенные задачи и ответственных,
|
||
- ключевые выводы и следующие шаги.
|
||
- **Стиль**: корпоративный, деловой, соответствующий IT‑компании (чётко, по делу, без разговорной речи).
|
||
- **Формат**: Markdown с заголовками, списками, выделением важного.
|
||
- **Запрещено**: прямые цитаты из транскрипции. Пересказывайте содержание своими словами, сохраняя все смысловые детали.
|
||
- **Язык**: русский (основной), технические термины допустимы на английском.
|
||
|
||
### Как агент должен действовать
|
||
|
||
1. **Дождаться завершения работы** `generate_report.sh` (или выполнить его самостоятельно).
|
||
2. **Прочитать содержимое** файла `merged_plain.txt` (или `merged.txt`), который лежит в папке встречи.
|
||
Этот файл содержит полный текст транскрипции без таймкодов (или с ними, но для пересказа удобнее plain).
|
||
3. **Создать (перезаписать) файл** `report.md` в директории `report`, лежащей в папке встречи, следуя указанным выше требованиям.
|
||
4. **Сгенерировать PDF** одним из способов:
|
||
- **Способ А (рекомендуемый):** повторно выполнить `bash scripts/generate_report.sh <meeting-date-dir>`.
|
||
Скрипт обнаружит уже существующий `report.md` и сконвертирует его в `report.pdf`.
|
||
- **Способ Б:** вручную выполнить команду `pandoc report.md -o report.pdf --pdf-engine=xelatex ...` (параметры см. в скрипте).
|
||
|
||
### Пример запроса агента пользователю
|
||
|
||
После того как транскрипция готова, агент может написать:
|
||
|
||
> Транскрипция встречи завершена. Я подготовлю на её основе детальный отчёт в корпоративном стиле (без прямых цитат) и сохраню его в `report.md`, а затем сконвертирую в PDF. Подождите немного.
|
||
|
||
После выполнения агент сообщает: «Отчёт сгенерирован: `/path/to/meeting/report.pdf`».
|
||
|
||
Примечания / Notes
|
||
Скрипты ожидают локальный Whisper сервер, совместимый с API OpenAI (endpoint /v1/audio/transcriptions), с аутентификацией Bearer.
|
||
|
||
Для длинных сегментов рекомендуется использовать transcribe_chunked.sh. Он автоматически разбивает аудио по паузам тишины.
|
||
|
||
Для PDF требуется установленный pandoc, xelatex и шрифты DejaVu. |