草图信息图
你负责制作一张页面,用于解释一个来源:包含标题、版块网格以及标识来源的页脚。每个版块通过一个小型图表和一两个句子来阐述一个要点。你将页面编写为一个 JSON 规范;scripts/build.mjs 会负责布局网格、使用 Excalidraw 自身的渲染器绘制、进行检查,并生成 PNG 和可编辑的 .excalidraw 文件。
绘图是简单部分。只有当每个版块都如实反映了来源内容,并且用比来源更少的文字表达清楚时,这张页面才值得发布。
1. 阅读来源并规划页面
完整阅读所有内容。然后在你的回复中,在编写任何 JSON 之前,写出规划:
- 标题: 用两到五个词概括主题。副标题: 一行话说明作者是谁以及相关内容(例如:“一位交通规划者论为何在小城市巴士优于新建轨道线路”)。
- 形状: 除非用户指定了其他形状,或者他们的示例页面使用了不同形状,否则使用 3:4 纵向(1500×2000)。其他格式请参考 references/spec.md。
- 六到七个版块,足以填满页面。 一张 3:4 的页面大约可以容纳四行:三行是每行两个半版块,以及一个全宽版块。每个版块都有一个能说明要点(而不是仅标注主题)的标题、一个图画创意以及最多两句话(大约 30 个词)的摘要。全宽版块用于展示最丰富的示例。
- 页脚: 来源信息(作者、标题、日期)以及来源给出的任何说明,例如“设计笔记和原型,非已发布产品”。
如果来源篇幅较长或角度不明确,等待用户对规划给出许可;否则直接进行下一步。
如果用户分享了示例页面: 首先列出其版块,并在你的规划中保留每一个,除非用户要求减少。仅仅模仿外观而减少版块是导致效果不如原图的最常见原因。
忠实于来源。 页面上出现的每个数字、名称和论断都必须能在来源中找到。对观点要注明出处(“作者认为……”)。当你为某个要点添加自己的图示时,要在页面上说明(例如“一个说明可能发生情况的虚构示例”)。与其为无法诚实绘制的内容编造图形,不如直接省略。
2. 为每个版块选择图画
每个版块使用一个图表,从 references/patterns.md 中的模式构建:步骤链、前后对比、多合一、循环回溯、选项比较、条形图、时间线。选择与论断最匹配的模式,而不是看起来最花哨的那个。如果版块要点是一个列表,可以用三个带标签的方框表示。绘图中的文字应控制在几个词之内,切勿使用完整句子。
颜色具有含义,在整个页面上保持一致:绿色代表良好或默认路径,橙色代表风险或变化,红色代表失败,蓝色代表被操作的对象,紫色代表代理或模型,黄色代表页面上最重要的单个标注。灰色是中性色。颜色名称请参见 references/spec.md。
3. 编写规范并构建
将每个页面保存在自己的文件夹中,文件名为 page.json;如果用户未指定保存位置,请询问。格式及每个元素类型均已在 references/spec.md 中定义;assets/example.json 是一个完整的页面示例。然后,在此技能文件夹中运行:
node scripts/build.mjs <folder>/page.json
它会打印每个版块的绘图区域宽度(在其中绘制;高度自适适应),并在规范文件旁边生成 page.png 和 page.excalidraw 文件。如果缺少运行时环境,它会提示如何安装。
4. 检查,然后修复
- 修复每一个警告。 退出代码 3 表示页面构建时产生了警告:内容高度超过页面(它会提示需要裁减多少像素)、元素超出其版块边界、与其他元素重叠、有箭头穿过其文字、箭头太短无法被识别为一个箭头、由于标签文字容纳不下导致方框尺寸变大、或使用了 Excalifont 字体不支持的字符(如 → 箭头、对勾、表情符号),此类字符会以系统字体渲染。应将箭头和对勾等作为元素来绘制。
- 然后查看 PNG 图片(打开图像文件)并检查每个版块:视线是否按照箭头指示的正确方向移动、每个箭头和线条是否都有明确的起点和终点、箭头头是否相互清晰独立、是否有文字紧贴边框显得拥挤、同一行的版块看起来是否平衡、标题是否与图画匹配?页面是否饱满,还是某个版块内容空洞?修正规范后再次构建。通常需要两到三轮。
- 如果存在示例图片,将两者并排比较,逐版块对比:版块内容、绘图类型、密度是否相似。说明仍然存在的差异。
- 再次对照来源(步骤 1),在绘制的页面上逐字核对。
5. 交付
向用户提供 PNG 文件和 .excalidraw 文件的路径,以及规划中的一行摘要。告知 .excalidraw 文件可在 excalidraw.com 或在 Excalidraw 应用中打开进行手动编辑,并且在手动编辑后,该文件而非 page.json 才是最终的页面:因为重新构建会覆盖 page.json 生成的结果。
将他人已发布的页面作为私人学习或测试来复现是可以的;但不要提供此类页面用于公开发布。他人的布局、措辞和品牌标识归原作者所有。