# Send OpenKM Document Management to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openkm-rest",
    "name": "OpenKM Document Management",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/pes0/openkm-rest",
    "canonicalUrl": "https://clawhub.ai/pes0/openkm-rest",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/openkm-rest",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openkm-rest",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "openkm_cli.py",
      "README.txt",
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "openkm-rest",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-06T13:52:55.714Z",
      "expiresAt": "2026-05-13T13:52:55.714Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openkm-rest",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openkm-rest",
        "contentDisposition": "attachment; filename=\"openkm-rest-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "openkm-rest"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openkm-rest"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openkm-rest",
    "downloadUrl": "https://openagent3.xyz/downloads/openkm-rest",
    "agentUrl": "https://openagent3.xyz/skills/openkm-rest/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openkm-rest/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openkm-rest/agent.md"
  }
}
```
## Documentation

### OpenKM REST Skill

This skill provides a local CLI that accesses OpenKM exclusively via REST
(no SOAP, no CMIS).

The agent uses shell calls to openkm_cli.py.

### Environment Variables (Required)

OPENKM_BASE_URL=https://openkm.example.com   # WITHOUT /OpenKM
OPENKM_USERNAME=okm_admin
OPENKM_PASSWORD=secret

### List folder contents

python3 openkm_cli.py list --folder-path /okm:root

### Create folder structure

Creates parent folders if they don't exist:

python3 openkm_cli.py ensure-structure --parts Folder1 Subfolder

### Upload document

python3 openkm_cli.py upload --okm-path /okm:root/Folder/file.pdf --local-path /path/file.pdf

### Download document

python3 openkm_cli.py download --doc-id <uuid> --local-path /path/file.pdf

### Move document

Move a document to another folder (using folder UUID as target):

python3 openkm_cli.py move --doc-id <doc-uuid> --target-path <folder-uuid>

### Rename document

python3 openkm_cli.py rename --doc-id <uuid> --new-name new_filename.pdf

### Delete document

python3 openkm_cli.py delete --doc-id <uuid>

### Get document properties

Shows title, description, keywords, categories, and other metadata:

python3 openkm_cli.py properties --doc-id <uuid>

### Set title and description

python3 openkm_cli.py set-properties --doc-id <uuid> --title "My Title" --description "My description"

### Add keyword

python3 openkm_cli.py add-keyword --doc-id <uuid> --keyword "Invoice"

### Remove keyword

python3 openkm_cli.py remove-keyword --doc-id <uuid> --keyword "Invoice"

### Add category

Category ID can be a UUID or path (e.g., /okm:categories/Finance):

python3 openkm_cli.py add-category --doc-id <uuid> --category-id <category-uuid-or-path>

### Remove category

python3 openkm_cli.py remove-category --doc-id <uuid> --category-id <category-uuid-or-path>

### Get version history

python3 openkm_cli.py versions --doc-id <uuid>

### Download specific version

python3 openkm_cli.py download-version --doc-id <uuid> --version 1.0 --local-path /path/file_v1.pdf

### Restore version

Restores document to a previous version:

python3 openkm_cli.py restore-version --doc-id <uuid> --version 1.0

### Search by content (full-text)

python3 openkm_cli.py search-content --content "invoice hosting"

### Search by filename

python3 openkm_cli.py search-name --name "hetzner"

### Search by keywords

python3 openkm_cli.py search-keywords --keywords "Invoice,Hosting"

### General search with filters

python3 openkm_cli.py search --content "server" --author "john.doe" --path "/okm:root"

### Workflows

Note: Workflow features require workflows to be configured in OpenKM.
If workflows are not enabled, these commands will return 404.

### List available workflows

python3 openkm_cli.py workflows
python3 openkm_cli.py workflows --name "approval"

### Start a workflow

python3 openkm_cli.py start-workflow --workflow-uuid <workflow-uuid> --doc-id <doc-uuid>

### List tasks

# Tasks for a document
python3 openkm_cli.py tasks --doc-id <uuid>

# Tasks for an actor
python3 openkm_cli.py tasks --actor-id john.doe

### Complete a task

python3 openkm_cli.py complete-task --task-id <task-id> --transition "approve"

### Add comment to task

python3 openkm_cli.py comment-task --task-id <task-id> --message "Review complete"

### Assign task to actor

python3 openkm_cli.py assign-task --task-id <task-id> --actor-id john.doe

### Notes

The API expects Content-Type: application/xml for POST requests with path as body
Paths must be URL-encoded when passed as query parameters
The fldId, docId, dstId, nodeId, catId parameters accept either UUIDs or paths (e.g., /okm:root/Folder)
For move operations, the target-path should be the UUID of the destination folder
For rename operations, provide only the new filename (not full path)
Keywords are free-form text tags; categories are predefined in OpenKM
Version names are typically numbers like 1.0, 1.1, 2.0, etc.
Search results include a relevance score
Workflow features require proper workflow configuration in OpenKM

### API Reference

The skill uses the OpenKM 6.3 REST API endpoints:

Folders:

GET /folder/getChildren - List folder contents
POST /folder/createSimple - Create folder

Documents:

POST /document/createSimple - Upload document
GET /document/getContent - Download document
GET /document/getProperties - Get document metadata
PUT /document/setProperties - Update title/description
PUT /document/move - Move document
PUT /document/rename - Rename document
DELETE /document/delete - Delete document

Versioning:

GET /document/getVersionHistory - Get version history
PUT /document/restoreVersion - Restore to version
GET /document/getContentByVersion - Download specific version

Properties/Metadata:

POST /property/addKeyword - Add keyword
DELETE /property/removeKeyword - Remove keyword
POST /property/addCategory - Add category
DELETE /property/removeCategory - Remove category

Search:

GET /search/find - General search with filters
GET /search/findByContent - Full-text search
GET /search/findByName - Filename search
GET /search/findByKeywords - Keyword search

Workflows:

GET /workflow/getAllProcessDefinitions - List workflows
GET /workflow/getAllProcessDefinitionsByName - Find workflow by name
POST /workflow/runProcessDefinition - Start workflow
GET /workflow/findTaskInstances - Get tasks by document
GET /workflow/findTaskInstancesByActor - Get tasks by actor
POST /workflow/setTaskInstanceValues - Complete task
POST /workflow/addTaskInstanceComment - Add comment
POST /workflow/setTaskInstanceActor - Assign task
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: pes0
- Version: 1.0.1
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-06T13:52:55.714Z
- Expires at: 2026-05-13T13:52:55.714Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/openkm-rest)
- [Send to Agent page](https://openagent3.xyz/skills/openkm-rest/agent)
- [JSON manifest](https://openagent3.xyz/skills/openkm-rest/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/openkm-rest/agent.md)
- [Download page](https://openagent3.xyz/downloads/openkm-rest)