图解文档 · Document Visuals
SkillDocs & knowledge依据文档内容选择真实素材、图表或生成图并校验插入位置。支持明确输入与结果回读。Use to illustrate a document with
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the 图解文档 · Document Visuals skill
What this skill tells your AI
The instructions your AI receives, as published by lovstudio/skills in skills/illustrate/SKILL.md and read by ahel’s review.
为 Markdown 文档智能分析插图位置,并行生成/检索图片,输出带插图的增强版文档。
Triggers
Activate when
- 用户要求“给文章配图”“补插图”“生成文章插画”或“illustrate this document”。
- 用户希望为长文规划真实素材、对照图、过程图、数据图表或程序化合成图。
Do not activate when
- 用户只要求生成一张独立图片,不需要文章级选图、插入与视觉节奏;使用对应图像 Skill。
- 用户只要求给现有图片加 Caption、边框或 Logo;使用
lov-image-decorator。 - 用户要求发布公众号文章或修改远端草稿;使用
lov-publish-wechat-article。 - 用户只要求审阅正文内容,不需要插图规划或图片文件。
参数格式
<file_path> [--auto] [--style <style>] [--max <n>]
file_path: 必填,md文件路径--auto: 跳过确认,直接生成--style: 图片风格(默认:从 design-guide.md 读取,回退 warm-academic)--max: 最大插图数量(默认:不限,由AI决定)
工作流
Step 1: 读取文档 + 加载品牌风格
- 读取目标文档
- 尝试读取
${SKILL_WORKSPACE_ROOT}/design/design-guide.md,提取 AI 生图 prompt 模板和色彩体系 - 如果存在品牌风格,后续所有 AI 生图 prompt 必须注入品牌色彩和质感关键词
- 如果计划制作包含可编辑文字的 HTML、SVG、Canvas、Pillow 或其他程序化合成图,
必须完整读取
references/text-rendering-safety.md,并在方案中登记文本语言与字体来源
Step 2: 分析文档结构 + 实体提取
分析:
- 文章结构(标题层级、段落分布)
- 内容主题(每个章节的核心概念)
- 情绪节奏(叙事高潮、转折点)
- 已有图片位置
- 数据密集区域(表格、多产品/多概念并列对比)
- 可量化信息(ARR、用户数、增长率等需要图表的数据)
关键步骤:实体与证据候选提取(必做)
在规划插图前,先逐段扫描文档,列出所有可联网检索的真实实体:
| 实体 | 类型 | 出现位置 | 可检索素材 |
|------|------|---------|-----------|
| Cursor IDE | 产品 | L12 | 产品界面截图、博文封面 |
| Sam Altman | 人物 | L45 | 新闻照片 |
| GPT-4发布会 | 事件 | L78 | 发布会现场照片 |
| arXiv:2602.11988 | 论文 | L199 | 论文图表 |
| github.com/openai/symphony | 开源项目 | L121 | GitHub页面截图、终端UI |
实体类型覆盖:产品/工具、人物、公司、事件、地点、论文/研究、博客文章、开源项目、终端/CLI 界面
这张表是后续插图方案的候选输入,不是图片配额。只有素材能帮助读者理解论点、验证 现场、看见变化或获得必要视觉休息时才进入方案;正文已经清楚、图片只会机械重复时 可以不配。真实人物与活动素材还要记录授权状态、来源场景和能否公开组合。
Step 3: 规划插图方案
为每个建议插图位置生成方案(必须标注关联实体和搜索策略):
| # | 位置 | 插图主题 | 类型 | 关联实体 | 搜索策略/prompt |
|---|------|---------|------|---------|----------------|
| 1 | L12 | ELIZA对话界面 | 联网检索 | ELIZA | "ELIZA chatbot original screenshot" |
| 2 | L47 | Web演进时间线 | AI生图 | 无(纯抽象) | editorial timeline illustration... |
| 3 | L136 | ARR增长对比 | 数据图表 | Notion/Airtable/Linear | 先调研数据再绘制 |
| ...
类型决策树(按优先级)
该插图是否涉及真实产品/人物/事件/地点?
├─ 是 → 联网检索(产品截图、历史照片、官方图表、新闻图片)
│ └─ 搜不到合适素材?→ AI生图(概念化表达)
└─ 否 → 该插图是否涉及可量化数据?
├─ 是 → 数据图表(先调研获取可溯源数据,再绘制)
└─ 否 → 是否需要精确、可编辑的文字或结构?
├─ 是 → 程序化合成图(HTML/SVG/Canvas 等)
└─ 否 → AI生图(概念插画)
硬性规则(违反则方案不合格):
- 价值驱动而非实体配额:每张图必须至少承担证据、解释、对比、过程或节奏中的 一项任务;无法说明读者收益时删除,不因文章提到某个实体就强制配图。
- 真实实体优先真实素材:产品、事件、论文、项目和公共人物优先使用可溯源截图、 照片或原图。只有用户提供了合法输入并明确要求风格化、编辑或概念化表达时,才用 生成式模型处理真实实体,并如实标注 provenance。
- 来源场景一致:同一组对照或合成图中的人物、活动与原图必须来自文章所述场景。 获得授权只解决权利问题,不代表其他场合的素材适合混入当前公共叙事。
- 原图真源:比较“原图 / 结果”时,原图必须回到活动相册、相机文件或经核验的 原始附件,不能把裁切图、风格化结果或聊天缩略图误当原图。
- AI 占比自检:AI 图较多时逐张复核是否真的需要,以及是否会把可验证事实变成 虚构视觉;不设置机械百分比门槛。
- 生成方式如实标注:联网素材合成、程序化排版、数据图表、生成式编辑与纯生成 是不同 provenance;不得互相冒充。
特殊类型:Hero Image(可选)
Hero 只在它能提供封面之外的新信息、建立强现场或显著提升首屏吸引力时使用。不要 为了模板完整生成“全文摘要图”,也不要让一张高大的概念图把真正的开头和证据推到 首屏之外。已有高质量人物照、结果对照或正文首图能够完成任务时,省略额外 Hero。
Step 4: 用户确认(除非 --auto)
使用 宿主的聚焦提问工具 展示插图方案表格,让用户:
- 确认/删除/调整每个插图位置和类型
- 选项:「全部确认」「我来调整后继续」
Step 5: 数据调研(如有数据图表类型)
如果方案中包含「数据图表」类型的插图:
- 逐项调研每个数据主题,获取带来源的精确数据点
- 汇总数据表格,展示给用户确认数据准确性
- 确认后再生成图表
数据图表的prompt必须包含:
- 每个数据点的精确数值
- 图表底部标注数据来源(Sources: ...)
- 使用品牌色彩体系
Step 6: 并行生成图片
确认后,使用 Task 工具并行处理每张图片:
AI生图流程:
- 优先调用当前宿主已经提供的图像生成工具或 Plugin 能力
- 若宿主只提供本地脚本,由使用者显式传入脚本路径;不得依赖某个客户端专属环境变量
- 输出到
<doc_dir>/attachments/ill-<n>-<slug>.png,并保留 prompt 与生成方式收据
Prompt 构建规则:
- 基于文章上下文生成详细英文 prompt
- 注入品牌风格(从 Step 1 加载的 design-guide 提取关键词)
- 默认风格关键词:warm off-white background (#F9F9F7), terracotta (#CC785C) accents, charcoal (#181818) text, matte paper texture, editorial illustration style
- 避免文字/人脸(AI生图弱点)——数据图表除外
- 宽幅构图(适合文章内嵌)
联网检索流程:
- 使用 Task 工具并行搜索
- 优先官方素材、公开图表
- curl 下载到 attachments/ 目录
- 验证下载文件是有效图片(file 命令检查)
数据图表流程:
- 使用 Step 5 调研获得的精确数据构建 prompt
- prompt 中列出每个数据点的精确数值
- 图表底部必须标注来源
- 使用
-q high生成更高精度
程序化合成图流程:
- 使用 HTML/CSS、SVG、Canvas 或等价确定性工具排版精确文字、图表和资料卡片
- 每个文本 run 必须声明正确
lang,并使用与该语言匹配且覆盖全部字符的显式字体栈 - 中日文并列或混排时拆成独立语言 run;禁止把日文字体放在简中 run 的首位,反之亦然
- 在截图或栅格化前执行
references/text-rendering-safety.md的字体覆盖与实际字体门禁 - Chromium 页面可使用
scripts/audit_html_fonts.py生成机器可读字体收据;ok=false时不得交付图片 - 记录合成源、素材来源、请求字体、实际字体、语言和输出图片的对应关系
Step 6.4: 文字渲染门禁(含文字图片必做)
- 按语言 run 检查字符覆盖,任何正文字符缺字都必须先修复字体栈,不能依赖未知系统 fallback
- 对最终截图所用的真实浏览器回读实际 PostScript 字体与 glyph count,不能只检查 CSS 声明
- 纯简中或纯日文 run 默认只允许一套 CJK 字体;有意混植必须在方案和收据中逐项声明
lang只负责语言语义和本地化字形选择,不会自动跳过字体栈首位的错误区域字体- 图片栅格化后 fallback 已固化,公众号、Markdown 或下游 CSS 无法修复;门禁必须发生在导出前
Step 6.5: 图片质量校验
对每张下载/生成的图片,使用 Read 工具查看验证:
- 联网检索图:确认内容匹配目标产品(非同名但不同的产品、非无关图片)
- AI生图:确认视觉主题与 alt 描述一致
- 程序化合成图:确认字体收据
ok=true,并人工查看 CJK 字形、基线、标点和换行 - 所有图片:记录像素尺寸、宽高比和按文章正文宽度渲染后的预计高度;单张图过高、 上下留白显著或连续多张占据多个手机屏幕时,必须裁切、重排或删除。
- 过程 / 对照图:只保留视觉上不同且推动理解的阶段,删除重复帧和过早出现的最终 状态;统一子图视觉尺寸与间距,把真正变化的区域放大,背景保持中性,不额外套用会 干扰比较的目标风格。
- 生成式人物图:检查脸、身体、手指、服装、饰品与物件是否符合源图和真实世界; 过程只展示真实发生过的调试状态,不为叙事补造畸形或失败帧。
- 不合格的图片重新搜索/生成
Step 7: 组装输出
在原文档的指定位置插入图片引用:
Markdown 中写入一条标准图片引用,alt 描述读者需要的内容,路径使用实际生成文件;
例如 !\[描述性 alt\]\(attachments/ill-N-slug.png\)。
Caption 与图内文字
- Caption 是面向读者的编辑文案,不是图片内容的机械复述。读者一眼可见的信息无需 再写;没有证据、归属或理解任务时宁可不写 Caption。
- 图内烧录文字、Decorator Caption 与 Markdown 图注只能保留一种。图片已经自带 标题或说明时,删除外部重复图注;需要可访问性的信息留在 alt,不再作为第二份文案。
- 过程图的文字只点出本质变化,例如“基于真实世界修复模型常识性错误”;不要为每 张子图写长句解释肉眼可见的动作、数量和位置。
- 来源与引申资料在对应位置低调呈现;多项资料逐项分行或分点,不堆到文章底部。
精确插入定位规则(必须逐条检查)
Step 3 规划的是章节级粗略位置,Step 7 组装时必须精确到段落级。逐张图执行以下检查:
- 先提后图:图片必须插在其所配内容首次被提及之后,不得出现在内容之前。例:报告截图必须在报告被引用/讨论之后,不能在报告被提及的上一个章节末尾。
- 不割裂语义单元:以下结构视为不可分割的语义单元,图片不得插入其内部:
- 连续引用块(多个
>blockquote 属于同一论述) - 递进/收束段落对("A是什么...→ 所以A意味着...")
- 论点+论据("观点。 具体展开...")
- 排比/并列结构("第一...第二...第三...")
- 连续引用块(多个
- 收束优先:如果一个概念有明确的收束句("会说,即会做。""数据不会说谎。"等金句/总结),图片应插在收束句之后而非之前。
- 自检方法:插入后,朗读图片前后各1-2段。如果读起来感觉"话说到一半被打断",则位置错误,需下移到语义完整处。
文件命名规则:
- 图片:
ill-<序号>-<语义slug>.png(如ill-5-arr-comparison.png) - 输出文档:原文件名加
-illustrated后缀(如v5-illustrated.md)
Step 8: 完成报告
输出简要报告:
- 生成了 N 张插图(X 联网检索 + Y AI生图 + Z 数据图表 + W 程序化合成图)
- 输出文件路径
- 对含文字图片提供字体审计收据路径与实际字体摘要
- 用 Read 工具展示一张代表性图片预览
插图位置选择原则
- 证据优先:真实现场、聊天、结果和变化过程优先于装饰性概念图。
- Hero 可省略:正文首图或第一组证据已经有吸引力时,不再叠加摘要型 Hero。
- 移动端视觉预算:同时看图片数量、宽高比、预计屏高、相邻空白与连续图片长度; 没有固定“每多少字一张”或“每节至少几张”的配额。
- 概念转换处:只有图片能真正帮助换挡时才作为分隔,不用空泛配图切断论证。
- 数据横比:多个并列产品或概念优先一张清楚的对比图,而不是逐个配图。
- 演变过程:用最少的不同阶段说明变化;子图数量、尺寸和间距服从信息差异, 不为凑齐网格复制帧。
- 情绪高潮:优先真实照片、对话或结果;生成式插图不能替代真实关系与现场。
Execution boundary
自然语言请求即可触发;无需旧 slash 路径、参数插值或指定助手。明确解析当前请求中的 项目、目标文件、选项与输出位置;用当前宿主实际提供的文件、搜索、CLI 和浏览器能力。 项目依赖版本与外部 API 在执行时核实,不能假设示例是现行配置。随包脚本从 Skill 根解析, 业务文件从目标项目根解析。先读当前状态,保护已有未提交内容与其他任务的暂存区。 分析、预览请求保持只读;修改、提交、推送、部署和发布各依当前请求的明确范围执行。 不绕过保护、自动发送消息、强制结束用户进程或抢前台。失败保留可诊断原始错误。
Composition
执行前读取 能力组合,按明确制品交接相邻能力。
Runtime context (shared)
运行前读取本包 skill.yaml 与 Profile 合同。优先级为当前请求、
项目上下文、本 Skill records、共享 preferences、brand/user Profile、安全默认值。
只读取声明字段;没有专用运行时的宿主可使用 scripts/profile_store.py 读取共享 Profile。
配置缺失只问影响结果的一个问题。用户明确要求长期保存的值通过该脚本原子写入,
报告实际路径;不保存推断、凭据或其他任务的资料。
Signals
- GitHub stars
- 66
- Forks
- 17
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
lov-illustrate- Source
- github.com/lovstudio/skills