
The baoyu-xhs-images skill generates cartoon-style infographic series optimized for Xiaohongshu (Little Red Book), a Chinese social media platform, by breaking down content into 1-10 images across 11 visual styles and 8 layout combinations. It serves content creators and marketers targeting Chinese audiences who need to convert articles or text into visually engaging multi-image posts that drive platform engagement. The skill solves the problem of time-consuming manual infographic creation by automating the conversion process while offering customizable aesthetics and information architecture options.
$ npx -y skills add jimliu/baoyu-skills --skill baoyu-xhs-images --agent claude-codeInstalls into .claude/skills of the current project.
Break down complex content into eye-catching image card series with multiple style options.
When this skill prompts the user, follow this tool-selection rule (priority order):
AskUserQuestion, request_user_input, clarify, ask_user, or any equivalent.Concrete AskUserQuestion references below are examples — substitute the local equivalent in other runtimes.
Resolve the image backend in this order:
preferred_image_backend in EXTEND.md names a backend available now → use it. ask means ask every run.auto, unset, or the pinned backend is unavailable), first match wins:
imagegen skill is in your available skills → you are in Codex and MUST use it: Skill with skill: "imagegen", passing the prompt file's content plus output path and aspect ratio. It outranks non-native skills such as baoyu-image-gen.codex exec (codex-imagegen): no native imagegen, but the codex CLI is on PATH with an active codex login → baoyu-image-gen --provider codex-cli (preferred), or the bundled wrapper if baoyu-image-gen is unavailable. Load references/codex-imagegen.md only for this branch.GenerateImage → use it (outranks non-native skills). It has no aspect-ratio parameter, so state the aspect ratio / dimensions in the description prompt; it saves to a tool-managed location, so copy the file to the expected output path (e.g., outputs/.../NN-xxx.png). Reference images go in reference_image_paths.image_generate) → use it the same way.baoyu-image-gen) → use it.⛔ Raster only: never substitute SVG, HTML/CSS, canvas, or other code-based rendering for a raster image, even for diagram-like content. If no raster backend resolves, go to step 4.
⛔ No bitmap text patching: never use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other overlay to cover, rewrite, erase, stroke, or replace titles, body copy, tags, or any other text inside an already generated image card. Regenerate from a corrected prompt, switch to a layout with less on-card text, or ask the user which imperfect candidate to keep.
Prompt file (hard): before invoking any backend, write each image's full, final prompt to its own file under prompts/ (NN-{type}-[slug].md) and pass that file (or its content) to the backend. It is the reproducibility record and lets you switch backends without rewriting prompts.
Change the pinned backend via ## Changing Preferences below. Tool names above are examples; use the local equivalent in other runtimes.
After every prompt file for the current generation group has been saved and verified, generate images in batches by default.
Priority order:
generation_batch_size images at a time. Default: 4. An explicit user request in the current message, such as --batch-size 4 or "并行 4 张一起生成", overrides EXTEND.md.Rules:
Default behavior: confirm before generation.
EXTEND.md defaults as recommendation inputs only. None of them authorizes skipping confirmation.--yes, "直接生成", "不用确认", "跳过确认", "按默认出图", or equivalent wording.Respond in the user's language across questions, progress, errors, and completion summary. Keep technical tokens (style names, file paths, code) in English.
| Option | Description |
|---|---|
--style <name> | Visual style (see Styles below) |
--layout <name> | Information layout (see Layouts below) |
--palette <name> | Color override: macaron / warm / neon |
--preset <name> | Style + layout + optional palette shorthand (see references/style-presets.md) |
--ref <files...> | Reference images applied to image 1 as the series anchor |
--batch-size <n> | Temporary generation batch size for this run. Default: generation_batch_size from EXTEND.md, otherwise 4. Clamp to 1-8. |
--yes | Non-interactive: skip all confirmations, use EXTEND.md or built-in defaults, auto-confirm recommended plan (Path A) |
Three independent knobs combine freely:
| Dimension | Controls | Options |
|---|---|---|
| Style | Visual aesthetics (lines, decorations, rendering) | 12 styles (see Styles below) |
| Layout | Information structure (density, arrangement) | 8 layouts (see Layouts below) |
| Palette (optional) | Color override, replaces the style's default colors | macaron / warm / neon (see Palettes below) |
Example: --style notion --layout dense makes an intellectual knowledge card; add --palette macaron to soften the colors without changing notion's rendering rules. A --preset is a shorthand for style + layout (+ optional palette).
Palette behavior: no --palette → style's built-in colors; --palette <name> → overrides colors only, rendering rules unchanged. Some styles declare a default_palette (e.g., sketch-notes defaults to macaron).
| Style | Description |
|---|---|
cute (Default) | Sweet, adorable, girly aesthetic |
fresh | Clean, refreshing, natural |
warm | Cozy, friendly, approachable |
bold | High impact, attention-grabbing |
minimal | Ultra-clean, sophisticated |
retro | Vintage, nostalgic, trendy |
pop | Vibrant, energetic, eye-catching |
notion | Minimalist hand-drawn line art, intellectual |
chalkboard | Colorful chalk on black board, educational |
study-notes | Realistic handwritten photo style, blue pen + red annotations + yellow highlighter |
screen-print | Bold poster art, halftone textures, limited colors, symbolic storytelling |
sketch-notes | Hand-drawn educational infographic, macaron pastels on warm cream, wobble lines |
Per-style specifications: references/presets/<style>.md.
| Layout | Description |
|---|---|
sparse (Default) | 1-2 points, maximum impact |
balanced | 3-4 points, standard |
dense | 5-8 points, knowledge-card style |
list | Enumeration / ranking (4-7 items) |
comparison | Side-by-side contrast |
flow | Process / timeline (3-6 steps) |
mindmap | Center-radial (4-8 branches) |
quadrant | Four-quadrant / circular sections |
Layout specs: references/elements/canvas.md.
Replaces the style's colors while keeping rendering rules (line treatment, textures) intact.
| Palette | Background | Zone Colors | Accent | Feel |
|---|---|---|---|---|
macaron | Warm cream #F5F0E8 | Blue #A8D8EA, Lavender #D5C6E0, Mint #B5E5CF, Peach #F8D5C4 | Coral #E8655A | Soft, educational |
warm | Soft peach #FFECD2 | Orange #ED8936, Terracotta #C05621, Golden #F6AD55, Rose #D4A09A | Sienna #A0522D | Earth tones, cozy |
neon | Dark purple #1A1025 | Cyan #00F5FF, Magenta #FF00FF, Green #39FF14, Pink #FF6EC7 | Yellow #FFFF00 | High-energy, futuristic |
Palette specs: references/palettes/<palette>.md.
26 presets grouped by scenario (knowledge, lifestyle, impact, trend, poster). Read references/style-presets.md when the user passes --preset or when recommending a preset in Step 2.
Match content signals to the best combo. First row whose keywords appear wins; fall back to cute-share if nothing matches.
| Signals in source | Style | Layout | Recommended preset |
|---|---|---|---|
| beauty, fashion, cute, girl, pink | cute | sparse/balanced | cute-share, girly |
| health, nature, fresh, organic | fresh | balanced/flow | product-review, nature-flow |
| life, story, emotion, warm | warm | balanced | cozy-story |
| warning, important, must, critical | bold | list/comparison | warning, versus |
| professional, business, elegant | minimal | sparse/balanced | clean-quote, pro-summary |
| classic, vintage, traditional | retro | balanced | throwback, retro-ranking |
| fun, exciting, wow, amazing | pop | sparse/list | hype, pop-facts |
| knowledge, concept, productivity, SaaS | notion | dense/list | knowledge-card, checklist |
| education, tutorial, learning, classroom | chalkboard | balanced/dense | tutorial, classroom |
| notes, handwritten, study guide, realistic | study-notes | dense/list/mindmap | study-guide |
| movie, poster, opinion, editorial, cinematic | screen-print | sparse/comparison | poster, editorial, cinematic |
| hand-drawn, infographic, workflow, 手绘,图解 | sketch-notes | flow/balanced/dense | hand-drawn-edu, sketch-card, sketch-summary |
When the user picks a non-default style + layout combo, check references/style-layout-matrix.md and flag poor matches (✗).
Three differentiated approaches — each produces a structurally different outline. The workflow recommends one; Path C generates all three and lets the user choose.
| Strategy | Concept | Best for | Structure |
|---|---|---|---|
| A — Story-Driven | Personal experience as the thread, emotional resonance first | Reviews, personal shares, transformation | Hook → Problem → Discovery → Experience → Conclusion |
| B — Information-Dense | Value-first, efficient information delivery | Tutorials, comparisons, checklists | Core conclusion → Info card → Pros/Cons → Recommendation |
| C — Visual-First | Visual impact as core, minimal text | High-aesthetic products, lifestyle, mood content | Hero image → Detail shots → Lifestyle scene → CTA |
Only when the user supplies refs (--ref <files...> or pasted paths): read references/reference-images.md for intake, usage modes (direct / style / palette), prompt frontmatter, and how refs combine with the image-1 anchor chain.
image-cards/{topic-slug}/
├── source-{slug}.{ext}
├── analysis.md
├── outline-strategy-{a,b,c}.md # Path C only
├── outline.md
├── prompts/NN-{type}-{slug}.md
├── NN-{type}-{slug}.png
└── refs/ # only if --ref used
Slug: 2-4 words, kebab-case. "AI 工具推荐" → ai-tools-recommend. On collision, append -YYYYMMDD-HHMMSS.
Backup rule (applies throughout): before overwriting any file — source, outline, prompt, image — rename the existing one to <name>-backup-YYYYMMDD-HHMMSS.<ext>. This protects user edits.
- [ ] Step 0: Load EXTEND.md ⛔ BLOCKING (interactive only)
- [ ] Step 1: Analyze content → analysis.md
- [ ] Step 2: Smart Confirm ⚠️ REQUIRED (Path A / B / C)
- [ ] Step 3: Generate images
- [ ] Step 4: Completion report
Check these paths in order; first hit wins:
| Path | Scope |
|---|---|
.baoyu-skills/baoyu-xhs-images/EXTEND.md | Project |
${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-xhs-images/EXTEND.md | XDG |
$HOME/.baoyu-skills/baoyu-xhs-images/EXTEND.md | User home |
references/config/first-time-setup.md) and save before anything else. Do NOT analyze content or ask style questions until preferences exist — this keeps first-run behavior predictable.--yes → skip setup, use built-in defaults (no watermark, style/layout auto-selected, language from content). Do not prompt, do not create EXTEND.md.EXTEND.md keys: watermark, preferred style/layout, custom style definitions, language preference, preferred image backend, generation batch size. Schema: references/config/preferences-schema.md.
analysis.mdsource.md exists).references/workflows/analysis-framework.md: content type, hook potential, audience, engagement signals, visual opportunity map, swipe flow.analysis.md.Hard gate: this step is mandatory per the Confirmation Policy — Step 3 cannot start until the user confirms here (or explicitly opts out with --yes / equivalent wording in the current request).
Goal: present the auto-recommended plan and let the user confirm or adjust. Skip this step entirely under --yes — proceed with Path A using the analysis and any CLI overrides.
Display summary before asking:
📋 内容分析
主题:[topic] | 类型:[content_type]
要点:[key points]
受众:[audience]
🎨 推荐方案(自动匹配)
策略:[A/B/C] [name]([reason])
风格:[style] · 布局:[layout] · 配色:[palette or 默认] · 预设:[preset]
图片:[N]张(封面+[N-2]内容+结尾)
元素:[background] / [decorations] / [emphasis]
Then ask one question — three paths. Verbatim option copy: references/confirmation.md.
Path A — Quick confirm (trust auto-recommendation): generate a single outline using the recommended strategy + style → save to outline.md → Step 3.
Path B — Customize: ask five questions (strategy/style, layout, palette, count, optional notes) with the recommendation pre-filled — blanks keep the recommendation. Generate one outline with the user's choices → outline.md → Step 3. See references/confirmation.md.
Path C — Detailed mode: two sub-confirmations.
analysis.md.outline-strategy-a.md, outline-strategy-b.md, outline-strategy-c.md. Each MUST have a different structure AND a different recommended style — include style_reason in the frontmatter. Page-count heuristic: A ~4-6, B ~3-5, C ~3-4. Template: references/workflows/outline-template.md; frontmatter example in references/confirmation.md.outline.md → Step 3.With confirmed outline + style + layout + palette:
Visual consistency — image-1 anchor chain: character / mascot / color rendering drifts between calls unless you anchor them. Generate image 1 (cover) first WITHOUT --ref, then pass image 1 as --ref to every subsequent image. This is the single most important consistency trick for this skill — don't skip it even if the backend also supports a session ID.
Generation flow:
prompts/NN-{type}-{slug}.md in the user's preferred language (backup rule applies), then verify all selected prompt files exist.--ref; backup rule applies to the PNG file. This establishes the anchor.--ref <path-to-image-01.png>.## Batch Generation Policy: backend native batch first, runtime parallel tool calls second, sequential only as fallback.Watermark (if enabled in EXTEND.md): append to the generation prompt:
Include a subtle watermark "[content]" positioned at [position].
The watermark should be legible but not distracting.
See references/config/watermark-guide.md.
Backend selection: per the Image Generation Tools rule at the top — use whatever is available, ask once if multiple, before any generation. Under --yes, use the EXTEND.md preference and fall back to the first available backend. Prompt files MUST exist before invoking any backend.
codex-imagegen invocation: when the rule resolves to codex-imagegen, see references/codex-imagegen.md for the invocation contract (preferred baoyu-image-gen --provider codex-cli path, runtime wrapper discovery, parameter notes, stdout schema, batch semantics — n=1 per call so card batches must dispatch one wrapper call per card; the wrapper does NOT accept --sessionId, so chain consistency must come from --ref per Step 3 above).
Session ID (if the backend supports --sessionId): use cards-{topic-slug}-{timestamp} for every image; combined with the ref chain this gives maximum consistency.
Image Card Series Complete!
Topic: [topic]
Mode: [Quick / Custom / Detailed]
Strategy: [A/B/C/Combined]
Style: [name]
Palette: [name or "default"]
Layout: [name or "varies"]
Location: [directory]
Images: N total
✓ analysis.md
✓ outline.md
✓ outline-strategy-a/b/c.md (detailed mode only)
- 01-cover-[slug].png ✓ Cover (sparse)
- 02-content-[slug].png ✓ Content (balanced)
- ...
- NN-ending-[slug].png ✓ Ending (sparse)
| Position | Purpose | Typical layout |
|---|---|---|
| Cover (image 1) | Hook + visual impact | sparse |
| Content (middle) | Core value per image | balanced / dense / list / comparison / flow |
| Ending (last) | CTA / summary | sparse or balanced |
For the style × layout compatibility matrix, see references/style-layout-matrix.md.
When the user asks to edit, add, delete, or fix text on a card after generation, read references/image-modification.md first. Always update the prompt file before regenerating, and never patch bitmap text with code.
| File | Content |
|---|---|
references/confirmation.md | Verbatim AskUserQuestion copy for every confirmation path |
references/style-presets.md | Full preset shortcut definitions, presets grouped by scenario |
references/style-layout-matrix.md | Style × layout compatibility scores |
references/reference-images.md | User-supplied reference image intake and usage |
references/image-modification.md | Edit / add / delete cards, text correction policy |
references/presets/<style>.md | Per-style element definitions |
references/palettes/<name>.md | Per-palette color definitions |
references/elements/canvas.md | Aspect ratios, safe zones, grid layouts |
references/elements/image-effects.md | Cutout, stroke, filters |
references/elements/typography.md | Decorated text, tags, text direction |
references/elements/decorations.md | Emphasis marks, backgrounds, doodles, frames |
references/workflows/analysis-framework.md | Content analysis framework |
references/workflows/outline-template.md | Outline template with layout guide |
references/workflows/prompt-assembly.md | Prompt assembly guide |
references/config/preferences-schema.md | EXTEND.md schema |
references/config/first-time-setup.md | First-time setup flow |
references/config/watermark-guide.md | Watermark configuration |
EXTEND.md lives at the first matching path listed in Step 0. Three ways to change it:
references/config/preferences-schema.md.preferred_image_backend: auto — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.preferred_image_backend: codex-imagegen — pin to Codex's built-in.preferred_image_backend: baoyu-image-gen — pin to the baoyu-image-gen skill.preferred_image_backend: ask — confirm backend every run.generation_batch_size: 4 — default number of images to render concurrently when the backend/runtime supports batch or parallel generation.preferred_style: notion, preferred_layout: dense, preferred_palette: macaron, language: zh.watermark.enabled: true + watermark.content: "@handle" — add a watermark.Sponsors