skillok meeting

meeting

Публичный
e2fcdc42c9593a3de7005744bf0d949fd8d6484a
Перейти к файлу
Код
anc Релиз 1.5: стиль Skillok, помощь с разрешениями на Mac — сборки и CHANGELOG - Версия 1.5.0 (package.json, tauri.conf.json, Cargo.toml всех крейтов). - downloads/: SkillokMeet-1.5.0-windows-x64-setup.exe (30 МБ) и SkillokMeet-1.5.0-macos-apple-silicon.zip (36 МБ); сборки 1.4 убраны (в истории, коммит e581846). - CHANGELOG 1.5: главное, улучшено, известное (разрешение на Mac слетает с каждой неподписанной сборкой; одна тема), SHA-256. - README: «Скачать» на 1.5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> a008f4d 4 октября 2026 г. История
README.md

Skillok Meet#

Рабочее название. Продукт Skillok, адрес — meet.skillok.org.

Приложение для встреч в Zoom. Само начинает запись, когда начинается конференция, по ходу
ведёт расшифровку, а после встречи собирает конспект, ревью, решения и задачи.

Платформы: Windows и Android, плюс сервер.


Что делает#

  1. Подключается к Zoom. Два способа, см. «Интеграция с Zoom»:

    • локально на Windows;
    • через сервер Zoom (RTMS или облачная запись).
  2. Сам начинает запись, как только стартует встреча. Кнопку жать не нужно.

  3. Ведёт расшифровку по ходу встречи. Реплики подписаны именами участников из Zoom.
    Живой конспект обновляется раз в несколько минут.

  4. Разбирает встречу после её окончания:

    • краткое содержание;
    • ревью встречи: чего достигли, что осталось открытым, где ушли в сторону;
    • решения;
    • задачи с исполнителем и сроком, если они прозвучали;
    • вопросы на следующую встречу.

    Задачи можно выгрузить. Выгрузка в трекеры — на следующих этапах.


Интеграция с Zoom: что возможно и где ограничения#

Всё, что сказано ниже про Zoom и платформы, подтверждено документацией. Ссылки — в каждом пункте.

Выбранная схема — гибрид#

Путь Стартует сам В реальном времени Где работает Что нужно от пользователя
A. Локальный захват на Windows (MVP) да да любая встреча, в том числе чужая ничего от Zoom
B. RTMS (этап 2) да да: звук и транскрипт Zoom встречи, где хост разрешил наше приложение авторизация приложения; кредиты Zoom Developer Pack
C. Облачная запись (запасной путь) да, через «автозапись» нет: после встречи встречи наших пользователей-хостов план Pro или выше, включены облачная запись и транскрипция

A. Локальный захват на Windows#

  • Звук берём только от процесса Zoom (process loopback) и отдельно с микрофона.
    Системные звуки и музыка в запись не попадают.
    См. Application loopback sample
    и ActivateAudioInterfaceAsync.
    Нужна Windows 10 сборки 20438 или новее.
  • Начало встречи определяем по появлению звуковой сессии процесса Zoom и окна встречи.
  • API Zoom и одобрение в Marketplace не нужны.
  • Минус: Zoom участникам ничего не показывает. Предупреждать их обязан пользователь,
    см. «Согласие на запись».

Android: локальный захват невозможен#

  • Android даёт захватить чужой звук, только если он помечен как USAGE_MEDIA, USAGE_GAME
    или USAGE_UNKNOWN. Голос в звонке помечен как голосовая связь и не захватывается
    (AudioPlaybackCaptureConfiguration).
  • Микрофон тоже не выход: пока идёт голосовая связь (VOICE_COMMUNICATION), другие
    приложения получают тишину
    (Sharing audio input).
  • Поэтому на Android встречи в Zoom записываются только через сервер: путь B или C.
    Локально на Android — только очные встречи через микрофон.

B. RTMS (Realtime Media Streams)#

  • Даёт живой звук по дорожкам, видео и транскрипт с разметкой: кто, что и когда сказал
    (обзор RTMS).
  • Поток стартует тремя способами: автоматически, когда пользователь входит на встречу
    или запускает её; вызовом REST API; из Zoom App
    (Getting started).
  • Нужны кредиты Zoom Developer Pack. На форуме Zoom называют $0,01 за минуту потока
    без транскрипта (devforum).
    Точную цену сверить в продаже Zoom.
  • Участники видят значок Active Apps Notifier: какое приложение и к чему получает доступ
    (Zoom Library).
  • Устройство участника неважно: поток идёт с сервера Zoom на наш. Поэтому путь B
    закрывает Android.
  • SDK: zoom/rtms.

C. Облачная запись и вебхуки#

  • Автозапись в облако включается в настройках
    (KB0067954).
  • Транскрипт: план Pro, Business, Education или Enterprise, и в настройках включён
    «Create audio transcript»
    (KB0065911).
  • О готовности сообщают вебхуки recording.completed и recording.transcript_completed.
    Файл транскрипта имеет file_type: TRANSCRIPT, нужен scope recording:read
    (Cloud recording).

Почему не бот на Meeting SDK#

  • С 2 марта 2026 на встречах чужих аккаунтов нужен токен OBF. Бот не войдёт, пока на встрече
    нет авторизовавшего его пользователя, и выйдет вместе с ним. Для непрерывной записи
    Zoom сам советует RTMS
    (OBF FAQ).
  • Чтобы получать звук, боту нужно разрешение хоста на запись. Для внешних пользователей —
    ещё и ревью в Marketplace. Выходит самый тяжёлый путь при тех же возможностях, что у RTMS.

Согласие на запись#

  • РФ, 152-ФЗ. Голос — персональные данные, тайная запись запрещена. Если голос
    используется для узнавания человека, это биометрия, и нужно письменное согласие
    (Консультант).
    Поэтому разметку «кто говорит» берём только из имён Zoom, отпечатки голоса не строим.
  • ЕС (GDPR) требует законного основания и уведомления. В ряде штатов США нужно
    согласие всех сторон.
  • Что для этого делает продукт:
    • перед записью показывает пользователю готовый текст объявления для участников;
    • в режиме A запись не стартует без отметки «участники предупреждены»,
      отметку можно поставить заранее;
    • сохраняет, когда и кем было дано уведомление;
    • звук по умолчанию удаляется после расшифровки.

Расшифровка и разбор#

Распознавание речи

  • По умолчанию — Whisper large-v3 на своём сервере: хорошо знает русский, звук не уходит
    третьим лицам.
  • Для хранения данных в РФ — Yandex SpeechKit как запасной провайдер.
  • В режиме B можно взять транскрипт Zoom вместо своего распознавания.

Разбор на Claude (Anthropic API)

Задача Модель Цена, вход / выход за 1M токенов
Живой конспект раз в несколько минут claude-haiku-4-5 $1 / $5
Итоговое ревью, решения, задачи claude-opus-5-5 $4 / $20
  • Часовая встреча — это примерно 25 тыс. токенов, то есть порядка $0,15 на итоговый разбор.
  • Результат — JSON строго по схеме (structured outputs): summary, review, decisions[],
    tasks[] (текст, исполнитель, срок, цитата-основание), open_questions[].
  • У каждой задачи есть ссылка на момент расшифровки, где она прозвучала.

Архитектура#

 Windows (Flutter + C++/WASAPI) ──┐
                                  ├──► Сервер (Rust) ──► распознавание (Whisper) ──► Claude
 Android (Flutter + Kotlin) ──────┘        ▲
                                           │ вебхуки, RTMS
                                         Zoom

Клиент — один код на Flutter для Windows и Android.

  • Захват звука в любом случае пишется нативно: на Windows — C++ (WASAPI), на Android —
    Kotlin (микрофон для очных встреч). Flutter даёт общий интерфейс поверх этого.
  • .NET MAUI на Windows слабее, у Kotlin Multiplatform интерфейс под Windows ещё сырой.

Сервер (Rust)

  • Приём звука от клиентов и живая расшифровка.
  • Вебхуки Zoom, OAuth-приложение Zoom, приём RTMS. Для RTMS на старте можно поставить
    рядом сервис на официальном SDK Node.js.
  • Распознавание речи, вызовы Claude, хранение встреч.
  • Вход через аккаунт Skillok.

Хранение

  • Расшифровки и разборы — в Postgres.
  • Звук удаляется после расшифровки. Хранить его можно только с явного включения.

План работ#

Этап 0. Каркас#

  • Монорепозиторий: app/ (Flutter), server/ (Rust), docs/.
  • Вход через аккаунт Skillok, список встреч.
  • Схема разбора (JSON) и промпты с набором проверочных расшифровок.

Этап 1. MVP — Windows, локальный захват#

  • Нативный модуль захвата: звук процесса Zoom и микрофон, две дорожки.
  • Автостарт при начале встречи и остановка в конце. Иконка в трее.
  • Экран согласия и текст объявления для участников.
  • Потоковая отправка на сервер, живая расшифровка в окне.
  • Живой конспект (Haiku) и итоговый разбор (Opus): ревью, решения, задачи.
  • Android: просмотр встреч и разборов, запись очной встречи с микрофона.

Этап 2. RTMS — запись без десктопа, в том числе с Android#

  • Приложение Zoom (OAuth), подписка на meeting.rtms_started и meeting.rtms_stopped.
  • Приём потока и транскрипта Zoom, та же цепочка разбора.
  • Автостарт для встреч, где хост — наш пользователь.
  • Учёт минут и расходов Developer Pack.

Этап 3. Облачная запись как запасной путь#

  • Вебхуки recording.completed и recording.transcript_completed.
  • Разбор после встречи для тех, у кого нет RTMS.

Дальше#

  • Выгрузка задач: трекер задач Skillok, календарь, почта.
  • Поиск по всем встречам и вопросы к архиву.
  • Шаблоны разбора: планёрка, собеседование, встреча с клиентом.
  • Ревью Zoom Marketplace — для пользователей из других аккаунтов Zoom.

Что должен сделать владелец#

  • Создать приложение в Zoom App Marketplace (General App) и выдать ключи.
  • Решить вопрос с кредитами Developer Pack для RTMS.
  • Выдать ключ Anthropic API.
  • Утвердить название и настроить адрес meet.skillok.org.