Files
edgeever/docs/poster-notes.zh-CN.md
T

6.4 KiB
Raw Blame History

海报笔记

English

通过「更多类型 → 海报(Beta)」创建可编辑海报。在普通笔记操作菜单选择「制作海报」,会用标题及选中文字(未选中时取正文前 240 字)创建独立海报笔记,原笔记保留。

Web 和桌面端打开独立设计工作台,提供 40 套可选模板、12 种平台画幅、内置的中英文字体、主标题/副标题/标签自动排版及真实渲染的模板预览。版式引擎改编自 MIT 许可的 Qiaomu Design,源码及署名位于 apps/web/src/lib/poster-design;字体许可随字体文件提供。转换矢量模板时省略生成的栅格颗粒纹理。

画布支持文字、标签、形状、曲线、手绘和图片;多选、编组、对齐吸附、缩放和平移;图层排序、显示隐藏和锁定;字体排版、描边、阴影、渐变及图片适应/裁切/翻转。可按 1~3 倍输出 PNG、JPEG 或 WebP(每边不超过 8192 像素),复制 PNG 或插入原笔记。直接在画布上编辑文字,模板面板不再提供独立文案表单。应用模板时沿用当前画布文案重新排版,并保留独立添加的元素;撤销可恢复之前的布局。直接编辑元素时保留当前排版。

AI 统一使用通用助手右侧栏,海报工作台不再提供独立 AI 面板。ACP、外部 MCP 和内置助手共用海报工具。本功能不生成 AI 图片。

AI 设计工具

  • get_poster_capabilities 查询与编辑器共用的字体、平台目录、可选浏览器设计模板,以及服务端模板、可编辑字段、操作限制和渲染可用性。浏览器模板编号与四种基础服务端模板属于不同能力,不能互换其版式。
  • create_poster_memo 用短文案和基础模板创建合法可编辑源稿。list_memos、search_memos 支持 poster: true 筛选;get_poster 返回画布几何与元素编号。
  • update_poster 必须传入 get_poster 返回的版本,支持 dryRun 预演。edits 开放字体、斜体、下划线、行距、字距、显示隐藏、图片裁剪/翻转、形状、描边、阴影及渐变;可将阴影、渐变、裁剪或标签样式设为 null 移除。图片必须是属于当前笔记的有效图片资源。
  • 有序 operations 支持元素新增、删除、复制,图层排序,编组/解除编组,未旋转元素相对画布对齐,以及显式锁定/解锁。先执行字段修改,再执行操作,因此修改锁定元素的字段前需在先前调用中解锁;同一次操作列表也可以显式解锁后再执行后续操作。canvas 可选择是否缩放元素,platform 使用共用平台规格;拒绝缩放锁定元素。
  • operations: [{op: "apply_template", template: "bold"}] 用基础服务端模板替换全部元素,保留主要文案。必须有用户明确换模板的请求,存在锁定元素时拒绝。与浏览器编辑器的模板应用不同,此操作不会保留独立添加的装饰元素。
  • get_poster_preview 向 MCP 和多模态助手返回当前已保存预览的真实图片内容,修改后清除旧预览引用。没有预览时返回 browser_render_required,工具不会重新渲染图片。export_poster 导出可编辑 JSON 源稿或当前已保存预览,不是全分辨率重渲染。读取预览需要 read:resources 和 read:memos,上限 4 MiB。新图片由在线桌面/Web 客户端和内置字体渲染,服务端不运行 Fabric。
  • request_poster_render 排队生成新 PNG 预览(长边最高 1600 像素、最多 4 MiB);可选 templateId 应用完整设计模板,像编辑器一样保留独立添加的装饰。需要 write:memos 和 write:resources,传入 get_poster 返回的版本。已登录桌面/Web 工作区每 15 秒领取任务,无需打开该海报。get_poster_render_job 返回 pending/rendering/completed/failed,只有完成才代表渲染成功。无在线客户端时等待,未领取任务 10 分钟过期,领取后 2 分钟过期。跨客户端独占领取,保存事务同时校验租约和笔记版本,冲突不会覆盖新源稿。锁定元素阻止更换模板。完成/失败任务保留七天,在创建新任务时清理。全分辨率 PNG/JPEG/WebP 导出仍使用编辑器。
  • trash_memos 按查询获得的准确编号移入回收站,restore_memos 恢复。普通 update_memo 可以修改元数据,不能替换海报内容。

源稿与保存

PosterDocument 是经过校验、有版本号的源稿,与 Fabric.js 状态分离。源稿保存在 Markdown 的 edgeever-poster-v1 注释中,可读文字和 PNG 预览用于通用查看。图片元素引用工作区附件编号,不接受任意 URL 或任意 Fabric 对象 JSON。进入海报编辑器后才加载渲染引擎。

保存沿用笔记版本、内容摘要和编辑会话校验。每个画布版本保存独立的、宽度不超过 480 像素的预览图;仅修改标题等元数据时复用预览。历史预览保留供版本恢复使用,因此附件用量随保存的画布版本增加。源稿保存失败时只清理本次未提交的预览。

草稿在当前设备备份。草稿基于另一版本时,需要先下载并核对,不能静默覆盖当前笔记。添加图片和保存新预览需要联网;离线修改保留为本机草稿。插入原笔记时校验其当前版本,并把成品作为原笔记自己的附件保存。

兼容与上线

Android 和 iOS 展示可读预览与文字,并禁止把海报当作普通富文本编辑。API 同样拒绝旧客户端丢失海报源稿的保存请求。该门禁需要更新后的服务器;旧客户端连接旧服务器时没有这个保护。通用 MCP update_memo 不能替换海报内容。

不需要数据库迁移,也没有修改认证或升级配置。回滚界面时撤下新建/编辑入口,保留源稿、附件与只读保护;不要把海报转换为普通笔记或删除源稿标记。

验证覆盖源稿往返、格式校验、预览保存失败、SQLite 中的版本冲突与旧 contentJSON 覆盖请求、移动端读取策略,以及本地 Web 新建/编辑/保存/重开/导出与插回原笔记。原生硬件、已安装桌面端跨版本链路与付费 AI 生图仍需单独进行发布验证;本功能不实现生图。

浏览器渲染回归页:运行 bun run dev 后打开 /tests/poster-design.html,检查每套模板在 12 种平台画幅下的渲染、源稿往返、多选变换及 AI 文字对比度。