Scans full article text, finds every position that needs a figure, then either inserts inline image-generation prompts for the author to use or runs image generation for all spots and saves files. Use when the user wants to "add figures to article", "find where to put images", "generate all illustrations for this doc", or "文章配图"/"插图位置".
Resources
2Install
npx skillscat add invalidandnull/article-figure-spot-skill/article-figure-spot Install via the SkillsCat registry.
Article Figure Spot
Finds all positions in an article that benefit from a figure, then either outputs the article with inline prompt placeholders (author generates and inserts images later) or generates all figures in one run using the built-in image script and saves them so the author can insert image links.
Input
Article content can be provided in either way:
- File path: User sends a path to a Markdown file (e.g.
/article-figure-spot path/to/article.md). - Pasted text: User writes in the chat that they want figures for an article and pastes the full text below (e.g. “用这个 Skill 给如下文章配图:” then the article). Treat the pasted block as the source article; if needed, save it to a temp or project file for structure analysis, then proceed with the workflow.
When only pasted text is given, infer options from context or ask once for --prompts-only vs --generate and density if ambiguous.
Script directory
Scripts live in the scripts/ subdirectory of this skill.
- SKILL_DIR = directory containing this SKILL.md (the skill root).
- Script path =
${SKILL_DIR}/scripts/generate-image.mjs
| Script | Purpose |
|---|---|
scripts/generate-image.mjs |
Calls OpenAI image API; reads prompt from file(s), writes image to given path. Runs with Node (no Bun). |
Invocation (generate mode, one figure):
node ${SKILL_DIR}/scripts/generate-image.mjs --promptfiles prompts/NN-type-slug.md --image figure-spot/{topic-slug}/NN-type-slug.png --ar 16:9Environment: The script needs OPENAI_API_KEY. It loads .env from the current working directory and from the skill directory (SKILL_DIR). Optional: OPENAI_BASE_URL, OPENAI_IMAGE_MODEL (default in script).
Modes
| Mode | Invocation | Result |
|---|---|---|
| Prompts only | --prompts-only or default when no image-gen available |
Article with inline prompt blocks at each spot; author runs image gen per prompt and inserts. |
| Generate all | --generate |
Prompts written to files, image-generation command run for each; images saved; article emitted with image paths ready to paste. |
Usage
# Prompts only: output article with inline figure prompts (no image gen)
/article-figure-spot path/to/article.md
/article-figure-spot path/to/article.md --prompts-only
# Generate all: spot positions, create prompts, run image gen, save images
/article-figure-spot path/to/article.md --generate
# Optional: control density and output dir
/article-figure-spot article.md --generate --density rich --out-dir figuresOptions
| Option | Description |
|---|---|
--prompts-only |
Only insert prompt placeholders; do not run image generation. |
--generate |
Run image generation for every spotted position and save images. |
--density <level> |
sparse (2–3 figures), medium (4–6), rich (7+). Default: medium. |
--out-dir <dir> |
Root directory for prompt files and generated images. Default: figure-spot/{topic-slug}/. |
--lang <code> |
Language for prompts and alt text (e.g. en, zh). Default: detect from article. |
Workflow
Copy and track:
Figure Spot Progress:
- [ ] Step 1: Load article and analyze structure
- [ ] Step 2: Identify figure positions → placement list
- [ ] Step 3: Confirm positions with user (optional but recommended)
- [ ] Step 4a (prompts-only): Write output article with inline prompts
- [ ] Step 4b (generate): Create prompt files → run image gen → save images → write output article with image refs
- [ ] Step 5: Summary and insert instructionsStep 1: Load and analyze
- Obtain article: From the given file path (read file) or from the user’s message (pasted text). If only pasted text: optionally save to e.g.
figure-spot/{topic-slug}/source.mdfor reference. - Read the full article content.
- Detect language; note sections and paragraph boundaries.
- Infer topic and audience.
Step 2: Identify figure positions
Use rules in references/position-rules.md:
- Where a figure adds clarity: concepts, processes, comparisons, data, timelines, frameworks.
- Do not add figures for: purely decorative spots, literal illustrations of metaphors, or redundant-to-text content.
For each position record:
- Anchor: Which paragraph or section (quote or heading).
- Role: e.g. concept, process, comparison, timeline.
- Prompt idea: One-sentence description of what the image should show.
Respect --density: sparse 2–3, medium 4–6, rich 7+ figures.
Step 3: Confirm (recommended)
Present the placement list:
- Index, anchor snippet, role, suggested filename.
- Ask user to confirm or trim/add positions before continuing.
Step 4a: Prompts-only output
- Produce an output article (new file or clearly marked block) that matches the original but at each chosen spot inserts an inline block like:
<!-- FIGURE N: [anchor description] -->
<!-- PROMPT: [full image-generation prompt in 1–3 sentences] -->
<!-- FILE: NN-{type}-{slug}.png -->
<!-- END FIGURE -->- Author uses the
PROMPTandFILElines to run their image-generation tool and then replace the block with.
Prompt content should follow references/prompt-guide.md (concise, scene/layout, aspect ratio).
Step 4b: Generate-all output
- Create output directory (e.g.
figure-spot/{topic-slug}/or--out-dir). - For each position:
Write a prompt file, e.g.
prompts/NN-{type}-{slug}.md, with the full image-generation prompt (see references/prompt-guide.md).Run this skill’s image script from the project root (or cwd) so that relative paths for prompts and output resolve correctly:
node ${SKILL_DIR}/scripts/generate-image.mjs --promptfiles <path-to-prompt.md> --image <path-to-output.png> --ar 16:9Use the same aspect ratio for all article figures (e.g. 16:9) unless the user asks otherwise.
The script writes the image to the given path. On failure: retry once; then log and continue.
- Produce the output article with each figure block replaced by a real image reference, e.g.
. - Naming convention: see references/output-layout.md.
Image generation is built-in: The skill uses its own scripts/generate-image.mjs, which calls the OpenAI image API (run with Node). The user must set OPENAI_API_KEY (in .env next to the skill or in the current directory) for --generate to work.
Step 5: Summary(必须包含「图 ↔ 文中位置」闭环)
结束时必须向用户提供插图与文中插入位置对照,让用户明确「哪张图插在文章哪里」:
- 插图 ↔ 文中位置对照表(必给):每一行说明「图片路径 / 文件名」与「文中插入位置」。
- 插入位置写清:在哪个标题/段落之后,例如:「在标题 ## 复盘的三个层次 之后」「在段首为『推荐流程(四步)』的段落之后」。
- 格式示例:
| 图片文件 | 文中插入位置 |
|---|---|
01-concept-three-layers.png |
在 ## 复盘的三个层次 这一节段落后 |
02-process-four-steps.png |
在段首为「推荐流程(四步)」的段落之后 |
- 同时可列出:对应 prompt 文件、图片路径(out-dir 下的相对路径或绝对路径)。
- Prompts-only:列出上述对照表 + 提醒作者按 PROMPT 生图后,用该表把每张图插到对应位置。
- Generate-all:列出上述对照表 + 生成图片的路径 + 已插入图片的
article-with-figures.md路径。
Output layout
Default layout under figure-spot/{topic-slug}/:
figure-spot/{topic-slug}/
├── source.md # Copy of or link to source article
├── placement.md # Table: index, anchor, role, prompt summary, filename
├── prompts/
│ ├── 01-concept-xxx.md
│ └── 02-process-yyy.md
├── 01-concept-xxx.png
├── 02-process-yyy.png
└── article-with-figures.md # (generate mode) article with image refs insertedSlug: 2–4 words from article topic, kebab-case. If directory exists, append timestamp.
Prompt rules (summary)
- One clear subject per image; state composition and layout.
- Prefer conceptual or structural descriptions over decorative or metaphorical.
- Include aspect ratio (e.g. 16:9) and, if relevant, style (e.g. diagram, scene).
- Avoid vague phrasing; avoid illustrating metaphors literally.
Details: references/prompt-guide.md.
References
| File | Content |
|---|---|
| references/position-rules.md | What to illustrate and what to skip. |
| references/prompt-guide.md | How to write each figure prompt. |
| references/output-layout.md | Dir structure and file naming. |
Notes
- Generate mode uses this skill’s own
scripts/generate-image.mjs(OpenAI image API, run with Node). SetOPENAI_API_KEYin.envin the skill directory or cwd. - For sensitive or copyrighted subjects, prompt for a stylized or non-literal treatment.
- Keep article language and prompt/alt language consistent.