Skillok Meet#
Рабочее название. Продукт Skillok.
Программа для Windows, которая работает на компьютере пользователя. Сама включает запись,
когда начинается встреча в Zoom, по ходу ведёт расшифровку, а после встречи делает
конспект, ревью, решения и задачи. Итог можно сохранить в свой репозиторий на skillok.org.
Нашего сервера нет. Пользователь вводит свой ключ OpenRouter — и всё. Звук и
расшифровки лежат у него на диске. Наружу уходят только запросы к моделям по его
собственному ключу.
Что делает#
- Замечает, что началась встреча в Zoom, и включает запись. Кнопку жать не нужно.
- Ведёт расшифровку по ходу встречи. Реплики разделены на «я» (микрофон) и
«собеседники» (звук Zoom). - Каждые несколько минут обновляет живой конспект.
- После встречи делает разбор:
- краткое содержание;
- ревью встречи: чего достигли, что осталось открытым, где ушли в сторону;
- решения;
- задачи с исполнителем и сроком, если они прозвучали;
- вопросы на следующую встречу.
- Сохраняет итог в репозиторий на skillok.org — одним нажатием или автоматически.
Как это работает#
Zoom.exe ──звук──┐
├─► захват (WASAPI) ─► куски по ~30 с ─► OpenRouter: Whisper ─► расшифровка
микрофон ────────┘ │
▼
OpenRouter: Claude ◄── конспект / разбор
│
диск пользователя ◄─────────────────────────┤
skillok.org (репозиторий) ◄── по желанию ───┘
Захват звука Zoom#
- Звук берём только от процесса 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(по умолчанию),
openai/whisper-large-v3,openai/whisper-1.
См. документацию OpenRouter STT. - Эндпоинт принимает файл целиком, потокового режима нет. Поэтому звук режем на куски
по ~30 секунд по паузам в речи. Расшифровка отстаёт от живой речи на длину куска
плюс время ответа. - Дорожки «я» и «собеседники» распознаём раздельно. Так реплики подписаны без узнавания
людей по голосу.
Разбор — Claude через OpenRouter#
| Задача | Модель по умолчанию | Когда |
|---|---|---|
| Живой конспект | Claude Haiku 4.5 | каждые несколько минут |
| Итоговый разбор: ревью, решения, задачи | Claude Opus 5.5 | после встречи |
- Модели можно поменять в настройках на любую из доступных в OpenRouter.
- Разбор приходит JSON строго по схеме:
summary,review,decisions[],
tasks[](текст, исполнитель, срок, цитата-основание),open_questions[].
Из JSON программа собирает Markdown. - У каждой задачи есть ссылка на момент расшифровки, где она прозвучала.
Сохранение в репозиторий Skillok#
-
Пользователь создаёт токен доступа на skillok.org (Settings → Access tokens)
и выбирает репозиторий. -
Программа кладёт файлы через API Skillok:
POST /api/v1/repositories/{id}/files— создать файл;PUT /api/v1/repositories/{id}/files/{path}— обновить файл;- заголовок
Authorization: Bearer <токен>.
-
Раскладка в репозитории:
meetings/2026-10-01-планёрка/ summary.md — конспект, ревью, решения, задачи transcript.md — расшифровка с временем -
Звук в репозиторий не уходит.
Интерфейс — как у skillok.org#
Та же система, что на skillok.org:
- бумажный фон, чернильный текст, терракотовый акцент;
- шрифт iA Writer Quattro S, JetBrains Mono только для кода и времени в расшифровке;
- кегль только из шкалы, не меньше 12px;
- квадратные углы;
- кнопки контурные, без заливки.
Токены стиля берём из дизайн-системы Skillok, новых цветов не заводим.
Экраны:
- Встречи — список: дата, длительность, статус разбора.
- Встреча — вкладки «Расшифровка», «Конспект», «Задачи», кнопка «Сохранить в Skillok».
- Идёт запись — маленькое окно или значок в трее: время, уровень звука, стоп и пауза.
- Настройки:
- ключ OpenRouter;
- модели;
- папка хранения;
- токен Skillok и репозиторий;
- автосохранение;
- текст предупреждения участникам.
Стек#
Tauri 2: ядро на Rust, интерфейс на HTML/CSS/TS.
- Интерфейс в HTML/CSS — поэтому стиль skillok.org переносится один в один.
- Ядро на Rust:
- захват звука через крейт
windows(WASAPI, process loopback); - разбивка звука на куски по паузам в речи;
- запросы к OpenRouter и Skillok.
- захват звука через крейт
- Небольшой установщик, есть автообновление.
- Tauri 2 умеет Android — пригодится, если вернёмся к нему.
Хранение
- Каждая встреча — отдельная папка: расшифровка, разбор и звук.
- Звук по умолчанию удаляется после разбора.
- Ключи лежат в Windows Credential Manager, не в файлах.
Согласие на запись#
Zoom не показывает участникам, что идёт такая запись. Предупреждать их обязан
пользователь.
- РФ, 152-ФЗ. Голос — персональные данные, тайная запись запрещена. Если голос
используется для узнавания человека, это биометрия, и нужно письменное согласие
(Консультант).
Поэтому отпечатки голоса мы не строим. - ЕС (GDPR) требует уведомления. В ряде штатов США нужно согласие всех сторон.
- Что делает программа:
- при старте записи показывает текст предупреждения, который можно скопировать
в чат Zoom; - запись идёт только после отметки «участники предупреждены»; можно поставить
«предупреждаю всегда сам».
- при старте записи показывает текст предупреждения, который можно скопировать
Почему не через API Zoom#
Проверено и отложено:
- RTMS (живой поток от Zoom): нужен сервер, который принимает поток, и кредиты
Zoom Developer Pack (RTMS). - Облачная запись: план Pro или выше, только встречи, где пользователь хост,
расшифровка — после встречи
(KB0065911). - Бот на Meeting SDK: с 2 марта 2026 на встречах чужих аккаунтов нужен токен OBF,
плюс ревью в Marketplace (OBF FAQ).
Android — позже#
Звук Zoom на Android локально не захватить. Системный захват не берёт голосовую связь
(AudioPlaybackCaptureConfiguration),
а микрофон во время звонка отдаёт другим приложениям тишину
(Sharing audio input).
Возможные пути на будущее:
- очные встречи через микрофон;
- облачная запись Zoom после встречи;
- импорт файла.
Разработка#
Нужны Rust (stable) и Node.js. На Windows ещё WebView2 — он уже есть в Windows 10/11.
npm install
npm run tauri dev # приложение целиком: ядро + интерфейс
npm run dev # только интерфейс в браузере, http://localhost:1420, с заглушкой ядра
npm run typecheck # проверка типов интерфейса
cd src-tauri && cargo test
Раскладка:
src/ интерфейс: HTML/CSS/TS, стиль skillok.org (src/styles/tokens.css)
src/dev-mock.ts заглушка ядра — только для `npm run dev` в браузере
src-tauri/src/ ядро на Rust
transcript.rs реплики, импорт текста, Markdown расшифровки
analysis.rs схема разбора, проверка ответа модели, summary.md
openrouter.rs клиент OpenRouter: проверка ключа, разбор
settings.rs настройки; ключ — в хранилище паролей ОС (keyring)
meetings.rs встречи на диске, папка на встречу
commands.rs команды для интерфейса
prompts/analysis.md системный промпт разбора
fixtures/transcripts проверочные расшифровки
Данные приложения: настройки — в папке конфигурации (%APPDATA%\org.skillok.meet на Windows),
встречи — в папке данных, подпапка meetings. Путь виден на экране «Настройки».
План работ#
Этап 0. Каркас#
- Проект Tauri 2, стиль skillok.org, экраны «Встречи», «Встреча», «Настройки».
- Ключ OpenRouter в хранилище паролей ОС (keyring), проверка ключа через
GET /key. - Схема разбора (JSON), промпт
prompts/analysis.md, проверочные расшифровкиfixtures/transcripts/. - Импорт текста расшифровки и разбор по кнопке — вся цепочка разбора без захвата звука.
- Прогнать разбор на проверочных расшифровках настоящей моделью и поправить промпт (нужен ключ).
- Проверить хранилище ключа и окно на Windows.
Этап 1. MVP#
- Захват звука
Zoom.exeи микрофона на две дорожки. - Автостарт и автостоп по встрече в Zoom, значок в трее.
- Предупреждение участникам и отметка «предупреждены».
- Куски по паузам → Whisper через OpenRouter → живая расшифровка.
- Живой конспект и итоговый разбор через Claude.
- Сохранение встречи на диск, экспорт в Markdown.
Этап 2. Skillok#
- Токен Skillok, выбор репозитория.
- Сохранение
summary.mdиtranscript.mdчерез API файлов, автосохранение. - Задачи из разбора — в трекер задач репозитория.
Дальше#
- Поиск по встречам и вопросы к архиву.
- Шаблоны разбора: планёрка, собеседование, встреча с клиентом.
- Другие программы для встреч (Teams, Meet в браузере) — тот же захват по процессу.
- Android.