pimenov.ai

База знаний

Plaud — неофициальный личный API: практическое руководство

Как программно получить свои записи, транскрипты и саммари из Plaud через неофициальный API. Получение токена, эндпоинты, Python-скрипты для массовой выгрузки в Notion, автоматический менеджмент токенов через plaud-toolkit.

Опубликовано Обновлено
🕒
Актуальность: проверено 6 июля 2026. С момента публикации Plaud выпустил официальный способ доступа к своим записям: Plaud CLI и Plaud MCP с входом через браузер (OAuth) — см. раздел «Официальный путь: Plaud CLI и MCP» ниже. Теперь это рекомендованный маршрут. Метод с токеном из localStorage по-прежнему рабочий, но стал запасным: он для сценариев, которые официальные инструменты пока не закрывают. Помните, что домены, эндпоинты и структуры ответов «серого» API могут меняться без предупреждения.

Раньше единственным способом программно читать данные своего Plaud-аккаунта был Bearer-токен из localStorage браузера. Летом 2026 у Plaud появился официальный путь для личных данных: CLI и MCP-сервер с обычным входом через браузер. Параллельно запущена бизнес-платформа Plaud Developer Platform.

Этот документ описывает оба маршрута: сначала официальный, быстрый и безопасный, затем «серый» через токен из localStorage как справочник для прямого доступа к HTTP-эндпоинтам.

📌
Для кого: пользователи Plaud Note и NotePin, которые хотят программно выгружать свои записи, транскрипты и саммари — например, для импорта в Notion, Obsidian или собственные пайплайны.

Официальный путь: Plaud CLI и MCP

Доставать токен вручную больше не нужно. У Plaud есть два официальных инструмента с входом через браузер (OAuth), оба ставятся одной командой и не требуют возни с localStorage.

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 (саммари и action items), get_transcript (транскрипт с таймкодами и спикерами).

Plaud 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 <id>Полный транскрипт с таймкодами
plaud summary <id> -o file.mdAI-саммари и action items, можно сохранить в файл
plaud audio <id>Ссылка на оригинальный MP3, живёт 24 часа
💡
Коротко: MCP нужен, чтобы разговаривать с ассистентом о своих записях; CLI — чтобы скриптами выгружать транскрипты и саммари. Официальная документация: docs.plaud.ai.

Для бизнеса: Developer Platform

Осенью 2025 Plaud анонсировал, а к 2026 году запустил Plaud Developer Platform — платформу с SDK и API для компаний: MeetingBot для Zoom, Google Meet и Teams, привязка устройств, выдача транскриптов и саммари в JSON. Доступ по заявке. Embedded-API работают по регионам: US и Japan доступны, Europe и Singapore в статусе coming soon. Подробности: plaud.ai/pages/developer-platform.


Способ через токен из localStorage (неофициальный)

Plaud-приложение в браузере хранит авторизационный токен в localStorage. Токен полноценный, живёт ~10 месяцев — после истечения просто повторите шаги.

Способ 1: через браузер (ручной)

Шаг 1. Откройте web.plaud.ai в Chrome и войдите в аккаунт.

Шаг 2. Откройте DevTools:

  • Mac: Cmd + Option + I
  • Windows / Linux: F12

Шаг 3. Перейдите во вкладку ApplicationLocal Storagehttps://web.plaud.ai.

Шаг 4. Скопируйте два ключа:

КлючЧто этоПример
tokenstrBearer-токен для авторизацииbearer eyJhbGciOiJIUzI1NiIs...
plaud_user_api_domainРегиональный API-домен вашего аккаунтаhttps://api-euc1.plaud.ai
⚠️
tokenstr уже содержит префикс bearer — копируйте строку целиком, включая это слово. Заголовок запроса: Authorization: bearer eyJ...

Шаг 5. Сохраните в файл .env:

PLAUD_TOKEN=bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
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-фильтры

# Только file_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):
    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):
    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)  # пауза, чтобы не нагружать API
    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-базы-данных

Скрипт

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):
    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", [])
    transcript = "\n".join(
        f"[{s.get('start', '')}] {s.get('speaker', '')}: {s['text']}"
        for s in segments
    )
    return {
        "name": data.get("name", "Без названия"),
        "date": data.get("create_time", ""),
        "transcript": transcript,
        "summary": data.get("ai_content", "")
    }

def create_notion_page(record):
    summary_short = record["summary"][:2000] if record["summary"] else ""
    payload = {
        "parent": {"database_id": NOTION_DB_ID},
        "properties": {
            "Name": {"title": [{"text": {"content": record["name"]}}]},
            "Date": {"date": {"start": record["date"]}},
            "Summary": {"rich_text": [{"text": {"content": summary_short}}]}
        },
        "children": [{
            "object": "block",
            "type": "paragraph",
            "paragraph": {
                "rich_text": [{
                    "type": "text",
                    "text": {"content": record["transcript"][:2000]}
                }]
            }
        }]
    }
    r = requests.post(
        "https://api.notion.com/v1/pages",
        headers=NOTION_HEADERS, json=payload
    )
    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-строка. Три способа получить:

  1. Из URL в браузере: откройте запись на web.plaud.ai — ID в адресной строке: web.plaud.ai/file/{file_id}
  2. Из API: поле id в ответе /file/simple/web
  3. Через jq: curl ... /file/simple/web | jq -r '.[0].id'

Риски и ограничения

Конкретных случаев блокировки аккаунтов за использование tokenstr не зафиксировано — ни в Reddit-сообществе PlaudNoteUsers, ни в GitHub Issues. Open-source сообщество использует метод с 2024 года.

Что безопасно

  • Вы обращаетесь к своим данным через тот же токен, что использует веб-приложение. Для сервера это неотличимо от обычного запроса из браузера
  • Несколько публичных проектов (plaud-toolkit, OpenPlaud, плагины для Obsidian, n8n, OpenClaw Skills) работают на этом методе

Реальные риски

РискЧто происходитРешение
Rate limit (429)Слишком частые запросы — временное ограничениеsleep(0.5–1) между запросами
Изменение APIPlaud может изменить структуру без предупреждения — скрипты сломаютсяОбработка ошибок, слежение за GitHub-репозиторием Riffado
Истечение токенаТокен перестаёт работать через ~10 месяцевПовторно извлечь из localStorage или использовать plaud-toolkit (авто-обновление)
Серая зона ToSPlaud не запрещает и не разрешает явноПрецедентов блокировки нет; для постоянной автоматизации лучше Zapier-триггер

Ошибки и решения

ОшибкаПричинаРешение
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 CLI и MCP»)
  • Plaud Desktop — вышел из беты (релиз в январе 2026, бесплатно для существующих пользователей): нативно записывает звонки в Zoom, Google Meet и Teams без бота
  • Plaud NotePin S — носимое устройство, представлено на CES в январе 2026, цена $179
  • Plaud Team — общее командное рабочее пространство с централизованным биллингом (июнь 2026)
  • Developer Platform — запущена платформа API и SDK для бизнеса, доступ по заявке

Ссылки

РесурсСсылка
Plaud Webweb.plaud.ai
Официальные CLI и MCP (документация)docs.plaud.ai
plaud-toolkit (авто-токен, CLI, MCP)github.com/sergivalverde/plaud-toolkit
Riffado (бывш. OpenPlaud, self-hosted транскрипция)riffado.com · github.com/riffado/riffado
Plaud Sync for Obsidiangithub.com/leonardsellem/plaud-sync-for-obsidian
Plaud Release Notesplaud.ai/pages/plaud-release-notes
Developer Platformplaud.ai/pages/developer-platform

По теме