Skillok Meet#
Рабочее название. Продукт Skillok.
Программа для Windows: встреча → заметка. Звук встречи записывается по кнопке или
добавляется готовым файлом, по кнопке расшифровывается, а дальше ИИ делает с заметкой
то, что попросите: конспект, задачи, ревью или что угодно своё. Заметка — обычный
Markdown: её можно править и копировать.
Программа ничего не делает сама. Не следит за Zoom, не висит в трее, не запускается
вместе с Windows. Открыли — сделали — закрыли.
Нашего сервера нет. Пользователь вводит свой ключ OpenRouter — и всё. Звук и
заметки лежат у него на диске; наружу уходят только запросы к моделям по его ключу.
Как пользоваться#
- Звук.
- «Записать» — пишется звук Zoom и микрофон, пока не нажмёте «Остановить».
Zoom нужно запустить до нажатия, иначе запишется только микрофон. - «Добавить аудио» или просто перетащить файл в окно: mp3, m4a, wav, aiff, flac, ogg —
с диктофона, из облачной записи Zoom, откуда угодно.
- «Записать» — пишется звук Zoom и микрофон, пока не нажмёте «Остановить».
- «Расшифровать». Расшифровка ложится в заметку разделом «Расшифровка»: время,
говорящий («Я», «Собеседники» — у записи; у файла говорящих нет), текст. - ИИ. Кнопки «Конспект», «Задачи», «Ревью» или своя просьба в поле рядом
(«напиши письмо клиенту по итогам», «выпиши все цифры»). Ответ дописывается в конец
заметки своим разделом. ИИ читает заметку целиком — с вашими правками. - Заметка.
- «Текст» — просмотр, «Правка» — Markdown; изменения сохраняются сами.
- «Копировать всё» — в Markdown, «Как текст» — без разметки, для мессенджера.
- У каждого раздела своя «Копировать».
- Галочки задач отмечаются прямо в просмотре.
Как это устроено#
«Записать»: Zoom.exe ──┐
микрофон ──┴─► audio/others.wav, audio/me.wav
«Добавить аудио»: файл ──────────► audio/<файл>
«Расшифровать»: дорожки ─► 16 кГц моно ─► куски 6–28 с по паузам ─► OpenRouter: Whisper
(до 4 кусков сразу) │
▼
note.md: ## Расшифровка
Команда ИИ: note.md ─► OpenRouter: Claude ─► note.md: ## Задачи / ## Конспект / …
Запись звука Zoom (Windows)#
- Звук берём только от процесса Zoom (process loopback) и отдельно с микрофона.
Системные звуки и музыка в запись не попадают.
См. Application loopback sample
и ActivateAudioInterfaceAsync.
Нужна Windows 10 сборки 20438 или новее. - Какой процесс писать, определяется в момент нажатия «Записать»:
Zoom.exeс открытым
потоком звука, то есть идущей встречей. - API Zoom, аккаунт разработчика и одобрение в Marketplace не нужны. Работает на
любой встрече и на любом плане Zoom.
Расшифровка — Whisper через OpenRouter#
POST https://openrouter.ai/api/v1/audio/transcriptions, тот же ключ, что для текстовых
моделей. По умолчаниюopenai/whisper-large-v3-turbo.
См. документацию OpenRouter STT.- Файл любой длины режется на куски по паузам: у эндпоинта предел 25 МБ и около минуты
обработки на запрос. Куски без речи не отправляются — это дешевле, и Whisper не
выдумывает фраз на тишине. Такие фразы («Продолжение следует…») дополнительно отсеиваются. - Неудачный кусок повторяется один раз; не распознавшийся остаётся в расшифровке пометкой.
Команды ИИ — Claude через OpenRouter#
- По умолчанию
anthropic/claude-opus-5.5; модель меняется в настройках. - Промпты — файлами в
prompts/: общийbase.mdи по одному на команду. - Ответ — Markdown без заголовка: заголовок раздела ставит программа.
Интерфейс — как у skillok.org#
- Бумажный фон, чернильный текст, терракотовый акцент.
- Шрифт iA Writer Quattro S; JetBrains Mono — для правки Markdown и времени.
- Квадратные углы; на экране одна главная кнопка, контурная, остальное — ссылками.
- Токены стиля —
src/styles/tokens.css, копия дизайн-системы Skillok. Новых цветов не
заводим.
Слева — «Записать», «Добавить аудио», «Новая заметка» и список встреч. Справа —
выбранная встреча: название (правится на месте), шаги и заметка.
Согласие на запись#
Zoom не показывает участникам, что идёт такая запись. Предупреждать их обязан
пользователь: во время записи текст предупреждения копируется одной кнопкой в чат Zoom.
- РФ, 152-ФЗ. Голос — персональные данные, тайная запись запрещена. Если голос
используется для узнавания человека, это биометрия, и нужно письменное согласие
(Консультант).
Поэтому отпечатки голоса мы не строим: говорящий — только дорожка звука. - ЕС (GDPR) требует уведомления. В ряде штатов США нужно согласие всех сторон.
Почему не через API Zoom#
Проверено и отложено:
- RTMS (живой поток от Zoom): нужен сервер, который принимает поток, и кредиты
Zoom Developer Pack (RTMS). - Облачная запись: план Pro или выше, только встречи, где пользователь хост
(KB0065911).
Её файл можно скачать из Zoom и добавить через «Добавить аудио». - Бот на Meeting SDK: с 2 марта 2026 на встречах чужих аккаунтов нужен токен OBF,
плюс ревью в Marketplace (OBF FAQ).
Android — позже#
Звук Zoom на Android локально не захватить. Системный захват не берёт голосовую связь
(AudioPlaybackCaptureConfiguration),
а микрофон во время звонка отдаёт другим приложениям тишину
(Sharing audio input).
Для Android подходят очные встречи через микрофон и добавление файла.
Разработка#
Нужны Rust (stable) и Node.js. На Windows ещё WebView2 — он уже есть в Windows 10/11.
npm install
npm run tauri dev # приложение целиком: ядро + интерфейс
npm run dev # только интерфейс в браузере, http://localhost:1420, с заглушкой ядра
npm run typecheck # проверка типов интерфейса
cargo test --workspace # тесты ядра и звука
Запись работает только в Windows. Добавление аудио, расшифровка и команды ИИ работают
везде — на Mac их можно проверять целиком (нужен ключ OpenRouter: распознавание и ИИ
платные).
Проба декодера и нарезки на любом файле:
cargo run -p meet-audio --example decode -- путь/к/файлу.m4a
Код под Windows проверяется с Mac так (нужен rustup target add x86_64-pc-windows-msvc):
cargo clippy -p meet-audio --target x86_64-pc-windows-msvc --all-targets
Всё приложение под Windows с Mac не собрать: встраиванию ресурсов Windows нужен
llvm-rc. Установщик собирать на Windows: npm run tauri build.
Раскладка:
crates/audio/ звук, без Tauri
pcm.rs формат 16 кГц моно 16 бит, WAV, уровень, приведение частоты
decode.rs чтение mp3, m4a, wav, aiff, flac, ogg (symphonia)
chunker.rs нарезка на куски по паузам, отсев тишины
source.rs источник звука; Replay — звук из памяти для тестов
win.rs Windows: захват процесса Zoom и микрофона, поиск Zoom
src-tauri/src/ ядро на Rust
meetings.rs встречи на диске: meeting.json, note.md, audio/
transcript.rs реплики и блок «Расшифровка» для заметки
transcribe.rs расшифровка: дорожки → куски → Whisper → реплики
ai.rs команды ИИ над заметкой
openrouter.rs клиент OpenRouter: ключ, распознавание, ответ модели
recorder.rs запись по кнопке: дорожки в WAV
settings.rs настройки; ключ — в хранилище паролей ОС (keyring)
commands.rs команды для интерфейса
src/ интерфейс: HTML/CSS/TS
views/ sidebar — список и действия, note — встреча, start, settings
markdown.ts отображение Markdown, разделы, галочки задач
dev-mock.ts заглушка ядра — только для просмотра в браузере
prompts/ промпты команд ИИ
fixtures/transcripts проверочные расшифровки
Данные: настройки — в папке конфигурации (%APPDATA%\org.skillok.meet), встречи — в
папке данных, подпапка meetings. Путь виден на экране «Настройки».
План работ#
Сделано#
- Каркас Tauri 2, стиль skillok.org, ключ OpenRouter в хранилище паролей ОС.
- Встреча = заметка Markdown: правка, автосохранение, копирование целиком, текстом и
по разделам, галочки задач. - «Добавить аудио» (кнопкой и перетаскиванием) и «Расшифровать» с ходом работы.
- Команды ИИ: «Конспект», «Задачи», «Ревью», свой запрос.
- «Записать» по кнопке: звук Zoom и микрофон двумя дорожками, пауза, стоп.
Дальше#
- Проверить на Windows с настоящей встречей в Zoom — запись ни разу не запускалась.
- Прогнать команды ИИ на проверочных расшифровках настоящей моделью, поправить промпты.
- Прослушивание звука в заметке и переход по времени реплики к месту в записи.
- Добавить аудио к уже существующей встрече.
- Сохранить заметку в репозиторий Skillok (токен доступа, API файлов).
- Поиск по встречам.