Joplin Notes Skill
This skill provides programmatic access to a Joplin database synchronized via WebDAV.
How it Works
Joplin stores notes and notebooks as .md files in a flat directory. They are linked via metadata at the end of the file (id, parent_id, type_).
- Title: The first line of the file is the title of the note or notebook.
- Notebook: A special file type (
type_: 2) that serves as a container for notes. - Note: A standard file (
type_: 1) assigned to a notebook viaparent_id.
Available Scripts
The scripts are located in scripts/ and require the following environment variables:
JOPLIN_PASSWORD: The password for WebDAV access.JOPLIN_ACCOUNT: The username for Joplin (e.g.,openclaw).JOPLIN_WEBDAV_PATH: The full path to the Joplin directory on the WebDAV server.
1. List Notes (list_notes.py)
Outputs the entire structure of notebooks and their contained notes.
- Usage:
python3 scripts/list_notes.py
2. Get Note Content (get_note.py)
Reads the content of a specific note by its ID.
- Usage:
python3 scripts/get_note.py <note_id>
3. Upsert Note/Notebook (upsert_note.py)
Updates an existing note or creates a new one. Supports notebooks via the type parameter.
- Usage:
python3 scripts/upsert_note.py <note_id|new> <parent_id> <content_file> [type (1=note, 2=notebook)]
4. Create Notebook (create_notebook.py)
Creates a new notebook.
- Usage:
python3 scripts/create_notebook.py <title> [parent_notebook_id]
Workflow Examples
Query Structure
exec("python3 /home/openclaw/.openclaw/workspace/skills/joplin-notes/scripts/list_notes.py")- Analyze the output to find the desired
note_idornotebook_id.
Read Note Content
exec("python3 /home/openclaw/.openclaw/workspace/skills/joplin-notes/scripts/get_note.py <note_id>")
Edit or Create Note
- Download the current content with
get_note.py(if editing). - Create a temporary file with the new content (include the title in the first line).
- Call
upsert_note.py.
