auto-report-skill/SKILL.md
2026-04-21 18:07:11 +00:00

94 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: meeting-report
description: "Генерирует PDF-отчёт по аудиозаписи встречи: расшифровка, аналитический пересказ, ключевые решения и задачи. Использует faster-whisper (model small), ffmpeg, weasyprint."
---
# Навык: автоматическая генерация отчёта по аудиозаписи встречи
## Важные ограничения (читай первым!)
- **ОБЯЗАТЕЛЬНО установи переменные окружения** перед запуском транскрипции: `MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2`. Без этого скрипт упадёт на втором чанке с ошибкой "Intel oneMKL FATAL ERROR: Cannot load libctranslate2.so".
- **НЕ пытайся запускать `faster-whisper`** как отдельную команду без этих переменных. Это Python-библиотека, вызывается через скрипты (`local_whisper.py`, `transcribe.sh`) с правильными параметрами.
- **НЕ изобретай свои собственные команды** для транскрипции или конвертации. Всё уже реализовано в готовых bash-скриптах.
- **Единственное, что ты должен сделать** определить папку с аудио, убедиться, что переменные окружения установлены, и выполнить один скрипт.
- **Для генерации PDF:** Если `pandoc` не работает (нет шрифтов кириллицы), используй `weasyprint` (Python пакет).
- **Все процессы более 5 минут запускай в фоне** (`nohup ... &`) — execute_code имеет таймаут 5 минут.
## Структура навыка
- `scripts/overlay.sh` — обёртка запуска с MKL переменными
- `scripts/local_whisper.py` — транскрипция аудио through faster-whisper
- `scripts/transcribe_chunked.sh` — транскрипция больших файлов (>30 мин) с разбиением на чанки
- `scripts/merge_transcriptions.py` — объединение результатов транскрипции
- `scripts/generate_pdf.py` — генерация PDF через weasyprint
- `README.md` — полная документация
- `QUICKSTART.md` — шпаргалка по быстрому запуску
## Как именно запускать
### Шаг 0. Определи директорию встречи
Пользователь укажет папку с аудиофайлами. По умолчанию:
```
/app/hermes_data/meetings/YYYY-MM-DD/
```
Если пользователь указал другой путь используй его.
### Шаг 1. Проверь наличие аудиофайлов
```bash
ls /app/hermes_data/meetings/2026-03-18/*.wav
```
### Шаг 2. Установи переменные окружения (КРИТИЧНО!)
```bash
export MKL_SERVICE_FORCE_INTEL=1
export OMP_NUM_THREADS=2
```
Или передай перед python3:
```bash
MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2 python3 local_whisper.py ...
```
### Шаг 3. Запусти транскрипцию
Для коротких файлов (<30 мин):
```bash
bash scripts/overlay.sh /app/hermes_data/meetings/2026-03-18
```
Для длинных файлов (>30 мин):
```bash
bash scripts/transcribe_chunked.sh /app/hermes_data/meetings/2026-03-18
```
### Шаг 4. Создай аналитический отчёт
После получения `transcription/merged_plain.txt`:
1. Прочитай транскрипцию
2. Создай `report.md` со структурой:
- Краткая выжимка (1-2 абзаца)
- Ход совещания (подробно)
- Ключевые решения (список)
- Задачи и ответственные (срок действия)
- Итоги и следующие шаги
### Шаг 5. Генерация PDF
Если pandoc недоступен:
```bash
python3 scripts/generate_pdf.py report.md report.pdf
```
## Типичные ошибки
| Ошибка | Причина | Решение |
|--------|---------|---------|
| `Intel oneMKL FATAL ERROR` | Нет переменных окружения | Добавить `MKL_SERVICE_FORCE_INTEL=1 OMP_NUM_THREADS=2` |
| `No WAV file found` | Нет аудиофайлов | Положить WAV в папку встречи |
| `weasyprint: command not found` | Нет пакета | `pip install weasyprint` |
| `ffmpeg: command not found` | Нет ffmpeg | `apt-get install ffmpeg` |
## Время обработки
- Модель small: ~5-10 мин на 10 мин аудио
- 1 час аудио = 30-60 минут обработки
- Запускай в фоне: `nohup bash script.sh > /tmp/transcribe.log 2>&1 &`
- Следи: `tail -f /tmp/transcribe.log`
## Результат
- `transcription/merged_plain.txt` — полная транскрипция
- `report.md` — аналитический отчёт Markdown
- `report.pdf` — финальный PDF документ