108 lines
6.5 KiB
Markdown
Executable File
108 lines
6.5 KiB
Markdown
Executable File
---
|
||
title: "Zoom AI Transcript Export"
|
||
aliases:
|
||
- "Zoom transcript"
|
||
- "zoom-ai-transcript-export"
|
||
- "Zoom automation"
|
||
created: '2026-05-11'
|
||
updated: '2026-10-04'
|
||
tags:
|
||
- zoom-ai-transcript-export
|
||
- personal-os
|
||
- automation
|
||
- zoom
|
||
- pgvector
|
||
- webhook
|
||
related:
|
||
- "[[personal/projects/personal-os/executor-security-analysis]]"
|
||
- "[[personal/projects/personal-os/hermes-calendar-access]]"
|
||
---
|
||
# Automating Zoom AI Meeting Transcript/Summary Export
|
||
|
||
Связано: [[executor-security-analysis]]
|
||
|
||
## Проверено 2026-10-04
|
||
|
||
- Zoom **My Notes** включён и автоматически транскрибирует Zoom, Teams, Google Meet и другие встречи.
|
||
- Заметки хранятся в Zoom Cloud и открываются через `https://us01mynotes.zoom.us`.
|
||
- У каждой заметки есть постоянный `note_id` в URL: `https://us01mynotes.zoom.us/{note_id}`.
|
||
- Страница заметки содержит полный transcript: текст, спикеров и временные метки.
|
||
- Текущий корпоративный аккаунт не разрешает создавать приложения в Zoom Marketplace: General App, Server-to-Server OAuth и Webhook Only App отключены. Раздел **User Management → Roles** пользователю недоступен.
|
||
- Открытая вкладка My Notes сама ничего не экспортирует. Ночной headless Chrome авторизован в отдельном профиле. LaunchAgent запускает импорт ежедневно в 02:15 (Asia/Bishkek) и закрывает браузер после работы.
|
||
|
||
## Options
|
||
|
||
### 1. Встроенный Zoom Workflow — только обработанные итоги
|
||
|
||
В My Notes есть кнопка **Workflow**. Проверенные готовые сценарии:
|
||
|
||
- Send Meeting Summary to Gmail
|
||
- Save Meeting Summary to Google Docs
|
||
- Generate Post-Meeting Action Tracker
|
||
- Log Meeting Summary as Salesforce Note
|
||
|
||
Они работают с summary и action items. Готового Workflow для автоматического сохранения полного сырого transcript не обнаружено.
|
||
|
||
### 2. Zoom My Notes API — справочная альтернатива
|
||
|
||
Endpoints:
|
||
|
||
- `GET /v2/my_notes/notes?meeting_id={meeting_id}` — список заметок встречи
|
||
- `GET /v2/my_notes/notes/{note_id}/content?include=transcript` — заметка, AI content и полный transcript
|
||
|
||
Required scopes:
|
||
|
||
- `my_notes:read:note`
|
||
- `my_notes:read:content`
|
||
|
||
Webhook:
|
||
|
||
- `my_notes.transcript_generated`
|
||
|
||
Этот путь не используется в текущей реализации.
|
||
|
||
### 3. Браузерный экспортёр — выбранная реализация
|
||
|
||
Экспортёр сам запускает отдельный авторизованный Chrome в headless-режиме:
|
||
|
||
1. Открывает **My Notes → All notes**.
|
||
2. Собирает `note_id` и обрабатывает только новые заметки.
|
||
3. Открывает каждую страницу заметки.
|
||
4. Извлекает transcript из страницы.
|
||
5. Сохраняет Markdown и JSON в Obsidian; индекс по `note_id` не допускает повторов. Индексация в pgvector остаётся отдельным этапом.
|
||
|
||
Текущая структура:
|
||
|
||
```text
|
||
/Users/admin/obsidian/work/zoom-transcripts/
|
||
index.json
|
||
2026-09-29 Meeting title {note_id}/
|
||
transcript.md
|
||
transcript.json
|
||
```
|
||
|
||
Авторизация хранится в отдельном профиле `~/.config/personal-os/zoom-browser-profile`. Пользовательский Chrome не нужен: экспортёр открывает My Notes и закрывает браузер после завершения. Код браузерного импорта: `personal-os` commit `4b403ed`; запасной API-импортёр сохранён в commit `2728aee`, но не активирован из-за ограничений корпоративного Zoom. Проверка Zoom: 14/14 тестов прошли.
|
||
|
||
### 4. Zoom MCP connector
|
||
|
||
Официальный Zoom MCP может получать материалы встреч при наличии разрешённых scopes. Для текущего корпоративного аккаунта доступ к данным через MCP нужно проверять отдельно: наличие одобренного коннектора не гарантирует разрешение на полный My Notes transcript.
|
||
|
||
## Caveats
|
||
|
||
- My Notes transcript retention включён и управляется политикой аккаунта. Заметки могут удаляться автоматически.
|
||
- Два transcript от 29 сентября сохранены в Obsidian. Два ручных запуска LaunchAgent завершились с кодом 0, но нашли 0 новых заметок; по ночному расписанию импорт ещё не проверен. Первый запуск по расписанию — 5 октября. Старый Codex heartbeat остановлен.
|
||
- Пользовательский Chrome может оставаться закрытым: расписание использует отдельный headless-профиль. `ZOOM_BROWSER_SINCE` по умолчанию равен `2026-09-30`; более ранние заметки требуют явного backfill.
|
||
|
||
## Recommended path
|
||
|
||
1. ✅ Headless-экспортёр и ночной LaunchAgent активны; отдельный Chrome-профиль авторизован.
|
||
2. ✅ Markdown + JSON сохраняются в Obsidian с дедупликацией по `note_id`.
|
||
3. ⏳ Проверить запуск 5 октября по расписанию и первый новый transcript; код 0 при `scanned: 0` доказывает только успешный пустой проход.
|
||
4. ⏳ Превращение всех сохранённых transcript в проверенные обязательства/карьерные факты и индексация в pgvector ещё не завершены.
|
||
|
||
---
|
||
|
||
## Связанные заметки
|
||
- [[personal/projects/personal-os/executor-security-analysis|Executor Security Analysis]]
|
||
- [[personal/projects/personal-os/hermes-calendar-access|Hermes Calendar Access]]
|