Два маршрута к собственным записям Plaud: официальный — через CLI и MCP с входом по OAuth, и «серый» — через Bearer-токен из браузера. Оба рабочих, один безопаснее, другой гибче.
Что это
Plaud Note и NotePin — устройства для записи встреч и голосовых заметок. Plaud Note — пластиковая пластинка с микрофоном, которая крепится магнитом к смартфону; NotePin — носимый значок на лацкане. После записи сервис Plaud присылает транскрипт и AI-саммари — короткое резюме с задачами и решениями. Аудиофайл лежит в облаке Plaud, доступ через мобильное приложение или веб-интерфейс web.plaud.ai.
До лета 2026 единственным способом программно читать свои записи было доставать Bearer-токен из localStorage браузера и дёргать HTTP-эндпоинты вручную. Теперь у Plaud есть официальные инструменты: CLI для скриптов и MCP-сервер для ИИ-ассистентов, оба с обычным входом через браузер по OAuth. Параллельно запущена бизнес-платформа Developer Platform — SDK и API для команд.
Это руководство описывает оба маршрута. Сначала официальный — он короче, безопаснее и закрывает большинство задач. Затем «серый» — для сценариев, которые официальные инструменты пока не закрывают: прямые HTTP-запросы к эндпоинтам, jq-фильтры, Python-скрипты для массовой выгрузки и загрузки в Notion.
Важно: домены, эндпоинты и структура ответов «серого» API могут меняться без предупреждения. Официальный маршрут — CLI и MCP — стабильнее, потому что его поддерживает Plaud.
Зачем нужно
- Автоматический импорт в базу знаний — выгрузить все записи и саммари в Notion, Obsidian или другую систему одним скриптом, без ручного копирования.
- Поиск по содержанию — найти встречу по фрагменту транскрипта или по дате, не листая приложение.
- Свои пайплайны обработки — прогнать транскрипты через свою LLM, сравнить встречи между собой, собрать дашборд по активностям.
- Доступ из ИИ-ассистента — попросить Claude или ChatGPT «покажи саммари вчерашней встречи» и получить ответ без переключения контекстов.
- Резервная копия — скачать все аудиофайлы и саммари на свой диск, не зависеть от доступности облака Plaud.
Как устроено
Маршрутов два, и выбор зависит от задачи. Официальный маршрут — CLI и MCP от Plaud. Ставятся одной командой через npm, вход через браузер по OAuth: открывается страница Plaud, вы подтверждаете доступ, токен обновляется автоматически. CLI даёт команды терминала: список записей, поиск по датам, транскрипт, саммари, ссылка на MP3. MCP подключает те же возможности к ИИ-клиенту — Claude, ChatGPT, Cursor, Codex — и вы просите ассистента естественным языком.
«Серый» маршрут — токен из localStorage. Веб-приложение Plaud хранит Bearer-токен в localStorage браузера: полноценный, живёт примерно 10 месяцев. Рядом с токеном лежит региональный домен аккаунта — например api-euc1.plaud.ai для Европы или api.plaud.ai для США. Запросы идут прямо к HTTP-эндпоинтам Plaud, сервер видит тот же токен, что и браузер — для него это обычный запрос из веб-приложения.
Сравнение маршрутов
| Критерий | Официальный (CLI/MCP) | «Серый» (токен) |
|---|---|---|
| Вход | OAuth через браузер, автообновление | Ручное копирование из DevTools |
| Поддержка Plaud | Да, официальный пакет | Нет, может измениться без предупреждения |
| Гибкость | Команды и MCP-инструменты | Прямые HTTP-запросы к любым эндпоинтам |
| Требования | Node.js 20+ | curl или Python, .env с токеном |
| Обновление токена | Автоматически | Вручную каждые ~10 месяцев |
| Для чего | Повседневные задачи, ИИ-ассистент | Массовая выгрузка, кастомные пайплайны |
Коротко: MCP — чтобы разговаривать с ИИ-ассистентом о своих записях. CLI — чтобы скриптами выгружать данные в терминале. «Серый» API — когда нужно то, чего в официальных инструментах пока нет.
Когда использовать
| Ситуация | Маршрут | Почему |
|---|---|---|
| Попросить ИИ «покажи саммари последней встречи» | Plaud MCP | MCP подключает записи к ИИ-клиенту, ответ естественным языком |
| Выгрузить все транскрипты в JSON по расписанию | Plaud CLI или «серый» API | Команды терминала или Python-скрипт с cron |
| Импорт исторических записей в Notion | «Серый» API | Zapier берёт только новые, скрипт грузит всё сразу |
| Скачать оригинальные MP3 на диск | Plaud CLI | plaud audio |
| Построить дашборд по всем встречам | «Серый» API + Python | Прямой доступ к полям, гибкая агрегация |
| Быстро проверить, что токен работает | «Серый» API | Один curl к /file/simple/web |
Официальные инструменты: CLI и MCP
Plaud MCP — для ИИ-ассистента
MCP (Model Context Protocol) — открытый протокол, через который ИИ-клиент получает доступ к внешним инструментам: файлам, базам данных, API. Plaud MCP подключает ваши записи к любому MCP-совместимому клиенту: Claude, ChatGPT, Cursor, Codex. Нужен Node.js версии 20 и выше. Установка одной командой:
npx -y @plaud-ai/mcp@latest install
Установщик найдёт ваши ИИ-клиенты, пропишет конфигурацию и откроет браузер для входа. После авторизации можно просить ассистента: «покажи последние записи», «сделай саммари вчерашней встречи», «набросай follow-up по итогам созвона».
Доступные инструменты MCP:
| Инструмент | Что делает |
|---|---|
| login | Авторизация через браузер |
| logout | Отзыв доступа |
| get_current_user | Профиль аккаунта |
| list_files | Список записей с фильтрами по названию и датам |
| get_file | Метаданные конкретной записи |
| get_note | AI-саммари и action items |
| get_transcript | Транскрипт с таймкодами и спикерами |
Plaud CLI — для скриптов
CLI подходит, когда данные нужно дёргать командами в терминале или по расписанию. Тот же Node.js 20+:
npm install -g @plaud-ai/cli
plaud login
Основные команды:
| Команда | Что делает |
|---|---|
| plaud files | Список последних записей (в таблице есть колонка ID) |
| plaud search “weekly” —from 2026-04-01 —to 2026-06-30 | Поиск по названию с фильтром по датам |
| plaud transcript | Полный транскрипт с таймкодами |
| plaud summary | AI-саммари и action items, можно сохранить в файл |
| plaud audio | Ссылка на оригинальный MP3, живёт 24 часа |
Developer Platform — для бизнеса
Осенью 2025 Plaud анонсировал, а к 2026 запустил Developer Platform — SDK и API для компаний. В неё входят: MeetingBot для Zoom, Google Meet и Teams, привязка устройств, выдача транскриптов и саммари в JSON. Доступ по заявке. Embedded-API работают по регионам: US и Japan доступны, Europe и Singapore в статусе coming soon.
«Серый» маршрут: токен из localStorage
Способ 1: через браузер
Шаг 1. Откройте web.plaud.ai в Chrome и войдите в аккаунт.
Шаг 2. Откройте DevTools: на Mac — Cmd + Option + I, на Windows/Linux — F12.
Шаг 3. Перейдите во вкладку Application → Local Storage → https://web.plaud.ai.
Шаг 4. Скопируйте два ключа:
| Ключ | Что это | Пример |
|---|---|---|
| tokenstr | Bearer-токен для авторизации | bearer eyJhbG…NiIs… |
| plaud_user_api_domain | Региональный API-домен аккаунта | https://api-euc1.plaud.ai |
Внимание: tokenstr уже содержит префикс bearer — копируйте строку целиком, включая это слово. Заголовок запроса: Authorization: bearer <токен>.
Шаг 5. Сохраните в файл .env:
PLAUD_TOKEN=bearer eyJhbG...VCJ9...
PLAUD_API_DOMAIN=https://api-euc1.plaud.ai
Способ 2: сторонние open-source инструменты
Есть неофициальные проекты, которые автоматизируют получение токена и работу с API. Например, TypeScript-набор sergivalverde/plaud-toolkit — core-библиотека, CLI и MCP-сервер. На момент проверки он в статусе alpha, поэтому команды и структура меняются: сверяйтесь с README репозитория.
Совет: Если задача — просто читать свои записи и транскрипты, официальные @plaud-ai/cli и @plaud-ai/mcp надёжнее: OAuth-вход, автообновление токенов, поддержка Plaud. Сторонние инструменты имеют смысл, когда нужно то, чего в официальных пока нет.
Региональные домены
| Регион | Домен |
|---|---|
| Европа (EU) | https://api-euc1.plaud.ai |
| США | https://api.plaud.ai |
Проверка токена
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/simple/web
Успешный ответ — JSON-массив с записями. Если 401 Unauthorized — токен скопирован неверно или истёк.
Доступные эндпоинты
| Что получаем | Endpoint | Метод |
|---|---|---|
| Список всех записей (id, название, дата, длительность) | /file/simple/web | GET |
| Транскрипт + AI-саммари конкретной записи | /file/detail/{file_id} | GET |
| Аудиофайл (MP3) | /file/download/{file_id} | GET |
| Теги и папки аккаунта | /filetag/ | GET |
Работа со списком записей
Все записи одним запросом
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/simple/web
Один элемент массива выглядит так:
{
"id": "a3f1c2d4e5b6789012345678abcdef01",
"name": "Встреча с клиентом",
"duration": 3720,
"create_time": "2026-02-15T10:30:00Z",
"status": "done"
}
Фильтры через jq
# Достать только id
curl ... | jq -r '.[].id'
# id, название и дата в TSV-формате
curl ... | jq -r '.[] | [.id, .name, .create_time] | @tsv'
# Отсортировать новые сверху
curl ... | jq '[.[] | {id, name, create_time}] | sort_by(.create_time) | reverse'
Транскрипт и AI-саммари
Карточка одной записи
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/detail/{file_id}
Ключевые поля:
| Поле | Содержание |
|---|---|
| .data.trans_result.segments | Массив сегментов: {start, end, speaker, text} |
| .data.ai_content | AI-саммари |
| .data.name | Название записи |
| .data.duration | Длительность в секундах |
Как достать данные
# Только текст без таймкодов
curl ... | jq -r '.data.trans_result.segments[].text' | tr '\n' ' '
# С таймкодами и именами спикеров
curl ... | jq -r '.data.trans_result.segments[] | "[\(.start)] \(.speaker): \(.text)"'
# Забрать AI-саммари
curl ... | jq '.data.ai_content'
# Название, дата и саммари одним объектом
curl ... | jq '{name: .data.name, date: .data.create_time, summary: .data.ai_content}'
Пример вывода с таймкодами:
[00:00:05] Speaker 1: Добрый день, начинаем встречу.
[00:00:12] Speaker 2: Спасибо, я готов.
Скачивание аудио
Скачать MP3
# Сохранить аудио в файл
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/download/{file_id} \
-o "recording.mp3"
# Сохранить с именем из карточки записи
NAME=$(curl -s -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/detail/{file_id} \
| jq -r '.data.name')
curl -H "Authorization: $PLAUD_TOKEN" \
$PLAUD_API_DOMAIN/file/download/{file_id} \
-o "${NAME}.mp3"
Python: массовая выгрузка
Подключение и базовый клиент
import os
import requests
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv("PLAUD_TOKEN")
DOMAIN = os.getenv("PLAUD_API_DOMAIN")
HEADERS = {"Authorization": TOKEN}
def get(endpoint):
"""Обёртка над requests.get с авторизацией."""
resp = requests.get(f"{DOMAIN}{endpoint}", headers=HEADERS)
resp.raise_for_status()
return resp.json()
Список записей
files = get("/file/simple/web")
for f in files:
print(f"{f['id']} | {f['name']} | {f['create_time']}")
Транскрипт и саммари одной записи
def get_detail(file_id):
"""Достаёт название, дату, длительность, транскрипт и AI-саммари."""
data = get(f"/file/detail/{file_id}")["data"]
segments = data.get("trans_result", {}).get("segments", [])
transcript = " ".join(s["text"] for s in segments)
return {
"name": data["name"],
"date": data["create_time"],
"duration": data["duration"],
"transcript": transcript,
"summary": data.get("ai_content", "")
}
Выгрузить всё в JSON-файл
import json
from time import sleep
files = get("/file/simple/web")
all_data = []
for i, f in enumerate(files):
print(f"[{i+1}/{len(files)}] {f['name']}")
try:
detail = get_detail(f["id"])
all_data.append(detail)
sleep(0.5) # пауза, чтобы не словить 429
except Exception as e:
print(f" Ошибка: {e}")
with open("plaud_export.json", "w", encoding="utf-8") as out:
json.dump(all_data, out, ensure_ascii=False, indent=2)
print(f"Экспортировано {len(all_data)} записей.")
Массовая загрузка в Notion
Зачем: Zapier при первом подключении не вытягивает исторические записи — только новые. Этот скрипт загружает все существующие записи в базу Notion за один прогон.
Настройка .env
PLAUD_TOKEN=bearer eyJ...
PLAUD_API_DOMAIN=https://api-euc1.plaud.ai
NOTION_TOKEN=secret_...
NOTION_DATABASE_ID=ваш-id-базы-данных
Скрипт импорта в Notion
# ... (часть 1/2)
import os
import requests
from time import sleep
from dotenv import load_dotenv
load_dotenv()
# --- Plaud ---
PLAUD_TOKEN = os.getenv("PLAUD_TOKEN")
PLAUD_DOMAIN = os.getenv("PLAUD_API_DOMAIN")
PLAUD_HEADERS = {"Authorization": PLAUD_TOKEN}
# --- Notion ---
NOTION_TOKEN = os.getenv("NOTION_TOKEN")
NOTION_DB_ID = os.getenv("NOTION_DATABASE_ID")
NOTION_HEADERS = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
def plaud_get(endpoint):
"""GET-запрос к Plaud API с авторизацией из .env."""
r = requests.get(f"{PLAUD_DOMAIN}{endpoint}", headers=PLAUD_HEADERS)
r.raise_for_status()
return r.json()
def get_detail(file_id):
"""Собирает карточку записи: название, дата, транскрипт, саммари."""
data = plaud_get(f"/file/detail/{file_id}")["data"]
segments = data.get("trans_result", {}).get("segments", [])
lines = [
f"[{s.get('start', '')}] {s.get('speaker', '')}: {s['text']}"
for s in segments
]
return {
"name": data.get("name") or "Без названия",
"date": data.get("create_time", ""),
"transcript": "\n".join(lines),
"summary": data.get("ai_content", "")
}
def create_notion_page(record):
"""Создаёт страницу в Notion-базе из карточки записи."""
summary = (record["summary"] or "")[:2000]
body = {
"parent": {"database_id": NOTION_DB_ID},
"properties": {
"Name": {"title": [{"text": {"content": record["name"]}}]},
"Date": {"date": {"start": record["date"]}},
"Summary": {"rich_text": [{"text": {"content": summary}}]}
},
"children": [{
"object": "block",
"type": "paragraph",
"paragraph": {
"rich_text": [{
"type": "text",
"text": {"content": (record["transcript"] or "")[:2000]}
}]
}
}]
}
# ... (часть 2/2)
r = requests.post("https://api.notion.com/v1/pages",
headers=NOTION_HEADERS, json=body)
r.raise_for_status()
return r.json()["url"]
# --- Перебор всех записей ---
files = plaud_get("/file/simple/web")
print(f"Записей в аккаунте: {len(files)}")
for i, f in enumerate(files):
print(f"[{i+1}/{len(files)}] {f['name']}")
try:
record = get_detail(f["id"])
url = create_notion_page(record)
print(f" -> {url}")
sleep(0.5)
except Exception as e:
print(f" Ошибка: {e}")
print("Импорт завершён.")
Как найти file_id
File ID — 32-символьная hex-строка. Получить её можно тремя способами.
- Из адресной строки браузера — откройте нужную запись на web.plaud.ai, в URL будет путь /file/{file_id}.
- Из ответа API — поле id в массиве /file/simple/web.
- Через jq — curl … /file/simple/web | jq -r ’.[0].id’ достанет id первого элемента.
Ошибки и решения
| Ошибка | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Токен истёк или скопирован без bearer | Повторно извлеките tokenstr, копируйте целиком |
| Пустой транскрипт | Запись ещё обрабатывается | Проверьте статус в приложении Plaud |
| Пустой ответ /file/detail/ | Неверный file_id | Проверьте id через /file/simple/web |
| Ошибка подключения | Неверный региональный домен | Проверьте plaud_user_api_domain в localStorage |
| 429 Too Many Requests | Слишком частые запросы | Добавьте sleep(0.5–1) в цикл |
Что нового в экосистеме Plaud
Состояние на июль 2026:
- Plaud MCP и CLI — официальные инструменты для доступа к личным записям через ИИ-клиенты и терминал.
- Plaud Desktop — desktop-приложение вышло из беты в январе 2026, бесплатно для действующих пользователей. Записывает звонки Zoom, Google Meet и Teams локально, без бот-участника в звонке.
- Plaud NotePin S — новая версия носимого устройства, показана на CES в январе 2026, розничная цена $179.
- Plaud Team — командное пространство с единым биллингом для рабочих групп, запущено в июне 2026.
- Developer Platform — платформа с API и SDK для корпоративных клиентов, доступ по запросу.
Риски и ограничения
«Серый» маршрут работает, но это не официальный API — Plaud может изменить его в любой момент. Конкретных случаев блокировки аккаунтов за использование tokenstr не зафиксировано: ни в сообществе PlaudNoteUsers, ни в GitHub Issues. Open-source сообщество использует метод с 2024 года. Несколько публичных проектов — plaud-toolkit, OpenPlaud, плагины для Obsidian, n8n, OpenClaw Skills — работают на этом методе.
Ограничения
Ограничения
«Серый» API не задокументирован — Plaud не публикует официальное описание эндпоинтов, полей и статусов для метода через tokenstr.
Домены, пути и структура ответов могут измениться без предупреждения — любой скрипт, который работает сегодня, может сломаться после обновления сервиса. Для долгосрочной автоматизации надёжнее официальный CLI или MCP: их поддерживает Plaud.
Токен живёт ~10 месяцев — Bearer-токен из localStorage перестаёт работать примерно через 10 месяцев после выдачи.
После истечения нужно повторить шаги: открыть web.plaud.ai, достать tokenstr из DevTools, обновить .env. Официальный OAuth-маршрут обновляет токен автоматически — этого недостатка нет.
Региональные домены различаются — Аккаунты в Европе используют api-euc1.plaud.ai, в США — api.plaud.ai.
Если в .env указан неверный домен, запросы возвращают ошибки подключения, а не понятный 401. Домен хранится в localStorage рядом с токеном, в ключе plaud_user_api_domain — копировать оба значения вместе.
Rate limit 429 при частых запросах — Сервер Plaud ограничивает частоту запросов: при слишком интенсивном опросе возвращает 429 Too Many Requests.
Для массовой выгрузки вставляйте sleep(0.5–1) между запросами — это же правило действует для официального CLI при больших объёмах.
Developer Platform — не для личных аккаунтов — Бизнес-платформа Plaud с SDK, MeetingBot и привязкой устройств доступна по заявке и ориентирована на компании.
Embedded-API работают по регионам: US и Japan доступны, Europe и Singapore в статусе coming soon. Для личных записей используйте CLI и MCP, а не Developer Platform.
Антипаттерны
Антипаттерны
Использовать «серый» API, когда хватает официального — Если задача — прочитать саммари или скачать транскрипт, официальные @plaud-ai/cli и @plaud-ai/mcp надёжнее: OAuth-вход, автообновление токенов, поддержка Plaud.
«Серый» маршрут имеет смысл только для сценариев, которых официальные инструменты не закрывают — например, массовый импорт исторических записей в Notion, потому что Zapier берёт только новые.
Копировать токен без префикса bearer — tokenstr в localStorage уже содержит слово bearer в начале.
Если скопировать только JWT-часть без префикса, сервер вернёт 401 Unauthorized на любой запрос. Копировать нужно целиком, включая bearer, и передавать в заголовке Authorization как есть.
Хранить токен в открытом виде в репозитории — Bearer-токен даёт полный доступ к вашему аккаунту Plaud — чтение, скачивание, метаданные.
Не коммитьте .env в Git, не вставляйте токен в код скрипта напрямую. Используйте переменные окружения или .env, добавленный в .gitignore.
Игнорировать sleep при массовой выгрузке — Без паузы между запросами сервер быстро возвращает 429, и выгрузка останавливается на сотне записей.
sleep(0.5) между запросами к /file/detail/ — минимальный разумный интервал. Если записей сотни, лучше разбить на батчи и запустить в несколько проходов.
Чеклист
Чеклист
Официальные CLI и MCP закрывают большинство задач и не требуют возни с DevTools. «Серый» маршрут остаётся справочником для прямого доступа — массовая выгрузка, кастомные пайплайны, импорт истории в Notion. Выбирайте по задаче, не по привычке.
Проверен региональный домен — Перед запуском скрипта убедитесь, что PLAUD_API_DOMAIN в .env совпадает с plaud_user_api_domain из localStorage: api-euc1.plaud.ai для Европы, api.plaud.ai для США.
Неверный домен даёт ошибки подключения, которые легко спутать с истекшим токеном.
Токен скопирован целиком с префиксом bearer — Откройте Plaud Web
→ DevTools → Application → Local Storage. Скопируйте значение tokenstr полностью, начиная со слова bearer. Проверьте одним curl к /file/simple/web — успешный ответ это JSON-массив, 401 означает проблему с токеном.
В цикле есть sleep(0.5–1) — Массовая выгрузка через /file/detail/ для каждой записи требует паузы между запросами, иначе сервер возвращает 429 Too Many Requests.
Полсекунды — минимум, секунда — безопаснее для нескольких сотен записей подряд.
Выбран правильный маршрут под задачу — Для ИИ-ассистента — Plaud MCP, для терминальных команд и расписания — Plaud CLI, для массового импорта исторических записей в Notion — «серый» API с Python-скриптом.
Если официальные инструменты закрывают задачу, «серый» маршрут не нужен.
Токен в .env, .env в .gitignore — Bearer-токен — это ключ к вашему аккаунту.
Храните его в .env, добавьте .env в .gitignore, не вставляйте в код скрипта литералом. Для Notion-интеграции то же относится к NOTION_TOKEN.
Ссылки
Ссылки
- Сайт: Plaud Web
- Документация: Официальные CLI и MCP (docs.plaud.ai)
- Репозиторий: plaud-toolkit (авто-токен, CLI, MCP)
- Сайт: Riffado (бывш. OpenPlaud, self-hosted транскрипция)
- Репозиторий: Riffado на GitHub
- Репозиторий: Plaud Sync for Obsidian
- Сайт: Plaud Release Notes
- Сайт: Developer Platform