| name | baoyu-xhs-images |
| description | Generates Xiaohongshu (Little Red Book) infographic series with 10 visual styles and 8 layouts. Breaks content into 1-10 cartoon-style images optimized for XHS engagement. Use when user mentions "ๅฐ็บขไนฆๅพ็", "XHS images", "RedNote infographics", "ๅฐ็บขไนฆ็ง่", or wants social media infographics for Chinese platforms. |
Xiaohongshu Infographic Series Generator
Break down complex content into eye-catching infographic series for Xiaohongshu with multiple style options.
Usage
/baoyu-xhs-images posts/ai-future/article.md
/baoyu-xhs-images posts/ai-future/article.md --style notion
/baoyu-xhs-images posts/ai-future/article.md --layout dense
/baoyu-xhs-images posts/ai-future/article.md --style notion --layout list
/baoyu-xhs-images
[paste content]
/baoyu-xhs-images --style bold --layout comparison
[paste content]
Options
| Option | Description |
|---|
--style <name> | Visual style (see Style Gallery) |
--layout <name> | Information layout (see Layout Gallery) |
Two Dimensions
| Dimension | Controls | Options |
|---|
| Style | Visual aesthetics: colors, lines, decorations | cute, fresh, warm, bold, minimal, retro, pop, notion, chalkboard, study-notes |
| Layout | Information structure: density, arrangement | sparse, balanced, dense, list, comparison, flow, mindmap, quadrant |
Style ร Layout can be freely combined. Example: --style notion --layout dense creates an intellectual-looking knowledge card with high information density.
Style Gallery
| Style | Description |
|---|
cute (Default) | Sweet, adorable, girly - classic Xiaohongshu 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 |
Detailed style definitions: references/presets/<style>.md
Layout Gallery
| Layout | Description |
|---|
sparse (Default) | Minimal information, maximum impact (1-2 points) |
balanced | Standard content layout (3-4 points) |
dense | High information density, knowledge card style (5-8 points) |
list | Enumeration and ranking format (4-7 items) |
comparison | Side-by-side contrast layout |
flow | Process and timeline layout (3-6 steps) |
mindmap | Center radial mind map layout (4-8 branches) |
quadrant | Four-quadrant / circular section layout |
Detailed layout definitions: references/elements/canvas.md
Auto Selection
| Content Signals | Style | Layout |
|---|
| Beauty, fashion, cute, girl, pink | cute | sparse/balanced |
| Health, nature, clean, fresh, organic | fresh | balanced/flow |
| Life, story, emotion, feeling, warm | warm | balanced |
| Warning, important, must, critical | bold | list/comparison |
| Professional, business, elegant, simple | minimal | sparse/balanced |
| Classic, vintage, old, traditional | retro | balanced |
| Fun, exciting, wow, amazing | pop | sparse/list |
| Knowledge, concept, productivity, SaaS | notion | dense/list |
| Education, tutorial, learning, teaching, classroom | chalkboard | balanced/dense |
| Notes, handwritten, study guide, knowledge, realistic, photo | study-notes | dense/list/mindmap |
Outline Strategies
Three differentiated outline strategies for different content goals:
Strategy A: Story-Driven (ๆ
ไบ้ฉฑๅจๅ)
| Aspect | Description |
|---|
| Concept | Personal experience as main thread, emotional resonance first |
| Features | Start from pain point, show before/after change, strong authenticity |
| Best for | Reviews, personal shares, transformation stories |
| Structure | Hook โ Problem โ Discovery โ Experience โ Conclusion |
Strategy B: Information-Dense (ไฟกๆฏๅฏ้ๅ)
| Aspect | Description |
|---|
| Concept | Value-first, efficient information delivery |
| Features | Clear structure, explicit points, professional credibility |
| Best for | Tutorials, comparisons, product reviews, checklists |
| Structure | Core conclusion โ Info card โ Pros/Cons โ Recommendation |
Strategy C: Visual-First (่ง่งไผๅ
ๅ)
| Aspect | Description |
|---|
| Concept | Visual impact as core, minimal text |
| Features | Large images, atmospheric, instant appeal |
| Best for | High-aesthetic products, lifestyle, mood-based content |
| Structure | Hero image โ Detail shots โ Lifestyle scene โ CTA |
File Structure
Each session creates an independent directory named by content slug:
xhs-images/{topic-slug}/
โโโ source-{slug}.{ext} # Source files (text, images, etc.)
โโโ analysis.md # Deep analysis + questions asked
โโโ outline-strategy-a.md # Strategy A: Story-driven
โโโ outline-strategy-b.md # Strategy B: Information-dense
โโโ outline-strategy-c.md # Strategy C: Visual-first
โโโ outline.md # Final selected/merged outline
โโโ prompts/
โ โโโ 01-cover-[slug].md
โ โโโ 02-content-[slug].md
โ โโโ ...
โโโ 01-cover-[slug].png
โโโ 02-content-[slug].png
โโโ NN-ending-[slug].png
Slug Generation:
- Extract main topic from content (2-4 words, kebab-case)
- Example: "AIๅทฅๅ
ทๆจ่" โ
ai-tools-recommend
Conflict Resolution:
If xhs-images/{topic-slug}/ already exists:
- Append timestamp:
{topic-slug}-YYYYMMDD-HHMMSS
- Example:
ai-tools exists โ ai-tools-20260118-143052
Source Files:
Copy all sources with naming source-{slug}.{ext}:
source-article.md, source-photo.jpg, etc.
- Multiple sources supported: text, images, files from conversation
Workflow
Progress Checklist
Copy and track progress:
XHS Infographic Progress:
- [ ] Step 0: Check preferences (EXTEND.md) โ BLOCKING
- [ ] Found โ load preferences โ continue
- [ ] Not found โ run first-time setup โ MUST complete before Step 1
- [ ] Step 1: Analyze content โ analysis.md
- [ ] Step 2: Confirmation 1 - Content understanding โ ๏ธ REQUIRED
- [ ] Step 3: Generate 3 outline + style variants
- [ ] Step 4: Confirmation 2 - Outline & style & elements selection โ ๏ธ REQUIRED
- [ ] Step 5: Generate images (sequential)
- [ ] Step 6: Completion report
Flow
Input โ [Step 0: Preferences] โโฌโ Found โ Continue
โ
โโ Not found โ First-Time Setup โ BLOCKING
โ
โโ Complete setup โ Save EXTEND.md โ Continue
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
Analyze โ [Confirm 1] โ 3 Outlines โ [Confirm 2: Outline + Style + Elements] โ Generate โ Complete
Step 0: Load Preferences (EXTEND.md) โ BLOCKING
Purpose: Load user preferences or run first-time setup.
CRITICAL: If EXTEND.md not found, MUST complete first-time setup before ANY other questions or steps. Do NOT proceed to content analysis, do NOT ask about style, do NOT ask about layout โ ONLY complete the preferences setup first.
Use Bash to check EXTEND.md existence (priority order):
test -f .baoyu-skills/baoyu-xhs-images/EXTEND.md && echo "project"
test -f "$HOME/.baoyu-skills/baoyu-xhs-images/EXTEND.md" && echo "user"
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ Path โ Location โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโค
โ .baoyu-skills/baoyu-xhs-images/EXTEND.md โ Project directory โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโค
โ $HOME/.baoyu-skills/baoyu-xhs-images/EXTEND.md โ User home โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Result โ Action โ
โโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Found โ Read, parse, display summary โ Continue to Step 1 โ
โโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Not found โ โ BLOCKING: Run first-time setup ONLY (see below) โ Complete and save EXTEND.md โ Then Step 1 โ
โโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
First-Time Setup (when EXTEND.md not found):
Language: Use user's input language or saved language preference.
Use AskUserQuestion with ALL questions in ONE call. See references/config/first-time-setup.md for question details.
EXTEND.md Supports: Watermark | Preferred style/layout | Custom style definitions | Language preference
Schema: references/config/preferences-schema.md
Step 1: Analyze Content โ analysis.md
Read source content, save it if needed, and perform deep analysis.
Actions:
- Save source content (if not already a file):
- If user provides a file path: use as-is
- If user pastes content: save to
source.md in target directory
- Backup rule: If
source.md exists, rename to source-backup-YYYYMMDD-HHMMSS.md
- Read source content
- Deep analysis following
references/workflows/analysis-framework.md:
- Content type classification (็ง่/ๅนฒ่ดง/ๆต่ฏ/ๆ็จ/้ฟๅ...)
- Hook analysis (็ๆฌพๆ ้ขๆฝๅ)
- Target audience identification
- Engagement potential (ๆถ่/ๅไบซ/่ฏ่ฎบ)
- Visual opportunity mapping
- Swipe flow design
- Detect source language
- Determine recommended image count (2-10)
- Generate clarifying questions (see Step 2)
- Save to
analysis.md
Step 2: Confirmation 1 - Content Understanding โ ๏ธ
Purpose: Validate understanding + collect missing info. Do NOT skip.
Display summary:
- Content type + topic identified
- Key points extracted
- Tone detected
- Source images count
Use AskUserQuestion for:
- Core selling point (multiSelect: true)
- Target audience
- Style preference: Authentic sharing / Professional review / Aesthetic mood / Auto
- Additional context (optional)
After response: Update analysis.md โ Step 3
Step 3: Generate 3 Outline + Style Variants
Based on analysis + user context, create three distinct strategy variants. Each variant includes both outline structure and visual style recommendation.
For each strategy:
| Strategy | Filename | Outline | Recommended Style |
|---|
| A | outline-strategy-a.md | Story-driven: emotional, before/after | warm, cute, fresh |
| B | outline-strategy-b.md | Information-dense: structured, factual | notion, minimal, chalkboard |
| C | outline-strategy-c.md | Visual-first: atmospheric, minimal text | bold, pop, retro |
Outline format (YAML front matter + content):
---
strategy: a
name: Story-Driven
style: warm
style_reason: "Warm tones enhance emotional storytelling and personal connection"
elements:
background: solid-pastel
decorations: [clouds, stars-sparkles]
emphasis: star-burst
typography: highlight
layout: balanced
image_count: 5
---
**Type**: cover
**Hook**: "ๅ
ฅๅฌๅ่ธไธๅนฒไบ๐ฅน็ปไบๆพๅฐๅฏน็้ข้"
**Visual**: Product hero shot with cozy winter atmosphere
**Layout**: sparse
**Type**: pain-point
**Message**: Previous struggles with dry skin
**Visual**: Before state, relatable scenario
**Layout**: balanced
...
Differentiation requirements:
- Each strategy MUST have different outline structure AND different recommended style
- Adapt page count: A typically 4-6, B typically 3-5, C typically 3-4
- Include
style_reason explaining why this style fits the strategy
- Consider user's style preference from Step 2
Reference: references/workflows/outline-template.md
Step 4: Confirmation 2 - Outline & Style & Elements Selection โ ๏ธ
Purpose: User chooses outline strategy, confirms visual style, and customizes elements. Do NOT skip.
Display each strategy:
- Strategy name + page count + recommended style
- Page-by-page summary (P1 โ P2 โ P3...)
Use AskUserQuestion with three questions:
Question 1: Outline Strategy
- Strategy A (Recommended if "authentic sharing")
- Strategy B (Recommended if "professional review")
- Strategy C (Recommended if "aesthetic mood")
- Combine: specify pages from each
Question 2: Visual Style
- Use strategy's recommended style (show which style)
- Or select from: cute / fresh / warm / bold / minimal / retro / pop / notion / chalkboard
- Or type custom style description
Question 3: Visual Elements (show after style selection)
Display the selected style's default elements from preset, then ask:
- Use style defaults (Recommended) - show preview: background, decorations, emphasis
- Adjust background - options: solid-pastel / solid-saturated / gradient-linear / gradient-radial / paper-texture / grid
- Adjust decorations - options: hearts / stars-sparkles / flowers / clouds / leaves / confetti
- Type custom element preferences
After response:
- Single strategy โ copy to
outline.md with confirmed style
- Combination โ merge specified pages with confirmed style
- Custom request โ regenerate based on feedback
- Style defaults โ use preset's Element Combination as-is
- Background adjustment โ update elements.background with user choice
- Decorations adjustment โ update elements.decorations with user choice
- Custom elements โ parse user's preferences into elements fields
- Update
outline.md frontmatter with final style and elements
Step 5: Generate Images
With confirmed outline + style + layout:
For each image (cover + content + ending):
- Save prompt to
prompts/NN-{type}-[slug].md (in user's preferred language)
- Backup rule: If prompt file exists, rename to
prompts/NN-{type}-[slug]-backup-YYYYMMDD-HHMMSS.md
- Generate image using confirmed style and layout
- Backup rule: If image file exists, rename to
NN-{type}-[slug]-backup-YYYYMMDD-HHMMSS.png
- Report progress after each generation
Watermark Application (if enabled in preferences):
Add to each image generation prompt:
Include a subtle watermark "[content]" positioned at [position].
The watermark should be legible but not distracting from the main content.
Reference: references/config/watermark-guide.md
Image Generation Skill Selection:
- Check available image generation skills
- If multiple skills available, ask user preference
Session Management:
If image generation skill supports --sessionId:
- Generate unique session ID:
xhs-{topic-slug}-{timestamp}
- Use same session ID for all images
- Ensures visual consistency across generated images
Step 6: Completion Report
Xiaohongshu Infographic Series Complete!
Topic: [topic]
Strategy: [A/B/C/Combined]
Style: [style name]
Layout: [layout name or "varies"]
Location: [directory path]
Images: N total
โ analysis.md
โ outline-strategy-a.md
โ outline-strategy-b.md
โ outline-strategy-c.md
โ outline.md (selected: [strategy])
Files:
- 01-cover-[slug].png โ Cover (sparse)
- 02-content-[slug].png โ Content (balanced)
- 03-content-[slug].png โ Content (dense)
- 04-ending-[slug].png โ Ending (sparse)
Image Modification
| Action | Steps |
|---|
| Edit | Update prompt file FIRST โ Regenerate with same session ID |
| Add | Specify position โ Create prompt โ Generate โ Renumber subsequent files (NN+1) โ Update outline |
| Delete | Remove files โ Renumber subsequent (NN-1) โ Update outline |
IMPORTANT: When updating images, ALWAYS update the prompt file (prompts/NN-{type}-[slug].md) FIRST before regenerating. This ensures changes are documented and reproducible.
Content Breakdown Principles
- Cover (Image 1): Hook + visual impact โ
sparse layout
- Content (Middle): Core value per image โ
balanced/dense/list/comparison/flow
- Ending (Last): CTA / summary โ
sparse or balanced
Style ร Layout Matrix (โโ = highly recommended, โ = works well):
| sparse | balanced | dense | list | comparison | flow | mindmap | quadrant |
|---|
| cute | โโ | โโ | โ | โโ | โ | โ | โ | โ |
| fresh | โโ | โโ | โ | โ | โ | โโ | โ | โ |
| warm | โโ | โโ | โ | โ | โโ | โ | โ | โ |
| bold | โโ | โ | โ | โโ | โโ | โ | โ | โโ |
| minimal | โโ | โโ | โโ | โ | โ | โ | โ | โ |
| retro | โโ | โโ | โ | โโ | โ | โ | โ | โ |
| pop | โโ | โโ | โ | โโ | โโ | โ | โ | โ |
| notion | โโ | โโ | โโ | โโ | โโ | โโ | โโ | โโ |
| chalkboard | โโ | โโ | โโ | โโ | โ | โโ | โโ | โ |
| study-notes | โ | โ | โโ | โโ | โ | โ | โโ | โ |
References
Detailed templates in references/ directory:
Elements (Visual building blocks):
elements/canvas.md - Aspect ratios, safe zones, grid layouts
elements/image-effects.md - Cutout, stroke, filters
elements/typography.md - Decorated text (่ฑๅญ), tags, text direction
elements/decorations.md - Emphasis marks, backgrounds, doodles, frames
Presets (Style presets):
presets/<name>.md - Element combination definitions (cute, notion, warm...)
Workflows (Process guides):
workflows/analysis-framework.md - Content analysis framework
workflows/outline-template.md - Outline template with layout guide
workflows/prompt-assembly.md - Prompt assembly guide
Config (Settings):
config/preferences-schema.md - EXTEND.md schema
config/first-time-setup.md - First-time setup flow
config/watermark-guide.md - Watermark configuration
Notes
- Auto-retry once on failure | Cartoon alternatives for sensitive figures
- Use confirmed language preference | Maintain style consistency
- Two confirmation points required (Steps 2 & 4) - do not skip
Extension Support
Custom configurations via EXTEND.md. See Step 0 for paths and supported options.
๐ซ Platform Compliance (Xiaohongshu)
No external URLs in image content. Xiaohongshu's content moderation flags images containing personal blog domains, full URLs, or QR codes pointing offsite as malicious external linking (ๆถๆๅค้พ), which suppresses reach or removes the post.
Apply to ALL prompts (especially the ending/CTA card):
| โ Don't put in image | โ
Use instead |
|---|
dhpie.com/posts/xxx | "ๅฎๆด็่งไธชไบบไธป้กต" / "ๅ
จๆ่งไธป้กต ๐" |
https://example.com | Plain text CTA without URL |
| QR code to external site | Hand-drawn arrow + "ไธป้กต" reference |
@user handles to other platforms | Generic "ๅ
ณๆณจๆ" |
Where the URL belongs: in the post caption (text body submitted alongside images) or in the user's Xiaohongshu profile bio โ NOT baked into the image itself.
When generating the ending/CTA card, the prompt MUST omit URLs and use phrases like "ๅฎๆด็่งไธป้กต", "ๅ
จๆๆณไธป้กต", or "ๆดๅคๅ
ๅฎนไธป้กตๆฅ็". Reviewers/Claude must reject any prompt containing a domain/URL string in the image text.
After every image generated by this skill โ regardless of file extension claimed (.png/.jpg/.webp), regardless of provider (Gemini/OpenAI/DashScope), regardless of whether the user is going to share it โ Claude MUST run the post-processing pipeline defined in:
~/.baoyu-skills/image-post-processing.md
Why this is mandatory and unconditional:
- AI providers routinely embed metadata: provider tags, timestamps, color profiles, copyright fingerprints, watermark indicators, C2PA chunks
- Provider-claimed file format (e.g.
.png) often disagrees with actual format (e.g. JPEG with PNG extension) โ verify and rename
- Local-only files frequently get uploaded later (CDN, R2, screenshots into shared docs, git history) โ strip on creation, not before sharing
Required steps for each generated image (in order):
- Detect actual format with
PIL.Image.open(f).format (not the extension)
- Re-save via PIL with no metadata (this is the EXIF-strip step):
from PIL import Image
img = Image.open(path)
data = list(img.getdata())
clean = Image.new(img.mode, img.size)
clean.putdata(data)
clean.save(target_path, img.format, quality=95, optimize=True)
- If actual format โ claimed extension, rename to the correct one and remove the original
- Verify: re-open the saved file and assert
img.getexif() is empty AND img.info has no metadata keys (other than benign jfif/dpi)
- Only after verification passes may you report the image as done
โ ๏ธ Skipping this step or trusting "the provider doesn't add metadata" is a contract violation. Verify, do not assume.