{"slug":"baoyu-xhs-images","title":"\u5c0f\u7ea2\u4e66\u56fe\u5361\u751f\u6210","description":"\u5c0f\u7ea2\u4e66\u56fe\u6587\u5361\u7247\u751f\u6210\uff1a12 \u79cd\u89c6\u89c9\u98ce\u683c\u30018 \u79cd\u7248\u5f0f\u30013 \u5957\u914d\u8272\uff0c\u6309\u7b14\u8bb0\u5185\u5bb9\u6279\u91cf\u51fa\u56fe\u3002","category":"\u526a\u8f91\u4e0e\u5305\u88c5","tags":["\u5c0f\u7ea2\u4e66","\u56fe\u5361","\u914d\u56fe","\u6392\u7248"],"author":"\u5b9d\u7389","source_url":"https://github.com/JimLiu/baoyu-skills/blob/main/skills/baoyu-xhs-images/SKILL.md","license":"MIT","status":"published","verification":"source_reviewed","verification_notes":"\u6765\u6e90 JimLiu/baoyu-skills\uff08skills/baoyu-xhs-images/SKILL.md\uff09\uff0c\u672c\u5730\u6253\u5305\u4e0a\u4f20\uff1b\u672a\u6267\u884c\u5305\u5185\u811a\u672c\u3002","revision":"1794c49d32494261a36dba74bc56f288","created_at":"2026-10-28T07:42:44+00:00","updated_at":"2026-10-28T07:44:12+00:00","source_repo":"","source_path":"","source_commit":"","source_updated_at":"","stars":0,"proxy_score":null,"score":null,"grade":null,"dimensions":{},"evaluation":{},"installs":0,"platforms":[],"formats":[],"category_slug":"packaging","category_name":"\u526a\u8f91\u4e0e\u5305\u88c5","usage_guide":{},"read_url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images","skill_url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/SKILL.md","download_url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/download","install_url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/install","files":[{"path":"SKILL.md","bytes":29570,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/SKILL.md"},{"path":"references/codex-imagegen.md","bytes":3717,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/codex-imagegen.md"},{"path":"references/config/first-time-setup.md","bytes":3456,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/config/first-time-setup.md"},{"path":"references/config/preferences-schema.md","bytes":4017,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/config/preferences-schema.md"},{"path":"references/config/watermark-guide.md","bytes":1977,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/config/watermark-guide.md"},{"path":"references/confirmation.md","bytes":3929,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/confirmation.md"},{"path":"references/elements/canvas.md","bytes":3727,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/elements/canvas.md"},{"path":"references/elements/decorations.md","bytes":5049,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/elements/decorations.md"},{"path":"references/elements/image-effects.md","bytes":2990,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/elements/image-effects.md"},{"path":"references/elements/typography.md","bytes":3258,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/elements/typography.md"},{"path":"references/palettes/macaron.md","bytes":1437,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/palettes/macaron.md"},{"path":"references/palettes/neon.md","bytes":1271,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/palettes/neon.md"},{"path":"references/palettes/warm.md","bytes":1225,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/palettes/warm.md"},{"path":"references/presets/bold.md","bytes":1577,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/bold.md"},{"path":"references/presets/chalkboard.md","bytes":2324,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/chalkboard.md"},{"path":"references/presets/cute.md","bytes":1565,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/cute.md"},{"path":"references/presets/fresh.md","bytes":1496,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/fresh.md"},{"path":"references/presets/minimal.md","bytes":1418,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/minimal.md"},{"path":"references/presets/notion.md","bytes":1591,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/notion.md"},{"path":"references/presets/pop.md","bytes":1528,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/pop.md"},{"path":"references/presets/retro.md","bytes":1483,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/retro.md"},{"path":"references/presets/screen-print.md","bytes":2680,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/screen-print.md"},{"path":"references/presets/sketch-notes.md","bytes":3216,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/sketch-notes.md"},{"path":"references/presets/study-notes.md","bytes":2977,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/study-notes.md"},{"path":"references/presets/warm.md","bytes":1476,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/presets/warm.md"},{"path":"references/style-presets.md","bytes":1899,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/style-presets.md"},{"path":"references/workflows/analysis-framework.md","bytes":7235,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/workflows/analysis-framework.md"},{"path":"references/workflows/outline-template.md","bytes":6101,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/workflows/outline-template.md"},{"path":"references/workflows/prompt-assembly.md","bytes":10328,"url":"https://shiliuai.cn/api/v2/skills/baoyu-xhs-images/files/references/workflows/prompt-assembly.md"}],"content":"---\nname: baoyu-xhs-images\ndescription: Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized for social media engagement. Use when user mentions \"\u5c0f\u7ea2\u4e66\u56fe\u7247\", \"\u5c0f\u7ea2\u4e66\u79cd\u8349\", \"\u5c0f\u7eff\u4e66\", \"\u5fae\u4fe1\u56fe\u6587\", \"\u5fae\u4fe1\u8d34\u56fe\", \"image cards\", \"\u56fe\u7247\u5361\u7247\", baoyu-xhs-images, or wants social media infographic series.\nversion: 2.0.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-xhs-images\n---\n\n# Image Card Series Generator\n\nBreak down complex content into eye-catching image card series with multiple style options.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime \u2014 e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples \u2014 substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** \u2014 if the user names a specific backend in the current message, use it.\n2. **Saved preference** \u2014 if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** \u2014 first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-image-gen`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Codex via `codex exec` (`codex-imagegen`)** \u2014 if the current runtime exposes no native `imagegen` skill but the `codex` CLI is on `PATH` with an active `codex login`, route through `baoyu-image-gen --provider codex-cli` (preferred), or \u2014 if baoyu-image-gen is unavailable \u2014 invoke the bundled wrapper directly. Details, parameters, and the runtime-discovery procedure live in [references/codex-imagegen.md](references/codex-imagegen.md) \u2014 load that file only when this branch is selected.\n   - **Cursor (`GenerateImage`)** \u2014 if the runtime exposes a native `GenerateImage` tool, you are running inside Cursor and it outranks any non-native skill the same way Codex `imagegen` does. Two hard caveats: (a) it has no aspect-ratio parameter \u2014 state the target aspect ratio / dimensions explicitly in the prompt text passed as `description`; (b) it does not accept an output directory \u2014 it saves to a tool-managed location, so after generation copy/move the file to the skill's expected output path (e.g., `outputs/.../NN-xxx.png`). Reference images go in `reference_image_paths`.\n   - **Other runtime-native tools** \u2014 if the runtime exposes a different native image tool (e.g., Hermes `image_generate`), use it the same way.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-image-gen`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once \u2014 batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\n**\u26d4 Never substitute SVG, HTML, canvas, or other code-based rendering for raster image generation.** Codex `imagegen`'s own description says it should be used \"when the output should be a bitmap asset rather than repo-native code or vector.\" If you cannot resolve a raster backend via step 3, fall through to step 4 and ask the user \u2014 do **not** silently emit SVG, write inline `<svg>` markup, or produce HTML/CSS art as a substitute. This applies even if the article/section seems \"diagram-like\": the consumer skill calling this rule has already decided that a raster image is what it needs.\n\n**\u26d4 Never repair rendered text by painting over a generated bitmap.** Do not use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other programmatic overlay to cover, rewrite, erase, stroke, or replace titles, body copy, tags, or any other text inside an already generated image card. If text is wrong or unclear, regenerate from a corrected prompt, switch to a layout with less on-card text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `GenerateImage`, `image_generate`, `baoyu-image-gen`) above are examples \u2014 substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the current generation group has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, session ID, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"\u5e76\u884c 4 \u5f20\u4e00\u8d77\u751f\u6210\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Honor the image-1 anchor chain: generate image 1 first, then batch images 2+ using image 1 as the reference.\n- Never start a batch until every selected prompt file for that batch exists on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 until the user completes Step 2.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--yes`, \"\u76f4\u63a5\u751f\u6210\", \"\u4e0d\u7528\u786e\u8ba4\", \"\u8df3\u8fc7\u786e\u8ba4\", \"\u6309\u9ed8\u8ba4\u51fa\u56fe\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed strategy / style / layout / palette / count / backend in the next user-facing update before generating.\n\n## Language\n\nRespond in the user's language across questions, progress, errors, and completion summary. Keep technical tokens (style names, file paths, code) in English.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Visual style (see Styles below) |\n| `--layout <name>` | Information layout (see Layouts below) |\n| `--palette <name>` | Color override: macaron / warm / neon |\n| `--preset <name>` | Style + layout + optional palette shorthand (see Presets below; per-preset prompt fragments in `references/style-presets.md`) |\n| `--ref <files...>` | Reference images applied to image 1 as the series anchor |\n| `--batch-size <n>` | Temporary generation batch size for this run. Default: `generation_batch_size` from EXTEND.md, otherwise 4. Clamp to 1-8. |\n| `--yes` | Non-interactive: skip all confirmations, use EXTEND.md or built-in defaults, auto-confirm recommended plan (Path A) |\n\n## Dimensions\n\nThree independent knobs combine freely:\n\n| Dimension | Controls | Options |\n|-----------|----------|---------|\n| **Style** | Visual aesthetics (lines, decorations, rendering) | 12 styles (see Styles below) |\n| **Layout** | Information structure (density, arrangement) | 8 layouts (see Layouts below) |\n| **Palette** (optional) | Color override, replaces the style's default colors | macaron / warm / neon (see Palettes below) |\n\nExample: `--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).\n\n**Palette behavior**: no `--palette` \u2192 style's built-in colors; `--palette <name>` \u2192 overrides colors only, rendering rules unchanged. Some styles declare a `default_palette` (e.g., sketch-notes defaults to macaron).\n\n## Styles (12)\n\n| Style | Description |\n|-------|-------------|\n| `cute` (Default) | Sweet, adorable, girly aesthetic |\n| `fresh` | Clean, refreshing, natural |\n| `warm` | Cozy, friendly, approachable |\n| `bold` | High impact, attention-grabbing |\n| `minimal` | Ultra-clean, sophisticated |\n| `retro` | Vintage, nostalgic, trendy |\n| `pop` | Vibrant, energetic, eye-catching |\n| `notion` | Minimalist hand-drawn line art, intellectual |\n| `chalkboard` | Colorful chalk on black board, educational |\n| `study-notes` | Realistic handwritten photo style, blue pen + red annotations + yellow highlighter |\n| `screen-print` | Bold poster art, halftone textures, limited colors, symbolic storytelling |\n| `sketch-notes` | Hand-drawn educational infographic, macaron pastels on warm cream, wobble lines |\n\nPer-style specifications: `references/presets/<style>.md`.\n\n## Layouts (8)\n\n| Layout | Description |\n|--------|-------------|\n| `sparse` (Default) | 1-2 points, maximum impact |\n| `balanced` | 3-4 points, standard |\n| `dense` | 5-8 points, knowledge-card style |\n| `list` | Enumeration / ranking (4-7 items) |\n| `comparison` | Side-by-side contrast |\n| `flow` | Process / timeline (3-6 steps) |\n| `mindmap` | Center-radial (4-8 branches) |\n| `quadrant` | Four-quadrant / circular sections |\n\nLayout specs: `references/elements/canvas.md`.\n\n## Palettes (optional override)\n\nReplaces the style's colors while keeping rendering rules (line treatment, textures) intact.\n\n| Palette | Background | Zone Colors | Accent | Feel |\n|---------|------------|-------------|--------|------|\n| `macaron` | Warm cream #F5F0E8 | Blue #A8D8EA, Lavender #D5C6E0, Mint #B5E5CF, Peach #F8D5C4 | Coral #E8655A | Soft, educational |\n| `warm` | Soft peach #FFECD2 | Orange #ED8936, Terracotta #C05621, Golden #F6AD55, Rose #D4A09A | Sienna #A0522D | Earth tones, cozy |\n| `neon` | Dark purple #1A1025 | Cyan #00F5FF, Magenta #FF00FF, Green #39FF14, Pink #FF6EC7 | Yellow #FFFF00 | High-energy, futuristic |\n\nPalette specs: `references/palettes/<palette>.md`.\n\n## Presets (style + layout shortcuts)\n\nQuick-start combos, grouped by scenario. Use `--preset <name>` or recommend during Step 2.\n\n**Knowledge & Learning**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `knowledge-card` | notion | dense | \u5e72\u8d27\u77e5\u8bc6\u5361\u3001\u6982\u5ff5\u79d1\u666e |\n| `checklist` | notion | list | \u6e05\u5355\u3001\u6392\u884c\u699c |\n| `concept-map` | notion | mindmap | \u6982\u5ff5\u56fe\u3001\u77e5\u8bc6\u8109\u7edc |\n| `swot` | notion | quadrant | SWOT \u5206\u6790\u3001\u56db\u8c61\u9650 |\n| `tutorial` | chalkboard | flow | \u6559\u7a0b\u6b65\u9aa4\u3001\u64cd\u4f5c\u6d41\u7a0b |\n| `classroom` | chalkboard | balanced | \u8bfe\u5802\u7b14\u8bb0\u3001\u77e5\u8bc6\u8bb2\u89e3 |\n| `study-guide` | study-notes | dense | \u5b66\u4e60\u7b14\u8bb0\u3001\u8003\u8bd5\u91cd\u70b9 |\n| `hand-drawn-edu` | sketch-notes | flow | \u624b\u7ed8\u6559\u7a0b\u3001\u6d41\u7a0b\u56fe\u89e3 |\n| `sketch-card` | sketch-notes | dense | \u624b\u7ed8\u77e5\u8bc6\u5361 |\n| `sketch-summary` | sketch-notes | balanced | \u624b\u7ed8\u603b\u7ed3\u3001\u56fe\u6587\u7b14\u8bb0 |\n\n**Lifestyle & Sharing**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `cute-share` | cute | balanced | \u5c11\u5973\u98ce\u5206\u4eab\u3001\u65e5\u5e38\u79cd\u8349 |\n| `girly` | cute | sparse | \u751c\u7f8e\u5c01\u9762\u3001\u6c1b\u56f4\u611f |\n| `cozy-story` | warm | balanced | \u751f\u6d3b\u6545\u4e8b\u3001\u60c5\u611f\u5206\u4eab |\n| `product-review` | fresh | comparison | \u4ea7\u54c1\u5bf9\u6bd4\u3001\u6d4b\u8bc4 |\n| `nature-flow` | fresh | flow | \u5065\u5eb7\u6d41\u7a0b\u3001\u81ea\u7136\u4e3b\u9898 |\n\n**Impact & Opinion**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `warning` | bold | list | \u907f\u5751\u6307\u5357\u3001\u91cd\u8981\u63d0\u9192 |\n| `versus` | bold | comparison | \u6b63\u53cd\u5bf9\u6bd4 |\n| `clean-quote` | minimal | sparse | \u91d1\u53e5\u3001\u6781\u7b80\u5c01\u9762 |\n| `pro-summary` | minimal | balanced | \u4e13\u4e1a\u603b\u7ed3\u3001\u5546\u52a1\u5185\u5bb9 |\n\n**Trend & Entertainment**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `retro-ranking` | retro | list | \u590d\u53e4\u6392\u884c\u3001\u7ecf\u5178\u76d8\u70b9 |\n| `throwback` | retro | balanced | \u6000\u65e7\u5206\u4eab |\n| `pop-facts` | pop | list | \u8da3\u5473\u51b7\u77e5\u8bc6 |\n| `hype` | pop | sparse | \u70b8\u88c2\u5c01\u9762\u3001\u60ca\u53f9\u5206\u4eab |\n\n**Poster & Editorial**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `poster` | screen-print | sparse | \u6d77\u62a5\u98ce\u5c01\u9762\u3001\u5f71\u8bc4\u4e66\u8bc4 |\n| `editorial` | screen-print | balanced | \u89c2\u70b9\u6587\u7ae0\u3001\u6587\u5316\u8bc4\u8bba |\n| `cinematic` | screen-print | comparison | \u7535\u5f71\u5bf9\u6bd4\u3001\u620f\u5267\u5f20\u529b |\n\nFull prompt-fragment definitions: `references/style-presets.md`.\n\n## Auto-Selection\n\nMatch content signals to the best combo. First row whose keywords appear wins; fall back to `cute-share` if nothing matches.\n\n| Signals in source | Style | Layout | Recommended preset |\n|-------------------|-------|--------|--------------------|\n| beauty, fashion, cute, girl, pink | `cute` | sparse/balanced | `cute-share`, `girly` |\n| health, nature, fresh, organic | `fresh` | balanced/flow | `product-review`, `nature-flow` |\n| life, story, emotion, warm | `warm` | balanced | `cozy-story` |\n| warning, important, must, critical | `bold` | list/comparison | `warning`, `versus` |\n| professional, business, elegant | `minimal` | sparse/balanced | `clean-quote`, `pro-summary` |\n| classic, vintage, traditional | `retro` | balanced | `throwback`, `retro-ranking` |\n| fun, exciting, wow, amazing | `pop` | sparse/list | `hype`, `pop-facts` |\n| knowledge, concept, productivity, SaaS | `notion` | dense/list | `knowledge-card`, `checklist` |\n| education, tutorial, learning, classroom | `chalkboard` | balanced/dense | `tutorial`, `classroom` |\n| notes, handwritten, study guide, realistic | `study-notes` | dense/list/mindmap | `study-guide` |\n| movie, poster, opinion, editorial, cinematic | `screen-print` | sparse/comparison | `poster`, `editorial`, `cinematic` |\n| hand-drawn, infographic, workflow, \u624b\u7ed8\uff0c\u56fe\u89e3 | `sketch-notes` | flow/balanced/dense | `hand-drawn-edu`, `sketch-card`, `sketch-summary` |\n\n## Style \u00d7 Layout Matrix\n\nCompatibility scores (\u2713\u2713 highly recommended, \u2713 works well, \u2717 avoid). Use when the user picks a non-default combo and you want to flag a poor match.\n\n|              | sparse | balanced | dense | list | comparison | flow | mindmap | quadrant |\n|--------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| cute         | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713\u2713 | \u2713  | \u2713  | \u2713  | \u2713  |\n| fresh        | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713  | \u2713  | \u2713\u2713 | \u2713  | \u2713  |\n| warm         | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713  | \u2713\u2713 | \u2713  | \u2713  | \u2713  |\n| bold         | \u2713\u2713 | \u2713  | \u2713  | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713  | \u2713\u2713 |\n| minimal      | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713  | \u2713  | \u2713  | \u2713  |\n| retro        | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713\u2713 | \u2713  | \u2713  | \u2713  | \u2713  |\n| pop          | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713  | \u2713  |\n| notion       | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 |\n| chalkboard   | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713\u2713 | \u2713\u2713 | \u2713  |\n| study-notes  | \u2717  | \u2713  | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713  | \u2713\u2713 | \u2713  |\n| screen-print | \u2713\u2713 | \u2713\u2713 | \u2717  | \u2713  | \u2713\u2713 | \u2713  | \u2717  | \u2713\u2713 |\n| sketch-notes | \u2713  | \u2713\u2713 | \u2713\u2713 | \u2713\u2713 | \u2713  | \u2713\u2713 | \u2713\u2713 | \u2713  |\n\n## Outline Strategies\n\nThree differentiated approaches \u2014 each produces a structurally different outline. The workflow recommends one; Path C generates all three and lets the user choose.\n\n| Strategy | Concept | Best for | Structure |\n|----------|---------|----------|-----------|\n| **A \u2014 Story-Driven** | Personal experience as the thread, emotional resonance first | Reviews, personal shares, transformation | Hook \u2192 Problem \u2192 Discovery \u2192 Experience \u2192 Conclusion |\n| **B \u2014 Information-Dense** | Value-first, efficient information delivery | Tutorials, comparisons, checklists | Core conclusion \u2192 Info card \u2192 Pros/Cons \u2192 Recommendation |\n| **C \u2014 Visual-First** | Visual impact as core, minimal text | High-aesthetic products, lifestyle, mood content | Hero image \u2192 Detail shots \u2192 Lifestyle scene \u2192 CTA |\n\n## Reference Images\n\nUser-supplied refs are **separate from** the internal \"image-1 as anchor\" chain (Step 3) \u2014 they layer on top of it.\n\n**Intake**: via `--ref <files...>` or paths pasted in conversation.\n- File path \u2192 copy to `refs/NN-ref-{slug}.{ext}`\n- Pasted with no path \u2192 ask for the path, or extract style traits as a text fallback\n\n**Usage modes** (per reference):\n\n| Usage | Effect |\n|-------|--------|\n| `direct` | Pass the file to the backend (typically on image 1 only, so the anchor propagates through the chain) |\n| `style` | Extract style traits and append to every card's prompt body |\n| `palette` | Extract hex colors and append to every card's prompt body |\n\nRecord refs in each affected card's prompt frontmatter:\n\n```yaml\nreferences:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct\n```\n\nAt generation time: verify files exist. Image 1 with `usage: direct` + backend that accepts refs \u2192 pass via the backend's ref parameter (becomes the chain anchor). Images 2+ keep using image-1 as `--ref` per Step 3 \u2014 do NOT re-stack user refs on top (avoids conflicting signals). For `style`/`palette`, embed extracted traits in every prompt.\n\n## File Layout\n\n```\nimage-cards/{topic-slug}/\n\u251c\u2500\u2500 source-{slug}.{ext}\n\u251c\u2500\u2500 analysis.md\n\u251c\u2500\u2500 outline-strategy-{a,b,c}.md    # Path C only\n\u251c\u2500\u2500 outline.md\n\u251c\u2500\u2500 prompts/NN-{type}-{slug}.md\n\u251c\u2500\u2500 NN-{type}-{slug}.png\n\u2514\u2500\u2500 refs/                          # only if --ref used\n```\n\n**Slug**: 2-4 words, kebab-case. \"AI \u5de5\u5177\u63a8\u8350\" \u2192 `ai-tools-recommend`. On collision, append `-YYYYMMDD-HHMMSS`.\n\n**Backup rule** (applies throughout): before overwriting any file \u2014 source, outline, prompt, image \u2014 rename the existing one to `<name>-backup-YYYYMMDD-HHMMSS.<ext>`. This protects user edits.\n\n## Workflow\n\n```\n- [ ] Step 0: Load EXTEND.md \u26d4 BLOCKING (interactive only)\n- [ ] Step 1: Analyze content \u2192 analysis.md\n- [ ] Step 2: Smart Confirm \u26a0\ufe0f REQUIRED (Path A / B / C)\n- [ ] Step 3: Generate images\n- [ ] Step 4: Completion report\n```\n\n### Step 0: Load EXTEND.md \u26d4 BLOCKING\n\nCheck these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-xhs-images/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-xhs-images/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-xhs-images/EXTEND.md` | User home |\n\n- **Found** \u2192 read, parse, print a summary (style / layout / watermark / language), continue.\n- **Not found + interactive** \u2192 run first-time setup (see `references/config/first-time-setup.md`) and save before anything else. Do NOT analyze content or ask style questions until preferences exist \u2014 this keeps first-run behavior predictable.\n- **Not found + `--yes`** \u2192 skip setup, use built-in defaults (no watermark, style/layout auto-selected, language from content). Do not prompt, do not create EXTEND.md.\n\n**EXTEND.md keys**: watermark, preferred style/layout, custom style definitions, language preference, preferred image backend, generation batch size. Schema: `references/config/preferences-schema.md`.\n\n### Step 1: Analyze Content \u2192 `analysis.md`\n\n1. Save the source (backup rule applies if `source.md` exists).\n2. Run the deep analysis in `references/workflows/analysis-framework.md`: content type, hook potential, audience, engagement signals, visual opportunity map, swipe flow.\n3. Detect source language, pick recommended image count (2-10).\n4. Auto-recommend strategy + style + layout + palette using the **Auto-Selection** table above.\n5. Write everything to `analysis.md`.\n\n### Step 2: Smart Confirm \u26a0\ufe0f REQUIRED\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) \u2014 Step 3 cannot start until the user confirms here (or explicitly opts out with `--yes` / equivalent wording in the current request).\n\nGoal: present the auto-recommended plan and let the user confirm or adjust. Skip this step entirely under `--yes` \u2014 proceed with Path A using the analysis and any CLI overrides.\n\n**Display summary** before asking:\n\n```\n\ud83d\udccb \u5185\u5bb9\u5206\u6790\n  \u4e3b\u9898\uff1a[topic] | \u7c7b\u578b\uff1a[content_type]\n  \u8981\u70b9\uff1a[key points]\n  \u53d7\u4f17\uff1a[audience]\n\n\ud83c\udfa8 \u63a8\u8350\u65b9\u6848\uff08\u81ea\u52a8\u5339\u914d\uff09\n  \u7b56\u7565\uff1a[A/B/C] [name]\uff08[reason]\uff09\n  \u98ce\u683c\uff1a[style] \u00b7 \u5e03\u5c40\uff1a[layout] \u00b7 \u914d\u8272\uff1a[palette or \u9ed8\u8ba4] \u00b7 \u9884\u8bbe\uff1a[preset]\n  \u56fe\u7247\uff1a[N]\u5f20\uff08\u5c01\u9762+[N-2]\u5185\u5bb9+\u7ed3\u5c3e\uff09\n  \u5143\u7d20\uff1a[background] / [decorations] / [emphasis]\n```\n\nThen ask one question \u2014 three paths. Verbatim option copy: `references/confirmation.md`.\n\n**Path A \u2014 Quick confirm** (trust auto-recommendation): generate a single outline using the recommended strategy + style \u2192 save to `outline.md` \u2192 Step 3.\n\n**Path B \u2014 Customize**: ask five questions (strategy/style, layout, palette, count, optional notes) with the recommendation pre-filled \u2014 blanks keep the recommendation. Generate one outline with the user's choices \u2192 `outline.md` \u2192 Step 3. See `references/confirmation.md`.\n\n**Path C \u2014 Detailed mode**: two sub-confirmations.\n\n- *Step 2a \u2014 Content understanding*: ask selling points (multi-select), audience, style preference (authentic / professional / aesthetic / auto), optional context. Update `analysis.md`.\n- *Step 2b \u2014 Three outline variants*: generate `outline-strategy-a.md`, `outline-strategy-b.md`, `outline-strategy-c.md`. Each MUST have a different structure AND a different recommended style \u2014 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`.\n- *Step 2c \u2014 Selection*: ask three questions (outline A/B/C/Combined, style, visual elements). Save selected/merged outline to `outline.md` \u2192 Step 3.\n\n### Step 3: Generate Images\n\nWith confirmed outline + style + layout + palette:\n\n**Visual consistency \u2014 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 \u2014 don't skip it even if the backend also supports a session ID.\n\nGeneration flow:\n\n1. Write the full prompt for every image to `prompts/NN-{type}-{slug}.md` in the user's preferred language (backup rule applies), then verify all selected prompt files exist.\n2. Generate **image 1** first without `--ref`; backup rule applies to the PNG file. This establishes the anchor.\n3. Build a task list for **images 2+** using image 1 as `--ref <path-to-image-01.png>`.\n4. Dispatch images 2+ in batches per the `## Batch Generation Policy`: backend native batch first, runtime parallel tool calls second, sequential only as fallback.\n5. Report progress after each completed image. On failure, retry only the failed item once from the same saved prompt file.\n\n**Watermark** (if enabled in EXTEND.md): append to the generation prompt:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\nThe watermark should be legible but not distracting.\n```\n\nSee `references/config/watermark-guide.md`.\n\n**Backend selection**: per the Image Generation Tools rule at the top \u2014 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.\n\n**`codex-imagegen` invocation**: when the rule resolves to `codex-imagegen`, see [references/codex-imagegen.md](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 \u2014 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).\n\n**Session ID** (if the backend supports `--sessionId`): use `cards-{topic-slug}-{timestamp}` for every image; combined with the ref chain this gives maximum consistency.\n\n### Step 4: Completion Report\n\n```\nImage Card Series Complete!\n\nTopic: [topic]\nMode: [Quick / Custom / Detailed]\nStrategy: [A/B/C/Combined]\nStyle: [name]\nPalette: [name or \"default\"]\nLayout: [name or \"varies\"]\nLocation: [directory]\nImages: N total\n\n\u2713 analysis.md\n\u2713 outline.md\n\u2713 outline-strategy-a/b/c.md (detailed mode only)\n\n- 01-cover-[slug].png \u2713 Cover (sparse)\n- 02-content-[slug].png \u2713 Content (balanced)\n- ...\n- NN-ending-[slug].png \u2713 Ending (sparse)\n```\n\n## Content Breakdown Principles\n\n| Position | Purpose | Typical layout |\n|----------|---------|----------------|\n| Cover (image 1) | Hook + visual impact | `sparse` |\n| Content (middle) | Core value per image | `balanced` / `dense` / `list` / `comparison` / `flow` |\n| Ending (last) | CTA / summary | `sparse` or `balanced` |\n\nFor the style \u00d7 layout compatibility matrix, see the **Style \u00d7 Layout Matrix** above.\n\n## Image Modification\n\n| Action | How |\n|--------|-----|\n| Edit | Update `prompts/NN-{type}-{slug}.md` **first**, then regenerate with the same session ID |\n| Add | Specify position, create prompt, generate, renumber subsequent files `NN+1`, update outline |\n| Delete | Remove files, renumber subsequent `NN-1`, update outline |\n\nAlways update the prompt file before regenerating \u2014 it's the source of truth and makes changes reproducible.\n\nText correction policy:\n\n- If a card's title, body copy, tags, or any other rendered text is misspelled, garbled, hard to read, or visually weak, do not patch the bitmap with code.\n- For text-correction regenerations, write a new prompt file and a new output path so the flawed candidate is preserved for comparison.\n- Post-processing is limited to crop, resize, compression, or format conversion that does not alter text or the main composition.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references/confirmation.md` | Verbatim AskUserQuestion copy for every confirmation path |\n| `references/style-presets.md` | Full preset shortcut definitions |\n| `references/presets/<style>.md` | Per-style element definitions |\n| `references/palettes/<name>.md` | Per-palette color definitions |\n| `references/elements/canvas.md` | Aspect ratios, safe zones, grid layouts |\n| `references/elements/image-effects.md` | Cutout, stroke, filters |\n| `references/elements/typography.md` | Decorated text, tags, text direction |\n| `references/elements/decorations.md` | Emphasis marks, backgrounds, doodles, frames |\n| `references/workflows/analysis-framework.md` | Content analysis framework |\n| `references/workflows/outline-template.md` | Outline template with layout guide |\n| `references/workflows/prompt-assembly.md` | Prompt assembly guide |\n| `references/config/preferences-schema.md` | EXTEND.md schema |\n| `references/config/first-time-setup.md` | First-time setup flow |\n| `references/config/watermark-guide.md` | Watermark configuration |\n\n## Notes\n\n- Auto-retry once on generation failure before reporting an error.\n- For sensitive public figures, use stylized cartoon alternatives.\n- Smart Confirm (Step 2) is required; Detailed mode adds a second confirmation (2a + 2c).\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed in Step 0. Three ways to change it:\n\n- **Edit directly** \u2014 open EXTEND.md and change fields. Full schema: `references/config/preferences-schema.md`.\n- **Reconfigure interactively** \u2014 delete EXTEND.md (or ask \"reconfigure baoyu-xhs-images preferences\" / \"\u91cd\u65b0\u914d\u7f6e\"). The next run re-triggers first-time setup.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` \u2014 default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` \u2014 pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-image-gen` \u2014 pin to the baoyu-image-gen skill.\n  - `preferred_image_backend: ask` \u2014 confirm backend every run.\n  - `generation_batch_size: 4` \u2014 default number of images to render concurrently when the backend/runtime supports batch or parallel generation.\n  - `preferred_style: notion`, `preferred_layout: dense`, `preferred_palette: macaron`, `language: zh`.\n  - `watermark.enabled: true` + `watermark.content: \"@handle\"` \u2014 add a watermark.\n","usage":"\u8bfb\u53d6 SKILL.md\uff0c\u5e76\u6309\u9700\u8bfb\u53d6\u914d\u5957\u6587\u4ef6\uff1b\u4e0b\u8f7d ZIP \u83b7\u53d6\u5b8c\u6574\u5305\u3002\u6280\u80fd\u662f\u4efb\u52a1\u65b9\u6cd5\uff0c\u4e0d\u6388\u4e88\u65b0\u589e\u8d26\u6237\u3001\u4ed8\u8d39\u6216\u7cfb\u7edf\u6743\u9650\u3002"}
