Obsidian Canvas 稳定生成提示词(Advanced Canvas 1.0-1.0)
面向大模型的「一次成型、可直接导入」Canvas 生成规范与模板。严格遵循 Extras/Documents/Obsidian advanced canvas 规范 与本库规则,避免常见报错(如 id 出现短横杆 -、JSON 引号未转义、坐标与尺寸不为整数、文件路径不带后缀、非法字段、尾随逗号等)。
硬性规则(必须满足,否则视为不合格)
- JSON 格式:输出必须是「仅包含一个 JSON 对象」的代码块,可被
JSON.parse直接解析;不得含注释、尾随逗号或多余文本。 - 顶层结构:只允许键
nodes、edges(可选metadata)。若含metadata,必须包含{"version":"1.0-1.0"}。 - ID 规范:
- 字符集:
^[A-Za-z][A-Za-z0-9_]*$,只允许字母数字与下划线;禁止短横杆-。 - 前缀:
n_(普通节点)、g_(群组)、e_(边)。 - 唯一性:全局唯一且不碰撞;建议由含义性别名的
snake_case生成,如n_feature_store、g_models、e_hub_models。
- 字符集:
- 节点字段必备:
id、type、x、y、width、height;x/y/width/height为整数。type ∈ {"text","file","link","group"}。 - 文本内容转义:
text内部若含英文引号"必须写成\"。如需强制换行,使用\n(两个空格加换行)以保证 Markdown 严格换行;代码块与公式请按 JSON 字符串正常转义换行。 - 文件引用(file 节点):
file必须为相对路径且带正确后缀(如.md、.canvas、.base、.excalidraw、图片等)。禁止绝对路径。 - 链接(link 节点):必须包含
url;可选title。 - 群组(group 节点):可选
label;collapsed可选。尽量只用默认形状,不要设置styleAttributes.shape(避免显示问题)。 - 颜色:可用
"1".."6"预设色或十六进制,如需要;不强制。 - 边(edges):
id、fromNode、fromSide、toNode、toSide必填;fromSide/toSide ∈ {top,right,bottom,left};可选label、color。不要使用非法取值。 - 安全白名单:只使用规范字段;不要输出未在规范内的自定义字段。
ID 生成与命名建议
- 节点:
n_<语义>;群组:g_<语义>;边:e_<起点语义>_<终点语义>。 - 语义名用
snake_case,英文单词优先;如需多词,按下划线连接:n_loss_landscape、g_training、e_model_loss。 - 冲突处理:若名称冲突,追加结尾
_v2、_v3。
布局与尺寸基线(可按需调整)
- 网格步长:
x/y以 200–320 为步长,避免重叠;中心原点建议附近为核心节点。 - 常用尺寸:
- 文本节点:
width: 480–720,height: 320–560。 - 群组:
width: 1200–2200,height: 700–1100。
- 文本节点:
- 不使用
dynamicHeight,保持稳定渲染。
生成流程(让模型严格执行)
- 列出节点与关系(含类型与简要内容)。
- 依据命名规范生成去重的
id集合(无-)。 - 规划坐标:按网格放置,避免重叠;群组先放,再放组内节点。
- 填充字段:数值字段均为整数,缺省字段不输出。
- 文本清洗:转义
\",多行用\n,需要硬换行处用\n。 - 输出唯一 JSON 对象,不要附加解释。
- 自检:
- JSON 可被
JSON.parse。 - 每个
id均匹配^[A-Za-z][A-Za-z0-9_]*$。 type、fromSide/toSide取值合法。- 文件路径均为相对且含后缀。
- 无尾随逗号与多余键。
- JSON 可被
指令模板(直接复制使用)
将下面整段作为你的提示词前缀,后面只需要补充主题与要素清单即可:
你是一位 Obsidian 高级画布(Advanced Canvas 1.0-1.0)制作者。请输出「仅包含一个 JSON 对象」的代码块,严格遵守:
1) 只包含 `nodes`、`edges`(可选 `metadata.version = "1.0-1.0"`);
2) 所有 `id` 符合 `^[A-Za-z][A-Za-z0-9_]*$`,不得含 `-`;
3) 节点含 `id,type,x,y,width,height` 且为整数;`type ∈ {text,file,link,group}`;
4) 文本内英文引号写成 `\"`;换行用 `\n`,需要硬换行用 ` \n`;
5) file 节点 `file` 为相对路径且带后缀(.md/.canvas/.base/.excalidraw/图片等);
6) link 节点含 `url`(可选 `title`);
7) edges 含 `id,fromNode,fromSide,toNode,toSide`,side 必须在 {top,right,bottom,left};
8) 仅用规范字段,无注释、无尾逗号、可被 JSON.parse;
9) 不使用 `styleAttributes.shape`(保持默认形状)。
约束下的布局建议:按 200–320 像素网格布局,避免重叠;群组先放,再放子节点;常用尺寸:文本 480–720×320–560,群组 1200–2200×700–1100。
输出要求:只输出一个 JSON 代码块,不要解释或补充文本。
主题与要素清单:
- 主题/目标:<一句话目标>
- 节点:列出需要的节点(类型 text/file/link/group)与简要内容或文件相对路径
- 关系:列出关键连线(起点 → 终点 + 标签/颜色建议)
- 颜色与分区(可选):若需颜色编号 1–6 的风格映射最小可用输出模板(占位示例)
将下方示例改写为你的实际内容;保留结构与字段规范即可。
{
"nodes": [
{ "id": "g_area", "type": "group", "x": -800, "y": -600, "width": 1600, "height": 1000, "label": "Area" },
{ "id": "n_center", "type": "text", "x": -80, "y": -80, "width": 560, "height": 400, "text": "# Center\n概览内容 \n使用说明" },
{ "id": "n_doc", "type": "file", "x": -640, "y": -400, "width": 520, "height": 320, "file": "Cards/示例.md" },
{ "id": "n_link", "type": "link", "x": 600, "y": -400, "width": 300, "height": 80, "url": "https://example.com", "title": "External" }
],
"edges": [
{ "id": "e_center_doc", "fromNode": "n_center", "fromSide": "left", "toNode": "n_doc", "toSide": "right", "label": "reference" },
{ "id": "e_center_link", "fromNode": "n_center", "fromSide": "right", "toNode": "n_link", "toSide": "left" }
]
}常见错误与快速自检
- id 包含
-:一律替换为下划线_,并确保^[A-Za-z][A-Za-z0-9_]*$。 - 未转义引号:
"text": "He said: \"ok\""。 - 数值为字符串/小数:
x/y/width/height必为整数。 - 尾随逗号/注释:严格 JSON,无注释、无多余键。
- 非法 side/shape:side 仅
{top,right,bottom,left};不要设置形状。 - 文件路径不带后缀/绝对路径:改为相对路径并补后缀。
进阶提示(可选)
- 若需
metadata:
{ "metadata": { "version": "1.0-1.0", "frontmatter": { "title": "Canvas Title" } }, "nodes": [], "edges": [] }- 颜色风格:使用
"1".."6"进行区域配色,与本库既有画布风格一致。 - 与笔记互链:在
text中自由使用[[双链]],渲染时按 Obsidian 规则显示。