Generate a set of hand-drawn style illustrations with the same visual system for WeChat Official Account articles, blogs, and Newsletters. The core is not binding to a specific brand, but stably producing: large white space, object cards, a single fixed accent color (configured by the theme pack), controlled thick black hand-drawn ink lines, low information density, and clear metaphors. Illustrations first serve understanding the article, and only secondarily style exploration; do not sacrifice readability for novelty.
Core workflow
- Read the article material.
- If the user provides a WeChat Official Account link, first obtain the body content, then proceed to illustration planning.
- If the user provides Markdown or pasted text, directly analyze the title, second-level headings, transition paragraphs, case study paragraphs, and conclusion paragraphs.
- Generate an illustration plan.
- Default generation: 1 WeChat Official Account header image + high-density horizontal body images.
- Short articles can be reduced to 6-8 horizontal body images; medium-length articles default to 12-16 horizontal body images; long articles, case reviews, or product retrospectives default to 18-24 horizontal body images.
- For long WeChat Official Account articles, prioritize planning by "2-3 images per second-level heading or important third-level heading" rather than placing only 1 divider image per chapter; roughly arrange 1 image every 250-450 Chinese characters.
- For long articles, place images according to each second-level heading, third-level heading, key transition paragraph, feature list paragraph, case study paragraph, quote paragraph, and conclusion paragraph.
- Each image carries only one concept; do not turn an entire paragraph of the article into an infographic.
- Choose the image type.
- Header image: hand-drawn object card architecture, with a square object illustration in the center, white space around it, suitable for WeChat Official Account header image cropping.
- Horizontal body image: 16:9 horizontal illustration, using one metaphor to explain the current paragraph.
- Square card: 1:1, used for Moments, article lists, or single-concept cards.
- Generate prompts or batch image output.
- The default formal route is ImageGen/Codex/ChatGPT built-in image generation: the Agent first writes
Image Briefand the final English visual prompt, then calls the built-in image generation capability provided by the host environment to produce PNGs. - For batch processing, use
--mode codexto generate the built-in image generation queue; the queue is not the final draft, and the Agent needs to call the built-in image generation tool one by one. - By default, do not run
--mode local, do not generatelocal_preview/, and do not include local previews in the default delivery. - Only when the user explicitly requests "composition sketch," "placeholder preview," or "local preview check" may you run
--mode local; the output must be marked as a sketch and cannot be counted as a final image. - When the user requests "test the effect," "generate effects to show me," or "run a few rounds and see," you must call ImageGen/built-in image generation capability to generate real sample images; local previews do not count as finished-image testing.
- Do not proactively call external image APIs to "improve the default effect"; only when the user explicitly requests model comparison, API testing, or candidate exploration should you use
guided-edit、t2ioredit。 - When only prompts are needed, output a Chinese illustration plan + English image prompt.
- The default formal route is ImageGen/Codex/ChatGPT built-in image generation: the Agent first writes
- Compress the delivered images.
- PNG files generated by ImageGen are usually too large. By default, use
scripts/compress_images.pyto compress the final deliverable image in place. - The compression target is to keep each image below
200KBif possible, with a hard cap below500KB; unless the user explicitly asks to keep the original large image, overwrite the original.
- PNG files generated by ImageGen are usually too large. By default, use
- Do a quality review.
- Check whether legible text, logos, photorealistic photos, complex backgrounds, too many elements, or direct replication of any brand's official website graphics appear.
Hand-drawn style key points
First read references/builtin_image_generation_workflow.md, and understand the textual descriptions of the composition families. When executing, grasp these key points:
- The background is mainly warm off-white (the specific color value is determined by the current theme pack's
paper_background; for the default blue-gray theme, use#FAF9F5/#F5F4ED, this kind of warm white). - The main lines use near-black ink lines (the specific color value is determined by the current theme pack's
ink_color; the default is#141413), closer to a "hand-traced filled ink-block path." The outline must first be stable and clean, but must not look like a mechanical vector icon; the variation in thickness comes from the start of the stroke, the end of the stroke, the indentation at corners, and the pen pressure at overlaps of a single hand-drawn ink line, with natural tapering along long edges but no random jitter. - The accent color is always read from the current theme pack (
config/style.json'sactive_themedetermines which theme to use; for the default blue-gray theme it is#435C68); the same article uses only this one accent color. - The background supports two modes:
paperis a warm off-white base + localized accent color embellishments;invertedis an accent color base + off-white subject + near-black ink lines. A grouped illustration set for a long article must mix these two modes: most usepaper, and a few key images useinvertedas rhythmic emphasis. invertedis not a new color scheme, but a color inversion of the same accent color: the entire background uses the current theme's accent color, the subject block areas use warm off-white, and the lines still use near-black ink lines; do not add a second accent color to the inverted background.- The image is like an "object card," not a complex scene: one main object + a small number of auxiliary elements close to the subject; the subject must be large enough and must not degenerate into a small icon in the whitespace.
- Use the composition families accumulated in this skill as the main style baseline: chains, book pages/containers, accent-color tracks, cloud funnels, radial networks, activity chain blocks, archive stacks, nested frames, process-to-network, folder archiving, and module assembly. Diversity should unfold within these families, rather than inventing incomprehensible new bizarre objects.
- For objects, prefer relational abstract metaphors: funnels, prisms, mazes, flywheels, scaffolding, broadcast diffusion, compass maps, sample trays, scales, windows, magnifying glasses, nodes, doors, bridges, dashboards, folders, and process tracks. Each image must make it clear at a glance which kind of relationship it expresses among compression, filtering, distribution, judgment, path, consolidation, or collaboration.
- The "slightly strange mechanical feeling" in the round 4-5 tests is only kept as a boundary exploration record, not as the default direction. Do not actively pursue eeriness, mystery, organ-like feeling, or excessive abstraction; if a certain image does not help readers understand the current section, switch back to the clear composition families in the reference images.
- When using Codex/ChatGPT's built-in image generation, the degree of abstraction must be controlled: you may use words such as
object-card mechanism、hand-drawn workflow object、blank slabs、rounded capsules、thick connector band、archive tray、nested frame、funnel output; use words likenameless abstract mechanism、soft shell、organic plumethat are more likely to go off track with caution; write less of words likerole card、document card、permission、dashboardthat are easily translated literally. - For a long article, images in the same group must control metaphor repetition: do not use a "box + circle + connecting line" node diagram consecutively; prioritize rotating among relationships such as compression, distribution, filtering, judgment, path, accumulation, and collaboration, and rotate by composition family.
- For a long article, images in the same group must also control layout repetition: do not let multiple images all become a horizontal mechanism diagram of "input on the left - convergence/gate/filter in the middle - output on the right". This layout may be used at most as a small number of compression, filtering, and transformation sections; it is not the default safe composition.
- Do not use readable text; if "documents/contracts/clauses" need to be represented, draw only short lines and blocks, not actual characters.
- Do not use familiar UI icons such as checkmarks, portraits, stars, pencils, tools, app symbols, or arrows; roles, permissions, and node relationships should be expressed with blank cards, dots, short lines, and abstract blocks.
- Do not use plant branches and leaves, flowers and grass, decorative scattered dots, or corner decorations; models easily misinterpret "natural hand-drawn" as illustration decoration, so it must be actively excluded.
- Do not use faces, eyes, mouths, body parts, horror symbols, religious mystical symbols, surreal objects, or unfamiliar devices that are hard to explain; do not turn "abstraction" into a puzzle that readers cannot understand.
- Do not put article titles, section titles, or keywords verbatim into the image prompt; first rewrite them into visual-only concepts to avoid the model drawing English titles, product names, or technical terms into the image.
- Do not copy any brand website's existing SVG, Logo, wordmark, or specific pattern; extract only the general structural language.
- This Skill is the sole main entry point for subsequent article illustrations. Do not create parallel Skills for similar styles again; if the style needs adjustment, prioritize switching to or creating a theme (
themes/), adjustingabstraction_strength, or changingreferences/; do not hard-code color values in SKILL.md or scripts.
Theme Pack
The color scheme of this Skill (accent color, paper color, ink line color) is no longer hard-coded, but is instead provided bytheme file. One theme file = one set of colors. In this way, different law firms, teams, or authors can reuse the same set of compositions and workflows, replacing only the colors.
The built-in theme packs are in the themes/ directory:
| Theme Pack | Accent Color | Applicable |
|---|---|---|
blue-gray(default) |
#435C68 blue-gray |
legal, WeChat official account long-form articles, editorial |
ink-black |
#2A2A28 ink black |
minimalist, no brand color requirement; reuse the blue-gray reference images |
terracotta |
#A65A3D ochre |
humanities, culture, lifestyle; reuse the blue-gray reference images |
blue-gray is the default activated theme. For complete instructions, see themes/README.md。
Switch Theme
Choose one of three, in descending priority:
- Command-line parameter(single image generation):
generate_prompts.py --theme ink-blackorbatch_article_images.py --theme ink-black。 - Outline-level override(effective for the entire article): write
"style": { "theme": "terracotta" }。 - Change the default activated theme(effective long-term): edit
config/style.json, and changeactive_themeto the theme pack name.
After switching,generate_prompts.py will read the colors from themes/<name>.json and inject them into the prompt, with no need to modify other files.
Create Your Own Law Firm Theme Pack
Suitable for law firms, brand accounts, or individual authors to inject their own theme colors. Core steps:
- Create a new
themes/my-firm.jsonfile. - Define
colors(accent_coloraccent color,paper_backgroundpaper color,ink_colorink line color). - Use
--theme my-firmor changeactive_themeto activate.
See the detailed template in themes/README.md。Key Constraints: use only one accent color per article; keep the paper color at a low-saturation warm white.
Fine-tuning color values (without changing the theme pack)
If you only want to temporarily change one color value and do not want to create a new theme pack, write in the config/style.json of overrides :
{ "active_theme": "blue-gray", "overrides": { "accent_color": "#3A4F5C" } }
overrides has higher priority than the theme pack, and lower priority than the command-line --theme and the outline style.accent_color。
Abstraction intensity
This Skill has three built-in abstraction intensity levels, written in the config/style.json of abstraction_strength, and can also be overridden in the outline's style.abstraction_strength or a single illustrations[].abstraction_strength :
| Level | Use case | Style boundaries |
|---|---|---|
reference_card |
Want to be closer to prior reference images, prioritize serving comprehension, and avoid going off track | Prioritize folder archive、cloud funnel output、nested frame、workflow book、chain active block and other explainable compositions; use few unnamed mechanisms, soft shells, or misty diffusion |
balanced |
Default level, suitable for most WeChat official account articles | Moderately abstract within the reference image family, avoid literal translation into document cards, UI panels, permission icons, or dashboards, but retain a metaphor that can be explained in one sentence |
high_abstract |
Want to use the more abstract mechanism feel from recent tests | You can use nameless abstract mechanism、soft slabs、rounded shells、slots、hinges、vessels、organic plumes、endpoint capsules, but there must be a clear reader_takeaway_zh |
Use balancedby default. Long-form grouped illustrations can be mixed: use reference_card for key chapter or conclusion images to stay clear, and use high_abstract for a few more conceptual chapters to increase style variation. Do not use high_abstractfor multiple consecutive images unless the user explicitly wants a more experimental visual direction.
Aspect ratio and size
Continue using the aspect ratio strategy accumulated by this skill from the prior illustration workflow:
| Purpose | Default generation aspect ratio | Default generation size | Delivery recommendation |
|---|---|---|---|
| WeChat official account cover image | Generate with a wide frame, then export | Built-in image generation wide frame; API experiments can use 2048x872 |
Export 2400x1024, place the main object in the central safe area |
| Body horizontal image | Wide frame | Built-in image generation wide frame; API experiments can use 2048x872 |
Use directly in the body, or scale proportionally as needed |
| Square card | 1:1 | 1024x1024 or the model's default square image |
Used for covers, lists, and Moments cards |
The final cover image is 2400x1024. The default built-in image generation route uses a wide-frame prompt for generation, then exports or crops to 2400x1024as needed. The external API experimental route continues the old size strategy: Z-Image can use 2048x872, and when explicitly switching back to Qwen/Qwen-Image , use 1664x928. The prompt should clearly specify center-safe composition, avoid the subject being close to the top and bottom edges; at the same time, the subject should not be too small, and by default should occupy about 60-72% of the image width.
Subject proportion
By default, use the WeChat official account body image strategy of "large subject, few elements, moderate whitespace":
- Cover image: The subject occupies about 60-72% of the image width and about 55-68% of the height, placed in the central safe area.
- Body horizontal image: The main subject occupies about 55-68% of the frame width or visual weight, with no more than 2 auxiliary symbols, placed close to the main subject.
- Square card: The main subject occupies about 68-76% of the square frame.
These ratios are written in config/style.json in cover_subject_scale、inline_subject_scale and card_subject_scale . If the article needs a more ethereal hand-drawn object card feel, they can be lowered; by default, WeChat Official Account body text should not go below the above ranges.
Generation route
The official delivery route is ImageGen / Built-in Image First: the Agent is responsible for understanding the article and determining semantics and composition, and the final image is completed using the built-in image generation capability of ImageGen/Codex/ChatGPT. Do not mistake the Python local renderer for a "built-in image generation capability," and do not treat local preview or external API debugging routes as the default route.
If the current host environment provides the ImageGen tool, real final-image testing should preferentially call ImageGen directly.codex_generation_queue.md is only a queue for the Agent to call ImageGen; if there is only a queue and no image output, you cannot claim that "final-image testing" has been completed.
- First read the article, and according to
references/builtin_image_generation_workflow.mdwrite each image'sImage Brief:chapter_claim_en: the real judgment of this section.visual_thesis_en: the visual proposition that can be drawn.main_relation_en: the relationship that must be seen at first glance.support_structure_en: the minimal supplementary structure that helps understand the relationship.final_prompt_en: the final English image prompt written directly by the Agent for the built-in image generation tool.
generate_prompts.pyCompile the outline, configured colors, and style constraints intoprompts.json. If there isfinal_prompt_en, the script preferentially preserves the image written by the Agent rather than overwriting it with a fixed template.batch_article_images.py --mode codexOutputcodex_generation_queue.jsonandcodex_generation_queue.md。- The Agent reads the queue one by one and calls the built-in image generation tool of ImageGen/Codex/ChatGPT to generate the final PNG; after generation, save it with the suggested filename and insert it into Markdown or the delivery directory.
- The default process stops at real image generation and no longer runs an additional local preview. The local renderer is used only when the user explicitly requests composition sketches, placeholder checks, or an API guided-edit skeleton.
- Before delivery, run
scripts/compress_images.pyto compress the final image, with the default target200KBand hard upper limit500KB。
Default command:
python3 scripts/batch_article_images.py \
--outline assets/outline_sample.json \
--outdir out \
--mode codex
This route will not read an API Key, nor will it call SiliconFlow, MiniMax, or other external image interfaces. The script will output:
prompts.json: regular prompts and composition contract.codex_generation_queue.json: a structured queue for the Agent to call the built-in image generation capability.codex_generation_queue.md: human-readable per-image prompt.
Important boundary: the built-in image generation capability of Codex/ChatGPT is an Agent/host environment capability, not a local model inside the current Python process. Therefore --mode codex can only prepare the queue and target filenames, and cannot directly return PNGs from the script like an external API. During execution, the Agent calls the built-in image generation tool in the conversation; if the host environment returns a saveable file, then archive it according to the suggested filenames in the queue.
External APIs serve only as an explicit experimental route. Only when the user explicitly requests "run the API," "model comparison," or "try an external model again" should these constraint strengths be distinguished; otherwise do not call SiliconFlow, MiniMax, Qwen, or other external image interfaces.
- Text paraphrase constraint:
t2ionly accepts a prompt, and the model may still change the layout, add text, or change the style. - Image composition constraint:
guided-editfirst use local rendering to generatecomposition_guides/, then have the editing model redraw along the input image; this is the approach in the API route that is closer to a local preview. - Candidate screening requirements: in actual testing,
guided-editcan clearly preserve the layout, but it may still introduce non-configured colors, an old-paper feel, red dots, or light brown blocks. API output must first be compared againstcomposition_guides/, and check whether it uses only the current theme pack's accent color, near-black, and off-white (without introducing a second accent color).
Image plan format
When delivering only in the conversation, use this structure:
## 配图计划
| 序号 | 位置 | 用途 | 画面隐喻 | 核心概念 | 比例 |
|------|------|------|----------|----------|------|
| 01 | 标题后 | 首图 | [对象卡片] | [一句话] | 2400x1024 |
| 02 | 第一个二级标题后 | 正文横图 | [隐喻] | [一句话] | 16:9 |
## 图片提示词
### 01 首图
Prompt: ...
Negative prompt: ...
Write prompts in English, and write the image plan in Chinese. This makes Chinese review easier and is also better suited to common image models.
Note: image prompts must not contain the article title, section headings, or the original keywords. Titles are only used for the image plan and file naming; what actually goes into the image model must be a de-textualized visual concept, for example changing HTML table to complex merged-cell grid, and changing product names to the lightweight reading tool。
Image density
WeChat official account articles default to "high-density body images"; do not make only a few section divider images. Unless the user explicitly asks for fewer images, plan according to the following rhythm:
- Short article: 1 lead image + 6-8 body horizontal images.
- Medium-length article: 1 lead image + 12-16 body horizontal images.
- Long article or case/product retrospective article: 1 lead image + 18-24 body horizontal images.
Long-article density baseline:
- For each
##level-2 heading, arrange 2-3 body images by default. - For
###level-3 headings with longer content or multiple turns, also handle them at around 2 images. - If a single section has only 1 image, it is usually only suitable as a section divider and not enough to cover the WeChat reading rhythm; unless that section is very short, continue adding key judgment images.
- Multiple images in the same section must each correspond to a different judgment: problem definition, mechanism change, trust/asset/boundary/judgment relationships, etc.; do not merely repeat the same meaning.
Body image slots should prioritize covering these positions:
- The problem definition after the opening.
- For each
##the first core judgment after a level-2 heading. - Important
###subsections. - Feature lists, comparison paragraphs, technical choices, process descriptions, development rhythm, key decisions, and conclusion paragraphs.
If the article has more than 5 level-2 headings, arrange at least 1 image for each level-2 heading; under longer level-2 headings, add 1-2 more. When there are many images, use paper / inverted background mode rotation and different metaphors to maintain rhythm, but still keep the same line style, fixed accent color, and low information density.
Control the number of reversal images by group:
- 6-8 body images: arrange 1-2
inverted。 - 10-14 body images: arrange 2-4
inverted, with about 1 appearing every 4 images by default. - The lead image uses
paperby default; do not start with a full-page blue background. Reversal images should preferably be placed in sections on key turns, conclusions, system boundaries, distribution amplification, human judgment, and so on. - Do not let two
invertedappear consecutively in the same image group, unless the user explicitly asks for a strong rhythm.
Diversity strategy
Do not rely only on soft shell / slot / hinge A set of grammar diagrams. Distribute the diagrams of the same article across different composition families. The goal of diversity is to make the relationships between different sections easier to understand, not to create stranger abstractions.
| Composition family | Suitable relationship | Visual characteristics |
|---|---|---|
| Sparse chain | Sequence, stages, handoff | A small number of rounded blocks advance along a horizontal line, with one accent-colored active block |
| Workflow book / vessel | Experience accumulation, method unfolding | Thick book pages, container, outlet or lateral output |
| Accent rail blocks | System boundaries, organizational order, inversion diagram | Accent-colored background or accent-colored track, off-white blocks arranged along the track |
| Cloud funnel output | From chaotic input to clear output | Organic cloud clusters, funnel/horn mouth, clear endpoint |
| Radial network | Diffusion, external perception, feedback | A central node radiates outward, but the number of nodes is controlled |
| Chain active block | Approval, admission, judgment, state change | One accent-colored active module in a horizontal chain |
| Stack / camera / archive | Evidence, materials, reusable assets | Stacked blocks, archive boxes, observation holes, storage structures |
| Nested frame | Abstract levels, explanatory frameworks, observation positions | Multi-layered nested frames, with an accent-colored core in the middle |
| Process to network | From process to collaborative network | Input list, process blocks, networked output |
| Folder archive | Archiving, knowledge base, samples | Folders, drawers, trays, sample blocks |
| Module puzzle chain | Module assembly, capability combination | Puzzle-like connectors, module chains, slot structures |
| Orbit / ring table | Open discussion, consensus not yet formed, empty center | Ring-shaped table, circular ring structure, empty center, surrounding cards loosely connected |
| Map / compass field | Direction, positioning, path selection, portable posture | Folded map, compass, path fragments, a small number of marker points |
| Balance / tension frame | Paradox, trade-offs, threshold tension | Central pivot, blocks on both sides, tension frame, suspended structure |
| Scaffold / temporary frame | Rough start, construction, temporary order | Scaffolding, unclosed frames, support rods, semi-formed objects |
| Seed / rare signal | Scarce signal, honest ignorance, small but important discovery | A small capsule in a large structure, a single heterogeneous block in a sample tray |
Execution rules:
- For every 6 body diagrams, use at least 4 different composition families.
- Within the same chapter, 2-3 diagrams must use different composition families, avoiding consecutive "boxes + connecting lines".
- If the previous one used a chain, the next one should preferably use a container, cloud cluster, nested frame, radial, or archive structure.
- In each group of 10-14 body diagrams, the horizontal transformation layout of "left-side input - middle processing/convergence - right-side output" may be used at most 2-3 times; two adjacent diagrams must not use this layout.
funnel、filter、threshold gate、channel、pipeline、output bands、endpoint capsulesbelongs to the same category of "convergent output layouts". Do not use it unless the chapter relationship is clearly compression, filtering, delivery, or transformation.- For every 5 body diagrams, arrange at least 2 nonlinear layouts, such as circular discussion, map positioning, stacked archives, sample tray, balanced tension, scaffolding, empty center, module assembly, or single-point scarce signal.
- Diversity comes from composition and relationships, not from adding colors, text, characters, icons, or complex backgrounds.
- Each image must first be explained in one Chinese sentence as to “what this image helps the reader understand.” If this sentence cannot be stated clearly, the imagery is not qualified and should be rewritten by returning to the composition family.
Sparse chainIt must be explicitly written as “small rounded-corner blocks advancing along a thin line, with one accent-colored active block,” not justchainorslot; otherwise the model tends to draw an incomprehensible abstract slot object.- Avoid continuous use of the 4th-5th round exploratory imagery such as
sealed chamber、oracle frame、aperture、offset sieve; these easily deviate from the hand-drawn style and article comprehension, and are not used as default composition families. - When writing the prompt, first declare the composition family, then write the section semantics. For example:
Composition family: nested frame. Visual thesis: ...
Composition Audit
Before calling ImageGen, first perform a composition audit on the entire set. Do not write prompts in isolation image by image; otherwise the Agent easily translates abstract arguments uniformly into horizontal convergence mechanism diagrams.
For each image, list:
| image position | reader_takeaway_zh | reference_family | layout_archetype | whether it is horizontal convergence |
|---|
layout_archetype Use these more specific layout labels:
left_to_right_transform: input on the left, processing in the middle, output on the right. Strictly limited.central_object: a single central object, with a small number of auxiliary blocks around it.radial_orbit: rings, round tables, central empty space, surrounding nodes.stack_archive: stacking, archives, drawers, sample boxes.map_field: maps, compasses, path fragments.balance_tension: tension, trade-offs, thresholds, pivot points.scaffold_frame: scaffolding, temporary frameworks, semi-formed structures.modular_grid: module assembly, grid but not UI.single_rare_signal: small but clear heterogeneous signals within a large structure.
Audit rules:
- If
left_to_right_transformexceeds 25% of the entire set, rewrite the excess image positions. - If two consecutive images are both
left_to_right_transform, rewrite the latter one. - If
funnel/filter/channel/gate/output-related words appear more than 3 times within 5 images, switch toradial_orbit、map_field、stack_archive、balance_tensionorscaffold_frame。 - If more than 4 images in the overview present a “wide on the left, narrow on the right” or “scattered on the left, organized on the right” silhouette, it indicates that things have gone off track, and the prompts must be rewritten before regenerating the images.
Prompt Template
Important: the color values in the following template (
#FAF9F5、#141413、#435C68, etc.) are only examples of the blue-gray default theme. When generating prompts, you must first read the actual color values from the current theme file (themes/<active_theme>.json, determined byconfig/style.json'sactive_theme) and replace them into the prompt; do not copy the example colors from the template. When the command line or outline specifies--theme, use that theme's color values.
WeChat Official Account Cover Image
Wide WeChat article cover illustration, generated in 16:9 and center-safe for 2400x1024 crop. Hand-drawn editorial object-card style based on this skill's composition families, not a copy of any brand asset. Warm off-white paper background ({paper_background}), flat with no vignette or lighting effect, one large centered symbolic object occupying 60-72% of the canvas width and 55-68% of the canvas height, near-black hand-inked filled contours ({ink_color}), stable silhouette that feels hand traced in one confident pass, subtle imperfect parallel edges, tapered stroke starts and ends, small pressure flattening at corners and overlaps, flat muted accent block in the active theme color ({accent_name} {accent_color}). Article-serving metaphor: [隐喻]. It should help readers understand: [当前段落核心观点]. Show only [1 个主物件] plus [1-2 个贴近主体的辅助元素]. Generous but not excessive negative space, quiet editorial composition, no cryptic surreal mechanism, no mechanical vector icon, no arrows, no plants, no leaves, no decorative corner marks, no ruler-straight edges, no tiny centered icon, no readable text, no logo, no watermark, no gradients, no vignette, no shadows, no 3D, no photorealism.
The lines must be further written as:
near-black hand-inked filled contour paths, stable readable silhouettes, single-pass confident hand tracing, subtle imperfect parallel edges, gently tapered stroke starts and ends, small pressure flattening at corners/overlaps/joints/terminal caps, long edges calm with organic tapering, not a smooth uniform rounded stroke and not a mechanical vector outline
More precisely: use “natural but controlled hand-drawing,” not “random irregularity.” The main outline should be stable, clear, and recognizable; variations in thickness come from the start of the stroke, the end of the stroke, corner indentations, and structural anchor points, not from the entire line shaking randomly, and do not let ink-blob noise appear on every edge. Internal thin lines can be thinner and carry a slight stroke ending.
Body Horizontal Image
16:9 horizontal editorial illustration for a WeChat article section. Hand-drawn object illustration system based on this skill's composition families, not a direct copy. Warm off-white paper background ({paper_background}), flat with no vignette or lighting effect. Use exactly one accent color from the active theme ({accent_name} {accent_color}), about 8-15% of the image. Near-black hand-inked filled contours ({ink_color}): stable readable silhouettes first, single-pass confident hand tracing, slight human asymmetry, gently tapered starts and ends, small pressure flattening at corners and overlaps; long edges stay calm with organic tapering, no random contour noise. One clear article-serving metaphor: [隐喻]. Help readers understand this concept: [当前段落核心观点]. Use one dominant main object occupying 55-68% of the canvas width or visual footprint, plus up to 2 close supporting marks. Spacious but not empty, calm, low-detail, understandable, no cryptic surreal mechanism, no mechanical vector icon, no arrows, no plants, no leaves, no decorative corner marks, no ruler-straight edges, no tiny centered icon, no readable text, no logo, no gradient, no vignette, no shadow, no 3D, no photo.
Inverted Background Image (inverted)
16:9 horizontal editorial illustration for a WeChat article section. Hand-drawn object illustration system, not a direct copy. Flat solid background using the active theme accent color ({accent_name} {accent_color}) as the whole canvas field, with no vignette, no lighting effect, no gradient, and no texture. Warm off-white object surfaces ({paper_surface}), near-black hand-inked filled contours ({ink_color}), stable silhouette, single-pass confident hand tracing, subtle tapering at stroke ends, small pressure flattening at structural corners and joins, one clear metaphor: [隐喻]. Main object occupies 55-68% of the canvas width or visual footprint. No mechanical vector icon, no arrows, no plants, no leaves, no decorative corner marks, no ruler-straight edges, no tiny centered icon, no random shaky lines, no lumpy edge noise, no second accent color, no readable text, no logo, no gradient, no vignette, no shadow, no 3D, no photo.
Square Card
1:1 square object-card illustration in hand-drawn editorial style. Use paper mode or inverted mode from config/style.json. Centered symbolic object occupying about 68-76% of the square canvas, near-black hand-inked filled contours with stable silhouette, single-pass confident hand tracing, tapered ends, and a few structural pressure accents, flat off-white inner surfaces, one concise metaphor for [概念]. Minimal composition, no mechanical vector icon, no arrows, no plants, no leaves, no decorative corner marks, no tiny icon, no readable text, no logo, no photorealism.
Metaphor Library
| Scene | Preferred Metaphor |
|---|---|
| Making experience explicit, explanation, observation position | Prism, compass map, window, magnifying glass |
| Complex input to clear output | Funnel, sample tray, folder, evidence box |
| Distribution, amplification, external perception | Broadcast diffusion, node network, bridge |
| Organizational governance, boundaries of responsibility | Scaffolding, layered framework, balance scale, gate |
| Approval, admission, permissions | Gate, bridge, keyhole, maze exit |
| Risk identification, early warning, grading | Radar, dashboard, maze path |
| Assetization, reuse, long-term cycle | Folder, flywheel, timeline, building blocks |
| Collaboration, Agent workflow | Bridge, browser window, track, broadcast diffusion |
Legal WeChat official account articles should prioritize "relational metaphors," that is, imagery in which relationships of compression, filtering, distribution, judgment, paths, accumulation, or collaboration can be seen. Magnifying glasses, radar, and node networks are low-risk but easily repetitive basic metaphors; do not use them heavily or repeatedly within one long article. Avoid an overly techy feel, a marketing poster feel, and a pure flowchart feel.
Batch planning and ImageGen image generation
By default, codex The queue relies only on the Python standard library. Before first using the explicit diagnostic tool,guided-edit or other API experiments, run in this directory:
python3 -m pip install -r scripts/requirements.txt
Prepare the outline JSON; you can copy and modify from assets/outline_sample.json . Core fields:
title: article titletitle_en: English title, used for the image prompt; if absent, the script falls back totitleaspect: default16:9style.background_mode_sequence: each image rotates betweenpaper/invertedtwo background modes.style.abstraction_strength: abstraction intensity for the whole piece, supportsreference_card、balanced、high_abstract; by default read fromconfig/style.json.illustrations[].abstraction_strength: overrides the abstraction intensity for a single image, used to mix within one article images closer to the reference images and images with higher abstraction.config/style.json: activates the theme pointer (active_theme), local color value override layer (overrides), and structural configuration such as ink lines and abstraction level; the actual accent color values come from theme filethemes/<active_theme>.json。illustrations[]: each image's position, purpose, metaphor, keywords, and emphasis target; it is recommended to add for each itemtitle_en、concept_en, ensuring the final prompt is mainly in English- For formal high-quality generation, add for each item
chapter_claim_en、visual_thesis_en、main_relation_en、support_structure_enandfinal_prompt_en; the script will prioritize thefinal_prompt_en。
Default built-in image generation queue:
python3 scripts/batch_article_images.py \
--outline assets/outline_sample.json \
--outdir out
This command is equivalent to --mode codex, and outputs prompts.json、codex_generation_queue.json and codex_generation_queue.md. Then the Agent calls the built-in image generation capability of ImageGen/Codex/ChatGPT to generate the final images. By default, this proceeds to real image generation, and no additional local preview is run.
Explicit diagnostic tool: local composition sketch. Do not run by default; use only when the user explicitly requests a composition sketch, placeholder preview, or local preview check:
python3 scripts/batch_article_images.py \
--outline assets/outline_sample.json \
--outdir out \
--mode local
local outputs each PNG, cover image 2400x1024 export version and overview_board.png, used to check composition, subject proportion, metaphor repetition, and frame safe zone. It is an explicit diagnostic/sketch route, not part of the default process, and cannot be used to replace ImageGen final output.
Default image compression:
python3 scripts/compress_images.py /path/to/generated-image-dir
This script overwrites images in place, by default compressing as much as possible to below 200KB , and requires each image to be below 500KB. It prioritizes pngquant; if installation is needed:
brew install pngquant imagemagick
If a very small number of images cannot be brought below 500KBby compression alone, scaling can be explicitly allowed:
python3 scripts/compress_images.py /path/to/generated-image-dir --allow-resize
External API relaxed-constraint experiment:
python3 scripts/batch_article_images.py \
--outline assets/outline_sample.json \
--outdir out \
--mode t2i \
--allow-api \
--image-size auto \
--final-size 2400x1024
The default text-to-image model is Tongyi-MAI/Z-Image-Turbo. This route is only for explicit experiments and side-by-side comparison, and is not the default delivery main path;Qwen/Qwen-Image and MiniMax image-01 are only used as stress tests,Qwen/Qwen-Image-Edit-2509 serves as the skeleton fallback. All external API modes must explicitly add --allow-api, otherwise the script will refuse to execute, to avoid accidentally triggering the API in default delivery.
External API composition lock experiment:
python3 scripts/batch_article_images.py \
--outline assets/outline_sample.json \
--outdir out \
--mode guided-edit \
--allow-api
guided-edit will first output composition_guides/ local composition sketch, then call the editing model. It is more suitable than pure t2i for relaying "already-determined semantics and composition" to the API, but it is still only a candidate experiment and cannot replace the built-in image generation final draft by default.
If using the empty base image editing mode to maintain series consistency:
python3 scripts/batch_article_images.py \
--outline assets/outline_sample.json \
--outdir out \
--mode edit \
--allow-api
Configure API Key:
- Only explicitly using
--allow-apiAPI experiment route requires configuration. - Copy
config/secrets.env.exampleasconfig/secrets.env - Fill in
SILICONFLOW_AK - Do not commit
config/secrets.env(already ignored by.gitignore)
Output check
- Whether each image has only one core concept.
- Whether the default delivery is completed by the Agent calling ImageGen/Codex/ChatGPT built-in image generation capabilities, rather than treating local rendered sketches as final images.
- Whether to first write
Image Brief, then write the final English visual prompt; do not rely only on section titles or keywords to apply templates. - Whether to use
--mode codexto generate the queue, and then call ImageGen/built-in image generation tools to generate real PNGs. - Whether it does not run by default
--mode localor generatelocal_preview/; if the user explicitly requests local sketches, whether they are marked as diagnostic sketches rather than formal delivery images. - Whether it has run
scripts/compress_images.pyto compress the final images, by default each below500KB, as much as possible below200KB。 - If the user explicitly requests API experiments, whether to prioritize using
guided-edit, and check whethercomposition_guides/is consistent with the final image's subject, layout, and background mode. - Whether the subject is in the central safe area, and key information is not lost after the first image is cropped.
- Whether the subject is large enough: body horizontal images should not look like small icons; by default the subject occupies about 55-68% of the image width or visual weight.
- Whether to use the fixed accent color from the configuration (from the current theme pack); white-background images use only local accent color, and inverted-background images do not introduce a second accent color.
- Whether the ink lines look like a single-pass hand tracing: with stroke starts and ends and corner pressure marks, rather than mechanical vector outlines, uniformly rounded outlines, full-circle random ink blobs, or jittery draft lines.
- Whether readable text, logos, watermarks, real UI screenshots, and photographic texture are avoided.
- Whether the prompt has been de-textualized: article titles, section titles, keywords, or product names must not be sent as-is into the image model.
- Whether it does not directly replicate any ready-made illustration from a brand's official website.
- Whether the same article enhances hierarchy through white-background/blue-background rhythm changes, but does not become a multicolored rainbow.
Reference files
references/handdrawn_style_architecture.md: Source of the hand-drawn object card style, structural language, and implementation rules.references/builtin_image_generation_workflow.md: Default route for built-in image generation, Image Brief fields, and prompt writing.references/siliconflow_images_api.md: Key points of the SiliconFlow image API.config/style.json: Activates structural configurations such as theme pointers, color value overlays, and ink line styles.themes/: Theme file directory; each file defines a set of color schemes (accent color, paper color, ink line color); seethemes/README.md。