JSON Canvas
Documents skill, available on Zeplik
JSON Canvas is a ready-to-run documents skill on Zeplik. Produces valid JSON Canvas 1.0 .canvas files with nodes, edges, groups, and connections. Ask in plain language and Zeplik applies the skill's method for you inside the conversation, on whichever AI model you prefer. It returns a structured code you can keep and reuse: Valid .canvas JSON file -- nodes[] and edges[] arrays per JSON Canvas 1.0 spec.
The JSON Canvas skill loads automatically when your request matches it, or you can invoke it directly by typing /json-canvas in any chat. It works with attachments, connectors, and any model that supports the task, so you get the same expert method every time without setting anything up.
What the JSON Canvas skill can do
- Generate valid JSON Canvas 1.0 .canvas files with nodes and edges
- Create text, file, link, and group nodes with correct required attributes
- Connect nodes with edges including sides, arrows, colors, and labels
- Validate IDs, references, and attribute values against the spec rules
Try these prompts on Zeplik
Pick a prompt to open it in the Zeplik app. If you are not signed in yet, your prompt is waiting for you the moment you do.
How the JSON Canvas skill works
JSON Canvas
Create and edit valid JSON Canvas files (.canvas), the open format for infinite-canvas data used in Obsidian and other apps, per the JSON Canvas 1.0 spec.
File Structure
Two top-level arrays, both optional:
{ "nodes": [], "edges": [] }
Nodes
Four node types: text (Markdown content), file (file/attachment reference), link (external URL), group (visual container). Array order sets z-index: first = bottom layer, last = top.
Generic attributes (all nodes): id (unique string, required), type (required), x, y, width, height (integer pixels, required), color (optional).
Type-specific attributes:
| Type | Extra attributes |
|---|---|
text | text (required) -- plain text with Markdown |
file | file (required) path; subpath (optional, starts with #) |
link | url (required) external URL |
group | label, background (image path), backgroundStyle (cover/ratio/repeat) -- all optional |
{ "id": "6f0ad84f44ce9c17", "type": "text", "x": 0, "y": 0,
"width": 400, "height": 200, "text": "# Hello\n\n**Markdown** content." }
Edges
Lines connecting nodes.
| Attribute | Required | Default | Description |
|---|---|---|---|
id | Yes | - | Unique identifier |
fromNode | Yes | - | Start node ID |
toNode | Yes | - | End node ID |
fromSide / toSide | No | - | top/right/bottom/left |
fromEnd | No | none | none/arrow |
toEnd | No | arrow | none/arrow |
color | No | - | canvasColor |
label | No | - | Edge label |
{ "id": "0123456789abcdef", "fromNode": "6f0ad84f44ce9c17", "fromSide": "right",
"toNode": "a1b2c3d4e5f67890", "toSide": "left", "toEnd": "arrow", "label": "leads to" }
Colors
canvasColor is either a hex string ("#FF0000") or a preset "1"-"6" (1 red, 2 orange, 3 yellow, 4 green, 5 cyan, 6 purple). Preset values are intentionally undefined so apps can use their own brand colors.
Complete Example
{
"nodes": [
{ "id": "8a9b0c1d2e3f4a5b", "type": "text", "x": 0, "y": 0,
"width": 300, "height": 150, "text": "# Main Idea" },
{ "id": "1a2b3c4d5e6f7a8b", "type": "text", "x": 400, "y": -100,
"width": 250, "height": 100, "text": "## Point A" }
],
"edges": [
{ "id": "3c4d5e6f7a8b9c0d", "fromNode": "8a9b0c1d2e3f4a5b",
"fromSide": "right", "toNode": "1a2b3c4d5e6f7a8b", "toSide": "left" }
]
}
IDs & Layout
- IDs are unique strings; Obsidian uses 16-char lowercase hex (e.g.
6f0ad84f44ce9c17). - Positioning: coordinates may be negative;
xincreases right,yincreases downward; position is the node's top-left corner. - Sizing: small text 200-300 x 80-150, medium 300-450 x 150-300, large 400-600 x 300-500.
- Spacing: 20-50px padding inside groups, 50-100px between nodes, align to a 10/20px grid.
Validation Rules
- All
idvalues unique across nodes and edges. fromNode/toNodereference existing node IDs.- Required fields present per node type.
typeintext/file/link/group.backgroundStyleincover/ratio/repeat.fromSide/toSideintop/right/bottom/left.fromEnd/toEndinnone/arrow.- Colors are
"1"-"6"or valid hex.
Output
Produce a valid .canvas JSON file with well-formed nodes and edges arrays, unique IDs, resolved references, and a sensible grid-aligned layout.
How to use the JSON Canvas skill
Sign in to Zeplik
Create a free Zeplik account or sign in. New accounts start with free credits, so you can try the JSON Canvas skill right away.
Describe your documents task
Ask in plain language, or type /json-canvas to invoke the skill directly. Zeplik recognizes the JSON Canvas skill and applies its method.
Review and refine the result
Zeplik returns a structured code you can edit, download, and reuse. Ask follow-ups to refine it.
Source and credit
- Author
- davila7 community
- License
- MIT
Adapted from the open-source davila7/claude-code-templates project and tuned to run natively on Zeplik. View source on GitHub.
Frequently asked questions
- What is the JSON Canvas skill?
- JSON Canvas is a ready-to-run documents skill on Zeplik. Produces valid JSON Canvas 1.0 .canvas files with nodes, edges, groups, and connections. Ask in plain language and Zeplik applies the skill's method for you inside the conversation, on whichever AI model you prefer. It returns a structured code you can keep and reuse: Valid .canvas JSON file -- nodes[] and edges[] arrays per JSON Canvas 1.0 spec.
- How do I use JSON Canvas on Zeplik?
- Sign in to Zeplik and ask in plain language, or type /json-canvas in any chat to invoke it directly. The skill applies its method and returns a result you can refine in the same conversation.
- Which AI model does the JSON Canvas skill use?
- Any model you choose. Zeplik works across every model in one chat, so the JSON Canvas skill runs on your preferred model for the task.
- Where does the JSON Canvas skill come from?
- The JSON Canvas skill is adapted from the open-source davila7/claude-code-templates project (MIT) and tuned to run natively on Zeplik. The original source is linked on this page.
- How much does the JSON Canvas skill cost?
- Using the skill is free to start. You only spend Zeplik credits when the assistant runs, and new accounts begin with free credits.
Related documents skills
- Excel & Spreadsheet BuilderUse when the user wants to create, edit, analyze, or format spreadsheets (.xlsx, .csv, .tsv) — "build me a spreadsheet", "add formulas to this xlsx", "clean up this csv", "style this Excel file" — preserving formulas, references, and formatting via openpyxl and pandas.
- File ConversionUse when converting file formats -- csv/json, markdown/word, images, audio, ebooks -- via artifact or exact tool steps. Not for spreadsheet work (use spreadsheet) or PDF edits (use pdf-processing).
- PDF Form FillerUse when the user wants to fill out a PDF form (.pdf) — tax, insurance, bank, or application forms — placing each value precisely; handles flat/scanned PDFs, comb fields, and AcroForm fields, leaving signatures blank. Trigger: "fill in this pdf". Not for extracting PDF content (use pdf-processing).
- PDF ReaderUse when the user wants to open and view a PDF (.pdf) interactively and collaborate on it visually — annotate, highlight, stamp, place signature or initials, review markup together. Not for text or table extraction (use pdf-processing) or precise form filling (use pdf-forms).
- PDF ToolkitUse when the user wants to process or extract from PDF files (.pdf) — pull out tables or text, OCR scanned pages, merge/split, analyze form structure, validate, or batch-process many PDFs. Trigger: "extract the tables from this pdf", "OCR this scan". Not for filling in form values (use pdf-forms).
- Word Document BuilderUse when the user wants to read, create, or edit Word documents (.docx) — "write this up as a Word doc", "edit this docx", "convert this to Word" — especially when formatting or layout fidelity matters; uses python-docx plus a bundled render script for visual checks. Not for presentations (use slides).
More on Zeplik
Try JSON Canvas on Zeplik
Every model, one chat. Bring the JSON Canvas skill into your next conversation and let the assistant do the work.