An unofficial skill for extracting raw, speaker-attributed transcripts from Plaud AI recordings and generating structured meeting notes. Works with Claude in Cowork, Chat, and Claude Code.
Plaud Note devices produce excellent recordings, but the web app primarily surfaces AI-generated summaries. This skill gives you the full verbatim transcript with speaker labels and timestamps, which you can use to create detailed meeting notes, search for specific discussions, or feed into other workflows.
The Plaud web app at web.plaud.ai uses a REST API under the hood. This skill's Python client talks to that same API using a Bearer token from your logged-in session. No unofficial modifications or hacking required -- it simply makes the same API calls your browser makes.
- A Plaud account with recordings synced to web.plaud.ai
- Python 3.8+
- The
requestslibrary (pip install requests)
- Open web.plaud.ai and log in
- Open browser DevTools (F12 or Cmd+Option+I on Mac)
- Go to the Console tab
- Run:
localStorage.getItem('tokenstr') - Copy the full value (it starts with
bearer eyJ...)
export PLAUD_TOKEN="bearer eyJ..."For persistence, add it to your shell profile:
echo 'export PLAUD_TOKEN="bearer eyJ..."' >> ~/.zshrc
source ~/.zshrcSecurity note: The token is long-lived (~10 months) and grants full access to your Plaud recordings. Treat it like a password. Never commit it to version control.
Copy the skill folder into your Claude skills directory:
cp -r plaud-transcript ~/.claude/skills/plaud-transcriptOnce installed, Claude will automatically use this skill when you mention Plaud recordings or ask for meeting transcripts.
Global install (available in all projects):
cp -r plaud-transcript ~/.claude/skills/plaud-transcriptPer-project install (available only in that project):
cp -r plaud-transcript .claude/skills/plaud-transcriptYou can also use the Python client directly without Claude:
export PLAUD_TOKEN="bearer eyJ..."
python3 plaud-transcript/scripts/plaud_client.py list
python3 plaud-transcript/scripts/plaud_client.py transcript <recording-id>Just ask naturally:
- "List my recent Plaud recordings"
- "Pull the transcript from my meeting with Sarah on Thursday"
- "Create meeting notes from my last Plaud recording"
- "Search my Plaud recordings for anything about hiring"
# List recent recordings
python3 scripts/plaud_client.py list
python3 scripts/plaud_client.py list --limit 10
python3 scripts/plaud_client.py list --folder "Sarah Chen"
python3 scripts/plaud_client.py list --after 2026-03-25
# Get raw transcript (speaker-attributed text)
python3 scripts/plaud_client.py transcript <recording-id>
# Get transcript as JSON (with timestamps)
python3 scripts/plaud_client.py transcript <recording-id> --json
# Get topic outline
python3 scripts/plaud_client.py outline <recording-id>
# Get recording metadata
python3 scripts/plaud_client.py detail <recording-id>
# List folders/tags
python3 scripts/plaud_client.py folders
# Search by keyword in recording title
python3 scripts/plaud_client.py search "career development"This skill uses the following Plaud API endpoints (all at https://api.plaud.ai):
| Endpoint | Purpose |
|---|---|
GET /file/simple/web |
List recordings with pagination and sorting |
GET /file/detail/{id} |
File metadata and content list |
GET /filetag/ |
List folders/tags |
GET /user/me |
Current user info |
Each recording's content_list includes different content types:
| Type | Description |
|---|---|
transaction |
Raw transcript (JSON array of speaker segments with timestamps) |
outline |
Topic segmentation with timestamps |
auto_sum_note |
Auto-generated summary |
sum_multi_note |
Structured notes (Meeting Minutes, Reasoning Summary) |
The actual content is stored at S3 pre-signed URLs in the data_link field. The client handles fetching these automatically.
Raw transcript segments look like this:
{
"start_time": 31210,
"end_time": 49690,
"content": "The actual spoken text from the recording...",
"speaker": "Speaker 1",
"original_speaker": "Speaker 1"
}Some recordings have speaker names already mapped (e.g., "speaker": "amit_vaswani"), while others use generic labels like Speaker 1.
- Your Bearer token grants full access to your Plaud recordings. Never commit it to version control.
- The token is long-lived (~10 months from issuance).
- This skill stores the token exclusively in the
PLAUD_TOKENenvironment variable. It is never written to any file by the code. - The
.gitignoreexcludes.envfiles as an extra safeguard. - This is an unofficial integration. Plaud may change their API at any time.
MIT