Install
openclaw skills install @thcjp/canvas-json-handler-freeopenclaw skills install @thcjp/canvas-json-handler-free本工具用于创建、编辑和校验符合JSON Canvas 1.0规范的.canvas文件,帮助AI Agent在没有图形界面的情况下,也能精确操作可视化画布的结构化数据。
JSON Canvas是一种开放的结构化画布格式,文件本质为JSON,顶层包含nodes(节点数组)与edges(边数组)两个可选字段。本工具围绕该规范提供完整的指令集,覆盖从零创建画布、增量追加节点、连接节点、编辑属性到完整校验的全流程。
输入: 用户提供节点操作所需的指令和必要参数。 处理: 解析节点操作的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回节点操作的响应数据,包含状态码、结果和日志。
fromNode/toNode引用节点ID建立连接输入: 用户提供边操作所需的指令和必要参数。 处理: 解析边操作的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回边操作的响应数据,包含状态码、结果和日志。
fromNode/toNode必须指向已存在节点)输入: 用户提供校验能力所需的指令和必要参数。 处理: 解析校验能力的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回校验能力的响应数据,包含状态码、结果和日志。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Canvas、文件的轻量级处理、支持节点、分组的创建与编辑、处理工具专注于、规范文件的读写、校验与维护、适用于知识图谱、思维导图、流程编排等可视化、核心能力、Use、when、需要数据分析、报表生成、统计洞察、数据可视化时使用、不适用于实时流数、据处理、适用于独立开发者、企业团队和自动化、工作流场景等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
| 场景 | 角色 | 价值 |
|---|---|---|
| 知识图谱构建 | 研究者 | 将概念关系结构化为可视化画布 |
| 项目看板初始化 | 项目经理 | 快速生成任务依赖图骨架 |
| 教学课件组织 | 教师 | 将讲义、资源、外部链接整合到画布 |
| 流程图起草 | 产品经理 | 自动生成带方向边的流程骨架 |
| 笔记关联梳理 | 知识工作者 | 建立笔记间的语义连接 |
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 画布JSON处理免费版处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
{
"nodes": [],
"edges": []
}
将上述内容写入my-canvas.canvas文件即可获得一个合法的空画布。
{
"id": "6f0ad84f44ce9c17",
"type": "text",
"x": 0,
"y": 0,
"width": 400,
"height": 200,
"text": "# 欢迎使用\n\n这是**Markdown**内容。"
}
{
"id": "0123456789abcdef",
"fromNode": "6f0ad84f44ce9c17",
"fromSide": "right",
"toNode": "a1b2c3d4e5f67890",
"toSide": "left",
"toEnd": "arrow",
"label": "指向"
}
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤。
| 属性 | 必填 | 类型 | 说明 |
|---|---|---|---|
id | 是 | string | 16位十六进制唯一标识 |
type | 是 | string | text/file/link/group |
x | 是 | integer | 横坐标(像素) |
y | 是 | integer | 纵坐标(像素) |
width | 是 | integer | 宽度(像素) |
height | 是 | integer | 高度(像素) |
color | 否 | canvasColor | 预设1-6或十六进制 |
text | text必填 | string | Markdown文本 |
file | file必填 | string | 文件路径 |
url | link必填 | string | 外部链接 |
label | group可选 | string | 分组标签 |
| 节点类型 | 建议宽度 | 建议高度 |
|---|---|---|
| 小文本 | 200-300 | 80-150 |
| 中文本 | 300-450 | 150-300 |
| 大文本 | 400-600 | 300-500 |
| 文件预览 | 300-500 | 200-400 |
| 链接预览 | 250-400 | 100-200 |
| 预设值 | 颜色 |
|---|---|
"1" | 红 |
"2" | 橙 |
"3" | 黄 |
"4" | 绿 |
"5" | 青 |
"6" | 紫 |
始终生成16位小写十六进制字符串作为ID。建议使用时间戳与随机数组合,例如timestamp_hex + random_hex,确保跨会话唯一性。
x向右递增,y向下递增,位置为左上角在JSON字符串中使用\n表示换行,不要使用字面量\\n,否则会被渲染为反斜杠加字母n。
.canvas文件nodes数组A:优先检查JSON语法合法性,再校验所有fromNode/toNode是否引用了已存在的节点ID。悬空引用是导致渲染失败的最常见原因。
A:对nodes和edges两个数组的所有id字段做去重统计,重复项即为冲突源。建议在追加节点前先建立现有ID的集合索引。
A:确认换行符使用的是\n而非\\n,并检查Markdown语法是否被JSON转义破坏。例如双星号**在JSON中无需转义,但反斜杠必须写成\\。
A:分组节点本身不维护子节点列表,而是通过坐标范围实现视觉包含。将子节点的x/y设置在分组节点的边界内即可。
A:颜色预设值(1-6)的具体RGB由渲染应用自定义,不同应用可能呈现不同色相。如需精确控制,使用十六进制颜色值如"#FF5733"。
完成画布创建或编辑后,逐项核对:
id在节点与边中全局唯一fromNode与toNode均指向已存在节点type取值属于text/file/link/groupfromSide/toSide取值属于top/right/bottom/leftfromEnd/toEnd取值属于none/arrow本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:canvas-json-handler-pro
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent平台内置LLM提供 |
| JSON解析器 | 运行时 | 必需 | Node.js/Python内置 |
| Obsidian | 应用 | 可选 | 用于可视化渲染与交互 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "画布JSON处理免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "canvas json handler"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}