Суть урока
45 минут разговора с клиентом. Потом ещё полчаса-час: написать протокол, разослать задачи, внести запись в CRM (так называют базу клиентов). При пяти встречах в неделю это 3–5 часов бумажной работы. Каждую неделю. Эти часы можно вернуть. Сервис записи встреч (Fireflies, Otter.ai и похожие) записывает и расшифровывает разговор, а Claude превращает расшифровку в протокол и список задач. Это путь без кода, и его хватает большинству. Вторая половина урока для тех, кто строит: автоматическая цепочка, в которой задачи сами попадают в ClickUp (сервис для задач), а сводка приходит в Telegram.
Ключевые концепции
- Автоматическая расшифровка (транскрипция) — AI на лету превращает речь в текст
- Разделение по говорящим (по-английски speaker diarization) — система помечает, кто что сказал
- Извлечение задач (action items) — Claude находит в разговоре обязательства, сроки и задачи
- Цепочка с вебхуком — расшифровка → разбор → задачи → уведомление. Вебхук (webhook) — автоматическое сообщение «готово, вот данные», которое один сервис отправляет другому
- Whisper на своём компьютере — расшифровка без отправки записи в облако (для встреч под соглашением о неразглашении, NDA)
- Шаблоны под тип встречи — разные промпты для первой встречи с клиентом, разбора проекта и планёрки
- Встроенный AI в Zoom или Fireflies — когда хватает встроенного инструмента, а когда нужен внешний
Теория
Проблема: встреча без системы — деньги выброшенные дважды
Деловая встреча часто длится около часа. После неё уходит ещё 35–65 минут на протокол, рассылку задач и запись в CRM (расчёт в таблице в конце теории, цифры условные). При 5 встречах в неделю это 3–5 часов.
Хуже того: протоколы, написанные по памяти, неточны. Ты сосредоточен на разговоре и пропускаешь детали. Или наоборот: пишешь заметки и теряешь нить разговора. Это ловушка внимания.
Автоматическая расшифровка снимает эту проблему: запись идёт сама, и никто не отвлекается на заметки. Ошибки в расшифровке бывают, поэтому важное перепроверяй.
Otter.ai — расшифровка в реальном времени
Otter.ai — один из первых сервисов на этом рынке. Он заходит во встречи Zoom, Google Meet и Microsoft Teams как отдельный участник-бот и подключается сам, когда встреча начинается.
Что умеет:
- Расшифровка на лету с разделением по говорящим
- Краткий итог после встречи (AI Summary): структурированный, а не сплошной текст
- Список задач по итогам встречи (Action Items)
- Поиск по тексту всех расшифровок (нашёл нужное через месяц — не проблема)
- Интеграции с рабочими инструментами (список смотри на сайте)
- MCP-сервер, то есть способ подключить Otter к AI-ассистентам вроде Claude (по странице тарифов Otter, входит уже в бесплатный тариф)
Тарифы и языки (на октябрь 2026): есть бесплатный тариф с месячным лимитом минут и платные тарифы; цены и лимиты смотри на otter.ai/pricing. Важно: Otter расшифровывает английский, испанский, французский, немецкий, японский и китайский. Русского в списке нет, поэтому для встреч на русском нужен другой сервис (например, Fireflies). Цены самих AI-ассистентов собраны на странице Актуальное сейчас.
Fireflies.ai — расшифровка, разбор разговора и связь с CRM
Fireflies не только записывает, но и разбирает разговор.
Дополнительно к расшифровке (по описанию сервиса; проверь, что входит в твой тариф):
- AI Summary (краткий итог) — что обсуждали, что решили, что осталось открытым
- Speaker Talk-time (время речи) — кто сколько говорил
- Sentiment Analysis (тон разговора) — как менялось настроение беседы
- Topic Trackers (отслеживание тем) — отмечает упоминания ключевых тем: бюджет, конкуренты, сроки
- Отправка в CRM — заметки и записи о звонках попадают в HubSpot, Salesforce и другие CRM (список на сайте)
- Webhooks (вебхуки) — после встречи Fireflies отправляет сигнал на адрес твоего сервера
Именно вебхуки делают Fireflies центром цепочки для тех, кто строит.
Тарифы и языки (на октябрь 2026): Free, Pro, Business и Enterprise; лимиты и цены смотри на fireflies.ai. По документации Fireflies, API доступен и на бесплатном тарифе, но с небольшим дневным лимитом запросов. По сайту сервиса, он расшифровывает больше 100 языков, русский среди них.
Согласие на запись: запись встречи требует согласия участников, и правила зависят от страны. В США они разные по штатам: федеральный закон разрешает запись с согласия одного участника разговора, но в ряде штатов (например, в Калифорнии) нужно согласие всех. Предупреждай о записи в начале каждого звонка и проверь закон там, где находишься ты и твои собеседники.
Встроенный AI в Zoom или Fireflies — когда что выбирать
До июня 2026 встроенные AI-функции Zoom назывались AI Companion. Теперь Zoom называет их по назначению (сводка встречи, расшифровка), а новый отдельный AI-помощник компании называется ZoomMate.
| Критерий | Встроенный AI в Zoom | Fireflies.ai |
|---|---|---|
| Стоимость | Сводки встреч входят в платные тарифы Zoom без доплаты, на бесплатном тарифе есть лимит (проверь свой тариф) | Отдельная подписка (есть бесплатный тариф) |
| Где работает | В Zoom; по описанию Zoom, заметки My Notes работают и со встречами в Teams и Google Meet | Zoom, Meet, Teams |
| Отправка в CRM | Смотри на сайте Zoom | HubSpot, Salesforce и другие CRM |
| Вебхуки | Через платформу разработчика Zoom (нужно своё приложение в Zoom Marketplace) | ✅ есть (лимиты API зависят от тарифа) |
| Свой формат итога | Шаблоны сводок под тип встречи | ✅ свои запросы к расшифровке (AskFred, AI Skills) |
| Отслеживание тем (бюджет, конкуренты) | Смотри на сайте Zoom | ✅ Topic Trackers |
| Лучше для | Команды, которые живут в Zoom | Своя автоматическая цепочка + CRM |
Вывод: встроенных сводок Zoom достаточно, если тебе нужен только итог встречи. Fireflies нужен, когда ты строишь автоматическую цепочку: задачи → CRM → уведомления.
Microsoft Teams — корпоративный контекст
Если твои клиенты — корпорации, они часто работают в Teams. Два варианта:
Copilot в Teams (встроенный): краткий итог, задачи, ответы на вопросы о содержании встречи. Нужна лицензия Microsoft 365 Copilot (цены на октябрь 2026: Copilot Business от $18 в месяц за пользователя при оплате за год, цена действует до 31.12.2026, или $25,20 помесячно). Для тебя как фрилансера — только если ты сам платишь.
Fireflies + Teams: Fireflies подключается к Teams как внешний бот. Все возможности Fireflies, включая вебхуки, остаются. Подходит, если ты работаешь с корпоративными клиентами в Teams, но хочешь сохранить свою цепочку.
Whisper на своём компьютере — для конфиденциальных встреч
Когда запись не должна покидать твой компьютер, используй Whisper: это открытая модель распознавания речи от OpenAI, которая работает прямо на компьютере, без интернета.
Без кода: MacWhisper на Mac работает на моделях Whisper и Parakeet прямо на компьютере и поддерживает больше 100 языков (в списке языков Whisper есть русский).
Для тех, кто строит, — Whisper через Python:
pip install openai-whisper
# Whisper нужна установленная программа ffmpeg (на Mac: brew install ffmpeg)
# Ускорение на Mac Apple Silicon:
pip install mlx-whisperimport whisper
# small/medium/large — выбор между скоростью, качеством и памятью
model = whisper.load_model("medium")
result = model.transcribe(
"meeting_recording.mp3",
language="ru", # язык записи: так точнее
word_timestamps=True # метка времени для каждого слова
)
print(result["text"])У пакета mlx-whisper свой вызов: mlx_whisper.transcribe("meeting_recording.mp3"), подробности в его описании.
Когда расшифровывать на своём компьютере:
- Юридические переговоры
- Встречи под соглашением о неразглашении (NDA)
- Финансовые данные клиентов
- Любые встречи с чувствительными данными
Качество зависит от выбранной модели и от самой записи: проверь на своей.
Если ты работаешь по найму, до подключения любого из этих сервисов к рабочим встречам проверь правила компании об AI и о записи разговоров.
Шаблоны промптов для разных типов встреч
Один промпт не подходит для всего. Первая встреча с клиентом и разбор проекта — разные задачи. Без кода шаблоны используются так: скопируй расшифровку из сервиса записи, вставь в чат Claude и добавь нужный шаблон.
Первая встреча с клиентом (знакомство):
Разбери расшифровку первой встречи с клиентом. Извлеки: 1. Боли и проблемы клиента (цитаты из разговора) 2. Бюджет и сроки (если упоминались) 3. Кто принимает решение 4. Возражения и сомнения 5. Следующие шаги с обеих сторон 6. Вероятность сделки (низкая/средняя/высокая) с обоснованием Оформи ответ списком по этим шести пунктам.
Встреча с действующим клиентом:
Разбери расшифровку встречи с клиентом. Извлеки: 1. Состояние проекта — что сделано, что нет 2. Замечания и правки клиента (дословно) 3. Приоритеты на следующий период 4. Риски и то, что мешает работе 5. Задачи для нашей команды (ответственный + срок) 6. Задачи для клиента (ответственный + срок)
Короткая планёрка команды:
Разбери расшифровку планёрки. Для каждого участника: - Что сделано вчера - Что планируется сегодня - Что мешает и какие вопросы к команде В конце — общие задачи с ответственными.
Для тех, кто строит: цепочка с вебхуком, от встречи до задачи в ClickUp
Этот раздел для тех, кто пишет код. Если ты не программируешь, пропусти его: путь без кода уже описан (расшифровка из сервиса и шаблон в чате Claude).
Встреча в Zoom или Meet
↓
Fireflies записывает и расшифровывает
↓
Fireflies отправляет вебхук на твой сервер (только id встречи)
↓
Сервер на Python (Flask) забирает расшифровку через GraphQL API Fireflies
↓
Claude API разбирает её по шаблону и возвращает JSON
↓
ClickUp API создаёт задачи
↓
Бот в Telegram присылает тебе сводкуКод сервера (формат запросов Fireflies сверяй с docs.fireflies.ai):
from flask import Flask, request, jsonify
import anthropic
import requests
import threading
import json
import os
app = Flask(__name__)
claude_client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
FIREFLIES_API_KEY = os.environ["FIREFLIES_API_KEY"]
CLICKUP_API_KEY = os.environ["CLICKUP_API_KEY"]
CLICKUP_LIST_ID = os.environ["CLICKUP_LIST_ID"]
TELEGRAM_BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
TELEGRAM_CHAT_ID = os.environ["TELEGRAM_CHAT_ID"]
MEETING_PROMPT = """
Ты ассистент, который разбирает расшифровки деловых встреч.
Расшифровка:
{transcript}
Название встречи: {meeting_title}
Участники: {participants}
Извлеки структурированную информацию в JSON:
{{
"summary": "Краткое резюме 3–5 предложений",
"decisions": ["решение 1", "решение 2"],
"action_items": [
{{
"description": "Описание задачи",
"assignee": "Имя ответственного или 'Не определён'",
"deadline": "Срок или 'Не указан'",
"priority": "Высокий|Средний|Низкий"
}}
],
"open_questions": ["вопрос 1", "вопрос 2"]
}}
"""
TRANSCRIPT_QUERY = """
query Transcript($transcriptId: String!) {
transcript(id: $transcriptId) {
title
participants
sentences {
text
speaker_name
}
}
}
"""
def fetch_transcript(meeting_id: str) -> dict:
"""Вебхук Fireflies присылает только id встречи: текст забираем через GraphQL API."""
response = requests.post(
"https://api.fireflies.ai/graphql",
headers={"Authorization": f"Bearer {FIREFLIES_API_KEY}"},
json={"query": TRANSCRIPT_QUERY, "variables": {"transcriptId": meeting_id}},
timeout=60,
)
response.raise_for_status()
transcript = response.json()["data"]["transcript"]
text = "\n".join(
f"{s['speaker_name']}: {s['text']}" for s in transcript["sentences"]
)
return {
"title": transcript["title"],
"participants": transcript["participants"],
"text": text,
}
def analyze_meeting(transcript: str, title: str,
participants: list) -> dict:
"""Разбираем расшифровку через Claude."""
participants_str = ", ".join(participants) if participants else "Неизвестны"
message = claude_client.messages.create(
model="claude-sonnet-5-5", # актуальные идентификаторы моделей: документация Anthropic
max_tokens=8000, # с запасом: в этот лимит входит и «размышление» модели
messages=[{
"role": "user",
"content": MEETING_PROMPT.format(
transcript=transcript,
meeting_title=title,
participants=participants_str
)
}]
)
# В ответе могут быть блоки «размышления»: берём только текст
response_text = "".join(block.text for block in message.content if block.type == "text")
# Убираем обрамление ```json, если Claude его добавил
if "```json" in response_text:
start = response_text.find("```json") + 7
end = response_text.find("```", start)
response_text = response_text[start:end].strip()
return json.loads(response_text)
def create_clickup_task(task_data: dict, meeting_title: str) -> str:
"""Создаём задачу в ClickUp."""
# Приоритеты ClickUp: 1 — срочный, 2 — высокий, 3 — обычный, 4 — низкий
priority_map = {"Высокий": 2, "Средний": 3, "Низкий": 4}
payload = {
"name": task_data["description"],
"description": f"Источник: встреча '{meeting_title}'\n"
f"Ответственный: {task_data['assignee']}",
"priority": priority_map.get(task_data["priority"], 3),
}
response = requests.post(
f"https://api.clickup.com/api/v2/list/{CLICKUP_LIST_ID}/task",
headers={
"Authorization": CLICKUP_API_KEY,
"Content-Type": "application/json"
},
json=payload
)
if response.status_code == 200:
return response.json().get("url", "")
return ""
def send_telegram_summary(analysis: dict, meeting_title: str,
task_urls: list) -> None:
"""Отправляем сводку в Telegram простым текстом."""
tasks_text = ""
priority_emoji = {"Высокий": "🔴", "Средний": "🟡", "Низкий": "🟢"}
for item, url in zip(analysis["action_items"], task_urls):
emoji = priority_emoji.get(item["priority"], "⚪")
tasks_text += f"{emoji} {item['description']}\n"
tasks_text += f" → {item['assignee']} | {item['deadline']}"
if url:
tasks_text += f" | {url}"
tasks_text += "\n\n"
open_q = "\n".join(f"• {q}" for q in analysis["open_questions"])
message = f"""📋 {meeting_title}
📝 Резюме:
{analysis['summary']}
✅ Задачи ({len(analysis['action_items'])}):
{tasks_text}
❓ Открытые вопросы:
{open_q}""".strip()
# Так устроен Telegram Bot API: токен бота входит в адрес запроса. Не выводи этот адрес в журналы
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
json={
"chat_id": TELEGRAM_CHAT_ID,
"text": message,
"link_preview_options": {"is_disabled": True}
},
timeout=30,
)
def process_meeting(meeting_id: str) -> None:
"""Забираем расшифровку, разбираем её и рассылаем результат."""
meeting = fetch_transcript(meeting_id)
title = meeting["title"] or "Встреча без названия"
transcript = meeting["text"]
participants = meeting["participants"] or []
if not transcript:
return
# 1. Разбор через Claude
analysis = analyze_meeting(transcript, title, participants)
# 2. Задачи в ClickUp
task_urls = [
create_clickup_task(item, title)
for item in analysis.get("action_items", [])
]
# 3. Сводка в Telegram
send_telegram_summary(analysis, title, task_urls)
@app.route("/webhook/fireflies", methods=["POST"])
def fireflies_webhook():
"""Принимаем вебхук от Fireflies, когда расшифровка готова."""
data = request.json or {}
# Вебхук содержит только служебные данные: event и meeting_id
if data.get("event") != "meeting.transcribed" or not data.get("meeting_id"):
return jsonify({"status": "skip", "reason": "other event"}), 200
# Отвечаем сразу, а разбор запускаем в фоне: Fireflies ждёт ответ не дольше 30 секунд
# и при задержке повторяет запрос, из-за чего задачи создались бы дважды
threading.Thread(
target=process_meeting, args=(data["meeting_id"],), daemon=True
).start()
return jsonify({"status": "accepted", "meeting_id": data["meeting_id"]}), 200
if __name__ == "__main__":
# Порт 5001: на Mac порт 5000 обычно занят системной службой AirPlay
app.run(port=5001, debug=False)Запуск на сервере: Railway, Render или другой хостинг для Python (цены смотри на сайтах провайдеров). Встроенный сервер Flask годится только для проб на своём компьютере. Fireflies подписывает запросы: задай Signing Secret на странице вебхука и проверяй заголовок X-Hub-Signature (пример проверки есть в документации Fireflies), чтобы сервер принимал запросы только от Fireflies.
Окупаемость: считаем время на встречи
| Задача | До автоматизации | После |
|---|---|---|
| Протокол встречи | 20–40 мин | 0 мин |
| Рассылка задач команде | 10–15 мин | 0 мин |
| Запись в CRM (если настроена отправка в CRM) | 5–10 мин | 0 мин |
| Итого на 1 встречу | 35–65 мин | 2 мин (проверка) |
| При 5 встречах/нед | 3–5 часов/нед | 10 мин/нед |
Подставь свою ставку: часы в месяц × стоимость твоего часа. Столько стоит время, которое к тебе возвращается. Цифры в таблице условные.
Стоимость системы: подписка на сервис встреч (есть бесплатные тарифы) + расход на Claude API. По ценам Sonnet 5.5 на октябрь 2026 ($2 на вход и $10 на выход за 1 млн токенов) час встречи — это примерно 15–20 тысяч токенов на вход, то есть несколько центов на встречу (оценка, проверь на своих записях). Актуальные цены: Актуальное сейчас.
Практика
Шаг 1: Подключи Fireflies к твоим встречам (15–20 мин)
- Зарегистрируйся на fireflies.ai: кнопка Get started, затем Continue with Google или Continue with Microsoft. Бесплатного тарифа (Free) хватит для старта
- На шаге регистрации разреши доступ к календарю: так Fireflies узнаёт о твоих встречах
- Сразу проверь, куда бот будет заходить. По умолчанию Fireflies присоединяется ко всем встречам из календаря, где есть ссылка на видеозвонок, и рассылает итоги всем приглашённым. На главной странице Fireflies нажми Settings и в списке Auto-join calendar meetings выбери Only when I invite [email protected] («только когда я приглашаю»)
- Проведи пробную встречу в Zoom или Meet (можно с самим собой): добавь [email protected] в приглашение и впусти участника Fireflies.ai Notetaker, когда он попросится на встречу. На настоящих встречах предупреждай о записи в начале звонка
- Проверь: в Fireflies появились расшифровка и краткий итог (AI Summary)
- Скопируй расшифровку, вставь в чат Claude и добавь подходящий шаблон из теории
Критерий успеха: Fireflies записал встречу и сделал краткий итог, а Claude по шаблону выдал протокол и список задач.
На этом путь без кода пройден: так можно работать каждый день. Шаги 2–5 — для тех, кто строит автоматическую цепочку. Для них нужны код, аккаунт ClickUp и бот в Telegram, и на первую настройку закладывай отдельный вечер, а не минуты из заголовков.
Шаг 2: Настрой вебхук (10 мин)
- В Fireflies открой страницу вебхуков Webhooks V2: app.fireflies.ai/integrations/api/webhook (старое поле в Settings → Developer settings теперь только для чтения)
- В поле Webhook URL вставь временный адрес с webhook.site
- В разделе Event Subscriptions выбери событие
meeting.transcribedи сохрани - Нажми Send Test Event или проведи пробную встречу (5–10 мин)
- Открой webhook.site и посмотри, какой JSON пришёл
Критерий успеха: видишь JSON с полями event и meeting_id (текст расшифровки сервер заберёт отдельным запросом к GraphQL API).
Шаг 3: Запусти сервер на Python (10 мин)
pip install flask anthropic requestsСохрани код из теории в meeting_pipeline.py. Ключи и токены возьми в настройках Fireflies и ClickUp, токен бота выдаёт @BotFather в Telegram. Задай переменные окружения:
export ANTHROPIC_API_KEY="sk-ant-..."
export FIREFLIES_API_KEY="..."
export CLICKUP_API_KEY="pk_..."
export CLICKUP_LIST_ID="..."
export TELEGRAM_BOT_TOKEN="..."
export TELEGRAM_CHAT_ID="..."
python meeting_pipeline.pyДля публичного адреса во время разработки:
ngrok http 5001
# ngrok сначала нужно установить и один раз привязать к бесплатному аккаунту:
# команда ngrok config add-authtoken с твоим токеном есть в личном кабинете ngrok
# Скопируй адрес https://..., добавь в конец /webhook/fireflies → вставь в поле Webhook URL в FirefliesШаг 4: Проверь всю цепочку (20–25 мин)
Проведи 10-минутную пробную встречу. Обсуди несколько задач со сроками и ответственными. Подожди 5–10 минут после завершения. Проверь: задачи появились в ClickUp, сводка пришла в Telegram.
Критерий успеха: вся цепочка отработала сама, без ручных действий.
Шаг 5: Подстрой промпт под свои встречи (5 мин)
Замени MEETING_PROMPT на шаблон из теории, который подходит твоему типу встреч, или напиши свой. Сохрани вставки {transcript}, {meeting_title} и {participants} и поля JSON, которые читает код (summary, action_items, open_questions), иначе поправь и код. Проверь на настоящей встрече, что результат выглядит так, как ты ждёшь.
Инструменты и ресурсы
- Fireflies — расшифровка и вебхуки, больше 100 языков, включая русский, есть бесплатный тариф (лимиты API зависят от тарифа)
- Otter.ai — расшифровка в реальном времени; русского языка нет в списке поддерживаемых, есть бесплатный тариф
- tl;dv — запись встреч в Zoom, Meet и Teams, русский язык поддерживается, есть бесплатный тариф
- Granola — блокнот для встреч без бота; macOS, Windows, iOS и Android (на октябрь 2026)
- OpenAI Whisper — расшифровка на своём компьютере без интернета, бесплатно
- mlx-whisper — быстрый Whisper на Apple Silicon
- MacWhisper — расшифровка на Mac без кода и без отправки записи в облако
- Claude API — разбор расшифровок; стоимость считай по токенам (Актуальное сейчас)
- ClickUp API v2 — создание задач
- ngrok — туннель к своему компьютеру на время разработки, есть бесплатный тариф
- Railway — хостинг для Python-сервера, цены на сайте провайдера
Ключевые выводы
Встреча без автоматического протокола — деньги выброшенные дважды: сначала потратил время на встречу, потом ещё раз потратил на запись того, что на ней было.
Разница между Otter или Fireflies и Whisper на своём компьютере — это разница между удобством и приватностью. Для обычных рабочих встреч чаще берут облачный сервис. Для переговоров под соглашением о неразглашении расшифровывай запись на своём компьютере.
Автоматическая цепочка меняет культуру работы. Когда задачи появляются в ClickUp сами после каждой встречи, люди серьёзнее относятся к обещаниям: сказанное сразу становится записью.
Следующий урок
→ AI презентации — Gamma, Beautiful.ai и PowerPoint через Claude
Соберём презентацию: структуру напишет Claude, слайды оформит Gamma. После презентаций — Переводы и локализация: DeepL и Claude.
Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс