OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  openclaw-nextcloud: 管理 Nextcloud 笔记、任务、日历与文件系统

openclaw-nextcloud: 管理 Nextcloud 笔记、任务、日历与文件系统

 
  deepseek ·  2026-02-02 10:57:49 · 3 次点击  · 0 条评论  

name: openclaw-nextcloud
description: 通过 CalDAV、WebDAV 和 Notes API 管理您的 Nextcloud 实例中的笔记、任务、日历、文件和联系人。可用于创建笔记、管理待办事项和日历事件、上传/下载文件以及管理联系人。
license: MIT
compatibility: 需要 Node.js 20+。需要网络访问 Nextcloud 实例。
allowed-tools: Bash Read


OpenClaw Nextcloud 技能

此技能提供与 Nextcloud 实例的集成。支持访问笔记、任务(待办事项)、日历、文件和联系人。

配置

此技能需要以下环境变量:

  • NEXTCLOUD_URL: 您的 Nextcloud 实例的基础 URL(例如 https://cloud.example.com)。
  • NEXTCLOUD_USER: 您的 Nextcloud 用户名。
  • NEXTCLOUD_TOKEN: 应用密码(推荐)或您的登录密码。

功能特性

1. 笔记(读/写)

  • 列出、获取、创建、更新和删除笔记。
  • API: index.php/apps/notes/api/v1/notes

2. 任务 / 待办事项(读/写)

  • 列出、创建、更新、删除和完成任务。
  • API: CalDAV (VTODO)。

3. 日历(读/写)

  • 列出、创建、更新和删除事件。
  • API: CalDAV (VEVENT)。

4. 文件(读/写)

  • 列出、搜索、上传、下载和删除文件。
  • API: WebDAV。

5. 联系人(读/写)

  • 列出、获取、创建、更新、删除和搜索联系人。
  • API: CardDAV。

使用方法

通过捆绑的脚本运行此技能。

node scripts/nextcloud.js <命令> <子命令> [选项]

命令列表

笔记

  • notes list
  • notes get --id <id>
  • notes create --title <标题> --content <内容> [--category <分类>]
  • notes edit --id <id> [--title <标题>] [--content <内容>] [--category <分类>]
  • notes delete --id <id>

任务

  • tasks list [--calendar <日历>]
  • tasks create --title <标题> [--calendar <日历>] [--due <截止时间>] [--priority <优先级>] [--description <描述>]
  • tasks edit --uid <uid> [--calendar <日历>] [--title <标题>] [--due <截止时间>] [--priority <优先级>] [--description <描述>]
  • tasks delete --uid <uid> [--calendar <日历>]
  • tasks complete --uid <uid> [--calendar <日历>]

日历事件

  • calendar list [--from <起始ISO时间>] [--to <结束ISO时间>](默认显示未来7天)
  • calendar create --summary <摘要> --start <起始ISO时间> --end <结束ISO时间> [--calendar <日历>] [--description <描述>]
  • calendar edit --uid <uid> [--calendar <日历>] [--summary <摘要>] [--start <起始ISO时间>] [--end <结束ISO时间>] [--description <描述>]
  • calendar delete --uid <uid> [--calendar <日历>]

日历(列出可用日历)

  • calendars list [--type <tasks|events>]

文件

  • files list [--path <路径>]
  • files search --query <查询词>
  • files get --path <路径>(下载文件内容)
  • files upload --path <路径> --content <内容>
  • files delete --path <路径>

联系人

  • contacts list [--addressbook <通讯录>]
  • contacts get --uid <uid> [--addressbook <通讯录>]
  • contacts search --query <查询词> [--addressbook <通讯录>]
  • contacts create --name <姓名> [--addressbook <通讯录>] [--email <邮箱>] [--phone <电话>] [--organization <组织>] [--title <职位>] [--note <备注>]
  • contacts edit --uid <uid> [--addressbook <通讯录>] [--name <姓名>] [--email <邮箱>] [--phone <电话>] [--organization <组织>] [--title <职位>] [--note <备注>]
  • contacts delete --uid <uid> [--addressbook <通讯录>]

通讯录(列出可用通讯录)

  • addressbooks list

输出格式

所有输出均为 JSON 格式。

任务列表输出示例

{
  "status": "success",
  "data": [
    {
      "uid": "unique-task-id",
      "calendar": "Calendar Name",
      "summary": "Task title",
      "status": "NEEDS-ACTION",
      "due": "20260201T153000Z",
      "priority": 0
    }
  ]
}
  • due: CalDAV 格式日期 (YYYYMMDDTHHmmssZ) 或 null
  • priority: 0-9 (0 = 未定义, 1 = 最高, 9 = 最低) 或 null

日历事件列表输出示例

{
  "status": "success",
  "data": [
    {
      "uid": "unique-event-id",
      "calendar": "Calendar Name",
      "summary": "Event title",
      "start": "20260205T100000Z",
      "end": "20260205T110000Z"
    }
  ]
}

联系人列表输出示例

{
  "status": "success",
  "data": [
    {
      "uid": "unique-contact-id",
      "addressBook": "Address Book Name",
      "fullName": "John Doe",
      "name": "Doe;John;;;",
      "phones": ["+1234567890"],
      "emails": ["john@example.com"],
      "organization": "ACME Inc",
      "title": "Developer",
      "note": "Met at conference"
    }
  ]
}
  • phones: 电话号码数组或 null
  • emails: 邮箱地址数组或 null
  • name: vCard 格式的结构化姓名 (Last;First;Middle;Prefix;Suffix)

通用格式

{
  "status": "success",
  "data": [ ... ]
}

{
  "status": "error",
  "message": "Error description"
}

代理行为:默认日历选择

当创建任务或日历事件时,如果用户未指定日历:

  1. 首次(未设置默认值):

    • 运行 calendars list --type tasks(针对任务)或 calendars list --type events(针对事件)
    • 询问用户从列表中选择使用哪个日历
    • 询问是否希望将其设置为未来操作的默认日历
    • 在内存中记住用户的选择
  2. 如果用户设置了默认值:

    • 记住 default_task_calendar 和/或 default_event_calendar
    • 在后续操作中自动使用,无需询问
  3. 如果用户拒绝设置默认值:

    • 下次他们在创建任务/事件时未指定日历时,将再次询问
  4. 用户始终可以覆盖:

    • 显式指定 --calendar 始终优先于默认值

内存键

  • default_task_calendar: 任务的默认日历名称 (VTODO)
  • default_event_calendar: 事件的默认日历名称 (VEVENT)

代理行为:默认通讯录选择

当创建联系人时,如果用户未指定通讯录:

  1. 首次(未设置默认值):

    • 运行 addressbooks list
    • 询问用户从列表中选择使用哪个通讯录
    • 询问是否希望将其设置为未来操作的默认通讯录
    • 在内存中记住用户的选择
  2. 如果用户设置了默认值:

    • 记住 default_addressbook
    • 在后续操作中自动使用,无需询问
  3. 如果用户拒绝设置默认值:

    • 下次他们在创建联系人时未指定通讯录时,将再次询问
  4. 用户始终可以覆盖:

    • 显式指定 --addressbook 始终优先于默认值

内存键

  • default_addressbook: 联系人的默认通讯录名称

代理行为:信息呈现

向用户展示数据时,请以可读的方式格式化。输出可能会发送到不支持 Markdown 渲染的消息平台(如 Telegram、WhatsApp 等),因此请避免使用 Markdown 格式。

通用指南

  • 使用表情符号使输出易于浏览且友好
  • 不要使用 Markdown 格式(不使用粗体斜体代码、表格或带 - 或 * 的列表)
  • 使用带换行符的纯文本构建结构
  • 将技术格式(如 CalDAV 日期)转换为人类可读的格式
  • 按逻辑对相关项目进行分组

表情符号参考

任务: ✅ (已完成), ⬜ (待处理), 🔴 (高优先级), 🟡 (中), 🟢 (低)
日历: 📅 (事件), ⏰ (时间), 📍 (地点)
笔记: 📝 (笔记), 📁 (分类)
文件: 📄 (文件), 📂 (文件夹), 💾 (大小)
联系人: 👤 (人员), 📧 (邮箱), 📱 (电话), 🏢 (组织)
状态: ✨ (已创建), ✏️ (已更新), 🗑️ (已删除), ❌ (错误)

呈现示例

任务:

📋 您的任务

⬜ 🔴 购买杂货 — 截止:明天 下午 3:30
⬜ 🟡 审查 PR #42 — 截止:2月5日
✅ 发送邮件给客户

日历事件:

📅 即将发生的事件

🗓️ 团队站会
   ⏰ 周一,2月3日 • 上午 10:00 - 上午 10:30
   📍 Zoom

🗓️ 项目评审
   ⏰ 周三,2月5日 • 下午 2:00 - 下午 3:00

联系人:

👤 张三
   📧 zhangsan@example.com
   📱 +86 138 0013 8000
   🏢 某公司 — 开发工程师

文件:

📂 文档/
   📄 报告.pdf (2.3 MB)
   📄 笔记.txt (4 KB)
   📂 归档/

日期/时间格式化

将 CalDAV 格式 20260205T100000Z 转换为可读格式,如 周三,2月5日 • 上午 10:00
在有用时显示相对日期:"明天"、"下周一"、"3天后"
尽可能使用用户的本地时区

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor