voicenotes
This official skill from the Voicenotes team gives OpenClaw access to new APIs and the ability to search semantically, retrieve full transcripts, filter by tags or date range and create text notes — all through natural conversation.
Install
mkdir -p .claude/skills/voicenotes && curl -L -o skill.zip "https://mcp.directory/api/skills/download/4922" && unzip -o skill.zip -d .claude/skills/voicenotes && rm skill.zipInstalls to .claude/skills/voicenotes
About this skill
voicenotes
Use the Voicenotes skill to create, search and retrieve user’s notes.
Setup
- Create an integration at https://voicenotes.com/app?open-claw=true#settings
- Copy the API key
- Configure it:
Webchat: Skills → Voicenotes → API Key in the sidebar
Terminal: Add to your OpenClaw config (~/.openclaw/config.yaml):
skills:
voicenotes:
env:
VOICENOTES_API_KEY: "your_key_here"
Or export it directly:
export VOICENOTES_API_KEY="your_key_here"
The key is then available as $VOICENOTES_API_KEY environment variable.
API Basics
All requests need the Authorization header:
curl -X GET "https://api.voicenotes.com/api/integrations/open-claw/..." \
-H "Authorization: $VOICENOTES_API_KEY"
Common Operations
Search query in users notes:
Query parameters:
query(required): The search query string
curl -X GET "https://api.voicenotes.com/api/integrations/open-claw/search/semantic?query={search_query}" \
-H "Authorization: $VOICENOTES_API_KEY"
Get multiple Voicenotes with filters (tags and date range):
Query parameters:
tags(optional): array of valid tagsdate_range(optional): array with start and end date as UTC timestamps
curl -X POST "https://api.voicenotes.com/api/integrations/open-claw/recordings" \
-H "Authorization: $VOICENOTES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": ["tag1", "tag2"],
"date_range": ["2026-01-01T00:00:00.000000Z", "2026-02-01T00:00:00.000000Z"]
}'
If you want more context get the whole transcript:
curl "https://api.voicenotes.com/api/integrations/open-claw/recordings/{recording_uuid}" \
-H "Authorization: $VOICENOTES_API_KEY" \
Create a text note in Voicenotes:
curl -X POST "https://api.voicenotes.com/api/integrations/open-claw/recordings/new" \
-H "Authorization: $VOICENOTES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recording_type": 3,
"transcript": "note content here",
"device_info": "open-claw"
}'
Response Structure
Semantic Search Response:
Returns an array of notes and note splits ordered by relevance:
[
{
"type": "note",
"uuid": "NTHiJljf",
"title": "Quick idea about project",
"transcript": "Full transcript text with <br> for line breaks...",
"tags": ["idea", "project"],
"created_at": "2025-01-15T10:30:00.000000Z"
},
{
"type": "note_split",
"uuid": "8JzkhEGh",
"title": "Long meeting notes",
"transcript": "Relevant chunk from a larger note...",
"tags": ["meeting"],
"created_at": "2025-01-14T09:00:00.000000Z"
},
{
"type": "import_split",
"uuid": "xYz12345",
"title": "filename.extension",
"transcript": "Chunk from an imported note...",
"tags": ["imported"],
"created_at": "2025-01-10T14:00:00.000000Z"
}
]
type: "note"- Complete note matching the searchtype: "note_split"- Chunk from a larger note; use theuuidto fetch full transcript if neededtype: "import_split"- Chunk from an imported note; title is the filename; cannot be fetched via/recordings/{uuid}transcriptmay contain HTML (<br>,<b>) for formatting
Get Recordings Response (with filters):
Returns paginated notes matching the filters:
{
"data": [
{
"id": "bTZI5t12",
"title": null,
"transcript": "this is a sample note",
"duration": 0,
"recorded_at": "2026-02-06T10:07:45.000000Z",
"created_at": "2026-02-06T10:07:45.000000Z",
"recording_type": 3,
"tags": []
}
],
"links": {
"first": "https://api.voicenotes.com/api/integrations/open-claw/recordings?page=1",
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"path": "https://api.voicenotes.com/api/integrations/open-claw/recordings",
"per_page": 10,
"to": 1
}
}
Key fields:
data- Array of recording objectslinks.next- URL for next page (null if no more pages)meta.per_page- Results per page (default 10)
Get Recording Response:
Returns full note details:
{
"data": {
"id": "NTHiJljf",
"title": "Meeting Connectivity Check",
"transcript": "Full transcript text...",
"duration": 12101,
"recorded_at": "2025-08-07T09:50:14.000000Z",
"created_at": "2025-08-07T09:50:14.000000Z",
"recording_type": 2,
"tags": ["meeting"],
"subnotes": [],
"attachments": []
}
}
Key fields:
id- Note UUIDtranscript- Full text (meetings include[HH:MM:SS] Speaker N:timestamps)duration- Length in millisecondsrecording_type- 1=voice note, 2=voice meeting, 3=text notetags- Array of tag objects withnamefield
Create Note Response:
{
"message": "Recording audio uploaded successfully!",
"recording": {
"id": "bPI3RcUP",
"recording_id": "bPI3RcUP",
"title": null,
"transcript": "Sample note",
"recording_type": 3,
"created_at": "2026-02-04T08:51:29.000000Z",
"tags": []
}
}
Key fields:
message- Success confirmationrecording.id- New note UUIDrecording.transcript- The note content
Notes
- Note IDs are UUIDs
- Rate limit: ~3 requests/second average
Security & Guardrails
- Only accesses
api.voicenotes.comendpoints - No credential exfiltration or external data storage
- No telemetry or analytics
- No automatic code execution or file overwrites
- Read/write limited to user's own Voicenotes data via authenticated API
Input Sanitization
When constructing API requests, the agent MUST sanitize all user-provided inputs:
- Search queries: URL-encode the
queryparameter using--data-urlencodeinstead of string interpolation - Recording UUIDs: Validate format (alphanumeric, 8 characters) before use; reject any input containing shell metacharacters (
;,|,&,$,`,\) - JSON body fields: Use proper JSON encoding; never concatenate raw user input into JSON strings
Safe example for search:
curl -G "https://api.voicenotes.com/api/integrations/open-claw/search/semantic" \
--data-urlencode "query=user search term here" \
-H "Authorization: $VOICENOTES_API_KEY"
UUID validation pattern: /^[a-zA-Z0-9]{8}$/
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversBoost your AI code assistant with Context7: inject real-time API documentation from OpenAPI specification sources into y
Validate Oh My Posh theme configurations quickly and reliably against the official schema to ensure error-free prompts a
Search and discover MCP servers with the official MCP Registry — browse an up-to-date MCP server list to find MCP server
Explore official Google BigQuery MCP servers. Find resources and examples to build context-aware apps in Google's ecosys
Find official MCP servers for Google Maps. Explore resources to build, integrate, and extend apps with Google directions
Explore MCP servers for Google Compute Engine. Integrate model context protocol solutions to streamline GCE app developm
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.