Два маршрута к собственным записям 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 MCPMCP подключает записи к ИИ-клиенту, ответ естественным языком
Выгрузить все транскрипты в JSON по расписаниюPlaud CLI или «серый» APIКоманды терминала или Python-скрипт с cron
Импорт исторических записей в Notion«Серый» APIZapier берёт только новые, скрипт грузит всё сразу
Скачать оригинальные MP3 на дискPlaud CLIplaud audio даёт ссылку на 24 часа
Построить дашборд по всем встречам«Серый» 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_noteAI-саммари и 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 -o file.mdAI-саммари и 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. Скопируйте два ключа:

КлючЧто этоПример
tokenstrBearer-токен для авторизации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/webGET
Транскрипт + 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_contentAI-саммари
.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.

Ссылки

Ссылки