{"id":"6523c410-f4d0-4c79-b100-a62fd8a3628d","shortId":"JVWhGP","kind":"skill","title":"lovstudio:document-illustrator","tagline":"为文档原地插入 AI 配图。读取文档后全局规划插入点，并行生成所有图片， 异步插回原文。支持封面图、自定义比例和三种风格。 Use when: 用户要求为文档/文章/笔记生成配图、插图。 Also trigger when user mentions: 配图、插图、illustration、 generate images、document images、为文章加图。","description":"# Document Illustrator Skill\n\n基于 AI 智能分析的文档配图生成工具。全局规划、并行生成、异步插入，高效为文档添加配图。\n\n## 核心流程（5 步）\n\n```\n备份 → 全局规划插入点 → 并行生成图片 → 异步插入原文 → 清理备份\n```\n\n### Step 0: 备份原文件\n\n在修改前先创建备份，确保安全回滚：\n\n```python\nimport shutil\nbackup_path = f\"{doc_path}.illustrator-backup\"\nshutil.copy2(doc_path, backup_path)\n```\n\n所有后续操作直接在原文件上进行。\n\n### Step 1: 全局确定所有插入位置\n\n读取完整文档，一次性规划所有图片的插入位置：\n\n1. 使用 Read 工具读取完整文档\n2. AI 分析内容结构，识别核心主题\n3. 为每个主题确定**精确的插入锚点**（行号 + 上下文文本）\n4. 输出一份插入计划表：\n\n```\n插入计划：\n  [1] 行 15 后 | 锚点: \"## Rules 的诞生\" | 主题: Rules 演化历程\n  [2] 行 42 后 | 锚点: \"## Commands 打包\" | 主题: 工作流打包\n  [3] 行 78 后 | 锚点: \"## MCP 动态能力\" | 主题: 第三方集成\n  ...\n  [cover] 行 1 前 | 封面图 | 主题: 全文概要\n```\n\n**关键**：插入锚点使用上下文文本（而非纯行号），这样即使前面的插入导致行号偏移，后续插入仍可通过锚点定位。\n\n### Step 2: 并行生成所有图片\n\n用 Agent 工具并行启动所有图片生成子任务：\n\n```\n对每个插入计划项，同时启动一个 Agent：\n  Agent 1: generate_single_image.py --title \"...\" --content \"...\" --output images/illustration-01.png\n  Agent 2: generate_single_image.py --title \"...\" --content \"...\" --output images/illustration-02.png\n  Agent 3: generate_single_image.py --title \"...\" --content \"...\" --output images/illustration-03.png\n  ...\n```\n\n- 所有 Agent 并发执行，不互相等待\n- 每个 Agent 完成后返回图片路径或错误信息\n- 预期总耗时 = 单张耗时（10-20s），而非 N * 单张耗时\n\n### Step 3: 异步插入原文\n\n每个 Agent 完成后立即插入，不等待其他 Agent：\n\n1. Agent 完成 → 获得图片路径\n2. 在原文档中**通过锚点文本**定位插入位置（不依赖行号）\n3. 使用 Edit 工具在锚点后插入 Markdown 图片引用：\n   ```markdown\n   ![主题描述](images/illustration-01.png)\n   ```\n4. 插入使用锚点文本匹配，所以前面的插入不影响后面的定位\n\n**位置偏移处理**：\n- 每次插入会增加文档行数\n- 使用锚点文本（如 `## Rules 的诞生`）而非行号来定位\n- 从文档末尾向开头方向插入也可避免偏移问题\n\n### Step 4: 验证与清理\n\n所有图片插入完成后：\n\n1. **验证**：检查原文档中所有计划的 `![...]()` 引用都已插入\n2. **验证**：检查所有图片文件都存在于 `images/` 目录\n3. **成功** → 删除备份文件 `{doc_path}.illustrator-backup`\n4. **失败** → 保留备份文件，报告哪些图片未能生成/插入，用户可用备份恢复\n\n```\n完成: 6/6 张配图已插入原文档\n已清理备份文件\n```\n\n## 配置选项\n\n执行前 Claude 会询问（或从用户消息中推断）：\n\n| 选项 | 值 | 默认 |\n|------|-----|------|\n| 图片比例 | 16:9 / 3:4 | 16:9 |\n| 是否封面图 | 是/否 | 否 |\n| 内容配图数量 | 3-10 | 根据文档长度推荐 |\n| 风格 | gradient-glass / ticket / vector-illustration | gradient-glass |\n\n如果用户在请求中已指定（如\"竖屏、票据风格、8张\"），直接使用，不再询问。\n\n## 风格速查\n\n| 风格 | 关键词 | 适合 |\n|------|--------|------|\n| gradient-glass | 玻璃拟态、极光渐变、科技感 | 技术文档、产品介绍 |\n| ticket | 黑白对比、票券结构、极简 | 数据报告、信息图表 |\n| vector-illustration | 扁平插画、复古配色、几何化 | 教程、故事、品牌 |\n\n风格文件位于 `styles/` 目录。\n\n## 技术细节\n\n| 项目 | 值 |\n|------|-----|\n| API 模型 | Gemini 2.0 Flash Image Preview |\n| 16:9 分辨率 | 2560x1440 (2K) / 3840x2160 (4K) |\n| 3:4 分辨率 | 1920x2560 (2K) / 2880x3840 (4K) |\n| 单张耗时 | ~10-20s |\n| 并行耗时 | ~10-20s（总，不乘 N） |\n| 依赖 | `pip install google-genai pillow python-dotenv` |\n| API Key | `.env` 中 `GEMINI_API_KEY` 或环境变量 |\n\n## 脚本\n\n- `scripts/generate_single_image.py` — 单张图片生成（供 Agent 并行调用）\n- `scripts/generate_illustrations.py` — 旧版批量顺序生成（保留兼容）","tags":["document","illustrator","skills","lovstudio","agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"capabilities":["skill","source-lovstudio","skill-document-illustrator","topic-agent-skills","topic-ai-coding-assistant","topic-cjk","topic-claude-code","topic-cursor","topic-gemini-cli","topic-markdown-to-docx","topic-markdown-to-pdf"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lovstudio/skills/document-illustrator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lovstudio/skills","source_repo":"https://github.com/lovstudio/skills","install_from":"skills.sh"}},"qualityScore":"0.470","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 40 github stars · SKILL.md body (2,644 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:56:34.091Z","embedding":null,"createdAt":"2026-04-18T22:18:55.041Z","updatedAt":"2026-04-22T00:56:34.091Z","lastSeenAt":"2026-04-22T00:56:34.091Z","tsv":"'-10':267 '-20':173,343,347 '0':51 '1':73,77,93,123,143,186,219 '10':172,342,346 '15':95 '16':255,259,327 '1920x2560':337 '2':81,103,134,150,190,223 '2.0':323 '2560x1440':330 '2880x3840':339 '2k':331,338 '3':85,112,157,179,195,228,257,266,334 '3840x2160':332 '4':90,204,216,236,258,335 '42':105 '4k':333,340 '5':43 '6/6':243 '78':114 '8张':284 '9':256,260,328 'agent':137,141,142,149,156,164,168,182,185,187,374 'ai':6,36,82 'also':19 'api':320,362,367 'backup':58,65,69,235 'claud':248 'command':108 'content':146,153,160 'cover':121 'doc':61,67,231 'document':3,29,32 'document-illustr':2 'dotenv':361 'edit':197 'env':364 'f':60 'flash':324 'gemini':322,366 'genai':357 'generat':27 'generate_single_image.py':144,151,158 'glass':272,279,293 'googl':356 'google-genai':355 'gradient':271,278,292 'gradient-glass':270,277,291 'illustr':4,26,33,64,234,276,307 'illustrator-backup':63,233 'imag':28,30,226,325 'images/illustration-01.png':148,203 'images/illustration-02.png':155 'images/illustration-03.png':162 'import':56 'instal':354 'key':363,368 'lovstudio':1 'markdown':199,201 'mcp':117 'mention':23 'n':176,351 'output':147,154,161 'path':59,62,68,70,232 'pillow':358 'pip':353 'preview':326 'python':55,360 'python-dotenv':359 'read':79 'rule':98,101,211 'scripts/generate_illustrations.py':376 'scripts/generate_single_image.py':371 'shutil':57 'shutil.copy2':66 'skill':34 'skill-document-illustrator' 'source-lovstudio' 'step':50,72,133,178,215 'style':315 'ticket':273,299 'titl':145,152,159 'topic-agent-skills' 'topic-ai-coding-assistant' 'topic-cjk' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-markdown-to-docx' 'topic-markdown-to-pdf' 'trigger':20 'use':13 'user':22 'vector':275,306 'vector-illustr':274,305 '一次性规划所有图片的插入位置':76 '上下文文本':89 '不乘':350 '不互相等待':166 '不依赖行号':194 '不再询问':286 '不等待其他':184 '中':365 '为文档原地插入':5 '为文章加图':31 '为每个主题确定':86 '主题':100,110,119,126 '主题描述':202 '产品介绍':298 '从文档末尾向开头方向插入也可避免偏移问题':214 '会询问':249 '位置偏移处理':207 '使用':78,196 '使用锚点文本':209 '供':373 '依赖':352 '保留兼容':378 '保留备份文件':238 '信息图表':304 '值':252,319 '全局确定所有插入位置':74 '全局规划':38 '全局规划插入点':46 '全文概要':127 '关键':128 '关键词':289 '内容配图数量':265 '几何化':310 '分析内容结构':83 '分辨率':329,336 '删除备份文件':230 '前':124 '动态能力':118 '单张图片生成':372 '单张耗时':171,177,341 '同时启动一个':140 '后':96,106,115 '后续插入仍可通过锚点定位':132 '否':263,264 '品牌':313 '图片引用':200 '图片比例':254 '在修改前先创建备份':53 '在原文档中':191 '基于':35 '备份':45 '备份原文件':52 '复古配色':309 '失败':237 '如':210,281 '如果用户在请求中已指定':280 '完成':188,242 '完成后立即插入':183 '完成后返回图片路径或错误信息':169 '定位插入位置':193 '对每个插入计划项':139 '封面图':125 '工作流打包':111 '工具在锚点后插入':198 '工具并行启动所有图片生成子任务':138 '工具读取完整文档':80 '已清理备份文件':245 '并发执行':165 '并行生成':39 '并行生成图片':47 '并行生成所有图片':9,135 '并行耗时':345 '并行调用':375 '异步插入':40 '异步插入原文':48,180 '异步插回原文':10 '引用都已插入':222 '张配图已插入原文档':244 '总':349 '成功':229 '或从用户消息中推断':250 '或环境变量':369 '所以前面的插入不影响后面的定位':206 '所有':163 '所有后续操作直接在原文件上进行':71 '所有图片插入完成后':218 '扁平插画':308 '打包':109 '执行前':247 '技术文档':297 '技术细节':317 '报告哪些图片未能生成':239 '插入':240 '插入使用锚点文本匹配':205 '插入计划':92 '插入锚点使用上下文文本':129 '插图':18,25 '支持封面图':11 '故事':312 '教程':311 '数据报告':303 '文章':16 '旧版批量顺序生成':377 '是':262 '是否封面图':261 '智能分析的文档配图生成工具':37 '极光渐变':295 '极简':302 '核心流程':42 '根据文档长度推荐':268 '检查原文档中所有计划的':221 '检查所有图片文件都存在于':225 '模型':321 '步':44 '每个':167,181 '每次插入会增加文档行数':208 '清理备份':49 '演化历程':102 '玻璃拟态':294 '用':136 '用户可用备份恢复':241 '用户要求为文档':15 '的诞生':99,212 '目录':227,316 '直接使用':285 '确保安全回滚':54 '票券结构':301 '票据风格':283 '科技感':296 '竖屏':282 '笔记生成配图':17 '第三方集成':120 '精确的插入锚点':87 '而非':175 '而非纯行号':130 '而非行号来定位':213 '脚本':370 '自定义比例和三种风格':12 '获得图片路径':189 '行':94,104,113,122 '行号':88 '识别核心主题':84 '读取完整文档':75 '读取文档后全局规划插入点':8 '输出一份插入计划表':91 '这样即使前面的插入导致行号偏移':131 '适合':290 '选项':251 '通过锚点文本':192 '配图':7,24 '配置选项':246 '锚点':97,107,116 '项目':318 '预期总耗时':170 '风格':269,288 '风格文件位于':314 '风格速查':287 '验证':220,224 '验证与清理':217 '高效为文档添加配图':41 '黑白对比':300 '默认':253","prices":[{"id":"004b39a4-8ae3-4c50-8b7a-fcd379a4a927","listingId":"6523c410-f4d0-4c79-b100-a62fd8a3628d","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lovstudio","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:18:55.041Z"}],"sources":[{"listingId":"6523c410-f4d0-4c79-b100-a62fd8a3628d","source":"github","sourceId":"lovstudio/skills/document-illustrator","sourceUrl":"https://github.com/lovstudio/skills/tree/main/skills/document-illustrator","isPrimary":false,"firstSeenAt":"2026-04-18T22:18:55.041Z","lastSeenAt":"2026-04-22T00:56:34.091Z"}],"details":{"listingId":"6523c410-f4d0-4c79-b100-a62fd8a3628d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lovstudio","slug":"document-illustrator","github":{"repo":"lovstudio/skills","stars":40,"topics":["agent-skills","ai-coding-assistant","cjk","claude-code","cursor","gemini-cli","markdown-to-docx","markdown-to-pdf"],"license":"mit","html_url":"https://github.com/lovstudio/skills","pushed_at":"2026-04-21T15:57:51Z","description":"Agent skills for AI coding assistants — Markdown to PDF/DOCX with 14 themes, CJK support","skill_md_sha":"125d26753d330b1619bf9b4f36d3ee686d5f6ea3","skill_md_path":"skills/document-illustrator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lovstudio/skills/tree/main/skills/document-illustrator"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"lovstudio:document-illustrator","license":"MIT","description":"为文档原地插入 AI 配图。读取文档后全局规划插入点，并行生成所有图片， 异步插回原文。支持封面图、自定义比例和三种风格。 Use when: 用户要求为文档/文章/笔记生成配图、插图。 Also trigger when user mentions: 配图、插图、illustration、 generate images、document images、为文章加图。","compatibility":">=1.0"},"skills_sh_url":"https://skills.sh/lovstudio/skills/document-illustrator"},"updatedAt":"2026-04-22T00:56:34.091Z"}}