📦 TriliumUse — Trilium使用
v0.0.1通过 ETAPI REST API 与 Trilium Notes 服务器交互时——创建、读取、更新、搜索或删除笔记、分支、属性等
0· 21·0 当前·0 累计
下载技能包
最后更新
2026/4/20
安全扫描
OpenClaw
可疑
medium confidence该技能的指令与 Trilium ETAPI 的用途一致,但 SKILL.md 中要求的环境变量和文件 I/O 并未在技能元数据中声明,且允许执行破坏性操作(删除/备份/导入)——这些不一致之处在安装前需谨慎对待。
评估建议
该技能看似是一个基于 curl 的 Trilium ETAPI 简易助手,但在安装或让智能体使用前,有几个实际问题需留意:
- 元数据缺失:SKILL.md 依赖 TRILIUM_URL 与 TRILIUM_TOKEN(并演示用密码换 token),但技能元数据未声明任何必需环境变量。请要求发布者显式声明 TRILIUM_URL、TRILIUM_TOKEN(及任何密码用法),以便审计并控制所提供凭据。
- 破坏性操作:示例包含 DELETE /notes、POST /notes/{id}/import、PUT /backup/{name}。先用非生产环境的 Trilium 实例测试,并优先使用只读操作验证行为。
- 本地文件 I/O:代码片段会读取本地文件(如 --data-binary @body.html)并写入输出(如 -o subtree.zip)。确保智能体只能访问指定文件,且脚本在受控目录运行。
- 认证处理:优先使用预生成的 ETAPI token,而非密码交换。若必须用密码,请确认 TRILIUM_URL 可信,并知晓密码会发送至该服务器。
- 自主...详细分析 ▾
ℹ 用途与能力
名称、描述与端点引用均与 Trilium ETAPI 交互保持一致。所列操作(创建/读取/更新/删除笔记、分支、属性、附件、导出、备份)符合 Trilium 集成场景。然而,技能元数据未声明任何必需的环境变量或凭据,而指令却明确依赖 TRILIUM_URL 与 TRILIUM_TOKEN(可选密码),声明需求与实际使用不符。
ℹ 指令范围
SKILL.md 包含基于 curl 的具体运行时指令,可读写本地文件(如 --data-binary @body.html、-o subtree.zip),执行破坏性操作(DELETE /notes、PUT /backup/、POST /import),并演示通过 /auth/login 用密码换取 token。这些操作均在 Trilium ETAPI 域内,但文档赋予代理广泛权限读取本地文件、写入输出,并假定环境变量已存在。若使用不当,可能导致 Trilium 服务器数据丢失。
✓ 安装机制
仅含指令的技能,无安装规范,无捆绑代码。从安装/执行角度看风险极低(安装器不会下载或写入任何内容)。
⚠ 凭证需求
该技能在元数据中未声明任何环境变量,但运行时指令却假定存在 TRILIUM_URL 和 TRILIUM_TOKEN(并演示了如何交换密码)。所需凭据(token/密码)对该 API 而言属常规,但声明中遗漏会造成配置不一致,可能导致误配或凭据意外使用。未索取无关凭据,这是优点,但应修复此不一致。
✓ 持久化与权限
该技能并非始终启用,也不会请求提升的平台权限。在提供的材料中,它不会修改其他技能或全局代理设置。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv0.0.12026/4/20
trilium-etapi 初始发布:Trilium Notes ETAPI 集成的全面 shell 脚本指南 - 提供通过 ETAPI 创建、读取、更新、搜索、删除 Trilium 笔记、分支、属性及附件的参考示例 - 记录认证方式、核心 API 端点及使用 curl 与 jq 的命令行模式 - 指出常见陷阱、推荐笔记类型与高阶脚本工作流 - 触发关键词:Trilium、ETAPI、noteId、branchId 或 ETAPI URL
● 无害
安装命令
点击复制官方npx clawhub@latest install trilium-etapi
镜像加速npx clawhub@latest install trilium-etapi --registry https://cn.longxiaskill.com
技能文档
概览
ETAPI 是 Trilium Notes(≥ 0.50)的外部 REST API。所有请求均需令牌认证。资源通过 12 位 ID 定位:noteId、branchId、attributeId、attachmentId。 核心概念:
- Note —— 内容单元(HTML/代码/文件/图片…),由
noteId标识 - Branch —— 两笔记的父子关系(同一笔记可克隆到多个父级下)
- Attribute —— 附加到笔记的标签或关系
- Attachment —— 笔记拥有的二进制或文本负载
何时使用
- 通过脚本批量创建或导入笔记(每日笔记、收件箱、速记)
- 从外部系统(RSS、邮件、Webhook)推送内容到 Trilium
- 搜索/导出 Trilium 内容供其他工具消费
- 触发服务器端数据库备份、导出子树
- 调试 ETAPI 集成(trilium-py / trilium-client 等只是该 API 的封装)
勿用于在 Trilium 内部运行的脚本——直接使用前端/后端 Script API,无需 HTTP。
配置
以下示例均假设: ``bash
export TRILIUM_URL="http://localhost:8080" # 末尾不含 /etapi
export TRILIUM_TOKEN="<在 Trilium → 选项 → ETAPI 生成>"
` 若仅有密码(且服务器允许密码登录),可换取令牌:
`bash
curl -sX POST "$TRILIUM_URL/etapi/auth/login" \
-H 'Content-Type: application/json' \
-d '{"password":"YOUR_PASSWORD"}' | jq -r .authToken
`
三种认证方式(任选其一,置于 Authorization 头):
- Authorization: $TRILIUM_TOKEN
—— 原始令牌(全版本兼容) Authorization: Bearer $TRILIUM_TOKEN—— Bearer 格式(v0.93+)Authorization: Basic $(echo -n "etapi:$TRILIUM_TOKEN" | base64)—— Basic 认证(v0.56+)
速查表
| 操作 | 方法 | 路径 |
|------|------|------|
| 健康/版本 | GET | /etapi/app-info |
| 搜索笔记 | GET | /etapi/notes?search=... |
| 读取笔记元数据 | GET | /etapi/notes/{noteId} |
| 读取笔记内容 | GET | /etapi/notes/{noteId}/content |
| 写入笔记内容 | PUT | /etapi/notes/{noteId}/content (text/plain) |
| 创建笔记 | POST | /etapi/create-note |
| 补丁笔记元数据 | PATCH | /etapi/notes/{noteId} |
| 删除笔记 | DELETE | /etapi/notes/{noteId} |
| 导出子树为 ZIP | GET | /etapi/notes/{noteId}/export?format=html\|markdown |
| 导入 ZIP | POST | /etapi/notes/{noteId}/import |
| 创建/移动分支 | POST | /etapi/branches |
| 创建属性 | POST | /etapi/attributes |
| 创建附件 | POST | /etapi/attachments |
| 日笔记(自动创建) | GET | /etapi/calendar/days/{YYYY-MM-DD} |
| 收件箱 | GET | /etapi/inbox/{YYYY-MM-DD} |
| 触发数据库备份 | PUT | /etapi/backup/{name} | 完整端点、参数与模式参考:api-reference.md
核心示例(curl + jq)
以下片段均假设已导出 TRILIUM_URL 与 TRILIUM_TOKEN。 1. 健康检查
`bash
curl -s "$TRILIUM_URL/etapi/app-info" -H "Authorization: $TRILIUM_TOKEN" | jq
` 2. 创建文本笔记
`bash
curl -sX POST "$TRILIUM_URL/etapi/create-note" \
-H "Authorization: $TRILIUM_TOKEN" \
-H 'Content-Type: application/json' \
-d '{ "parentNoteId": "root", "title": "Hello from ETAPI", "type": "text", "content": "Created via curl
" }' \
| jq '{noteId: .note.noteId, branchId: .branch.branchId}'
`
返回 NoteWithBranch:新 note 及其挂载 branch。 3. 替换笔记内容
内容独立端点,请求体为 text/plain,即使内容是 HTML:
`bash
curl -sX PUT "$TRILIUM_URL/etapi/notes/$NOTE_ID/content" \
-H "Authorization: $TRILIUM_TOKEN" \
-H 'Content-Type: text/plain' \
--data-binary @body.html
` 4. 搜索
`bash
# 全文 + 标签
curl -sG "$TRILIUM_URL/etapi/notes" \
-H "Authorization: $TRILIUM_TOKEN" \
--data-urlencode 'search=tolkien #book' \
--data-urlencode 'limit=10' \
| jq '.results[] | {noteId, title}'
`
搜索语法与 Trilium 界面搜索栏一致。常用形式:#tag、#tag=value、note.content *= "..."、~relation.title = "..."。 5. 给笔记打标签
`bash
curl -sX POST "$TRILIUM_URL/etapi/attributes" \
-H "Authorization: $TRILIUM_TOKEN" \
-H 'Content-Type: application/json' \
-d "{ \"noteId\": \"$NOTE_ID\", \"type\": \"label\", \"name\": \"book\", \"value\": \"\", \"isInheritable\": false }"
` 6. 日笔记(按需自动创建)
`bash
TODAY=$(date +%F)
curl -s "$TRILIUM_URL/etapi/calendar/days/$TODAY" \
-H "Authorization: $TRILIUM_TOKEN"
``