canvas

知识管理 / 效率 知识管理 · Obsidian Obsidian画布 2 文件 EN 原文

创建维护 Obsidian JSON Canvas 画板

Create, inspect, and update Obsidian JSON Canvas boards with text, file, link, group, and edge nodes. Use for canvas status, canvas lists, visual maps, zones, spatial layouts, adding vault notes or me

说明语言:英文

原文描述EN

Create, inspect, and update Obsidian JSON Canvas boards with text, file, link, group, and edge nodes. Use for canvas status, canvas lists, visual maps, zones, spatial layouts, adding vault notes or media to a .canvas file, and requests such as create canvas, add to canvas, or put this on the canvas.

来源AgriciDanielclaude-obsidian ↗ 查看原文件 ↗版权归原作者,请遵循原仓库许可
安装
npx skills add https://github.com/AgriciDaniel/claude-obsidian --skill canvas

需要已安装 skills CLI。也可以直接从源仓库 clone。

在星云中查看 ↗
SKILL.md 原文

Canvas

Treat a canvas as a vault-scoped JSON Canvas document. Keep reads read-only and route every requested mutation through one recoverable transaction.

Resolve the installed product root from this skill's own location, not from the vault or current working directory:

PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"

Every ../wiki/references/ link in this file resolves the same way, relative to this skill's own directory under $PRODUCT_ROOT, never relative to the selected vault's wiki/ directory.

Choose the syntax source

Prefer a separately installed kepano/obsidian-skills json-canvas skill for format details. Otherwise read references/canvas-spec.md. The open standard is JSON Canvas 1.0.

Use this skill for vault workflow and transaction safety even when an upstream syntax skill is available.

Scope

Read-only operations

For status or list requests, parse the selected .canvas files and report node counts, group labels, broken edge endpoints, and missing vault-relative file targets. If the default canvas is absent, report that fact and offer a creation preview; do not create it during a status request.

Draft a mutation

  1. Read the entire canvas and any catalog target. Record each expected SHA-256, or null for a file that must be absent.
  2. Preserve unknown JSON fields and existing array order. The node array is bottom-to-top z-order.
  3. Draft the requested nodes or edges:
  4. Give every node and edge a unique ID. Prefer a random 16-character lowercase hexadecimal ID and verify it is unused.
  5. Require integer x, y, width, and height values for every node.
  6. Use text, file, link, or group exactly as defined by JSON Canvas.
  7. Require every fromNode and toNode to reference an existing or newly drafted node.
  8. Position new content deliberately. A group is a visual container, not a parent. Use 20 px inner padding and 40 px gaps, wrap to a new row when needed, and preview any group expansion.
  9. Serialize valid UTF-8 JSON with top-level nodes and edges arrays.

Minimal node examples:

{
  "nodes": [
    {
      "id": "6f0ad84f44ce9c17",
      "type": "text",
      "text": "# Research map\n\nA concise orientation card.",
      "x": 0,
      "y": 0,
      "width": 400,
      "height": 180
    },
    {
      "id": "a1b2c3d4e5f67890",
      "type": "file",
      "file": "wiki/concepts/Contextual Retrieval.md",
      "x": 460,
      "y": 0,
      "width": 400,
      "height": 240
    }
  ],
  "edges": []
}

Use file plus optional subpath: "#Heading" for notes, images, PDFs, and other vault files. Use url only on a link node. Escape line breaks in JSON strings as \n, not as literal backslash-plus-n text.

Preview and apply

Validate before showing the preview:

Build one claude-obsidian.transaction.v1 bundle with operation type canvas. Include the canvas and the catalog in that same bundle when the catalog changes. Read operation-transactions.md, then inspect the bundle before applying it:

python3 "$CORE" transaction inspect BUNDLE --vault VAULT
# Set APPROVAL_SHA256 to the inspect result's approval_sha256 after review.
python3 "$CORE" transaction apply BUNDLE --vault VAULT \
  --approved-plan-sha256 "$APPROVAL_SHA256"

For removals, replacements, renames, or other destructive changes, obtain explicit consent after presenting the preview. Report the operation ID, exact changed paths, board name, node IDs, and final positions. Do not commit Git.

同类技能
academic-paperacademic-paper-revieweracademic-pipelineautoresearchdeep-researchdefuddleknowledge-absorberobsidian-bases
本页内容来自开源项目 AgriciDaniel, 版权归原作者所有。
本站仅作技能索引与分享,所有 Skill 版权归其原作者所有。