← 返回
未分类 Key 中文

Joplin Notes

Interface for managing Joplin notes via WebDAV. Allows listing notebooks and notes, reading content (first line = title), and creating or updating notes and...
通过 WebDAV 管理 Joplin 笔记的接口,可列出笔记本和笔记、读取内容(首行为标题),以及创建或更新笔记...
martin004 martin004 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 需要
★ 0
Stars
📥 319
下载
💾 0
安装
1
版本
#latest

概述

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 via parent_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

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 [type (1=note, 2=notebook)]

4. Create Notebook (create_notebook.py)

Creates a new notebook.

  • Usage: python3 scripts/create_notebook.py [parent_notebook_id]</code></li></ul><h2>Workflow Examples</h2><h3>Query Structure</h3><ol><li><code>exec("python3 /home/openclaw/.openclaw/workspace/skills/joplin-notes/scripts/list_notes.py")</code></li><li>Analyze the output to find the desired <code>note_id</code> or <code>notebook_id</code>.</li></ol><h3>Read Note Content</h3><ol><li><code>exec("python3 /home/openclaw/.openclaw/workspace/skills/joplin-notes/scripts/get_note.py <note_id>")</code></li></ol><h3>Edit or Create Note</h3><ol><li>Download the current content with <code>get_note.py</code> (if editing).</li><li>Create a temporary file with the new content (include the title in the first line).</li><li>Call <code>upsert_note.py</code>.</li></ol></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.0.0</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-05-07 09:42 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=37c38c3015bc2c18be028faf971da587" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/26/440564_8a5c9c85c2640bfbb410f772209854de.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1782286223%3B1813822223&q-key-time=1782286223%3B1813822223&q-header-list=host&q-url-param-list=&q-signature=bbb5e39dfcde415c3b22b18198bd1ef7a3a08f41" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">knowledge-management</span> <h3><a href="/s/web-tools-guide">web-tools-guide</a></h3> <div class="rec-owner">user_ec205dbb</div> <div class="rec-desc">MANDATORY before calling web_search, web_fetch, browser, or opencli. Contains required error-handling procedures (web_se</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 71</span> <span style="color:#5b6abf;">📥 162,124</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">knowledge-management</span> <h3><a href="/s/obsidian">Obsidian</a></h3> <div class="rec-owner">steipete</div> <div class="rec-desc">操作 Obsidian 仓库(纯 Markdown 笔记)并通过 obsidian-cli 自动化。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 446</span> <span style="color:#5b6abf;">📥 105,093</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">knowledge-management</span> <h3><a href="/s/summarize">Summarize</a></h3> <div class="rec-owner">paudyyin</div> <div class="rec-desc">智能摘要工具,自动为长文本、文档、网页生成摘要,提取要点与关键词,支持自定义摘要长度。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 959</span> <span style="color:#5b6abf;">📥 519,364</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>