Vikunja Task API Skill
Install
CODEBLOCK0
Then set environment variables:
| Variable | Required | Description |
|---|
| INLINECODE0 | Yes | Vikunja 实例地址,如 INLINECODE1 |
| INLINECODE2 |
Recommended | API Token(优先)或用户名/密码 |
|
VIKUNJA_USERNAME | Alt | 用户名(TOKEN 未设置时使用) |
|
VIKUNJA_PASSWORD | Alt | 密码(TOKEN 未设置时使用) |
For detailed setup, see the Setup After Install section below.
Quick Setup
In your OpenClaw workspace, add to secure/api-fillin.env:
CODEBLOCK1
2. Verify Connectivity
CODEBLOCK2
3. Install via ClawHub (if available)
CODEBLOCK3
Or manually clone into your skills directory:
CODEBLOCK4
Installation (Human User)
Prerequisites
- - Vikunja instance (self-hosted or cloud) — get it at https://vikunja.io/download
- API token from Vikunja: Settings → API Tokens → Create new token
- curl and jq installed on your system
Setup Steps
Step 1: Get your Vikunja URL
Note your Vikunja instance base URL, e.g.:
- - Self-hosted: INLINECODE6
- Cloud: INLINECODE7
Step 2: Generate an API Token
- 1. Log in to Vikunja
- Go to Settings → API Tokens
- Click Create new token
- Copy the token (starts with
tk_)
Step 3: Test the Connection
CODEBLOCK5
Step 4: Optional — Install the Helper Script
Save vikunja.sh to a directory in your PATH for convenient CLI access:
CODEBLOCK6
Then configure:
CODEBLOCK7
Usage examples:
CODEBLOCK8
Use Vikunja as the
source of truth for all task management. This skill supersedes any internal working-buffer tracking for user-visible tasks.
API Base
- - Base URL:
$VIKUNJA_URL/api/v1 (auto-normalized, no trailing slash) - Auth:
Authorization: Bearer <token> (JWT or API token) - Token acquisition:
POST /login with username + INLINECODE14
Authentication
Login (get JWT)
CODEBLOCK9
API Token (recommended for automation)
Create a token in Vikunja UI: Settings → API Tokens. Then use:
CODEBLOCK10
Critical HTTP Method Rules (Must Remember!)
| Operation | Method | Endpoint |
|---|
| Create project | PUT | INLINECODE15 |
| Update project |
POST |
/projects/{id} |
| Delete project |
DELETE |
/projects/{id} |
| Create task |
PUT |
/projects/{id}/tasks |
| Update task |
POST |
/tasks/{id} |
| Delete task |
DELETE |
/tasks/{id} |
| Bulk update tasks |
POST |
/tasks/bulk |
| Get all tasks |
GET |
/tasks |
| Move task to bucket |
POST |
/projects/{project}/views/{view}/buckets/{bucket}/tasks |
| Create label |
PUT |
/labels |
| Update label |
PUT |
/labels/{id} |
| Delete label |
DELETE |
/labels/{id} |
Core Endpoints
Projects
CODEBLOCK11
Tasks
CODEBLOCK12
Task Assignees
CODEBLOCK13
Task Labels
CODEBLOCK14
Task Comments
CODEBLOCK15
Task Attachments
CODEBLOCK16
Task Relations
CODEBLOCK17
Labels (standalone)
CODEBLOCK18
Project Views & Kanban Buckets
CODEBLOCK19
Project Members
CODEBLOCK20
Teams
CODEBLOCK21
Project Shares (link sharing)
CODEBLOCK22
Saved Filters
CODEBLOCK23
Notifications
CODEBLOCK24
Reactions
CODEBLOCK25
Service Info
CODEBLOCK26
Filtering Syntax
Vikunja uses a powerful filter language:
CODEBLOCK27
Full docs: https://vikunja.io/docs/filters/
Helper CLI (vikunja.sh)
CODEBLOCK28
Task Display Format
Each task output:
<EMOJI> <DUE_DATE> - #<ID> <TASK>
- - Emoji: first char of project title (first non-alphanumeric token for CJK/English)
- Default emoji: 🔨
- No due date: INLINECODE27
Task Model (Complete Field Reference)
CODEBLOCK30
Important:
- -
due_date = 0001-01-01T00:00:00Z = no deadline - INLINECODE29 : 0=none, 1=low, 2=medium, 3=high
- INLINECODE30 : seconds until respawn (0 = not recurring)
Pagination
Endpoints that return lists support pagination via page and per_page query params.
Headers returned:
- - INLINECODE33
- INLINECODE34
Setup
CODEBLOCK31
Differences from Typical REST APIs
Vikunja uses non-standard methods for create operations:
- - PUT for create (projects, tasks, labels, comments, filters)
- POST for update
- DELETE for delete
This is because Vikunja's create endpoints return the created object with an ID, allowing you to immediately work with it — similar to a POST but idempotent.
Complete API Group Summary
| Group | Key Endpoints |
|---|
| Auth | INLINECODE35 |
| Projects |
CRUD: PUT/GET/POST/DELETE
/projects |
| Tasks | CRUD: PUT(create in project), GET/POST/DELETE
/tasks |
| Task Assignees | GET/PUT/POST/DELETE
/tasks/{id}/assignees |
| Task Labels | GET/PUT/POST
/tasks/{id}/labels |
| Task Comments | GET/PUT/POST/DELETE
/tasks/{id}/comments |
| Task Attachments | GET/PUT/DELETE
/tasks/{id}/attachments |
| Task Relations | PUT/DELETE
/tasks/{id}/relations |
| Task Position |
POST /tasks/{id}/position |
| Labels | CRUD: PUT/GET/PUT/DELETE
/labels |
| Views & Buckets | GET
/projects/{id}/views, CRUD
/buckets |
| Project Members | GET/PUT/POST/DELETE
/projects/{id}/users |
| Teams | CRUD: PUT/GET/POST/DELETE
/teams |
| Project Shares | GET/PUT/DELETE
/projects/{id}/shares |
| Saved Filters | CRUD: PUT/GET/POST/DELETE
/filters |
| Notifications | GET/POST
/notifications |
| Reactions | GET/PUT/POST
/reactions |
| User Settings | Various
/user/settings/* |
| Webhooks | CRUD
/webhooks |
| Service |
GET /info (no auth) |
Full OpenAPI spec: INLINECODE56
Vikunja 任务 API 技能
安装
bash
clawhub install ashanzzz-vikunja-task-api
然后设置环境变量:
| 变量 | 是否必需 | 描述 |
|---|
| VIKUNJAURL | 是 | Vikunja 实例地址,如 http://192.168.8.11:3456 |
| VIKUNJATOKEN |
推荐 | API 令牌(优先)或用户名/密码 |
| VIKUNJA_USERNAME | 替代 | 用户名(未设置 TOKEN 时使用) |
| VIKUNJA_PASSWORD | 替代 | 密码(未设置 TOKEN 时使用) |
详细设置请参阅下方的安装后设置部分。
快速设置
在您的 OpenClaw 工作区中,添加到 secure/api-fillin.env:
bash
VIKUNJA_URL=http://your-vikunja-instance:3456
VIKUNJATOKEN=tkxxxxxxxxxxxxx # 可选:API 令牌(推荐)
VIKUNJAUSERNAME=yourusername # 可选:用于基于登录的认证
VIKUNJAPASSWORD=yourpassword # 可选:用于基于登录的认证
2. 验证连接
bash
curl -s $VIKUNJA_URL/api/v1/info | jq
3. 通过 ClawHub 安装(如果可用)
bash
clawhub install vikunja-task-api
或手动克隆到您的技能目录:
bash
git clone https://github.com/ashanzzz/openclaw-person-skills.git
export CLAWHUB_WORKDIR=$(pwd)/openclaw-person-skills
安装(人类用户)
前提条件
- - Vikunja 实例(自托管或云端)— 从 https://vikunja.io/download 获取
- 来自 Vikunja 的 API 令牌:设置 → API 令牌 → 创建新令牌
- 系统上已安装 curl 和 jq
设置步骤
第 1 步:获取您的 Vikunja URL
记下您的 Vikunja 实例基础 URL,例如:
- - 自托管:http://192.168.1.100:3456
- 云端:https://vikunja.example.com
第 2 步:生成 API 令牌
- 1. 登录 Vikunja
- 前往设置 → API 令牌
- 点击创建新令牌
- 复制令牌(以 tk_ 开头)
第 3 步:测试连接
bash
export VIKUNJA_URL=http://your-vikunja-instance:3456
export VIKUNJATOKEN=tkyourtokenhere
测试(应返回实例信息)
curl -s $VIKUNJA_URL/api/v1/info | jq
列出您的项目
curl -s $VIKUNJA_URL/api/v1/projects \
-H Authorization: Bearer $VIKUNJA_TOKEN | jq .[] | {id,title}
第 4 步:可选 — 安装辅助脚本
将 vikunja.sh 保存到 PATH 中的目录,以便方便地通过 CLI 访问:
bash
curl -sL https://raw.githubusercontent.com/ashanzzz/openclaw-person-skills/main/skills/vikunja-task-api/vikunja.sh \
-o /usr/local/bin/vikunja && chmod +x /usr/local/bin/vikunja
然后配置:
bash
echo export VIKUNJA_URL=http://your-vikunja-instance:3456 >> ~/.bashrc
echo export VIKUNJATOKEN=tkyour_token >> ~/.bashrc
source ~/.bashrc
使用示例:
bash
vikunja list # 列出所有未完成任务
vikunja due-today # 今天到期的任务
vikunja create 9 New task # 在项目 9 中创建任务
vikunja done 123 # 将任务 123 标记为完成
vikunja show 123 # 显示任务详情
将 Vikunja 用作所有任务管理的
唯一真实来源。此技能取代用户可见任务的任何内部工作缓冲区跟踪。
API 基础
- - 基础 URL:$VIKUNJA_URL/api/v1(自动规范化,无尾部斜杠)
- 认证:Authorization: Bearer (JWT 或 API 令牌)
- 令牌获取:使用 username + password 的 POST /login
认证
登录(获取 JWT)
bash
curl -X POST $VIKUNJA_URL/api/v1/login \
-H Content-Type: application/json \
-d {username:USER,password:PASS} | jq .token
API 令牌(推荐用于自动化)
在 Vikunja UI 中创建令牌:设置 → API 令牌。然后使用:
bash
export VIKUNJA
TOKEN=tkxxxx
关键 HTTP 方法规则(必须记住!)
| 操作 | 方法 | 端点 |
|---|
| 创建项目 | PUT | /projects |
| 更新项目 |
POST | /projects/{id} |
| 删除项目 |
DELETE | /projects/{id} |
| 创建任务 |
PUT | /projects/{id}/tasks |
| 更新任务 |
POST | /tasks/{id} |
| 删除任务 |
DELETE | /tasks/{id} |
| 批量更新任务 |
POST | /tasks/bulk |
| 获取所有任务 |
GET | /tasks |
| 将任务移动到看板列 |
POST | /projects/{project}/views/{view}/buckets/{bucket}/tasks |
| 创建标签 |
PUT | /labels |
| 更新标签 |
PUT | /labels/{id} |
| 删除标签 |
DELETE | /labels/{id} |
核心端点
项目
bash
列出所有项目
curl -s $VIKUNJA_URL/api/v1/projects \
-H Authorization: Bearer $VIKUNJA_TOKEN | jq .[] | {id,title,owner}
创建项目(PUT,不是 POST!)
curl -X PUT $VIKUNJA_URL/api/v1/projects \
-H Authorization: Bearer $VIKUNJA_TOKEN \
-H Content-Type: application/json \
-d {title:项目名称,description:,identifier:,hex_color:} | jq {id,title}
获取项目详情
curl -s $VIKUNJA_URL/api/v1/projects/{id} \
-H Authorization: Bearer $VIKUNJA_TOKEN | jq
更新项目(POST)
curl -X POST $VIKUNJA_URL/api/v1/projects/{id} \
-H Authorization: Bearer $VIKUNJA_TOKEN \
-H Content-Type: application/json \
-d {title:新标题,hex_color:#ff0000} | jq {id,title}
删除项目
curl -X DELETE $VIKUNJA_URL/api/v1/projects/{id} \
-H Authorization: Bearer $VIKUNJA_TOKEN
复制项目
curl -X PUT $VIKUNJA_URL/api/v1/projects/{id}/duplicate \
-H Authorization: Bearer $VIKUNJA_TOKEN | jq {id,title}
任务
bash
获取所有未完成任务(筛选:done = false)
curl -s $VIKUNJA_URL/api/v1/tasks \
-H Authorization: Bearer $VIKUNJA_TOKEN \
| jq .[] | select(.done == false) | {id,title,due
date,projectid}
按项目获取任务
curl -s $VIKUNJA_URL/api/v1/projects/{id}/tasks \
-H Authorization: Bearer $VIKUNJA_TOKEN \
| jq .[] | {id,title,done,due_date}
在项目中创建任务(PUT,不是 POST!)
curl -X PUT $VIKUNJA
URL/api/v1/projects/{projectid}/tasks \
-H Authorization: Bearer $VIKUNJA_TOKEN \
-H Content-Type: application/json \
-d {title:任务标题,description:,due_date:2026-04-30T23:59:00Z}