{"id":"1e72cd32-205d-42c5-9b05-9fc0e1216213","entityType":"agent","slug":"clawhub-conanwhf-baoyu-skills","name":"Baoyu Skills","canonicalUrl":"https://www.xpersona.co/agent/clawhub-conanwhf-baoyu-skills","canonicalPath":"/agent/clawhub-conanwhf-baoyu-skills","generatedAt":"2026-10-09T21:08:15.898Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":null},"description":"宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co... Skill: Baoyu Skills Owner: conanwhf Summary: 宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-04-06T17:25:36.349Z | auto Initial release of baoyu-skills, a comprehensive collection of Claude Code utilities for content generation, conversion, publishing, and","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 7.5K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17630t4f4mg47rk0nkkr09cf983xw8x:baoyu-skills","sourceUrl":"https://clawhub.ai/conanwhf/baoyu-skills","homepage":"https://clawhub.ai/conanwhf/skills/baoyu-skills","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/conanwhf/baoyu-skills","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/conanwhf/skills/baoyu-skills","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":54,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":null},"stars":null,"forks":null,"downloads":7465,"packageName":null,"latestVersion":"1.0.0","tractionLabel":"7.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T02:56:22.425Z","lastCrawledAt":"2026-10-09T02:56:22.425Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T02:56:22.425Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.0","createdAt":"2026-04-06T17:25:36.349Z","changelog":"Initial release of baoyu-skills, a comprehensive collection of Claude Code utilities for content generation, conversion, publishing, and image processing. - Includes 16 subskills such as AI image generation, markdown formatting, PPT creation, translation, web scraping, and multi-platform publishing. - Supports workflows like image creation, markdown conversion, article illustration, comic and infographic generation, and social media posting. - Requires Node.js and Bun runtime. - Installation via npx; subskills executed with the Bun command. - Some skills may need Chrome/CDP configuration or API keys.","fileCount":807,"zipByteSize":1212551}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17630t4f4mg47rk0nkkr09cf983xw8x:baoyu-skills","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T21:08:15.895Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-conanwhf-baoyu-skills/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":null},"readme":"Skill: Baoyu Skills\n\nOwner: conanwhf\n\nSummary: 宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co...\n\nTags: latest:1.0.0\n\nVersion history:\n\nv1.0.0 | 2026-04-06T17:25:36.349Z | auto\n\nInitial release of baoyu-skills, a comprehensive collection of Claude Code utilities for content generation, conversion, publishing, and image processing.\n\n- Includes 16 subskills such as AI image generation, markdown formatting, PPT creation, translation, web scraping, and multi-platform publishing.\n- Supports workflows like image creation, markdown conversion, article illustration, comic and infographic generation, and social media posting.\n- Requires Node.js and Bun runtime.\n- Installation via npx; subskills executed with the Bun command.\n- Some skills may need Chrome/CDP configuration or API keys.\n\nArchive index:\n\nArchive v1.0.0: 807 files, 1212551 bytes\n\nFiles: CHANGELOG.md (59918b), CHANGELOG.zh.md (60466b), CLAUDE.md (3231b), docs/chrome-profile.md (1072b), docs/comic-style-maintenance.md (1418b), docs/creating-skills.md (4251b), docs/image-generation.md (1765b), docs/publishing.md (1781b), docs/testing.md (2488b), package-lock.json (68117b), package.json (294b), packages/baoyu-chrome-cdp/package.json (140b), packages/baoyu-chrome-cdp/src/index.test.ts (9557b), packages/baoyu-chrome-cdp/src/index.ts (17190b), packages/baoyu-md/package.json (450b), packages/baoyu-md/src/cli.ts (5831b), packages/baoyu-md/src/code-themes/1c-light.min.css (1123b), packages/baoyu-md/src/code-themes/a11y-dark.min.css (1158b), packages/baoyu-md/src/code-themes/a11y-light.min.css (1146b), packages/baoyu-md/src/code-themes/agate.min.css (1357b), packages/baoyu-md/src/code-themes/an-old-hope.min.css (961b), packages/baoyu-md/src/code-themes/androidstudio.min.css (611b), packages/baoyu-md/src/code-themes/arduino-light.min.css (844b), packages/baoyu-md/src/code-themes/arta.min.css (673b), packages/baoyu-md/src/code-themes/ascetic.min.css (454b), packages/baoyu-md/src/code-themes/atom-one-dark-reasonable.min.css (1193b), packages/baoyu-md/src/code-themes/atom-one-dark.min.css (856b), packages/baoyu-md/src/code-themes/atom-one-light.min.css (856b), packages/baoyu-md/src/code-themes/brown-paper.min.css (656b), packages/baoyu-md/src/code-themes/codepen-embed.min.css (600b), packages/baoyu-md/src/code-themes/color-brewer.min.css (631b), packages/baoyu-md/src/code-themes/dark.min.css (625b), packages/baoyu-md/src/code-themes/default.min.css (1144b), packages/baoyu-md/src/code-themes/devibeans.min.css (1080b), packages/baoyu-md/src/code-themes/docco.min.css (837b), packages/baoyu-md/src/code-themes/far.min.css (669b), packages/baoyu-md/src/code-themes/felipec.min.css (1181b), packages/baoyu-md/src/code-themes/foundation.min.css (779b), packages/baoyu-md/src/code-themes/github-dark-dimmed.min.css (1251b), packages/baoyu-md/src/code-themes/github-dark.min.css (1315b), packages/baoyu-md/src/code-themes/github.min.css (1309b), packages/baoyu-md/src/code-themes/gml.min.css (787b), packages/baoyu-md/src/code-themes/googlecode.min.css (835b), packages/baoyu-md/src/code-themes/gradient-dark.min.css (1089b), packages/baoyu-md/src/code-themes/gradient-light.min.css (1112b), packages/baoyu-md/src/code-themes/grayscale.min.css (1674b), packages/baoyu-md/src/code-themes/hybrid.min.css (897b), packages/baoyu-md/src/code-themes/idea.min.css (906b), packages/baoyu-md/src/code-themes/intellij-light.min.css (1051b), packages/baoyu-md/src/code-themes/ir-black.min.css (694b), packages/baoyu-md/src/code-themes/isbl-editor-dark.min.css (971b), packages/baoyu-md/src/code-themes/isbl-editor-light.min.css (952b), packages/baoyu-md/src/code-themes/kimbie-dark.min.css (652b), packages/baoyu-md/src/code-themes/kimbie-light.min.css (652b), packages/baoyu-md/src/code-themes/lightfair.min.css (831b), packages/baoyu-md/src/code-themes/lioshi.min.css (715b), packages/baoyu-md/src/code-themes/magula.min.css (642b), packages/baoyu-md/src/code-themes/mono-blue.min.css (631b), packages/baoyu-md/src/code-themes/monokai-sublime.min.css (826b), packages/baoyu-md/src/code-themes/monokai.min.css (814b), packages/baoyu-md/src/code-themes/night-owl.min.css (1421b), packages/baoyu-md/src/code-themes/nnfx-dark.min.css (1411b), packages/baoyu-md/src/code-themes/nnfx-light.min.css (1412b), packages/baoyu-md/src/code-themes/nord.min.css (2684b), packages/baoyu-md/src/code-themes/obsidian.min.css (882b), packages/baoyu-md/src/code-themes/panda-syntax-dark.min.css (1095b), packages/baoyu-md/src/code-themes/panda-syntax-light.min.css (1069b), packages/baoyu-md/src/code-themes/paraiso-dark.min.css (637b), packages/baoyu-md/src/code-themes/paraiso-light.min.css (637b), packages/baoyu-md/src/code-themes/pojoaque.min.css (814b), packages/baoyu-md/src/code-themes/purebasic.min.css (734b), packages/baoyu-md/src/code-themes/qtcreator-dark.min.css (815b), packages/baoyu-md/src/code-themes/qtcreator-light.min.css (810b), packages/baoyu-md/src/code-themes/rainbow.min.css (826b), packages/baoyu-md/src/code-themes/routeros.min.css (862b), packages/baoyu-md/src/code-themes/school-book.min.css (664b), packages/baoyu-md/src/code-themes/shades-of-purple.min.css (854b), packages/baoyu-md/src/code-themes/srcery.min.css (795b), packages/baoyu-md/src/code-themes/stackoverflow-dark.min.css (1271b), packages/baoyu-md/src/code-themes/stackoverflow-light.min.css (1285b) (+407 more)\n\nFile v1.0.0:SKILL.md\n\n---\nname: baoyu-skills\ndescription: |\n  宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。\n  \n  子技能列表 (skills/baoyu-*):\n  - baoyu-article-illustrator: 文章插图生成\n  - baoyu-comic: 漫画生成\n  - baoyu-compress-image: 图片压缩\n  - baoyu-cover-image: 封面图生成\n  - baoyu-danger-gemini-web: Gemini网页抓取\n  - baoyu-danger-x-to-markdown: X帖子转Markdown\n  - baoyu-format-markdown: Markdown格式化\n  - baoyu-image-gen: AI图片生成\n  - baoyu-infographic: 信息图生成\n  - baoyu-markdown-to-html: Markdown转HTML\n  - baoyu-post-to-wechat: 发送微信文章\n  - baoyu-post-to-weibo: 发送微博\n  - baoyu-post-to-x: 发送X帖子\n  - baoyu-slide-deck: PPT/幻灯片生成\n  - baoyu-translate: 翻译\n  - baoyu-url-to-markdown: URL转Markdown\n  - baoyu-xhs-images: 小红书图片处理\n  \n  触发词示例：\n  - \"用baoyu生成一张图片\"\n  - \"把XX网页转成markdown\"\n  - \"生成XX的PPT\"\n  \nmetadata:\n  {\n    \"openclaw\": {\n      \"emoji\": \"🎨\",\n      \"requires\": { \"bins\": [\"bun\"] },\n      \"install\": [\n        {\n          \"id\": \"npm-global\",\n          \"kind\": \"npm\",\n          \"pkg\": \"@jimliu/baoyu-skills\",\n          \"global\": true,\n          \"label\": \"Install baoyu-skills via npx\"\n        }\n      ]\n    }\n  }\n---\n\n# baoyu-skills\n\n宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。\n\n## 前置要求\n\n- Node.js 环境\n- Bun runtime (`npx bun` 命令)\n\n## 安装\n\n```bash\nnpx skills add jimliu/baoyu-skills\n```\n\n## 使用方式\n\n通过 Bun 运行各子技能：\n```bash\nbun skills/<skill-name>/scripts/main.ts [options]\n```\n\n## 子技能详情\n\n### 内容生成\n| 技能 | 说明 |\n|------|------|\n| baoyu-image-gen | AI图片生成 |\n| baoyu-cover-image | 封面图生成 |\n| baoyu-article-illustrator | 文章插图 |\n| baoyu-comic | 漫画生成 |\n| baoyu-infographic | 信息图生成 |\n| baoyu-slide-deck | PPT/幻灯片生成 |\n\n### 内容转换\n| 技能 | 说明 |\n|------|------|\n| baoyu-url-to-markdown | URL转Markdown |\n| baoyu-x-to-markdown | X帖子转Markdown |\n| baoyu-markdown-to-html | Markdown转HTML |\n| baoyu-translate | 翻译 |\n\n### 内容发布\n| 技能 | 说明 |\n|------|------|\n| baoyu-post-to-x | 发布到X |\n| baoyu-post-to-weibo | 发布到微博 |\n| baoyu-post-to-wechat | 发布到微信 |\n\n### 图片处理\n| 技能 | 说明 |\n|------|------|\n| baoyu-compress-image | 图片压缩 |\n| baoyu-xhs-images | 小红书图片处理 |\n\n## 安全注意\n\n- 部分技能需要Chrome配置(CDP技能)\n- 图片生成可能需要API密钥配置\n- 遵守各平台使用条款\n\nFile v1.0.0:skills/baoyu-article-illustrator/SKILL.md\n\n---\nname: baoyu-article-illustrator\ndescription: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style two-dimension approach. Use when user asks to \"illustrate article\", \"add images\", \"generate images for article\", or \"为文章配图\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-article-illustrator\n---\n\n# Article Illustrator\n\nAnalyze articles, identify illustration positions, generate images with Type × Style consistency.\n\n## Two Dimensions\n\n| Dimension | Controls | Examples |\n|-----------|----------|----------|\n| **Type** | Information structure | infographic, scene, flowchart, comparison, framework, timeline |\n| **Style** | Visual aesthetics | notion, warm, minimal, blueprint, watercolor, elegant |\n\nCombine freely: `--type infographic --style blueprint`\n\nOr use presets: `--preset tech-explainer` → type + style in one flag. See [Style Presets](references/style-presets.md).\n\n## Types\n\n| Type | Best For |\n|------|----------|\n| `infographic` | Data, metrics, technical |\n| `scene` | Narratives, emotional |\n| `flowchart` | Processes, workflows |\n| `comparison` | Side-by-side, options |\n| `framework` | Models, architecture |\n| `timeline` | History, evolution |\n\n## Styles\n\nSee [references/styles.md](references/styles.md) for Core Styles, full gallery, and Type × Style compatibility.\n\n## Workflow\n\n```\n- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize\n```\n\n### Step 1: Pre-check\n\n**1.5 Load Preferences (EXTEND.md) ⛔ BLOCKING**\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-article-illustrator/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-article-illustrator/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-article-illustrator/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-article-illustrator/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md\") { \"user\" }\n```\n\n| Result | Action |\n|--------|--------|\n| Found | Read, parse, display summary |\n| Not found | ⛔ Run [first-time-setup](references/config/first-time-setup.md) |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-1-pre-check)\n\n### Step 2: Analyze\n\n| Analysis | Output |\n|----------|--------|\n| Content type | Technical / Tutorial / Methodology / Narrative |\n| Purpose | information / visualization / imagination |\n| Core arguments | 2-5 main points |\n| Positions | Where illustrations add value |\n\n**CRITICAL**: Metaphors → visualize underlying concept, NOT literal image.\n\nFull procedures: [references/workflow.md](references/workflow.md#step-2-setup--analyze)\n\n### Step 3: Confirm Settings ⚠️\n\n**ONE AskUserQuestion, max 4 Qs. Q1-Q2 REQUIRED. Q3 required unless preset chosen.**\n\n| Q | Options |\n|---|---------|\n| **Q1: Preset or Type** | [Recommended preset], [alt preset], or manual: infographic, scene, flowchart, comparison, framework, timeline, mixed |\n| **Q2: Density** | minimal (1-2), balanced (3-5), per-section (Recommended), rich (6+) |\n| **Q3: Style** | [Recommended], minimal-flat, sci-fi, hand-drawn, editorial, scene, poster, Other — **skip if preset chosen** |\n| Q4: Language | When article language ≠ EXTEND.md setting |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-3-confirm-settings-)\n\n### Step 4: Generate Outline\n\nSave `outline.md` with frontmatter (type, density, style, image_count) and entries:\n\n```yaml\n## Illustration 1\n**Position**: [section/paragraph]\n**Purpose**: [why]\n**Visual Content**: [what]\n**Filename**: 01-infographic-concept-name.png\n```\n\nFull template: [references/workflow.md](references/workflow.md#step-4-generate-outline)\n\n### Step 5: Generate Images\n\n⛔ **BLOCKING: Prompt files MUST be saved before ANY image generation.**\n\n**Execution strategy**: When multiple illustrations have saved prompt files and the task is now plain generation, prefer `baoyu-image-gen` batch mode (`build-batch.ts` → `--batchfile`) over spawning subagents. Use subagents only when each image still needs separate prompt iteration or creative exploration.\n\n1. For each illustration, create a prompt file per [references/prompt-construction.md](references/prompt-construction.md)\n2. Save to `prompts/NN-{type}-{slug}.md` with YAML frontmatter\n3. Prompts **MUST** use type-specific templates with structured sections (ZONES / LABELS / COLORS / STYLE / ASPECT)\n4. LABELS **MUST** include article-specific data: actual numbers, terms, metrics, quotes\n5. **DO NOT** pass ad-hoc inline prompts to `--prompt` without saving prompt files first\n6. Select generation skill, process references (`direct`/`style`/`palette`)\n7. Apply watermark if EXTEND.md enabled\n8. Generate from saved prompt files; retry once on failure\n\nFull procedures: [references/workflow.md](references/workflow.md#step-5-generate-images)\n\n### Step 6: Finalize\n\nInsert `![description]({relative-path}/NN-{type}-{slug}.png)` after paragraphs. Path computed relative to article file based on output directory setting.\n\n```\nArticle Illustration Complete!\nArticle: [path] | Type: [type] | Density: [level] | Style: [style]\nImages: X/N generated\n```\n\n## Output Directory\n\nOutput directory is determined by `default_output_dir` in EXTEND.md (set during first-time setup):\n\n| `default_output_dir` | Output Path | Markdown Insert Path |\n|----------------------|-------------|----------------------|\n| `imgs-subdir` (default) | `{article-dir}/imgs/` | `imgs/NN-{type}-{slug}.png` |\n| `same-dir` | `{article-dir}/` | `NN-{type}-{slug}.png` |\n| `illustrations-subdir` | `{article-dir}/illustrations/` | `illustrations/NN-{type}-{slug}.png` |\n| `independent` | `illustrations/{topic-slug}/` | `illustrations/{topic-slug}/NN-{type}-{slug}.png` (relative to cwd) |\n\nAll auxiliary files (outline, prompts) are saved inside the output directory:\n\n```\n{output-dir}/\n├── outline.md\n├── prompts/\n│   └── NN-{type}-{slug}.md\n└── NN-{type}-{slug}.png\n```\n\nWhen input is **pasted content** (no file path), always uses `illustrations/{topic-slug}/` with `source-{slug}.{ext}` saved alongside.\n\n**Slug**: 2-4 words, kebab-case. **Conflict**: append `-YYYYMMDD-HHMMSS`.\n\n## Modification\n\n| Action | Steps |\n|--------|-------|\n| Edit | Update prompt → Regenerate → Update reference |\n| Add | Position → Prompt → Generate → Update outline → Insert |\n| Delete | Delete files → Remove reference → Update outline |\n\n## References\n\n| File | Content |\n|------|---------|\n| [references/workflow.md](references/workflow.md) | Detailed procedures |\n| [references/usage.md](references/usage.md) | Command syntax |\n| [references/styles.md](references/styles.md) | Style gallery |\n| [references/style-presets.md](references/style-presets.md) | Preset shortcuts (type + style) |\n| [references/prompt-construction.md](references/prompt-construction.md) | Prompt templates |\n| [references/config/first-time-setup.md](references/config/first-time-setup.md) | First-time setup |\n\nFile v1.0.0:skills/baoyu-comic/SKILL.md\n\n---\nname: baoyu-comic\ndescription: Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts and sequential image generation. Use when user asks to create \"知识漫画\", \"教育漫画\", \"biography comic\", \"tutorial comic\", or \"Logicomix-style comic\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-comic\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Knowledge Comic Creator\n\nCreate original knowledge comics with flexible art style × tone combinations.\n\n## Usage\n\n```bash\n/baoyu-comic posts/turing-story/source.md\n/baoyu-comic article.md --art manga --tone warm\n/baoyu-comic  # then paste content\n```\n\n## Options\n\n### Visual Dimensions\n\n| Option | Values | Description |\n|--------|--------|-------------|\n| `--art` | ligne-claire (default), manga, realistic, ink-brush, chalk | Art style / rendering technique |\n| `--tone` | neutral (default), warm, dramatic, romantic, energetic, vintage, action | Mood / atmosphere |\n| `--layout` | standard (default), cinematic, dense, splash, mixed, webtoon | Panel arrangement |\n| `--aspect` | 3:4 (default, portrait), 4:3 (landscape), 16:9 (widescreen) | Page aspect ratio |\n| `--lang` | auto (default), zh, en, ja, etc. | Output language |\n\n### Partial Workflow Options\n\n| Option | Description |\n|--------|-------------|\n| `--storyboard-only` | Generate storyboard only, skip prompts and images |\n| `--prompts-only` | Generate storyboard + prompts, skip images |\n| `--images-only` | Generate images from existing prompts directory |\n| `--regenerate N` | Regenerate specific page(s) only (e.g., `3` or `2,5,8`) |\n\nDetails: [references/partial-workflows.md](references/partial-workflows.md)\n\n### Art Styles (画风)\n\n| Style | 中文 | Description |\n|-------|------|-------------|\n| `ligne-claire` | 清线 | Uniform lines, flat colors, European comic tradition (Tintin, Logicomix) |\n| `manga` | 日漫 | Large eyes, manga conventions, expressive emotions |\n| `realistic` | 写实 | Digital painting, realistic proportions, sophisticated |\n| `ink-brush` | 水墨 | Chinese brush strokes, ink wash effects |\n| `chalk` | 粉笔 | Chalkboard aesthetic, hand-drawn warmth |\n\n### Tones (基调)\n\n| Tone | 中文 | Description |\n|------|------|-------------|\n| `neutral` | 中性 | Balanced, rational, educational |\n| `warm` | 温馨 | Nostalgic, personal, comforting |\n| `dramatic` | 戏剧 | High contrast, intense, powerful |\n| `romantic` | 浪漫 | Soft, beautiful, decorative elements |\n| `energetic` | 活力 | Bright, dynamic, exciting |\n| `vintage` | 复古 | Historical, aged, period authenticity |\n| `action` | 动作 | Speed lines, impact effects, combat |\n\n### Preset Shortcuts\n\nPresets with special rules beyond art+tone:\n\n| Preset | Equivalent | Special Rules |\n|--------|-----------|---------------|\n| `--style ohmsha` | `--art manga --tone neutral` | Visual metaphors, NO talking heads, gadget reveals |\n| `--style wuxia` | `--art ink-brush --tone action` | Qi effects, combat visuals, atmospheric elements |\n| `--style shoujo` | `--art manga --tone romantic` | Decorative elements, eye details, romantic beats |\n\n### Compatibility Matrix\n\n| Art Style | ✓✓ Best | ✓ Works | ✗ Avoid |\n|-----------|---------|---------|---------|\n| ligne-claire | neutral, warm | dramatic, vintage, energetic | romantic, action |\n| manga | neutral, romantic, energetic, action | warm, dramatic | vintage |\n| realistic | neutral, warm, dramatic, vintage | action | romantic, energetic |\n| ink-brush | neutral, dramatic, action, vintage | warm | romantic, energetic |\n| chalk | neutral, warm, energetic | vintage | dramatic, action, romantic |\n\nDetails: [references/auto-selection.md](references/auto-selection.md)\n\n## Auto Selection\n\nContent signals determine default art + tone + layout (or preset):\n\n| Content Signals | Recommended |\n|-----------------|-------------|\n| Tutorial, how-to, programming, educational | **ohmsha** preset |\n| Pre-1950, classical, ancient | realistic + vintage |\n| Personal story, mentor | ligne-claire + warm |\n| Martial arts, wuxia | **wuxia** preset |\n| Romance, school life | **shoujo** preset |\n| Biography, balanced | ligne-claire + neutral |\n\n**When preset is recommended**: Load `references/presets/{preset}.md` and apply all special rules.\n\nDetails: [references/auto-selection.md](references/auto-selection.md)\n\n## Script Directory\n\n**Important**: All scripts are located in the `scripts/` subdirectory of this skill.\n\n**Agent Execution Instructions**:\n1. Determine this SKILL.md file's directory path as `{baseDir}`\n2. Script path = `{baseDir}/scripts/<script-name>.ts`\n3. Replace all `{baseDir}` in this document with the actual path\n4. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun\n\n**Script Reference**:\n| Script | Purpose |\n|--------|---------|\n| `scripts/merge-to-pdf.ts` | Merge comic pages into PDF |\n\n## File Structure\n\nOutput directory: `comic/{topic-slug}/`\n- Slug: 2-4 words kebab-case from topic (e.g., `alan-turing-bio`)\n- Conflict: append timestamp (e.g., `turing-story-20260118-143052`)\n\n**Contents**:\n| File | Description |\n|------|-------------|\n| `source-{slug}.{ext}` | Source files |\n| `analysis.md` | Content analysis |\n| `storyboard.md` | Storyboard with panel breakdown |\n| `characters/characters.md` | Character definitions |\n| `characters/characters.png` | Character reference sheet |\n| `prompts/NN-{cover\\|page}-[slug].md` | Generation prompts |\n| `NN-{cover\\|page}-[slug].png` | Generated images |\n| `{topic-slug}.pdf` | Final merged PDF |\n\n## Language Handling\n\n**Detection Priority**:\n1. `--lang` flag (explicit)\n2. EXTEND.md `language` setting\n3. User's conversation language\n4. Source content language\n\n**Rule**: Use user's input language or saved language preference for ALL interactions:\n- Storyboard outlines and scene descriptions\n- Image generation prompts\n- User selection options and confirmations\n- Progress updates, questions, errors, summaries\n\nTechnical terms remain in English.\n\n## Workflow\n\n### Progress Checklist\n\n```\nComic Progress:\n- [ ] Step 1: Setup & Analyze\n  - [ ] 1.1 Preferences (EXTEND.md) ⛔ BLOCKING\n    - [ ] Found → load preferences → continue\n    - [ ] Not found → run first-time setup → MUST complete before other steps\n  - [ ] 1.2 Analyze, 1.3 Check existing\n- [ ] Step 2: Confirmation - Style & options ⚠️ REQUIRED\n- [ ] Step 3: Generate storyboard + characters\n- [ ] Step 4: Review outline (conditional)\n- [ ] Step 5: Generate prompts\n- [ ] Step 6: Review prompts (conditional)\n- [ ] Step 7: Generate images ⚠️ CHARACTER REF REQUIRED\n  - [ ] 7.1 Generate character sheet FIRST → characters/characters.png\n  - [ ] 7.2 Generate pages WITH --ref characters/characters.png\n- [ ] Step 8: Merge to PDF\n- [ ] Step 9: Completion report\n```\n\n### Flow\n\n```\nInput → [Preferences] ─┬─ Found → Continue\n                       │\n                       └─ Not found → First-Time Setup ⛔ BLOCKING\n                                      │\n                                      └─ Complete setup → Save EXTEND.md → Continue\n                                                                              │\n        ┌─────────────────────────────────────────────────────────────────────┘\n        ↓\nAnalyze → [Check Existing?] → [Confirm: Style + Reviews] → Storyboard → [Review?] → Prompts → [Review?] → Images → PDF → Complete\n```\n\n### Step Summary\n\n| Step | Action | Key Output |\n|------|--------|------------|\n| 1.1 | Load EXTEND.md preferences ⛔ BLOCKING if not found | Config loaded |\n| 1.2 | Analyze content | `analysis.md` |\n| 1.3 | Check existing directory | Handle conflicts |\n| 2 | Confirm style, focus, audience, reviews | User preferences |\n| 3 | Generate storyboard + characters | `storyboard.md`, `characters/` |\n| 4 | Review outline (if requested) | User approval |\n| 5 | Generate prompts | `prompts/*.md` |\n| 6 | Review prompts (if requested) | User approval |\n| **7.1** | **Generate character sheet FIRST** | `characters/characters.png` |\n| **7.2** | Generate pages **with character ref** | `*.png` files |\n| 8 | Merge to PDF | `{slug}.pdf` |\n| 9 | Completion report | Summary |\n\n### Step 7: Image Generation ⚠️ CRITICAL\n\n**Character reference is MANDATORY for visual consistency.**\n\n**7.1 Generate character sheet first**:\n- **Backup rule**: If `characters/characters.png` exists, rename to `characters/characters-backup-YYYYMMDD-HHMMSS.png`\n- Invoke an installed image generation skill such as `baoyu-image-gen`\n- Read that skill's `SKILL.md` and follow its documented interface rather than calling its scripts directly\n- Use `characters/characters.md` as the prompt-file input\n- Save output to `characters/characters.png`\n- Use aspect ratio `4:3`\n\n**Compress character sheet** (recommended):\nCompress to reduce token usage when used as reference image:\n- Use available image compression skill (if any)\n- Or system tools: `pngquant`, `optipng`, `sips` (macOS)\n- **Keep PNG format**, lossless compression preferred\n\n**7.2 Generate each page WITH character reference**:\n\n| Skill Capability | Strategy |\n|------------------|----------|\n| Supports `--ref` | Pass `characters/characters.png` with EVERY page |\n| No `--ref` support | Prepend character descriptions to EVERY prompt file |\n\n**Backup rules for page generation**:\n- If prompt file exists: rename to `prompts/NN-{cover|page}-[slug]-backup-YYYYMMDD-HHMMSS.md`\n- If image file exists: rename to `NN-{cover|page}-[slug]-backup-YYYYMMDD-HHMMSS.png`\n- Invoke the installed image generation skill for each page\n- Use `prompts/01-page-xxx.md` as the prompt-file input\n- Save output to `01-page-xxx.png`\n- Use aspect ratio `3:4`\n- If the chosen skill supports reference images, pass `characters/characters.png` as `--ref`\n\n**Full workflow details**: [references/workflow.md](references/workflow.md)\n\n### EXTEND.md Paths ⛔ BLOCKING\n\n**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 art style, do NOT ask about tone — ONLY complete the preferences setup first.\n\n| Path | Location |\n|------|----------|\n| `.baoyu-skills/baoyu-comic/EXTEND.md` | Project directory |\n| `$HOME/.baoyu-skills/baoyu-comic/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Read, parse, display summary → Continue |\n| Not found | ⛔ **BLOCKING**: Run first-time setup ONLY ([references/config/first-time-setup.md](references/config/first-time-setup.md)) → Complete and save EXTEND.md → Then continue |\n\n**EXTEND.md Supports**: Watermark | Preferred art/tone/layout | Custom style definitions | Character presets | Language preference\n\nSchema: [references/config/preferences-schema.md](references/config/preferences-schema.md)\n\n## References\n\n**Core Templates**:\n- [analysis-framework.md](references/analysis-framework.md) - Deep content analysis\n- [character-template.md](references/character-template.md) - Character definition format\n- [storyboard-template.md](references/storyboard-template.md) - Storyboard structure\n- [ohmsha-guide.md](references/ohmsha-guide.md) - Ohmsha manga specifics\n\n**Style Definitions**:\n- `references/art-styles/` - Art styles (ligne-claire, manga, realistic, ink-brush, chalk)\n- `references/tones/` - Tones (neutral, warm, dramatic, romantic, energetic, vintage, action)\n- `references/presets/` - Presets with special rules (ohmsha, wuxia, shoujo)\n- `references/layouts/` - Layouts (standard, cinematic, dense, splash, mixed, webtoon)\n\n**Workflow**:\n- [workflow.md](references/workflow.md) - Full workflow details\n- [auto-selection.md](references/auto-selection.md) - Content signal analysis\n- [partial-workflows.md](references/partial-workflows.md) - Partial workflow options\n\n**Config**:\n- [config/preferences-schema.md](references/config/preferences-schema.md) - EXTEND.md schema\n- [config/first-time-setup.md](references/config/first-time-setup.md) - First-time setup\n- [config/watermark-guide.md](references/config/watermark-guide.md) - Watermark configuration\n\n## Page Modification\n\n| Action | Steps |\n|--------|-------|\n| **Edit** | **Update prompt file FIRST** → `--regenerate N` → Regenerate PDF |\n| **Add** | Create prompt at position → Generate with character ref → Renumber subsequent → Update storyboard → Regenerate PDF |\n| **Delete** | Remove files → Renumber subsequent → Update storyboard → Regenerate PDF |\n\n**IMPORTANT**: When updating pages, ALWAYS update the prompt file (`prompts/NN-{cover|page}-[slug].md`) FIRST before regenerating. This ensures changes are documented and reproducible.\n\n## Notes\n\n- Image generation: 10-30 seconds per page\n- Auto-retry once on generation failure\n- Use stylized alternatives for sensitive public figures\n- Maintain style consistency via session ID\n- **Step 2 confirmation required** - do not skip\n- **Steps 4/6 conditional** - only if user requested in Step 2\n- **Step 7.1 character sheet MUST be generated before pages** - ensures consistency\n- **Step 7.2 EVERY page MUST reference characters** - use `--ref` or embed descriptions\n- Watermark/language configured once in EXTEND.md\n\nFile v1.0.0:skills/baoyu-compress-image/SKILL.md\n\n---\nname: baoyu-compress-image\ndescription: Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to \"compress image\", \"optimize image\", \"convert to webp\", or reduce image file size.\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-compress-image\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Image Compressor\n\nCompresses images using best available tool (sips → cwebp → ImageMagick → Sharp).\n\n## Script Directory\n\nScripts in `scripts/` subdirectory. `{baseDir}` = this SKILL.md's directory path. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun. Replace `{baseDir}` and `${BUN_X}` with actual values.\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/main.ts` | Image compression CLI |\n\n## Preferences (EXTEND.md)\n\nCheck EXTEND.md existence (priority order):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-compress-image/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-compress-image/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-compress-image/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-compress-image/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-compress-image/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-compress-image/EXTEND.md\") { \"user\" }\n```\n\n┌────────────────────────────────────────────────────────┬───────────────────┐\n│                          Path                          │     Location      │\n├────────────────────────────────────────────────────────┼───────────────────┤\n│ .baoyu-skills/baoyu-compress-image/EXTEND.md           │ Project directory │\n├────────────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.baoyu-skills/baoyu-compress-image/EXTEND.md     │ User home         │\n└────────────────────────────────────────────────────────┴───────────────────┘\n\n┌───────────┬───────────────────────────────────────────────────────────────────────────┐\n│  Result   │                                  Action                                   │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Found     │ Read, parse, apply settings                                               │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Not found │ Use defaults                                                              │\n└───────────┴───────────────────────────────────────────────────────────────────────────┘\n\n**EXTEND.md Supports**: Default format | Default quality | Keep original preference\n\n## Usage\n\n```bash\n${BUN_X} {baseDir}/scripts/main.ts <input> [options]\n```\n\n## Options\n\n| Option | Short | Description | Default |\n|--------|-------|-------------|---------|\n| `<input>` | | File or directory | Required |\n| `--output` | `-o` | Output path | Same path, new ext |\n| `--format` | `-f` | webp, png, jpeg | webp |\n| `--quality` | `-q` | Quality 0-100 | 80 |\n| `--keep` | `-k` | Keep original | false |\n| `--recursive` | `-r` | Process subdirs | false |\n| `--json` | | JSON output | false |\n\n## Examples\n\n```bash\n# Single file → WebP (replaces original)\n${BUN_X} {baseDir}/scripts/main.ts image.png\n\n# Keep PNG format\n${BUN_X} {baseDir}/scripts/main.ts image.png -f png --keep\n\n# Directory recursive\n${BUN_X} {baseDir}/scripts/main.ts ./images/ -r -q 75\n\n# JSON output\n${BUN_X} {baseDir}/scripts/main.ts image.png --json\n```\n\n**Output**:\n```\nimage.png → image.webp (245KB → 89KB, 64% reduction)\n```\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Preferences** section for paths and supported options.\n\nFile v1.0.0:skills/baoyu-cover-image/SKILL.md\n\n---\nname: baoyu-cover-image\ndescription: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 10 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to \"generate cover image\", \"create article cover\", or \"make cover\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-cover-image\n---\n\n# Cover Image Generator\n\nGenerate elegant cover images for articles with 5-dimensional customization.\n\n## Usage\n\n```bash\n# Auto-select dimensions based on content\n/baoyu-cover-image path/to/article.md\n\n# Quick mode: skip confirmation\n/baoyu-cover-image article.md --quick\n\n# Specify dimensions\n/baoyu-cover-image article.md --type conceptual --palette warm --rendering flat-vector\n\n# Style presets (shorthand for palette + rendering)\n/baoyu-cover-image article.md --style blueprint\n\n# With reference images\n/baoyu-cover-image article.md --ref style-ref.png\n\n# Direct content input\n/baoyu-cover-image --palette mono --aspect 1:1 --quick\n[paste content]\n```\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--type <name>` | hero, conceptual, typography, metaphor, scene, minimal |\n| `--palette <name>` | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone |\n| `--rendering <name>` | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print |\n| `--style <name>` | Preset shorthand (see [Style Presets](references/style-presets.md)) |\n| `--text <level>` | none, title-only, title-subtitle, text-rich |\n| `--mood <level>` | subtle, balanced, bold |\n| `--font <name>` | clean, handwritten, serif, display |\n| `--aspect <ratio>` | 16:9 (default), 2.35:1, 4:3, 3:2, 1:1, 3:4 |\n| `--lang <code>` | Title language (en, zh, ja, etc.) |\n| `--no-title` | Alias for `--text none` |\n| `--quick` | Skip confirmation, use auto-selection |\n| `--ref <files...>` | Reference images for style/composition guidance |\n\n## Five Dimensions\n\n| Dimension | Values | Default |\n|-----------|--------|---------|\n| **Type** | hero, conceptual, typography, metaphor, scene, minimal | auto |\n| **Palette** | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone | auto |\n| **Rendering** | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print | auto |\n| **Text** | none, title-only, title-subtitle, text-rich | title-only |\n| **Mood** | subtle, balanced, bold | balanced |\n| **Font** | clean, handwritten, serif, display | clean |\n\nAuto-selection rules: [references/auto-selection.md](references/auto-selection.md)\n\n## Galleries\n\n**Types**: hero, conceptual, typography, metaphor, scene, minimal\n→ Details: [references/types.md](references/types.md)\n\n**Palettes**: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone\n→ Details: [references/palettes/](references/palettes/)\n\n**Renderings**: flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print\n→ Details: [references/renderings/](references/renderings/)\n\n**Text Levels**: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags)\n→ Details: [references/dimensions/text.md](references/dimensions/text.md)\n\n**Mood Levels**: subtle (low contrast) | balanced (default) | bold (high contrast)\n→ Details: [references/dimensions/mood.md](references/dimensions/mood.md)\n\n**Fonts**: clean (sans-serif) | handwritten | serif | display (bold decorative)\n→ Details: [references/dimensions/font.md](references/dimensions/font.md)\n\n## File Structure\n\nOutput directory per `default_output_dir` preference:\n- `same-dir`: `{article-dir}/`\n- `imgs-subdir`: `{article-dir}/imgs/`\n- `independent` (default): `cover-image/{topic-slug}/`\n\n```\n<output-dir>/\n├── source-{slug}.{ext}    # Source files\n├── refs/                  # Reference images (if provided)\n│   ├── ref-01-{slug}.{ext}\n│   └── ref-01-{slug}.md   # Description file\n├── prompts/cover.md       # Generation prompt\n└── cover.png              # Output image\n```\n\n**Slug**: 2-4 words, kebab-case. Conflict: append `-YYYYMMDD-HHMMSS`\n\n## Workflow\n\n### Progress Checklist\n\n```\nCover Image Progress:\n- [ ] Step 0: Check preferences (EXTEND.md) ⛔ BLOCKING\n- [ ] Step 1: Analyze content + save refs + determine output dir\n- [ ] Step 2: Confirm options (6 dimensions) ⚠️ unless --quick\n- [ ] Step 3: Create prompt\n- [ ] Step 4: Generate image\n- [ ] Step 5: Completion report\n```\n\n### Flow\n\n```\nInput → [Step 0: Preferences] ─┬─ Found → Continue\n                               └─ Not found → First-Time Setup ⛔ BLOCKING → Save EXTEND.md → Continue\n        ↓\nAnalyze + Save Refs → [Output Dir] → [Confirm: 6 Dimensions] → Prompt → Generate → Complete\n                                              ↓\n                                     (skip if --quick or all specified)\n```\n\n### Step 0: Load Preferences ⛔ BLOCKING\n\nCheck EXTEND.md existence (priority: project → user):\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-cover-image/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-cover-image/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-cover-image/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-cover-image/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md\") { \"user\" }\n```\n\n| Result | Action |\n|--------|--------|\n| Found | Load, display summary → Continue |\n| Not found | ⛔ Run first-time setup ([references/config/first-time-setup.md](references/config/first-time-setup.md)) → Save → Continue |\n\n**CRITICAL**: If not found, complete setup BEFORE any other steps or questions.\n\n### Step 1: Analyze Content\n\n1. **Save reference images** (if provided) → [references/workflow/reference-images.md](references/workflow/reference-images.md)\n2. **Save source content** (if pasted, save to `source.md`)\n3. **Analyze content**: topic, tone, keywords, visual metaphors\n4. **Deep analyze references** ⚠️: Extract specific, concrete elements (see reference-images.md)\n5. **Detect language**: Compare source, user input, EXTEND.md preference\n6. **Determine output directory**: Per File Structure rules\n\n**⚠️ People in Reference Images — MUST follow all 3 rules:**\n\nIf reference images contain **people** who should appear in the cover:\n\n1. **`usage: direct`** — MUST set in refs description file. NEVER use `style` or `palette` when people need to appear\n2. **Per-character description** — MUST describe each person's distinctive features (hair, glasses, skin tone, clothing) in `refs/ref-NN-{slug}.md`. Vague descriptions like \"a man\" will fail\n3. **`--ref` flag** — MUST pass reference image via `--ref` in Step 4 so the model sees actual faces\n\nSee [reference-images.md § Character Analysis](references/workflow/reference-images.md) for description format.\n\n### Step 2: Confirm Options ⚠️\n\n**MUST use `AskUserQuestion` tool** to present options as interactive selection — NOT plain text tables. Present up to 4 questions in a single `AskUserQuestion` call (Type, Palette, Rendering, Font + Settings). Each question shows the recommended option first with reason, followed by alternatives.\n\nFull confirmation flow and question format: [references/workflow/confirm-options.md](references/workflow/confirm-options.md)\n\n| Condition | Skipped | Still Asked |\n|-----------|---------|-------------|\n| `--quick` or `quick_mode: true` | 6 dimensions | Aspect ratio (unless `--aspect`) |\n| All 6 + `--aspect` specified | All | None |\n\n### Step 3: Create Prompt\n\nSave to `prompts/cover.md`. Template: [references/workflow/prompt-template.md](references/workflow/prompt-template.md)\n\n**CRITICAL - References in Frontmatter**:\n- Files saved to `refs/` → Add to frontmatter `references` list\n- Style extracted verbally (no file) → Omit `references`, describe in body\n- Before writing → Verify: `test -f refs/ref-NN-{slug}.{ext}`\n\n**Reference elements in body** MUST be detailed, prefixed with \"MUST\"/\"REQUIRED\", with integration approach.\n\n### Step 4: Generate Image\n\n1. **Backup existing** `cover.png` if regenerating\n2. **Check image generation skills**; if multiple, ask preference\n3. **Process references** from prompt frontmatter:\n   - `direct` usage → pass via `--ref` (use ref-capable backend)\n   - `style`/`palette` → extract traits, append to prompt\n4. **Generate**: Call skill with prompt file, output path, aspect ratio\n5. On failure: auto-retry once\n\n### Step 5: Completion Report\n\n```\nCover Generated!\n\nTopic: [topic]\nType: [type] | Palette: [palette] | Rendering: [rendering]\nText: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]\nTitle: [title or \"visual only\"]\nLanguage: [lang] | Watermark: [enabled/disabled]\nReferences: [N images or \"extracted style\" or \"none\"]\nLocation: [directory path]\n\nFiles:\n✓ source-{slug}.{ext}\n✓ prompts/cover.md\n✓ cover.png\n```\n\n## Image Modification\n\n| Action | Steps |\n|--------|-------|\n| **Regenerate** | Backup → Update prompt file FIRST → Regenerate |\n| **Change dimension** | Backup → Confirm new value → Update prompt → Regenerate |\n\n## Composition Principles\n\n- **Whitespace**: 40-60% breathing room\n- **Visual anchor**: Main element centered or offset left\n- **Characters**: Simplified silhouettes; NO realistic humans\n- **Title**: Use exact title from user/source; never invent\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Step 0** for paths.\n\nSupports: Watermark | Preferred dimensions | Default aspect/output | Quick mode | Custom palettes | Language\n\nSchema: [references/config/preferences-schema.md](references/config/preferences-schema.md)\n\n## References\n\n**Dimensions**: [text.md](references/dimensions/text.md) | [mood.md](references/dimensions/mood.md) | [font.md](references/dimensions/font.md)\n**Palettes**: [references/palettes/](references/palettes/)\n**Renderings**: [references/renderings/](references/renderings/)\n**Types**: [references/types.md](references/types.md)\n**Auto-Selection**: [references/auto-selection.md](references/auto-selection.md)\n**Style Presets**: [references/style-presets.md](references/style-presets.md)\n**Compatibility**: [references/compatibility.md](references/compatibility.md)\n**Visual Elements**: [references/visual-elements.md](references/visual-elements.md)\n**Workflow**: [confirm-options.md](references/workflow/confirm-options.md) | [prompt-template.md](references/workflow/prompt-template.md) | [reference-images.md](references/workflow/reference-images.md)\n**Config**: [preferences-schema.md](references/config/preferences-schema.md) | [first-time-setup.md](references/config/first-time-setup.md) | [watermark-guide.md](references/config/watermark-guide.md)\n\nFile v1.0.0:skills/baoyu-danger-gemini-web/SKILL.md\n\n---\nname: baoyu-danger-gemini-web\ndescription: Generates images and text via reverse-engineered Gemini Web API. Supports text generation, image generation from prompts, reference images for vision input, and multi-turn conversations. Use when other skills need image generation backend, or when user requests \"generate image with Gemini\", \"Gemini text generation\", or needs vision-capable AI generation.\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-danger-gemini-web\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Gemini Web Client\n\nText/image generation via Gemini Web API. Supports reference images and multi-turn conversations.\n\n## Script Directory\n\n**Important**: All scripts are located in the `scripts/` subdirectory of this skill.\n\n**Agent Execution Instructions**:\n1. Determine this SKILL.md file's directory path as `{baseDir}`\n2. Script path = `{baseDir}/scripts/<script-name>.ts`\n3. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun\n4. Replace all `{baseDir}` and `${BUN_X}` in this document with actual values\n\n**Script Reference**:\n| Script | Purpose |\n|--------|---------|\n| `scripts/main.ts` | CLI entry point for text/image generation |\n| `scripts/gemini-webapi/*` | TypeScript port of `gemini_webapi` (GeminiClient, types, utils) |\n\n## Consent Check (REQUIRED)\n\nBefore first use, verify user consent for reverse-engineered API usage.\n\n**Consent file locations**:\n- macOS: `~/Library/Application Support/baoyu-skills/gemini-web/consent.json`\n- Linux: `~/.local/share/baoyu-skills/gemini-web/consent.json`\n- Windows: `%APPDATA%\\baoyu-skills\\gemini-web\\consent.json`\n\n**Flow**:\n1. Check if consent file exists with `accepted: true` and `disclaimerVersion: \"1.0\"`\n2. If valid consent exists → print warning with `acceptedAt` date, proceed\n3. If no consent → show disclaimer, ask user via `AskUserQuestion`:\n   - \"Yes, I accept\" → create consent file with ISO timestamp, proceed\n   - \"No, I decline\" → output decline message, stop\n4. Consent file format: `{\"version\":1,\"accepted\":true,\"acceptedAt\":\"<ISO>\",\"disclaimerVersion\":\"1.0\"}`\n\n---\n\n## Preferences (EXTEND.md)\n\nCheck EXTEND.md existence (priority order):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-danger-gemini-web/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-danger-gemini-web/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-danger-gemini-web/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-danger-gemini-web/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-danger-gemini-web/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-danger-gemini-web/EXTEND.md\") { \"user\" }\n```\n\n┌──────────────────────────────────────────────────────────┬───────────────────┐\n│                           Path                           │     Location      │\n├──────────────────────────────────────────────────────────┼───────────────────┤\n│ .baoyu-skills/baoyu-danger-gemini-web/EXTEND.md          │ Project directory │\n├──────────────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.baoyu-skills/baoyu-danger-gemini-web/EXTEND.md    │ User home         │\n└──────────────────────────────────────────────────────────┴───────────────────┘\n\n┌───────────┬───────────────────────────────────────────────────────────────────────────┐\n│  Result   │                                  Action                                   │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Found     │ Read, parse, apply settings                                               │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Not found │ Use defaults                                                              │\n└───────────┴───────────────────────────────────────────────────────────────────────────┘\n\n**EXTEND.md Supports**: Default model | Proxy settings | Custom data directory\n\n## Usage\n\n```bash\n# Text generation\n${BUN_X} {baseDir}/scripts/main.ts \"Your prompt\"\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Your prompt\" --model gemini-3-flash\n\n# Image generation\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cute cat\" --image cat.png\n${BUN_X} {baseDir}/scripts/main.ts --promptfiles system.md content.md --image out.png\n\n# Vision input (reference images)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Describe this\" --reference image.png\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Create variation\" --reference a.png --image out.png\n\n# Multi-turn conversation\n${BUN_X} {baseDir}/scripts/main.ts \"Remember: 42\" --sessionId session-abc\n${BUN_X} {baseDir}/scripts/main.ts \"What number?\" --sessionId session-abc\n\n# JSON output\n${BUN_X} {baseDir}/scripts/main.ts \"Hello\" --json\n```\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--prompt`, `-p` | Prompt text |\n| `--promptfiles` | Read prompt from files (concatenated) |\n| `--model`, `-m` | Model: gemini-3-pro (default), gemini-3-flash, gemini-3-flash-thinking, gemini-3.1-pro-preview |\n| `--image [path]` | Generate image (default: generated.png) |\n| `--reference`, `--ref` | Reference images for vision input |\n| `--sessionId` | Session ID for multi-turn conversation |\n| `--list-sessions` | List saved sessions |\n| `--json` | Output as JSON |\n| `--login` | Refresh cookies, then exit |\n| `--cookie-path` | Custom cookie file path |\n| `--profile-dir` | Chrome profile directory |\n\n## Models\n\n| Model | Description |\n|-------|-------------|\n| `gemini-3-pro` | Default, latest 3.0 Pro |\n| `gemini-3-flash` | Fast, lightweight 3.0 Flash |\n| `gemini-3-flash-thinking` | 3.0 Flash with thinking |\n| `gemini-3.1-pro-preview` | 3.1 Pro preview (empty header, auto-routed) |\n\n## Authentication\n\nFirst run opens browser for Google auth. Cookies cached automatically.\n\nWhen no explicit profile dir is set, cookie refresh may reuse an already-running local Chrome/Chromium debugging session tied to a standard user-data dir.\nSet `--profile-dir` or `GEMINI_WEB_CHROME_PROFILE_DIR` to force a dedicated profile and skip existing-session reuse.\nThis is a best-effort CDP session reuse path, not the Chrome DevTools MCP prompt-based `--autoConnect` flow described in Chrome's official docs.\n\nSupported browsers (auto-detected): Chrome, Chrome Canary/Beta, Chromium, Edge.\n\nForce refresh: `--login` flag. Override browser: `GEMINI_WEB_CHROME_PATH` env var.\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `GEMINI_WEB_DATA_DIR` | Data directory |\n| `GEMINI_WEB_COOKIE_PATH` | Cookie file path |\n| `GEMINI_WEB_CHROME_PROFILE_DIR` | Chrome profile directory |\n| `GEMINI_WEB_CHROME_PATH` | Chrome executable path |\n| `HTTP_PROXY`, `HTTPS_PROXY` | Proxy for Google access (set inline with command) |\n\n## Sessions\n\nSession files stored in data directory under `sessions/<id>.json`.\n\nContains: `id`, `metadata` (Gemini chat state), `messages` array, timestamps.\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Preferences** section for paths and supported options.\n\nFile v1.0.0:skills/baoyu-danger-x-to-markdown/SKILL.md\n\n---\nname: baoyu-danger-x-to-markdown\ndescription: Converts X (Twitter) tweets and articles to markdown with YAML front matter. Uses reverse-engineered API requiring user consent. Use when user mentions \"X to markdown\", \"tweet to markdown\", \"save tweet\", or provides x.com/twitter.com URLs for conversion.\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-danger-x-to-markdown\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# X to Markdown\n\nConverts X content to markdown:\n- Tweets/threads → Markdown with YAML front matter\n- X Articles → Full content extraction\n\n## Script Directory\n\nScripts located in `scripts/` subdirectory.\n\n**Path Resolution**:\n1. `{baseDir}` = this SKILL.md's directory\n2. Script path = `{baseDir}/scripts/main.ts`\n3. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun\n\n## Consent Requirement\n\n**Before any conversion**, check and obtain consent.\n\n### Consent Flow\n\n**Step 1**: Check consent file\n\n```bash\n# macOS\ncat ~/Library/Application\\ Support/baoyu-skills/x-to-markdown/consent.json\n\n# Linux\ncat ~/.local/share/baoyu-skills/x-to-markdown/consent.json\n```\n\n**Step 2**: If `accepted: true` and `disclaimerVersion: \"1.0\"` → print warning and proceed:\n```\nWarning: Using reverse-engineered X API. Accepted on: <acceptedAt>\n```\n\n**Step 3**: If missing or version mismatch → display disclaimer:\n```\nDISCLAIMER\n\nThis tool uses a reverse-engineered X API, NOT official.\n\nRisks:\n- May break if X changes API\n- No guarantees or support\n- Possible account restrictions\n- Use at your own risk\n\nAccept terms and continue?\n```\n\nUse `AskUserQuestion` with options: \"Yes, I accept\" | \"No, I decline\"\n\n**Step 4**: On accept → create consent file:\n```json\n{\n  \"version\": 1,\n  \"accepted\": true,\n  \"acceptedAt\": \"<ISO timestamp>\",\n  \"disclaimerVersion\": \"1.0\"\n}\n```\n\n**Step 5**: On decline → output \"User declined. Exiting.\" and stop.\n\n## Preferences (EXTEND.md)\n\nCheck EXTEND.md existence (priority order):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md\") { \"user\" }\n```\n\n┌────────────────────────────────────────────────────────────┬───────────────────┐\n│                            Path                            │     Location      │\n├────────────────────────────────────────────────────────────┼───────────────────┤\n│ .baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md         │ Project directory │\n├────────────────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.baoyu-skills/baoyu-danger-x-to-markdown/EXTEND.md   │ User home         │\n└────────────────────────────────────────────────────────────┴───────────────────┘\n\n┌───────────┬───────────────────────────────────────────────────────────────────────────┐\n│  Result   │                                  Action                                   │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Found     │ Read, parse, apply settings                                               │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Not found │ **MUST** run first-time setup (see below) — do NOT silently create defaults │\n└───────────┴───────────────────────────────────────────────────────────────────────────┘\n\n**EXTEND.md Supports**: Download media by default | Default output directory\n\n### First-Time Setup (BLOCKING)\n\n**CRITICAL**: When EXTEND.md is not found, you **MUST use `AskUserQuestion`** to ask the user for their preferences before creating EXTEND.md. **NEVER** create EXTEND.md with defaults without asking. This is a **BLOCKING** operation — do NOT proceed with any conversion until setup is complete.\n\nUse `AskUserQuestion` with ALL questions in ONE call:\n\n**Question 1** — header: \"Media\", question: \"How to handle images and videos in tweets?\"\n- \"Ask each time (Recommended)\" — After saving markdown, ask whether to download media\n- \"Always download\" — Always download media to local imgs/ and videos/ directories\n- \"Never download\" — Keep original remote URLs in markdown\n\n**Question 2** — header: \"Output\", question: \"Default output directory?\"\n- \"x-to-markdown (Recommended)\" — Save to ./x-to-markdown/{username}/{tweet-id}.md\n- (User may choose \"Other\" to type a custom path)\n\n**Question 3** — header: \"Save\", question: \"Where to save preferences?\"\n- \"User (Recommended)\" — ~/.baoyu-skills/ (all projects)\n- \"Project\" — .baoyu-skills/ (this project only)\n\nAfter user answers, create EXTEND.md at the chosen location, confirm \"Preferences saved to [path]\", then continue.\n\nFull reference: [references/config/first-time-setup.md](references/config/first-time-setup.md)\n\n### Supported Keys\n\n| Key | Default | Values | Description |\n|-----|---------|--------|-------------|\n| `download_media` | `ask` | `ask` / `1` / `0` | `ask` = prompt each time, `1` = always download, `0` = never |\n| `default_output_dir` | empty | path or empty | Default output directory (empty = `./x-to-markdown/`) |\n\n**Value priority**:\n1. CLI arguments (`--download-media`, `-o`)\n2. EXTEND.md\n3. Skill defaults\n\n## Usage\n\n```bash\n${BUN_X} {baseDir}/scripts/main.ts <url>\n${BUN_X} {baseDir}/scripts/main.ts <url> -o output.md\n${BUN_X} {baseDir}/scripts/main.ts <url> --download-media\n${BUN_X} {baseDir}/scripts/main.ts <url> --json\n```\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `<url>` | Tweet or article URL |\n| `-o <path>` | Output path |\n| `--json` | JSON output |\n| `--download-media` | Download image/video assets to local `imgs/` and `videos/`, and rewrite markdown links to local relative paths |\n| `--login` | Refresh cookies only |\n\n## Supported URLs\n\n- `https://x.com/<user>/status/<id>`\n- `https://twitter.com/<user>/status/<id>`\n- `https://x.com/i/article/<id>`\n\n## Output\n\n```markdown\n---\nurl: \"https://x.com/user/status/123\"\nauthor: \"Name (@user)\"\ntweetCount: 3\ncoverImage: \"https://pbs.twimg.com/media/example.jpg\"\n---\n\nContent...\n```\n\n**File structure**: `x-to-markdown/{username}/{tweet-id}/{content-slug}.md`\n\nWhen `--download-media` is enabled:\n- Images are saved to `imgs/` next to the markdown file\n- Videos are saved to `videos/` next to the markdown file\n- Markdown media links are rewritten to local relative paths\n\n## Media Download Workflow\n\nBased on `download_media` setting in EXTEND.md:\n\n| Setting | Behavior |\n|---------|----------|\n| `1` (always) | Run script with `--download-media` flag |\n| `0` (never) | Run script without `--download-media` flag |\n| `ask` (default) | Follow the ask-each-time flow below |\n\n### Ask-Each-Time Flow\n\n1. Run script **without** `--download-media` → markdown saved\n2. Check saved markdown for remote media URLs (`https://` in image/video links)\n3. **If no remote media found** → done, no prompt needed\n4. **If remote media found** → use `AskUserQuestion`:\n   - header: \"Media\", question: \"Download N images/videos to local files?\"\n   - \"Yes\" — Download to local directories\n   - \"No\" — Keep remote URLs\n5. If user confirms → run script **again** with `--download-media` (overwrites markdown with localized links)\n\n## Authentication\n\n1. **Environment variables** (preferred): `X_AUTH_TOKEN`, `X_CT0`\n2. **Chrome login** (fallback): Auto-opens Chrome, caches cookies locally\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Preferences** section for paths and supported options.\n\nFile v1.0.0:skills/baoyu-format-markdown/SKILL.md\n\n---\nname: baoyu-format-markdown\ndescription: Formats plain text or markdown files with frontmatter, titles, summaries, headings, bold, lists, and code blocks. Use when user asks to \"format markdown\", \"beautify article\", \"add formatting\", or improve article layout. Outputs to {filename}-formatted.md.\nversion: 1.57.0\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-format-markdown\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Markdown Formatter\n\nTransforms plain text or markdown into well-structured, reader-friendly markdown. The goal is to help readers quickly grasp key points, highlights, and structure — without changing any original content.\n\n**Core principle**: Only adjust formatting and fix obvious typos. Never add, delete, or rewrite content.\n\n## Script Directory\n\nScripts in `scripts/` subdirectory. `{baseDir}` = this SKILL.md's directory path. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun. Replace `{baseDir}` and `${BUN_X}` with actual values.\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/main.ts` | Main entry point with CLI options (uses remark-cjk-friendly for CJK emphasis) |\n| `scripts/quotes.ts` | Replace ASCII quotes with fullwidth quotes |\n| `scripts/autocorrect.ts` | Add CJK/English spacing via autocorrect |\n\n## Preferences (EXTEND.md)\n\nCheck EXTEND.md existence (priority order):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-format-markdown/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-format-markdown/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-format-markdown/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-format-markdown/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-format-markdown/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-format-markdown/EXTEND.md\") { \"user\" }\n```\n\n┌──────────────────────────────────────────────────────────┬───────────────────┐\n│                           Path                           │     Location      │\n├──────────────────────────────────────────────────────────┼───────────────────┤\n│ .baoyu-skills/baoyu-format-markdown/EXTEND.md            │ Project directory │\n├──────────────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.baoyu-skills/baoyu-format-markdown/EXTEND.md      │ User home         │\n└──────────────────────────────────────────────────────────┴───────────────────┘\n\n┌───────────┬───────────────────────────────────────────────────────────────────────────┐\n│  Result   │                                  Action                                   │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Found     │ Read, parse, apply settings                                               │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Not found │ Use defaults                                                              │\n└───────────┴───────────────────────────────────────────────────────────────────────────┘\n\n**EXTEND.md Supports**:\n\n| Setting | Values | Default | Description |\n|---------|--------|---------|-------------|\n| `auto_select` | `true`/`false` | `false` | Skip both title and summary selection, auto-pick best |\n| `auto_select_title` | `true`/`false` | `false` | Skip title selection only |\n| `auto_select_summary` | `true`/`false` | `false` | Skip summary selection only |\n| Other | — | — | Default formatting options, typography preferences |\n\n## Usage\n\nThe workflow has two phases: **Analyze** (understand the content) then **Format** (apply formatting). Claude performs content analysis and formatting (Steps 1-5), then runs the script for typography fixes (Step 6).\n\n## Workflow\n\n### Step 1: Read & Detect Content Type\n\nRead the user-specified file, then detect content type:\n\n| Indicator | Classification |\n|-----------|----------------|\n| Has `---` YAML frontmatter | Markdown |\n| Has `#`, `##`, `###` headings | Markdown |\n| Has `**bold**`, `*italic*`, lists, code blocks, blockquotes | Markdown |\n| None of above | Plain text |\n\n**If Markdown detected, use `AskUserQuestion` to ask:**\n\n```\nDetected existing markdown formatting. What would you like to do?\n\n1. Optimize formatting (Recommended)\n   - Analyze content, improve headings, bold, lists for readability\n   - Run typography script (spacing, emphasis fixes)\n   - Output: {filename}-formatted.md\n\n2. Keep original formatting\n   - Preserve existing markdown structure\n   - Run typography script only\n   - Output: {filename}-formatted.md\n\n3. Typography fixes only\n   - Run typography script on original file in-place\n   - No copy created, modifies original file directly\n```\n\n**Based on user choice:**\n- **Optimize**: Continue to Step 2 (full workflow)\n- **Keep original**: Skip to Step 5, copy file then run Step 6\n- **Typography only**: Skip to Step 6, run on original file directly\n\n### Step 2: Analyze Content (Reader's Perspective)\n\nRead the entire content carefully. Think from a reader's perspective: what would help them quickly understand and remember the key information?\n\nProduce an analysis covering these dimensions:\n\n**2.1 Highlights & Key Insights**\n- Core arguments or conclusions the author makes\n- Surprising facts, data points, or counterintuitive claims\n- Memorable quotes or well-phrased sentences (golden quotes)\n\n**2.2 Structure Assessment**\n- Does the content have a clear logical flow? What is it?\n- Are there natural section boundaries that lack headings?\n- Are there long walls of text that could benefit from visual breaks?\n\n**2.3 Reader-Important Information**\n- Actionable advice or takeaways\n- Definitions, explanations of key concepts\n- Lists or enumerations buried in prose\n- Comparisons or contrasts that would be clearer as tables\n\n**2.4 Formatting Issues**\n- Missing or inconsistent heading hierarchy\n- Paragraphs that mix multiple topics\n- Parallel items written as prose instead of lists\n- Code, commands, or technical terms not marked as code\n- Obvious typos or formatting errors\n\n**Save analysis to file**: `{original-filename}-analysis.md`\n\nThe analysis file serves as the blueprint for Step 3. Use this format:\n\n```markdown\n# Content Analysis: {filename}\n\n## Highlights & Key Insights\n- [list findings]\n\n## Structure Assessment\n- Current flow: [describe]\n- Suggested sections: [list heading candidates with brief rationale]\n\n## Reader-Important Information\n- [list actionable items, key concepts, buried lists, potential tables]\n\n## Formatting Issues\n- [list specific issues with location references]\n\n## Typos Found\n- [list any obvious typos with corrections, or \"None found\"]\n```\n\n### Step 3: Check/Create Frontmatter, Title & Summary\n\nCheck for YAML frontmatter (`---` block). Create if missing.\n\n| Field | Processing |\n|-------|------------|\n| `title` | See **Title Generation** below |\n| `slug` | Infer from file path or generate from title |\n| `summary` | One-sentence concise summary (see **Summary Generation** below) |\n| `description` | Longer descriptive summary (see **Summary Generation** below) |\n| `coverImage` | Check if `imgs/cover.png` exists in same directory; if so, use relative path |\n\n**Title Generation:**\n\nWhether or not a title already exists, always run the title optimization flow (unless `auto_select_title` is set).\n\n**Preparation** — read the full text and extract:\n- Core argument (one sentence: \"what is this article about?\")\n- Most impactful opinion or conclusion\n- Reader pain point or curiosity trigger\n- Most memorable metaphor or golden quote\n\n**Generate titles** using formulas from `references/title-formulas.md`:\n\n1. Select the **2-3 best-matching hook formulas** based on the article's content, tone, and structure (see \"When to pick each formula\" in the reference)\n2. Generate **1-2 straightforward titles** (descriptive or declarative, no formula — clear and accurate)\n3. If the user specifies a direction (e.g., \"make it suspenseful\"), prioritize that direction\n4. Total: **4-5 candidates**\n\nUse `AskUserQuestion` to present candidates:\n\n```\nPick a title:\n\n1. [Hook title A] — (recommended) [formula name]\n2. [Hook title B] — [formula name]\n3. [Hook title C] — [formula name]\n4. [Straightforward title D] — straightforward\n5. [Straightforward title E] — straightforward\n\nEnter number, or type a custom title:\n```\n\nPut the strongest hook first and mark it (recommended). See `references/title-formulas.md` for title principles and prohibited patterns.\n\nIf first line is H1, extract to frontmatter and remove from body. If frontmatter already has `title`, include it as context but still generate fresh candidates.\n\n**Summary Generation:**\n\nGenerate two versions directly (no user selection needed), both stored in frontmatter:\n\n| Field | Length | Purpose |\n|-------|--------|---------|\n| `summary` | 1 sentence, ~50-80 chars | Concise hook — for feeds, social sharing, SEO meta |\n| `description` | 2-3 sentences, ~100-200 chars | Richer context — for article previews, newsletter blurbs |\n\n**Principles:**\n- Convey **core value** to the reader, not just the topic\n- Use concrete details (numbers, outcomes, specific methods) over vague descriptions\n- `summary` should be punchy and self-contained; `description` can expand with supporting details\n- If frontmatter already has `summary` or `description`, keep existing and only generate the missing one\n\n**Prohibited patterns:**\n- \"This article introduces...\", \"This article explores...\"\n- Pure topic description without value proposition\n- Repeating the title in different words\n\n**EXTEND.md skip behavior:** If `auto_select: true` or `auto_select_title: true` is set in EXTEND.md, skip title selection — generate the best candidate directly without asking.\n\nOnce title is in frontmatter, body should NOT have H1 (avoid duplication).\n\n### Step 4: Format Content\n\nApply formatting guided by the Step 2 analysis. The goal is making the content scannable and the key points impossible to miss.\n\n**Formatting toolkit:**\n\n| Element | When to use | Format |\n|---------|-------------|--------|\n| Headings | Natural topic boundaries, section breaks | `##`, `###` hierarchy |\n| Bold | Key conclusions, important terms, core takeaways | `**bold**` |\n| Unordered lists | Parallel items, feature lists, examples | `- item` |\n| Ordered lists | Sequential steps, ranked items, procedures | `1. item` |\n| Tables | Comparisons, structured data, option matrices | Markdown table |\n| Code | Commands, file paths, technical terms, variable names | `` `inline` `` or fenced blocks |\n| Blockquotes | Notable quotes, important warnings, cited text | `> quote` |\n| Separators | Major topic transitions | `---` |\n\n**Formatting principles — what NOT to do:**\n- Do NOT add sentences, explanations, or commentary\n- Do NOT delete or shorten any content\n- Do NOT rephrase or rewrite the author's words\n- Do NOT add headings that editorialize (e.g., \"Amazing Discovery\" — use neutral descriptive headings)\n- Do NOT over-format: not every sentence needs bold, not every paragraph needs a heading\n\n**Formatting principles — what TO do:**\n- Preserve the author's voice, tone, and every word\n- **Bold key conclusions and core takeaways** — the sentences a reader would highlight\n- Extract parallel items from prose into lists only when the structure is clearly there\n- Add headings where the topic genuinely shifts — prefer vivid, specific headings over generic ones (e.g., \"3 天搞定 vs 传统方案\" over \"方案对比\")\n- Use tables for comparisons or structured data buried in prose\n- Use blockquotes for golden quotes, memorable statements, or important warnings\n- Fix obvious typos (based on Step 2 findings)\n\n### Step 5: Save Formatted File\n\nSave as `{original-filename}-formatted.md`\n\n**Backup existing file:**\n\n```bash\nif [ -f \"{filename}-formatted.md\" ]; then\n  mv \"{filename}-formatted.md\" \"{filename}-formatted.backup-$(date +%Y%m%d-%H%M%S).md\"\nfi\n```\n\n### Step 6: Execute Typography Script\n\nRun the formatting script on the output file:\n\n```bash\n${BUN_X} {baseDir}/scripts/main.ts {output-file-path} [options]\n```\n\n**Script Options:**\n\n| Option | Short | Description | Default |\n|--------|-------|-------------|---------|\n| `--quotes` | `-q` | Replace ASCII quotes with fullwidth quotes `\"...\"` | false |\n| `--no-quotes` | | Do not replace quotes | |\n| `--spacing` | `-s` | Add CJK/English spacing via autocorrect | true |\n| `--no-spacing` | | Do not add CJK/English spacing | |\n| `--emphasis` | `-e` | Fix CJK emphasis punctuation issues | true |\n| `--no-emphasis` | | Do not fix CJK emphasis issues | |\n\n**Examples:**\n\n```bash\n# Default: spacing + emphasis enabled, quotes disabled\n${BUN_X} {baseDir}/scripts/main.ts article.md\n\n# Enable all features including quote replacement\n${BUN_X} {baseDir}/scripts/main.ts article.md --quotes\n\n# Only fix emphasis issues, skip spacing\n${BUN_X} {baseDir}/scripts/main.ts article.md --no-spacing\n```\n\n**Script performs (based on options):**\n1. Fix CJK emphasis/bold punctuation issues (default: enabled)\n2. Add CJK/English mixed text spacing via autocorrect (default: enabled)\n3. Replace ASCII quotes with fullwidth quotes (default: disabled)\n4. Format frontmatter YAML (always enabled)\n\n### Step 7: Completion Report\n\nDisplay a report summarizing all changes made:\n\n```\n**Formatting Complete**\n\n**Files:**\n- Analysis: {filename}-analysis.md\n- Formatted: {filename}-formatted.md\n\n**Content Analysis Summary:**\n- Highlights found: X key insights\n- Golden quotes: X memorable sentences\n- Formatting issues fixed: X items\n\n**Changes Applied:**\n- Frontmatter: [added/updated] (title, slug, summary)\n- Headings added: X (##: N, ###: N)\n- Bold markers added: X\n- Lists created: X (from prose → list conversion)\n- Tables created: X\n- Code markers added: X\n- Blockquotes added: X\n- Typos fixed: X [list each: \"original\" → \"corrected\"]\n\n**Typography Script:**\n- CJK spacing: [applied/skipped]\n- Emphasis fixes: [applied/skipped]\n- Quote replacement: [applied/skipped]\n```\n\nAdjust the report to reflect actual changes — omit categories where no changes were made.\n\n## Notes\n\n- Preserve original writing style and tone\n- Specify correct language for code blocks (e.g., `python`, `javascript`)\n- Maintain CJK/English spacing standards\n- The analysis file is a working document — it helps maintain consistency between what was identified and what was formatted\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Preferences** section for paths and supported options.\n\nFile v1.0.0:skills/baoyu-image-gen/SKILL.md\n\n---\nname: baoyu-image-gen\ndescription: AI image generation with OpenAI, Google, OpenRouter, DashScope, Jimeng, Seedream and Replicate APIs. Supports text-to-image, reference images, aspect ratios, and batch generation from saved prompt files. Sequential by default; use batch parallel generation when the user already has multiple prompts or wants stable multi-image throughput. Use when user asks to generate, create, or draw images.\nversion: 1.56.3\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-image-gen\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Image Generation (AI SDK)\n\nOfficial API-based image generation. Supports OpenAI, Google, OpenRouter, DashScope (阿里通义万象), Jimeng (即梦), Seedream (豆包) and Replicate providers.\n\n## Script Directory\n\n**Agent Execution**:\n1. `{baseDir}` = this SKILL.md file's directory\n2. Script path = `{baseDir}/scripts/main.ts`\n3. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun\n\n## Step 0: Load Preferences ⛔ BLOCKING\n\n**CRITICAL**: This step MUST complete BEFORE any image generation. Do NOT skip or defer.\n\nCheck EXTEND.md existence (priority: project → user):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-image-gen/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-image-gen/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-image-gen/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-image-gen/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-image-gen/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-image-gen/EXTEND.md\") { \"user\" }\n```\n\n| Result | Action |\n|--------|--------|\n| Found | Load, parse, apply settings. If `default_model.[provider]` is null → ask model only (Flow 2) |\n| Not found | ⛔ Run first-time setup ([references/config/first-time-setup.md](references/config/first-time-setup.md)) → Save EXTEND.md → Then continue |\n\n**CRITICAL**: If not found, complete the full setup (provider + model + quality + save location) using AskUserQuestion BEFORE generating any images. Generation is BLOCKED until EXTEND.md is created.\n\n| Path | Location |\n|------|----------|\n| `.baoyu-skills/baoyu-image-gen/EXTEND.md` | Project directory |\n| `$HOME/.baoyu-skills/baoyu-image-gen/EXTEND.md` | User home |\n\n**EXTEND.md Supports**: Default provider | Default quality | Default aspect ratio | Default image size | Default models | Batch worker cap | Provider-specific batch limits\n\nSchema: `references/config/preferences-schema.md`\n\n## Usage\n\n```bash\n# Basic\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image cat.png\n\n# With aspect ratio\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A landscape\" --image out.png --ar 16:9\n\n# High quality\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --quality 2k\n\n# From prompt files\n${BUN_X} {baseDir}/scripts/main.ts --promptfiles system.md content.md --image out.png\n\n# With reference images (Google, OpenAI, OpenRouter, Replicate, or Seedream 4.0/4.5/5.0)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Make blue\" --image out.png --ref source.png\n\n# With reference images (explicit provider/model)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Make blue\" --image out.png --provider google --model gemini-3-pro-image-preview --ref source.png\n\n# OpenRouter (recommended default model)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider openrouter\n\n# OpenRouter with reference images\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Make blue\" --image out.png --provider openrouter --model google/gemini-3.1-flash-image-preview --ref source.png\n\n# Specific provider\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider openai\n\n# DashScope (阿里通义万象)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"一只可爱的猫\" --image out.png --provider dashscope\n\n# DashScope Qwen-Image 2.0 Pro (recommended for custom sizes and text rendering)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"为咖啡品牌设计一张 21:9 横幅海报，包含清晰中文标题\" --image out.png --provider dashscope --model qwen-image-2.0-pro --size 2048x872\n\n# DashScope legacy Qwen fixed-size model\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"一张电影感海报\" --image out.png --provider dashscope --model qwen-image-max --size 1664x928\n\n# Replicate (google/nano-banana-pro)\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider replicate\n\n# Replicate with specific model\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider replicate --model google/nano-banana\n\n# Batch mode with saved prompt files\n${BUN_X} {baseDir}/scripts/main.ts --batchfile batch.json\n\n# Batch mode with explicit worker count\n${BUN_X} {baseDir}/scripts/main.ts --batchfile batch.json --jobs 4 --json\n```\n\n### Batch File Format\n\n```json\n{\n  \"jobs\": 4,\n  \"tasks\": [\n    {\n      \"id\": \"hero\",\n      \"promptFiles\": [\"prompts/hero.md\"],\n      \"image\": \"out/hero.png\",\n      \"provider\": \"replicate\",\n      \"model\": \"google/nano-banana-pro\",\n      \"ar\": \"16:9\",\n      \"quality\": \"2k\"\n    },\n    {\n      \"id\": \"diagram\",\n      \"promptFiles\": [\"prompts/diagram.md\"],\n      \"image\": \"out/diagram.png\",\n      \"ref\": [\"references/original.png\"]\n    }\n  ]\n}\n```\n\nPaths in `promptFiles`, `image`, and `ref` are resolved relative to the batch file's directory. `jobs` is optional (overridden by CLI `--jobs`). Top-level array format (without `jobs` wrapper) is also accepted.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--prompt <text>`, `-p` | Prompt text |\n| `--promptfiles <files...>` | Read prompt from files (concatenated) |\n| `--image <path>` | Output image path (required in single-image mode) |\n| `--batchfile <path>` | JSON batch file for multi-image generation |\n| `--jobs <count>` | Worker count for batch mode (default: auto, max from config, built-in default 10) |\n| `--provider google\\|openai\\|openrouter\\|dashscope\\|jimeng\\|seedream\\|replicate` | Force provider (default: auto-detect) |\n| `--model <id>`, `-m` | Model ID (Google: `gemini-3-pro-image-preview`; OpenAI: `gpt-image-1.5`; OpenRouter: `google/gemini-3.1-flash-image-preview`; DashScope: `qwen-image-2.0-pro`) |\n| `--ar <ratio>` | Aspect ratio (e.g., `16:9`, `1:1`, `4:3`) |\n| `--size <WxH>` | Size (e.g., `1024x1024`) |\n| `--quality normal\\|2k` | Quality preset (default: `2k`) |\n| `--imageSize 1K\\|2K\\|4K` | Image size for Google/OpenRouter (default: from quality) |\n| `--ref <files...>` | Reference images. Supported by Google multimodal, OpenAI GPT Image edits, OpenRouter multimodal models, Replicate, and Seedream 5.0/4.5/4.0. Not supported by Jimeng, Seedream 3.0, or removed SeedEdit 3.0 |\n| `--n <count>` | Number of images |\n| `--json` | JSON output |\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `OPENAI_API_KEY` | OpenAI API key |\n| `OPENROUTER_API_KEY` | OpenRouter API key |\n| `GOOGLE_API_KEY` | Google API key |\n| `DASHSCOPE_API_KEY` | DashScope API key (阿里云) |\n| `REPLICATE_API_TOKEN` | Replicate API token |\n| `JIMENG_ACCESS_KEY_ID` | Jimeng (即梦) Volcengine access key |\n| `JIMENG_SECRET_ACCESS_KEY` | Jimeng (即梦) Volcengine secret key |\n| `ARK_API_KEY` | Seedream (豆包) Volcengine ARK API key |\n| `OPENAI_IMAGE_MODEL` | OpenAI model override |\n| `OPENROUTER_IMAGE_MODEL` | OpenRouter model override (default: `google/gemini-3.1-flash-image-preview`) |\n| `GOOGLE_IMAGE_MODEL` | Google model override |\n| `DASHSCOPE_IMAGE_MODEL` | DashScope model override (default: `qwen-image-2.0-pro`) |\n| `REPLICATE_IMAGE_MODEL` | Replicate model override (default: google/nano-banana-pro) |\n| `JIMENG_IMAGE_MODEL` | Jimeng model override (default: jimeng_t2i_v40) |\n| `SEEDREAM_IMAGE_MODEL` | Seedream model override (default: doubao-seedream-5-0-260128) |\n| `OPENAI_BASE_URL` | Custom OpenAI endpoint |\n| `OPENROUTER_BASE_URL` | Custom OpenRouter endpoint (default: `https://openrouter.ai/api/v1`) |\n| `OPENROUTER_HTTP_REFERER` | Optional app/site URL for OpenRouter attribution |\n| `OPENROUTER_TITLE` | Optional app name for OpenRouter attribution |\n| `GOOGLE_BASE_URL` | Custom Google endpoint |\n| `DASHSCOPE_BASE_URL` | Custom DashScope endpoint |\n| `REPLICATE_BASE_URL` | Custom Replicate endpoint |\n| `JIMENG_BASE_URL` | Custom Jimeng endpoint (default: `https://visual.volcengineapi.com`) |\n| `JIMENG_REGION` | Jimeng region (default: `cn-north-1`) |\n| `SEEDREAM_BASE_URL` | Custom Seedream endpoint (default: `https://ark.cn-beijing.volces.com/api/v3`) |\n| `BAOYU_IMAGE_GEN_MAX_WORKERS` | Override batch worker cap |\n| `BAOYU_IMAGE_GEN_<PROVIDER>_CONCURRENCY` | Override provider concurrency, e.g. `BAOYU_IMAGE_GEN_REPLICATE_CONCURRENCY` |\n| `BAOYU_IMAGE_GEN_<PROVIDER>_START_INTERVAL_MS` | Override provider start gap, e.g. `BAOYU_IMAGE_GEN_REPLICATE_START_INTERVAL_MS` |\n\n**Load Priority**: CLI args > EXTEND.md > env vars > `<cwd>/.baoyu-skills/.env` > `~/.baoyu-skills/.env`\n\n## Model Resolution\n\nModel priority (highest → lowest), applies to all providers:\n\n1. CLI flag: `--model <id>`\n2. EXTEND.md: `default_model.[provider]`\n3. Env var: `<PROVIDER>_IMAGE_MODEL` (e.g., `GOOGLE_IMAGE_MODEL`)\n4. Built-in default\n\n**EXTEND.md overrides env vars**. If both EXTEND.md `default_model.google: \"gemini-3-pro-image-preview\"` and env var `GOOGLE_IMAGE_MODEL=gemini-3.1-flash-image-preview` exist, EXTEND.md wins.\n\n**Agent MUST display model info** before each generation:\n- Show: `Using [provider] / [model]`\n- Show switch hint: `Switch model: --model <id> | EXTEND.md default_model.[provider] | env <PROVIDER>_IMAGE_MODEL`\n\n### DashScope Models\n\nUse `--model qwen-image-2.0-pro` or set `default_model.dashscope` / `DASHSCOPE_IMAGE_MODEL` when the user wants official Qwen-Image behavior.\n\nOfficial DashScope model families:\n\n- `qwen-image-2.0-pro`, `qwen-image-2.0-pro-2026-03-03`, `qwen-image-2.0`, `qwen-image-2.0-2026-03-03`\n  - Free-form `size` in `宽*高` format\n  - Total pixels must stay between `512*512` and `2048*2048`\n  - Default size is approximately `1024*1024`\n  - Best choice for custom ratios such as `21:9` and text-heavy Chinese/English layouts\n- `qwen-image-max`, `qwen-image-max-2025-12-30`, `qwen-image-plus`, `qwen-image-plus-2026-01-09`, `qwen-image`\n  - Fixed sizes only: `1664*928`, `1472*1104`, `1328*1328`, `1104*1472`, `928*1664`\n  - Default size is `1664*928`\n  - `qwen-image` currently has the same capability as `qwen-image-plus`\n- Legacy DashScope models such as `z-image-turbo`, `z-image-ultra`, `wanx-v1`\n  - Keep using them only when the user explicitly asks for legacy behavior or compatibility\n\nWhen translating CLI args into DashScope behavior:\n\n- `--size` wins over `--ar`\n- For `qwen-image-2.0*`, prefer explicit `--size`; otherwise infer from `--ar` and use the official recommended resolutions below\n- For `qwen-image-max/plus/image`, only use the five official fixed sizes; if the requested ratio is not covered, switch to `qwen-image-2.0-pro`\n- `--quality` is a baoyu-image-gen compatibility preset, not a native DashScope API field. Mapping `normal` / `2k` onto the `qwen-image-2.0*` table below is an implementation inference, not an official API guarantee\n\nRecommended `qwen-image-2.0*` sizes for common aspect ratios:\n\n| Ratio | `normal` | `2k` |\n|-------|----------|------|\n| `1:1` | `1024*1024` | `1536*1536` |\n| `2:3` | `768*1152` | `1024*1536` |\n| `3:2` | `1152*768` | `1536*1024` |\n| `3:4` | `960*1280` | `1080*1440` |\n| `4:3` | `1280*960` | `1440*1080` |\n| `9:16` | `720*1280` | `1080*1920` |\n| `16:9` | `1280*720` | `1920*1080` |\n| `21:9` | `1344*576` | `2048*872` |\n\nDashScope official APIs also expose `negative_prompt`, `prompt_extend`, and `watermark`, but `baoyu-image-gen` does not expose them as dedicated CLI flags today.\n\nOfficial references:\n\n- [Qwen-Image API](https://help.aliyun.com/zh/model-studio/qwen-image-api)\n- [Text-to-image guide](https://help.aliyun.com/zh/model-studio/text-to-image)\n- [Qwen-Image Edit API](https://help.aliyun.com/zh/model-studio/qwen-image-edit-api)\n\n### OpenRouter Models\n\nUse full OpenRouter model IDs, e.g.:\n\n- `google/gemini-3.1-flash-image-preview` (recommended, supports image output and reference-image workflows)\n- `google/gemini-2.5-flash-image-preview`\n- `black-forest-labs/flux.2-pro`\n- Other OpenRouter image-capable model IDs\n\nNotes:\n\n- OpenRouter image generation uses `/chat/completions`, not the OpenAI `/images` endpoints\n- If `--ref` is used, choose a multimodal model that supports image input and image output\n- `--imageSize` maps to OpenRouter `imageGenerationOptions.size`; `--size <WxH>` is converted to the nearest OpenRouter size and inferred aspect ratio when possible\n\n### Replicate Models\n\nSupported model formats:\n\n- `owner/name` (recommended for official models), e.g. `google/nano-banana-pro`\n- `owner/name:version` (community models by version), e.g. `stability-ai/sdxl:<version>`\n\nExamples:\n\n```bash\n# Use Replicate default model\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider replicate\n\n# Override model explicitly\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider replicate --model google/nano-banana\n```\n\n## Provider Selection\n\n1. `--ref` provided + no `--provider` → auto-select Google first, then OpenAI, then OpenRouter, then Replicate (Jimeng and Seedream do not support reference images)\n2. `--provider` specified → use it (if `--ref`, must be `google`, `openai`, `openrouter`, or `replicate`)\n3. Only one API key available → use that provider\n4. Multiple available → default to Google\n\n## Quality Presets\n\n| Preset | Google imageSize | OpenAI Size | OpenRouter size | Replicate resolution | Use Case |\n|--------|------------------|-------------|-----------------|----------------------|----------|\n| `normal` | 1K | 1024px | 1K | 1K | Quick previews |\n| `2k` (default) | 2K | 2048px | 2K | 2K | Covers, illustrations, infographics |\n\n**Google/OpenRouter imageSize**: Can be overridden with `--imageSize 1K|2K|4K`\n\n## Aspect Ratios\n\nSupported: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2.35:1`\n\n- Google multimodal: uses `imageConfig.aspectRatio`\n- OpenAI: maps to closest supported size\n- OpenRouter: sends `imageGenerationOptions.aspect_ratio`; if only `--size <WxH>` is given, aspect ratio is inferred automatically\n- Replicate: passes `aspect_ratio` to model; when `--ref` is provided without `--ar`, defaults to `match_input_image`\n\n## Generation Mode\n\n**Default**: Sequential generation.\n\n**Batch Parallel Generation**: When `--batchfile` contains 2 or more pending tasks, the script automatically enables parallel generation.\n\n| Mode | When to Use |\n|------|-------------|\n| Sequential (default) | Normal usage, single images, small batches |\n| Parallel batch | Batch mode with 2+ tasks |\n\nExecution choice:\n\n| Situation | Preferred approach | Why |\n|-----------|--------------------|-----|\n| One image, or 1-2 simple images | Sequential | Lower coordination overhead and easier debugging |\n| Multiple images already have saved prompt files | Batch (`--batchfile`) | Reuses finalized prompts, applies shared throttling/retries, and gives predictable throughput |\n| Each image still needs separate reasoning, prompt writing, or style exploration | Subagents | The work is still exploratory, so each image may need independent analysis before generation |\n| Output comes from `baoyu-article-illustrator` with `outline.md` + `prompts/` | Batch (`build-batch.ts` -> `--batchfile`) | That workflow already produces prompt files, so direct batch execution is the intended path |\n\nRule of thumb:\n\n- Prefer batch over subagents once prompt files are already saved and the task is \"generate all of these\"\n- Use subagents only when generation is coupled with per-image thinking, rewriting, or divergent creative exploration\n\nParallel behavior:\n\n- Default worker count is automatic, capped by config, built-in default 10\n- Provider-specific throttling is applied only in batch mode, and the built-in defaults are tuned for faster throughput while still avoiding obvious RPM bursts\n- You can override worker count with `--jobs <count>`\n- Each image retries automatically up to 3 attempts\n- Final output includes success count, failure count, and per-image failure reasons\n\n## Error Handling\n\n- Missing API key → error with setup instructions\n- Generation failure → auto-retry up to 3 attempts per image\n- Invalid aspect ratio → warning, proceed with default\n- Reference images with unsupported provider/model → error with fix hint\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Preferences** section for paths and supported options.\n\nFile v1.0.0:skills/baoyu-infographic/SKILL.md\n\n---\nname: baoyu-infographic\ndescription: Generates professional infographics with 21 layout types and 20 visual styles. Analyzes content, recommends layout×style combinations, and generates publication-ready infographics. Use when user asks to create \"infographic\", \"信息图\", \"visual summary\", \"可视化\", or \"高密度信息大图\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-infographic\n---\n\n# Infographic Generator\n\nTwo dimensions: **layout** (information structure) × **style** (visual aesthetics). Freely combine any layout with any style.\n\n## Usage\n\n```bash\n/baoyu-infographic path/to/content.md\n/baoyu-infographic path/to/content.md --layout hierarchical-layers --style technical-schematic\n/baoyu-infographic path/to/content.md --aspect portrait --lang zh\n/baoyu-infographic path/to/content.md --aspect 3:4\n/baoyu-infographic  # then paste content\n```\n\n## Options\n\n| Option | Values |\n|--------|--------|\n| `--layout` | 21 options (see Layout Gallery), default: bento-grid |\n| `--style` | 20 options (see Style Gallery), default: craft-handmade |\n| `--aspect` | Named: landscape (16:9), portrait (9:16), square (1:1). Custom: any W:H ratio (e.g., 3:4, 4:3, 2.35:1) |\n| `--lang` | en, zh, ja, etc. |\n\n## Layout Gallery\n\n| Layout | Best For |\n|--------|----------|\n| `linear-progression` | Timelines, processes, tutorials |\n| `binary-comparison` | A vs B, before-after, pros-cons |\n| `comparison-matrix` | Multi-factor comparisons |\n| `hierarchical-layers` | Pyramids, priority levels |\n| `tree-branching` | Categories, taxonomies |\n| `hub-spoke` | Central concept with related items |\n| `structural-breakdown` | Exploded views, cross-sections |\n| `bento-grid` | Multiple topics, overview (default) |\n| `iceberg` | Surface vs hidden aspects |\n| `bridge` | Problem-solution |\n| `funnel` | Conversion, filtering |\n| `isometric-map` | Spatial relationships |\n| `dashboard` | Metrics, KPIs |\n| `periodic-table` | Categorized collections |\n| `comic-strip` | Narratives, sequences |\n| `story-mountain` | Plot structure, tension arcs |\n| `jigsaw` | Interconnected parts |\n| `venn-diagram` | Overlapping concepts |\n| `winding-roadmap` | Journey, milestones |\n| `circular-flow` | Cycles, recurring processes |\n| `dense-modules` | High-density modules, data-rich guides |\n\nFull definitions: `references/layouts/<layout>.md`\n\n## Style Gallery\n\n| Style | Description |\n|-------|-------------|\n| `craft-handmade` | Hand-drawn, paper craft (default) |\n| `claymation` | 3D clay figures, stop-motion |\n| `kawaii` | Japanese cute, pastels |\n| `storybook-watercolor` | Soft painted, whimsical |\n| `chalkboard` | Chalk on black board |\n| `cyberpunk-neon` | Neon glow, futuristic |\n| `bold-graphic` | Comic style, halftone |\n| `aged-academia` | Vintage science, sepia |\n| `corporate-memphis` | Flat vector, vibrant |\n| `technical-schematic` | Blueprint, engineering |\n| `origami` | Folded paper, geometric |\n| `pixel-art` | Retro 8-bit |\n| `ui-wireframe` | Grayscale interface mockup |\n| `subway-map` | Transit diagram |\n| `ikea-manual` | Minimal line art |\n| `knolling` | Organized flat-lay |\n| `lego-brick` | Toy brick construction |\n| `pop-laboratory` | Blueprint grid, coordinate markers, lab precision |\n| `morandi-journal` | Hand-drawn doodle, warm Morandi tones |\n| `retro-pop-grid` | 1970s retro pop art, Swiss grid, thick outlines |\n\nFull definitions: `references/styles/<style>.md`\n\n## Recommended Combinations\n\n| Content Type | Layout + Style |\n|--------------|----------------|\n| Timeline/History | `linear-progression` + `craft-handmade` |\n| Step-by-step | `linear-progression` + `ikea-manual` |\n| A vs B | `binary-comparison` + `corporate-memphis` |\n| Hierarchy | `hierarchical-layers` + `craft-handmade` |\n| Overlap | `venn-diagram` + `craft-handmade` |\n| Conversion | `funnel` + `corporate-memphis` |\n| Cycles | `circular-flow` + `craft-handmade` |\n| Technical | `structural-breakdown` + `technical-schematic` |\n| Metrics | `dashboard` + `corporate-memphis` |\n| Educational | `bento-grid` + `chalkboard` |\n| Journey | `winding-roadmap` + `storybook-watercolor` |\n| Categories | `periodic-table` + `bold-graphic` |\n| Product Guide | `dense-modules` + `morandi-journal` |\n| Technical Guide | `dense-modules` + `pop-laboratory` |\n| Trendy Guide | `dense-modules` + `retro-pop-grid` |\n\nDefault: `bento-grid` + `craft-handmade`\n\n## Keyword Shortcuts\n\nWhen user input contains these keywords, **auto-select** the associated layout and offer associated styles as top recommendations in Step 3. Skip content-based layout inference for matched keywords.\n\nIf a shortcut has **Prompt Notes**, append them to the generated prompt (Step 5) as additional style instructions.\n\n| User Keyword | Layout | Recommended Styles | Default Aspect | Prompt Notes |\n|--------------|--------|--------------------|----------------|--------------|\n| 高密度信息大图 / high-density-info | `dense-modules` | `morandi-journal`, `pop-laboratory`, `retro-pop-grid` | portrait | — |\n| 信息图 / infographic | `bento-grid` | `craft-handmade` | landscape | Minimalist: clean canvas, ample whitespace, no complex background textures. Simple cartoon elements and icons only. |\n\n## Output Structure\n\n```\ninfographic/{topic-slug}/\n├── source-{slug}.{ext}\n├── analysis.md\n├── structured-content.md\n├── prompts/infographic.md\n└── infographic.png\n```\n\nSlug: 2-4 words kebab-case from topic. Conflict: append `-YYYYMMDD-HHMMSS`.\n\n## Core Principles\n\n- Preserve source data faithfully—no summarization or rephrasing (but **strip any credentials, API keys, tokens, or secrets** before including in outputs)\n- Define learning objectives before structuring content\n- Structure for visual communication (headlines, labels, visual elements)\n\n## Workflow\n\n### Step 1: Setup & Analyze\n\n**1.1 Load Preferences (EXTEND.md)**\n\nCheck EXTEND.md existence (priority order):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-infographic/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-infographic/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-infographic/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-infographic/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-infographic/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-infographic/EXTEND.md\") { \"user\" }\n```\n\n┌────────────────────────────────────────────────────┬───────────────────┐\n│                        Path                        │     Location      │\n├────────────────────────────────────────────────────┼───────────────────┤\n│ .baoyu-skills/baoyu-infographic/EXTEND.md          │ Project directory │\n├────────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.baoyu-skills/baoyu-infographic/EXTEND.md    │ User home         │\n└────────────────────────────────────────────────────┴───────────────────┘\n\n┌───────────┬───────────────────────────────────────────────────────────────────────────┐\n│  Result   │                                  Action                                   │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Found     │ Read, parse, display summary                                              │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Not found │ Ask user with AskUserQuestion (see references/config/first-time-setup.md) │\n└───────────┴───────────────────────────────────────────────────────────────────────────┘\n\n**EXTEND.md Supports**: Preferred layout/style | Default aspect ratio | Custom style definitions | Language preference\n\nSchema: `references/config/preferences-schema.md`\n\n**1.2 Analyze Content → `analysis.md`**\n\n1. Save source content (file path or paste → `source.md`)\n   - **Backup rule**: If `source.md` exists, rename to `source-backup-YYYYMMDD-HHMMSS.md`\n2. Analyze: topic, data type, complexity, tone, audience\n3. Detect source language and user language\n4. Extract design instructions from user input\n5. Save analysis\n   - **Backup rule**: If `analysis.md` exists, rename to `analysis-backup-YYYYMMDD-HHMMSS.md`\n\nSee `references/analysis-framework.md` for detailed format.\n\n### Step 2: Generate Structured Content → `structured-content.md`\n\nTransform content into infographic structure:\n1. Title and learning objectives\n2. Sections with: key concept, content (verbatim), visual element, text labels\n3. Data points (all statistics/quotes copied exactly)\n4. Design instructions from user\n\n**Rules**: Markdown only. No new information. Preserve data faithfully. Strip any credentials or secrets from output.\n\nSee `references/structured-content-template.md` for detailed format.\n\n### Step 3: Recommend Combinations\n\n**3.1 Check Keyword Shortcuts first**: If user input matches a keyword from the **Keyword Shortcuts** table, auto-select the associated layout and prioritize associated styles as top recommendations. Skip content-based layout inference.\n\n**3.2 Otherwise**, recommend 3-5 layout×style combinations based on:\n- Data structure → matching layout\n- Content tone → matching style\n- Audience expectations\n- User design instructions\n\n### Step 4: Confirm Options\n\nUse **single AskUserQuestion call** with multiple questions to confirm all options together:\n\n| Question | When | Options |\n|----------|------|---------|\n| **Combination** | Always | 3+ layout×style combos with rationale |\n| **Aspect** | Always | Named presets (landscape/portrait/square) or custom W:H ratio (e.g., 3:4, 4:3, 2.35:1) |\n| **Language** | Only if source ≠ user language | Language for text content |\n\n**Important**: Do NOT split into separate AskUserQuestion calls. Combine all applicable questions into one call.\n\n### Step 5: Generate Prompt → `prompts/infographic.md`\n\n**Backup rule**: If `prompts/infographic.md` exists, rename to `prompts/infographic-backup-YYYYMMDD-HHMMSS.md`\n\nCombine:\n1. Layout definition from `references/layouts/<layout>.md`\n2. Style definition from `references/styles/<style>.md`\n3. Base template from `references/base-prompt.md`\n4. Structured content from Step 2\n5. All text in confirmed language\n\n**Aspect ratio resolution** for `{{ASPECT_RATIO}}`:\n- Named presets → ratio string: landscape→`16:9`, portrait→`9:16`, square→`1:1`\n- Custom W:H ratios → use as-is (e.g., `3:4`, `4:3`, `2.35:1`)\n\n### Step 6: Generate Image\n\n1. Select available image generation skill (ask user if multiple)\n2. **Check for existing file**: Before generating, check if `infographic.png` exists\n   - If exists: Rename to `infographic-backup-YYYYMMDD-HHMMSS.png`\n3. Call with prompt file and output path\n4. On failure, auto-retry once\n\n### Step 7: Output Summary\n\nReport: topic, layout, style, aspect, language, output path, files created.\n\n## References\n\n- `references/analysis-framework.md` - Analysis methodology\n- `references/structured-content-template.md` - Content format\n- `references/base-prompt.md` - Prompt template\n- `references/layouts/<layout>.md` - 21 layout definitions\n- `references/styles/<style>.md` - 20 style definitions\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See **Step 1.1** for paths and supported options.\n\nFile v1.0.0:README.md\n\n# baoyu-skills\n\nEnglish | [中文](./README.zh.md)\n\nSkills shared by Baoyu for improving daily work efficiency with Claude Code.\n\n## Prerequisites\n\n- Node.js environment installed\n- Ability to run `npx bun` commands\n\n## Installation\n\n### Quick Install (Recommended)\n\n```bash\nnpx skills add jimliu/baoyu-skills\n```\n\n### Publish to ClawHub / OpenClaw\n\nThis repository now supports publishing each `skills/baoyu-*` directory as an individual ClawHub skill.\n\n```bash\n# Preview what would be published\n./scripts/sync-clawhub.sh --dry-run\n\n# Publish all changed skills from ./skills\n./scripts/sync-clawhub.sh --all\n```\n\nClawHub installs skills individually, not as one marketplace bundle. After publishing, users can install specific skills such as:\n\n```bash\nclawhub install baoyu-image-gen\nclawhub install baoyu-markdown-to-html\n```\n\nPublishing to ClawHub releases the published skill under `MIT-0`, per ClawHub's registry rules.\n\n### Register as Plugin Marketplace\n\nRun the following command in Claude Code:\n\n```bash\n/plugin marketplace add JimLiu/baoyu-skills\n```\n\n### Install Skills\n\n**Option 1: Via Browse UI**\n\n1. Select **Browse and install plugins**\n2. Select **baoyu-skills**\n3. Select the plugin(s) you want to install\n4. Select **Install now**\n\n**Option 2: Direct Install**\n\n```bash\n# Install specific plugin\n/plugin install content-skills@baoyu-skills\n/plugin install ai-generation-skills@baoyu-skills\n/plugin install utility-skills@baoyu-skills\n```\n\n**Option 3: Ask the Agent**\n\nSimply tell Claude Code:\n\n> Please install Skills from github.com/JimLiu/baoyu-skills\n\n### Available Plugins\n\n| Plugin | Description | Skills |\n|--------|-------------|--------|\n| **content-skills** | Content generation and publishing | [xhs-images](#baoyu-xhs-images), [infographic](#baoyu-infographic), [cover-image](#baoyu-cover-image), [slide-deck](#baoyu-slide-deck), [comic](#baoyu-comic), [article-illustrator](#baoyu-article-illustrator), [post-to-x](#baoyu-post-to-x), [post-to-wechat](#baoyu-post-to-wechat), [post-to-weibo](#baoyu-post-to-weibo) |\n| **ai-generation-skills** | AI-powered generation backends | [image-gen](#baoyu-image-gen), [danger-gemini-web](#baoyu-danger-gemini-web) |\n| **utility-skills** | Utility tools for content processing | [url-to-markdown](#baoyu-url-to-markdown), [danger-x-to-markdown](#baoyu-danger-x-to-markdown), [compress-image](#baoyu-compress-image), [format-markdown](#baoyu-format-markdown), [markdown-to-html](#baoyu-markdown-to-html), [translate](#baoyu-translate) |\n\n## Update Skills\n\nTo update skills to the latest version:\n\n1. Run `/plugin` in Claude Code\n2. Switch to **Marketplaces** tab (use arrow keys or Tab)\n3. Select **baoyu-skills**\n4. Choose **Update marketplace**\n\nYou can also **Enable auto-update** to get the latest versions automatically.\n\n![Update Skills](./screenshots/update-plugins.png)\n\n## Available Skills\n\nSkills are organized into three categories:\n\n### Content Skills\n\nContent generation and publishing skills.\n\n#### baoyu-xhs-images\n\nXiaohongshu (RedNote) infographic series generator. Breaks down content into 1-10 cartoon-style infographics with **Style × Layout** two-dimensional system.\n\n```bash\n# Auto-select style and layout\n/baoyu-xhs-images posts/ai-future/article.md\n\n# Specify style\n/baoyu-xhs-images posts/ai-future/article.md --style notion\n\n# Specify layout\n/baoyu-xhs-images posts/ai-future/article.md --layout dense\n\n# Combine style and layout\n/baoyu-xhs-images posts/ai-future/article.md --style tech --layout list\n\n# Direct content input\n/baoyu-xhs-images 今日星座运势\n```\n\n**Styles** (visual aesthetics): `cute` (default), `fresh`, `warm`, `bold`, `minimal`, `retro`, `pop`, `notion`, `chalkboard`\n\n**Style Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![cute](./screenshots/xhs-images-styles/cute.webp) | ![fresh](./screenshots/xhs-images-styles/fresh.webp) | ![warm](./screenshots/xhs-images-styles/warm.webp) |\n| cute | fresh | warm |\n| ![bold](./screenshots/xhs-images-styles/bold.webp) | ![minimal](./screenshots/xhs-images-styles/minimal.webp) | ![retro](./screenshots/xhs-images-styles/retro.webp) |\n| bold | minimal | retro |\n| ![pop](./screenshots/xhs-images-styles/pop.webp) | ![notion](./screenshots/xhs-images-styles/notion.webp) | ![chalkboard](./screenshots/xhs-images-styles/chalkboard.webp) |\n| pop | notion | chalkboard |\n\n**Layouts** (information density):\n| Layout | Density | Best for |\n|--------|---------|----------|\n| `sparse` | 1-2 pts | Covers, quotes |\n| `balanced` | 3-4 pts | Regular content |\n| `dense` | 5-8 pts | Knowledge cards, cheat sheets |\n| `list` | 4-7 items | Checklists, rankings |\n| `comparison` | 2 sides | Before/after, pros/cons |\n| `flow` | 3-6 steps | Processes, timelines |\n\n**Layout Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![sparse](./screenshots/xhs-images-layouts/sparse.webp) | ![balanced](./screenshots/xhs-images-layouts/balanced.webp) | ![dense](./screenshots/xhs-images-layouts/dense.webp) |\n| sparse | balanced | dense |\n| ![list](./screenshots/xhs-images-layouts/list.webp) | ![comparison](./screenshots/xhs-images-layouts/comparison.webp) | ![flow](./screenshots/xhs-images-layouts/flow.webp) |\n| list | comparison | flow |\n\n#### baoyu-infographic\n\nGenerate professional infographics with 20 layout types and 17 visual styles. Analyzes content, recommends layout×style combinations, and generates publication-ready infographics.\n\n```bash\n# Auto-recommend combinations based on content\n/baoyu-infographic path/to/content.md\n\n# Specify layout\n/baoyu-infographic path/to/content.md --layout pyramid\n\n# Specify style (default: craft-handmade)\n/baoyu-infographic path/to/content.md --style technical-schematic\n\n# Specify both\n/baoyu-infographic path/to/content.md --layout funnel --style corporate-memphis\n\n# With aspect ratio (named preset or custom W:H)\n/baoyu-infographic path/to/content.md --aspect portrait\n/baoyu-infographic path/to/content.md --aspect 3:4\n```\n\n**Options**:\n| Option | Description |\n|--------|-------------|\n| `--layout <name>` | Information layout (20 options) |\n| `--style <name>` | Visual style (17 options, default: craft-handmade) |\n| `--aspect <ratio>` | Named: landscape (16:9), portrait (9:16), square (1:1). Custom: any W:H ratio (e.g., 3:4, 4:3, 2.35:1) |\n| `--lang <code>` | Output language (en, zh, ja, etc.) |\n\n**Layouts** (information structure):\n\n| Layout | Best For |\n|--------|----------|\n| `bridge` | Problem-solution, gap-crossing |\n| `circular-flow` | Cycles, recurring processes |\n| `comparison-table` | Multi-factor comparisons |\n| `do-dont` | Correct vs incorrect practices |\n| `equation` | Formula breakdown, input-output |\n| `feature-list` | Product features, bullet points |\n| `fishbone` | Root cause analysis |\n| `funnel` | Conversion processes, filtering |\n| `grid-cards` | Multiple topics, overview |\n| `iceberg` | Surface vs hidden aspects |\n| `journey-path` | Customer journey, milestones |\n| `layers-stack` | Technology stack, layers |\n| `mind-map` | Brainstorming, idea mapping |\n| `nested-circles` | Levels of influence, scope |\n| `priority-quadrants` | Eisenhower matrix, 2x2 |\n| `pyramid` | Hierarchy, Maslow's needs |\n| `scale-balance` | Pros vs cons, weighing |\n| `timeline-horizontal` | History, chronological events |\n| `tree-hierarchy` | Org charts, taxonomy |\n| `venn` | Overlapping concepts |\n\n**Layout Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![bridge](./screenshots/infographic-layouts/bridge.webp) | ![circular-flow](./screenshots/infographic-layouts/circular-flow.webp) | ![comparison-table](./screenshots/infographic-layouts/comparison-table.webp) |\n| bridge | circular-flow | comparison-table |\n| ![do-dont](./screenshots/infographic-layouts/do-dont.webp) | ![equation](./screenshots/infographic-layouts/equation.webp) | ![feature-list](./screenshots/infographic-layouts/feature-list.webp) |\n| do-dont | equation | feature-list |\n| ![fishbone](./screenshots/infographic-layouts/fishbone.webp) | ![funnel](./screenshots/infographic-layouts/funnel.webp) | ![grid-cards](./screenshots/infographic-layouts/grid-cards.webp) |\n| fishbone | funnel | grid-cards |\n| ![iceberg](./screenshots/infographic-layouts/iceberg.webp) | ![journey-path](./screenshots/infographic-layouts/journey-path.webp) | ![layers-stack](./screenshots/infographic-layouts/layers-stack.webp) |\n| iceberg | journey-path | layers-stack |\n| ![mind-map](./screenshots/infographic-layouts/mind-map.webp) | ![nested-circles](./screenshots/infographic-layouts/nested-circles.webp) | ![priority-quadrants](./screenshots/infographic-layouts/priority-quadrants.webp) |\n| mind-map | nested-circles | priority-quadrants |\n| ![pyramid](./screenshots/infographic-layouts/pyramid.webp) | ![scale-balance](./screenshots/infographic-layouts/scale-balance.webp) | ![timeline-horizontal](./screenshots/infographic-layouts/timeline-horizontal.webp) |\n| pyramid | scale-balance | timeline-horizontal |\n| ![tree-hierarchy](./screenshots/infographic-layouts/tree-hierarchy.webp) | ![venn](./screenshots/infographic-layouts/venn.webp) | |\n| tree-hierarchy | venn | |\n\n**Styles** (visual aesthetics):\n\n| Style | Description |\n|-------|-------------|\n| `craft-handmade` (Default) | Hand-drawn illustration, paper craft aesthetic |\n| `claymation` | 3D clay figures, playful stop-motion |\n| `kawaii` | Japanese cute, big eyes, pastel colors |\n| `storybook-watercolor` | Soft painted illustrations, whimsical |\n| `chalkboard` | Colorful chalk on black board |\n| `cyberpunk-neon` | Neon glow on dark, futuristic |\n| `bold-graphic` | Comic style, halftone dots, high contrast |\n| `aged-academia` | Vintage science, sepia sketches |\n| `corporate-memphis` | Flat vector people, vibrant fills |\n| `technical-schematic` | Blueprint, isometric 3D, engineering |\n| `origami` | Folded paper forms, geometric |\n| `pixel-art` | Retro 8-bit, nostalgic gaming |\n| `ui-wireframe` | Grayscale boxes, interface mockup |\n| `subway-map` | Transit diagram, colored lines |\n| `ikea-manual` | Minimal line art, assembly style |\n| `knolling` | Organized flat-lay, top-down |\n| `lego-brick` | Toy brick construction, playful |\n\n**Style Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![craft-handmade](./screenshots/infographic-styles/craft-handmade.webp) | ![claymation](./screenshots/infographic-styles/claymation.webp) | ![kawaii](./screenshots/infographic-styles/kawaii.webp) |\n| craft-handmade | claymation | kawaii |\n| ![storybook-watercolor](./screenshots/infographic-styles/storybook-watercolor.webp) | ![chalkboard](./screenshots/infographic-styles/chalkboard.webp) | ![cyberpunk-neon](./screenshots/infographic-styles/cyberpunk-neon.webp) |\n| storybook-watercolor | chalkboard | cyberpunk-neon |\n| ![bold-graphic](./screenshots/infographic-styles/bold-graphic.webp) | ![aged-academia](./screenshots/infographic-styles/aged-academia.webp) | ![corporate-memphis](./screenshots/infographic-styles/corporate-memphis.webp) |\n| bold-graphic | aged-academia | corporate-memphis |\n| ![technical-schematic](./screenshots/infographic-styles/technical-schematic.webp) | ![origami](./screenshots/infographic-styles/origami.webp) | ![pixel-art](./screenshots/infographic-styles/pixel-art.webp) |\n| technical-schematic | origami | pixel-art |\n| ![ui-wireframe](./screenshots/infographic-styles/ui-wireframe.webp) | ![subway-map](./screenshots/infographic-styles/subway-map.webp) | ![ikea-manual](./screenshots/infographic-styles/ikea-manual.webp) |\n| ui-wireframe | subway-map | ikea-manual |\n| ![knolling](./screenshots/infographic-styles/knolling.webp) | ![lego-brick](./screenshots/infographic-styles/lego-brick.webp) | |\n| knolling | lego-brick | |\n\n#### baoyu-cover-image\n\nGenerate cover images for articles with 5 dimensions: Type × Palette × Rendering × Text × Mood. Combines 9 color palettes with 6 rendering styles for 54 unique combinations.\n\n```bash\n# Auto-select all dimensions based on content\n/baoyu-cover-image path/to/article.md\n\n# Quick mode: skip confirmation, use auto-selection\n/baoyu-cover-image path/to/article.md --quick\n\n# Specify dimensions (5D system)\n/baoyu-cover-image path/to/article.md --type conceptual --palette cool --rendering digital\n/baoyu-cover-image path/to/article.md --text title-subtitle --mood bold\n\n# Style presets (backward-compatible shorthand)\n/baoyu-cover-image path/to/article.md --style blueprint\n\n# Specify aspect ratio (default: 16:9)\n/baoyu-cover-image path/to/article.md --aspect 2.35:1\n\n# Visual only (no title text)\n/baoyu-cover-image path/to/article.md --no-title\n```\n\n**Five Dimensions**:\n- **Type**: `hero`, `conceptual`, `typography`, `metaphor`, `scene`, `minimal`\n- **Palette**: `warm`, `elegant`, `cool`, `dark`, `earth`, `vivid`, `pastel`, `mono`, `retro`\n- **Rendering**: `flat-vector`, `hand-drawn`, `painterly`, `digital`, `pixel`, `chalk`\n- **Text**: `none`, `title-only` (default), `title-subtitle`, `text-rich`\n- **Mood**: `subtle`, `balanced` (default), `bold`\n\n#### baoyu-slide-deck\n\nGenerate professional slide deck images from content. Creates comprehensive outlines with style instructions, then generates individual slide images.\n\n```bash\n# From markdown file\n/baoyu-slide-deck path/to/article.md\n\n# With style and audience\n/baoyu-slide-deck path/to/article.md --style corporate\n/baoyu-slide-deck path/to/article.md --audience executives\n\n# Target slide count\n/baoyu-slide-deck path/to/article.md --slides 15\n\n# Outline only (no image generation)\n/baoyu-slide-deck path/to/article.md --outline-only\n\n# With language\n/baoyu-slide-deck path/to/article.md --lang zh\n```\n\n**Options**:\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Visual style: preset name or `custom` |\n| `--audience <type>` | Target: beginners, intermediate, experts, executives, general |\n| `--lang <code>` | Output language (en, zh, ja, etc.) |\n| `--slides <number>` | Target slide count (8-25 recommended, max 30) |\n| `--outline-only` | Generate outline only, skip images |\n| `--prompts-only` | Generate outline + prompts, skip images |\n| `--images-only` | Generate images from existing prompts |\n| `--regenerate <N>` | Regenerate specific slide(s): `3` or `2,5,8` |\n\n**Style System**:\n\nStyles are built from 4 dimensions: **Texture** × **Mood** × **Typography** × **Density**\n\n| Dimension | Options |\n|-----------|---------|\n| Texture | clean, grid, organic, pixel, paper |\n| Mood | professional, warm, cool, vibrant, dark, neutral |\n| Typography | geometric, humanist, handwritten, editorial, technical |\n| Density | minimal, balanced, dense |\n\n**Presets** (pre-configured dimension combinations):\n\n| Preset | Dimensions | Best For |\n|--------|------------|----------|\n| `blueprint` (default) | grid + cool + technical + balanced | Architecture, system design |\n| `chalkboard` | organic + warm + handwritten + balanced | Education, tutorials |\n| `corporate` | clean + professional + geometric + balanced | Investor decks, proposals |\n| `minimal` | clean + neutral + geometric + minimal | Executive briefings |\n| `sketch-notes` | organic + warm + handwritten + balanced | Educational, tutorials |\n| `watercolor` | organic + warm + humanist + minimal | Lifestyle, wellness |\n| `dark-atmospheric` | clean + dark + editorial + balanced | Entertainment, gaming |\n| `notion` | clean + neutral + geometric + dense | Product demos, SaaS |\n| `bold-editorial` | clean + vibrant + editorial + balanced | Product launches, keynotes |\n| `editorial-infographic` | clean + cool + editorial + dense | Tech explainers, research |\n| `fantasy-animation` | organic + vibrant + handwritten + minimal | Educational storytelling |\n| `intuition-machine` | clean + cool + technical + dense | Technical docs, academic |\n| `pixel-art` | pixel + vibrant + technical + balanced | Gaming, developer talks |\n| `scientific` | clean + cool + technical + dense | Biology, chemistry, medical |\n| `vector-illustration` | clean + vibrant + humanist + balanced | Creative, children's content |\n| `vintage` | paper + warm + editorial + balanced | Historical, heritage |\n\n**Style Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![blueprint](./screenshots/slide-deck-styles/blueprint.webp) | ![chalkboard](./screenshots/slide-deck-styles/chalkboard.webp) | ![bold-editorial](./screenshots/slide-deck-styles/bold-editorial.webp) |\n| blueprint | chalkboard | bold-editorial |\n| ![corporate](./screenshots/slide-deck-styles/corporate.webp) | ![dark-atmospheric](./screenshots/slide-deck-styles/dark-atmospheric.webp) | ![editorial-infographic](./screenshots/slide-deck-styles/editorial-infographic.webp) |\n| corporate | dark-atmospheric | editorial-infographic |\n| ![fantasy-animation](./screenshots/slide-deck-styles/fantasy-animation.webp) | ![intuition-machine](./screenshots/slide-deck-styles/intuition-machine.webp) | ![minimal](./screenshots/slide-deck-styles/minimal.webp) |\n| fantasy-animation | intuition-machine | minimal |\n| ![notion](./screenshots/slide-deck-styles/notion.webp) | ![pixel-art](./screenshots/slide-deck-styles/pixel-art.webp) | ![scientific](./screenshots/slide-deck-styles/scientific.webp) |\n| notion | pixel-art | scientific |\n| ![sketch-notes](./screenshots/slide-deck-styles/sketch-notes.webp) | ![vector-illustration](./screenshots/slide-deck-styles/vector-illustration.webp) | ![vintage](./screenshots/slide-deck-styles/vintage.webp) |\n| sketch-notes | vector-illustration | vintage |\n| ![watercolor](./screenshots/slide-deck-styles/watercolor.webp) | | |\n| watercolor | | |\n\nAfter generation, slides are automatically merged into `.pptx` and `.pdf` files for easy sharing.\n\n#### baoyu-comic\n\nKnowledge comic creator with flexible art style × tone combinations. Creates original educational comics with detailed panel layouts and sequential image generation.\n\n```bash\n# From source material (auto-selects art + tone)\n/baoyu-comic posts/turing-story/source.md\n\n# Specify art style and tone\n/baoyu-comic posts/turing-story/source.md --art manga --tone warm\n/baoyu-comic posts/turing-story/source.md --art ink-brush --tone dramatic\n\n# Use preset (includes special rules)\n/baoyu-comic posts/turing-story/source.md --style ohmsha\n/baoyu-comic posts/turing-story/source.md --style wuxia\n\n# Specify layout and aspect ratio\n/baoyu-comic posts/turing-story/source.md --layout cinematic\n/baoyu-comic posts/turing-story/source.md --aspect 16:9\n\n# Specify language\n/baoyu-comic posts/turing-story/source.md --lang zh\n\n# Direct content input\n/baoyu-comic \"The story of Alan Turing and the birth of computer science\"\n```\n\n**Options**:\n| Option | Values |\n|--------|--------|\n| `--art` | `ligne-claire` (default), `manga`, `realistic`, `ink-brush`, `chalk` |\n| `--tone` | `neutral` (default), `warm`, `dramatic`, `romantic`, `energetic`, `vintage`, `action` |\n| `--style` | `ohmsha`, `wuxia`, `shoujo` (presets with special rules) |\n| `--layout` | `standard` (default), `cinematic`, `dense`, `splash`, `mixed`, `webtoon` |\n| `--aspect` | `3:4` (default, portrait), `4:3` (landscape), `16:9` (widescreen) |\n| `--lang` | `auto` (default), `zh`, `en`, `ja`, etc. |\n\n**Art Styles** (rendering technique):\n\n| Art Style | Description |\n|-----------|-------------|\n| `ligne-claire` | Uniform lines, flat colors, European comic tradition (Tintin, Logicomix) |\n| `manga` | Large eyes, manga conventions, expressive emotions |\n| `realistic` | Digital painting, realistic proportions, sophisticated |\n| `ink-brush` | Chinese brush strokes, ink wash effects |\n| `chalk` | Chalkboard aesthetic, hand-drawn warmth |\n\n**Tones** (mood/atmosphere):\n\n| Tone | Description |\n|------|-------------|\n| `neutral` | Balanced, rational, educational |\n| `warm` | Nostalgic, personal, comforting |\n| `dramatic` | High contrast, intense, powerful |\n| `romantic` | Soft, beautiful, decorative elements |\n| `energetic` | Bright, dynamic, exciting |\n| `vintage` | Historical, aged, period authenticity |\n| `action` | Speed lines, impact effects, combat |\n\n**Presets** (art + tone + special rules):\n\n| Preset | Equivalent | Special Rules |\n|--------|-----------|---------------|\n| `ohmsha` | manga + neutral | Visual metaphors, NO talking heads, gadget reveals |\n| `wuxia` | ink-brush + action | Qi effects, combat visuals, atmospheric elements |\n| `shoujo` | manga + romantic | Decorative elements, eye details, romantic beats |\n\n**Layouts** (panel arrangement):\n| Layout | Panels/Page | Best for |\n|--------|-------------|----------|\n| `standard` | 4-6 | Dialogue, narrative flow |\n| `cinematic` | 2-4 | Dramatic moments, establishing shots |\n| `dense` | 6-9 | Technical explanations, timelines |\n| `splash` | 1-2 large | Key moments, revelations |\n| `mixed` | 3-7 varies | Complex narratives, emotional arcs |\n| `webtoon` | 3-5 vertical | Ohmsha tutorials, mobile reading |\n\n**Layout Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![standard](./screenshots/comic-layouts/standard.webp) | ![cinematic](./screenshots/comic-layouts/cinematic.webp) | ![dense](./screenshots/comic-layouts/dense.webp) |\n| standard | cinematic | dense |\n| ![splash](./screenshots/comic-layouts/splash.webp) | ![mixed](./screenshots/comic-layouts/mixed.webp) | ![webtoon](./screenshots/comic-layouts/webtoon.webp) |\n| splash | mixed | webtoon |\n\n#### baoyu-article-illustrator\n\nSmart article illustration skill with Type × Style two-dimension approach. Analyzes article structure, identifies positions requiring visual aids, and generates illustrations.\n\n```bash\n# Auto-select type and style based on content\n/baoyu-article-illustrator path/to/article.md\n\n# Specify type\n/baoyu-article-illustrator path/to/article.md --type infographic\n\n# Specify style\n/baoyu-article-illustrator path/to/article.md --style blueprint\n\n# Combine type and style\n/baoyu-article-illustrator path/to/article.md --type flowchart --style notion\n```\n\n**Types** (information structure):\n\n| Type | Description | Best For |\n|------|-------------|----------|\n| `infographic` | Data visualization, charts, metrics | Technical articles, data analysis |\n| `scene` | Atmospheric illustration, mood rendering | Narrative, personal stories |\n| `flowchart` | Process diagrams, step visualization | Tutorials, workflows |\n| `comparison` | Side-by-side, before/after contrast | Product comparisons |\n| `framework` | Concept maps, relationship diagrams | Methodologies, architecture |\n| `timeline` | Chronological progression | History, project progress |\n\n**Styles** (visual aesthetics):\n\n| Style | Description | Best For |\n|-------|-------------|----------|\n| `notion` (default) | Minimalist hand-drawn line art | Knowledge sharing, SaaS, productivity |\n| `elegant` | Refined, sophisticated | Business, thought leadership |\n| `warm` | Friendly, approachable | Personal growth, lifestyle |\n| `minimal` | Ultra-clean, zen-like | Philosophy, minimalism |\n| `blueprint` | Technical schematics | Architecture, system design |\n| `watercolor` | Soft artistic with natural warmth | Lifestyle, travel, creative |\n| `editorial` | Magazine-style infographic | Tech explainers, journalism |\n| `scientific` | Academic precise diagrams | Biology, chemistry, technical |\n\n**Style Previews**:\n\n| | | |\n|:---:|:---:|:---:|\n| ![notion](./screenshots/article-illustrator-styles/notion.webp) | ![elegant](./screenshots/article-illustrator-styles/elegant.webp) | ![warm](./screenshots/article-illustrator-styles/warm.webp) |\n| notion | elegant | warm |\n| ![minimal](./screenshots/article-illustrator-styles/minimal.webp) | ![blueprint](./screenshots/article-illustrator-styles/blueprint.webp) | ![watercolor](./screenshots/article-illustrator-styles/watercolor.webp) |\n| minimal | blueprint | watercolor |\n| ![editorial](./screenshots/article-illustrator-styles/editorial.webp) | ![scientific](./screenshots/article-illustrator-styles/scientific.webp) | |\n| editorial | scientific | |\n\n#### baoyu-post-to-x\n\nPost content and articles to X (Twitter). Supports regular posts with images and X Articles (long-form Markdown). Uses real Chrome with CDP to bypass anti-automation.\n\nPlain text input is treated as a regular post. Markdown files are treated as X Articles. Scripts fill content into the browser, and the user reviews and publishes manually.\n\n```bash\n# Post with text\n/baoyu-post-to-x \"Hello from Claude Code!\"\n\n# Post with images\n/baoyu-post-to-x \"Check this out\" --image photo.png\n\n# Post X Article\n/baoyu-post-to-x --article path/to/article.md\n```\n\n#### baoyu-post-to-wechat\n\nPost content to WeChat Official Account (微信公众号). Two modes available:\n\n**Image-Text (贴图)** - Multiple images with short title/content:\n\n```bash\n/baoyu-post-to-wechat 贴图 --markdown article.md --images ./photos/\n/baoyu-post-to-wechat 贴图 --markdown article.md --image img1.png --image img2.png --image img3.png\n/baoyu-post-to-wechat 贴图 --title \"标题\" --content \"内容\" --image img1.png --submit\n```\n\n**Article (文章)** - Full markdown/HTML with rich formatting:\n\n```bash\n/baoyu-post-to-wechat 文章 --markdown article.md\n/baoyu-post-to-wechat 文章 --markdown article.md --theme grace\n/baoyu-post-to-wechat 文章 --html article.html\n```\n\n**Publishing Methods**:\n\n| Method | Speed | Requirements |\n|--------|-------|--------------|\n| API (Recommended) | Fast | API credentials |\n| Browser | Slow | Chrome, login session |\n\n**API Configuration** (for faster publishing):\n\n```bash\n# Add to .baoyu-skills/.env (project-level) or ~/.baoyu-skills/.env (user-level)\nWECHAT_APP_ID=your_app_id\nWECHAT_APP_SECRET=your_app_secret\n```\n\nTo obtain credentials:\n1. Visit https://developers.weixin.qq.com/platform/\n2. Go to: 我的业务 → 公众号 → 开发密钥\n3. Create development key and copy AppID/AppSecret\n4. Add your machine's IP to the whitelist\n\n**Browser Method** (no API setup needed): Requires Google Chrome. First run opens browser for QR code login (session preserved).\n\n**Multi-Account Support**: Manage multiple WeChat Official Accounts via `EXTEND.md`:\n\n```bash\nmkdir -p .baoyu-skills/baoyu-post-to-wechat\n```\n\nCreate `.baoyu-skills/baoyu-post-to-wechat/EXTEND.md`:\n\n```yaml\n# Global settings (shared across all accounts)\ndefault_theme: default\ndefault_color: blue\n\n# Account list\naccounts:\n  - name: My Tech Blog\n    alias: tech-blog\n    default: false\n    default_publish_method: api\n    default_author: Author Name\n    need_open_comment: 1\n    only_fans_can_comment: 0\n    app_id: your_wechat_app_id\n    app_secret: your_wechat_app_secret\n  - name: AI Newsletter\n    alias: ai-news\n    default_publish_method: browser\n    default_author: AI Newsletter\n    need_open_comment: 1\n    only_fans_can_comment: 0\n```\n\n| Accounts configured | Behavior |\n|---------------------|----------|\n| No `accounts` block | Single-account mode (backward compatible) |\n| 1 account | Auto-select, no prompt |\n| 2+ accounts | Prompt to select, or use `--account <alias>` |\n| 1 account has `default: true` | Pre-selected as default |\n\nEach account gets an isolated Chrome profile for independent login sessions (browser method). API credentials can be set inline in EXTEND.md or via `.env` with alias-prefixed keys (e.g., `WECHAT_TECH_BLOG_APP_ID`).\n\n#### baoyu-post-to-weibo\n\nPost content to Weibo (微博). Supports regular posts with text, images, and videos, and headline articles (头条文章) with Markdown input. Uses real Chrome with CDP to bypass anti-automation.\n\n**Regular Posts** - Text + images/videos (max 18 files):\n\n```bash\n# Post with text\n/baoyu-post-to-weibo \"Hello Weibo!\"\n\n# Post with images\n/baoyu-post-to-weibo \"Check this out\" --image photo.png\n\n# Post with video\n/baoyu-post-to-weibo \"Watch this\" --video clip.mp4\n```\n\n**Headline Articles (头条文章)** - Long-form Markdown:\n\n```bash\n# Publish article\n/baoyu-post-to-weibo --article article.md\n\n# With cover image\n/baoyu-post-to-weibo --article article.md --cover cover.jpg\n```\n\n**Article Options**:\n| Option | Description |\n|--------|-------------|\n| `--cover <path>` | Cover image |\n| `--title <text>` | Override title (max 32 chars) |\n| `--summary <text>` | Override summary (max 44 chars) |\n\n**Note**: Scripts fill content into the browser. User reviews and publishes manually. First run requires manual Weibo login (session persists).\n\n### AI Generation Skills\n\nAI-powered generation backends.\n\n#### baoyu-image-gen\n\nAI SDK-based image generation using OpenAI, Google, OpenRouter, DashScope (Aliyun Tongyi Wanxiang), Jimeng (即梦), Seedream (豆包), and Replicate APIs. Supports text-to-image, reference images, aspect ratios, and quality presets.\n\n```bash\n# Basic generation (auto-detect provider)\n/baoyu-image-gen --prompt \"A cute cat\" --image cat.png\n\n# With aspect ratio\n/baoyu-image-gen --prompt \"A landscape\" --image landscape.png --ar 16:9\n\n# High quality (2k)\n/baoyu-image-gen --prompt \"A banner\" --image banner.png --quality 2k\n\n# Specific provider\n/baoyu-image-gen --prompt \"A cat\" --image cat.png --provider openai\n\n# OpenRouter\n/baoyu-image-gen --prompt \"A cat\" --image cat.png --provider openrouter\n\n# DashScope (Aliyun Tongyi Wanxiang)\n/baoyu-image-gen --prompt \"一只可爱的猫\" --image cat.png --provider dashscope\n\n# Replicate\n/baoyu-image-gen --prompt \"A cat\" --image cat.png --provider replicate\n\n# Jimeng (即梦)\n/baoyu-image-gen --prompt \"一只可爱的猫\" --image cat.png --provider jimeng\n\n# Seedream (豆包)\n/baoyu-image-gen --prompt \"一只可爱的猫\" --image cat.png --provider seedream\n\n# With reference images (Google, OpenAI, OpenRouter, Replicate, or Seedream 5.0/4.5/4.0)\n/baoyu-image-gen --prompt \"Make it blue\" --image out.png --ref source.png\n```\n\n**Options**:\n| Option | Description |\n|--------|-------------|\n| `--prompt`, `-p` | Prompt text |\n| `--promptfiles` | Read prompt from files (concatenated) |\n| `--image` | Output image path (required) |\n| `--provider` | `google`, `openai`, `openrouter`, `dashscope`, `jimeng`, `seedream` or `replicate` (default: auto-detect; prefers google) |\n| `--model`, `-m` | Model ID |\n| `--ar` | Aspect ratio (e.g., `16:9`, `1:1`, `4:3`) |\n| `--size` | Size (e.g., `1024x1024`) |\n| `--quality` | `normal` or `2k` (default: `2k`) |\n| `--ref` | Reference images (Google, OpenAI, OpenRouter, Replicate, or Seedream 5.0/4.5/4.0) |\n\n**Environment Variables** (see [Environment Configuration](#environment-configuration) for setup):\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `OPENAI_API_KEY` | OpenAI API key | - |\n| `OPENROUTER_API_KEY` | OpenRouter API key | - |\n| `GOOGLE_API_KEY` | Google API key | - |\n| `DASHSCOPE_API_KEY` | DashScope API key (Aliyun) | - |\n| `REPLICATE_API_TOKEN` | Replicate API token | - |\n| `JIMENG_ACCESS_KEY_ID` | Jimeng Volcengine access key | - |\n| `JIMENG_SECRET_ACCESS_KEY` | Jimeng Volcengine secret key | - |\n| `ARK_API_KEY` | Seedream Volcengine ARK API key | - |\n| `OPENAI_IMAGE_MODEL` | OpenAI model | `gpt-image-1.5` |\n| `OPENROUTER_IMAGE_MODEL` | OpenRouter model | `google/gemini-3.1-flash-image-preview` |\n| `GOOGLE_IMAGE_MODEL` | Google model | `gemini-3-pro-image-preview` |\n| `DASHSCOPE_IMAGE_MODEL` | DashScope model | `qwen-image-2.0-pro` |\n| `REPLICATE_IMAGE_MODEL` | Replicate model | `google/nano-banana-pro` |\n| `JIMENG_IMAGE_MODEL` | Jimeng model | `jimeng_t2i_v40` |\n| `SEEDREAM_IMAGE_MODEL` | Seedream model | `doubao-seedream-5-0-260128` |\n| `OPENAI_BASE_URL` | Custom OpenAI endpoint | - |\n| `OPENROUTER_BASE_URL` | Custom OpenRouter endpoint | `https://openrouter.ai/api/v1` |\n| `GOOGLE_BASE_URL` | Custom Google endpoint | - |\n| `DASHSCOPE_BASE_URL` | Custom DashScope endpoint | - |\n| `REPLICATE_BASE_URL` | Custom Replicate endpoint | - |\n| `JIMENG_BASE_URL` | Custom Jimeng endpoint | `https://visual.volcengineapi.com` |\n| `JIMENG_REGION` | Jimeng region | `cn-north-1` |\n| `SEEDREAM_BASE_URL` | Custom Seedream endpoint | `https://ark.cn-beijing.volces.com/api/v3` |\n\n**Provider Auto-Selection**:\n1. If `--provider` specified → use it\n2. If only one API key available → use that provider\n3. If multiple available → default to Google\n\n#### baoyu-danger-gemini-web\n\nInteracts with Gemini Web to generate text and images.\n\n**Text Generation:**\n\n```bash\n/baoyu-danger-gemini-web \"Hello, Gemini\"\n/baoyu-danger-gemini-web --prompt \"Explain quantum computing\"\n```\n\n**Image Generation:**\n\n```bash\n/baoyu-danger-gemini-web --prompt \"A cute cat\" --image cat.png\n/baoyu-danger-gemini-web --promptfiles system.md content.md --image out.png\n```\n\n### Utility Skills\n\nUtility tools for content processing.\n\n#### baoyu-url-to-markdown\n\nFetch any URL via Chrome CDP and convert to clean markdown. Saves rendered HTML snapshot alongside the markdown, and automatically falls back to a legacy extractor when Defuddle fails.\n\n```bash\n# Auto mode (default) - capture when page loads\n/baoyu-url-to-markdown https://example.com/article\n\n# Wait mode - for login-required pages\n/baoyu-url-to-markdown https://example.com/private --wait\n\n# Save to specific file\n/baoyu-url-to-markdown https://example.com/article -o output.md\n```\n\n**Capture Modes**:\n| Mode | Description | Best For |\n|------|-------------|----------|\n| Auto (default) | Captures immediately after page load | Public pages, static content |\n| Wait (`--wait`) | Waits for user signal before capture | Login-required, dynamic content |\n\n**Options**:\n| Option | Description |\n|--------|-------------|\n| `<url>` | URL to fetch |\n| `-o <path>` | Output file path |\n| `--wait` | Wait for user signal before capturing |\n| `--timeout <ms>` | Page load timeout (default: 30000) |\n\n#### baoyu-danger-x-to-markdown\n\nConverts X (Twitter) content to markdown format. Supports tweet threads and X Articles.\n\n```bash\n# Convert tweet to markdown\n/baoyu-danger-x-to-markdown https://x.com/username/status/123456\n\n# Save to specific file\n/baoyu-danger-x-to-markdown https://x.com/username/status/123456 -o output.md\n\n# JSON output\n/baoyu-danger-x-to-markdown https://x.com/username/status/123456 --json\n\n# Download media (images/videos) to local files\n/baoyu-danger-x-to-markdown https://x.com/username/status/123456 --download-media\n```\n\n**Supported URLs:**\n- `https://x.com/<user>/status/<id>`\n- `https://twitter.com/<user>/status/<id>`\n- `https://x.com/i/article/<id>`\n\n**Authentication:** Uses environment variables (`X_AUTH_TOKEN`, `X_CT0`) or Chrome login for cookie-based auth.\n\n#### baoyu-compress-image\n\nCompress images to reduce file size while maintaining quality.\n\n```bash\n/baoyu-compress-image path/to/image.png\n/baoyu-compress-image path/to/images/ --quality 80\n```\n\n#### baoyu-format-markdown\n\nFormat plain text or markdown files with proper frontmatter, titles, summaries, headings, bold, lists, and code blocks.\n\n```bash\n# Format a markdown file\n/baoyu-format-markdown path/to/article.md\n\n# Format with specific output\n/baoyu-format-markdown path/to/draft.md\n```\n\n**Workflow**:\n1. Read source file and analyze content structure\n2. Check/create YAML frontmatter (title, slug, summary, coverImage)\n3. Handle title: use existing, extract from H1, or generate candidates\n4. Apply formatting: headings, bold, lists, code blocks, quotes\n5. Save to `{filename}-formatted.md`\n6. Run typography script: ASCII→fullwidth quotes, CJK spacing, autocorrect\n\n**Frontmatter Fields**:\n| Field | Processing |\n|-------|------------|\n| `title` | Use existing, extract H1, or generate candidates |\n| `slug` | Infer from file path or generate from title |\n| `summary` | Generate engaging summary (100-150 chars) |\n| `coverImage` | Check for `imgs/cover.png` in same directory |\n\n**Formatting Rules**:\n| Element | Format |\n|---------|--------|\n| Titles | `#`, `##`, `###` hierarchy |\n| Key points | `**bold**` |\n| Parallel items | `-` unordered or `1.` ordered lists |\n| Code/commands | `` `inline` `` or ` ```block``` ` |\n| Quotes | `>` blockquote |\n\n#### baoyu-markdown-to-html\n\nConvert markdown files into styled HTML with WeChat-compatible themes, syntax highlighting, and optional bottom citations for external links.\n\n```bash\n# Basic conversion\n/baoyu-markdown-to-html article.md\n\n# Theme + color\n/baoyu-markdown-to-html article.md --theme grace --color red\n\n# Convert ordinary external links to bottom citations\n/baoyu-markdown-to-html article.md --cite\n```\n\n#### baoyu-translate\n\nTranslate articles and documents between languages with three modes: quick (direct), normal (analysis-informed), and refined (full publication-quality workflow with review and polish).\n\n```bash\n# Normal mode (default) - analyze then translate\n/translate article.md --to zh-CN\n\n# Quick mode - direct translation\n/translate article.md --mode quick --to ja\n\n# Refined mode - full workflow with review and polish\n/translate article.md --mode refined --to zh-CN\n\n# Translate a URL\n/translate https://example.com/article --to zh-CN\n\n# Specify audience\n/translate article.md --to zh-CN --audience technical\n\n# Specify style\n/translate article.md --to zh-CN --style humorous\n\n# With additional glossary\n/translate article.md --to zh-CN --glossary my-terms.md\n```\n\n**Options**:\n| Option | Description |\n|--------|-------------|\n| `<source>` | File path, URL, or inline text |\n| `--mode <mode>` | `quick`, `normal` (default), `refined` |\n| `--from <lang>` | Source language (auto-detect if omitted) |\n| `--to <lang>` | Target language (default: `zh-CN`) |\n| `--audience <type>` | Target reader profile (default: `general`) |\n| `--style <style>` | Translation style (default: `storytelling`) |\n| `--glossary <file>` | Additional glossary file |\n\n**Modes**:\n| Mode | Steps | Use Case |\n|------|-------|----------|\n| Quick | Translate | Short texts, informal content |\n| Normal | Analyze → Translate | Articles, blog posts |\n| Refined | Analyze → Translate → Review → Polish | Publication-quality documents |\n\nAfter normal mode completes, you can reply \"继续润色\" or \"refine\" to continue with review and polish steps.\n\n**Audience Presets**:\n| Value | Description |\n|-------|-------------|\n| `general` | General readers (default) — plain language, more translator's notes |\n| `technical` | Developers / engineers — less annotation on common tech terms |\n| `academic` | Researchers / scholars — formal register, precise terminology |\n| `business` | Business professionals — business-friendly tone |\n\nCustom audience descriptions are also accepted, e.g., `--audience \"AI-interested general readers\"`.\n\n**Style Presets**:\n| Value | Description |\n|-------|-------------|\n| `storytelling` | Engaging narrative flow (default) — smooth transitions, vivid phrasing |\n| `formal` | Professional, structured — neutral tone, no colloquialisms |\n| `technical` | Precise, documentation-style — concise, terminology-heavy |\n| `literal` | Close to original structure — minimal restructuring |\n| `academic` | Scholarly, rigorous — formal register, complex clauses OK |\n| `business` | Concise, results-focused — action-oriented, executive-friendly |\n| `humorous` | Preserves and adapts humor — witty, recreates comedic effect |\n| `conversational` | Casual, spoken-like — friendly, as if explaining to a friend |\n| `elegant` | Literary, polished prose — aesthetically refined, carefully crafted |\n\nCustom style descriptions are also accepted, e.g., `--style \"poetic and lyrical\"`.\n\n**Features**:\n- Custom glossaries via EXTEND.md with built-in EN→ZH glossary\n- Audience-aware translation with adjustable annotation depth\n- Automatic chunking for long documents (4000+ words) with parallel subagent translation\n- Figurative language interpreted by meaning, not word-for-word\n- Translator's notes for cultural/domain-specific references\n- Output directory with all intermediate files preserved\n\n## Environment Configuration\n\nSome skills require API keys or custom configuration. Environment variables can be set in `.env` files:\n\n**Load Priority** (higher priority overrides lower):\n1. CLI environment variables (e.g., `OPENAI_API_KEY=xxx /baoyu-image-gen ...`)\n2. `process.env` (system environment)\n3. `<cwd>/.baoyu-skills/.env` (project-level)\n4. `~/.baoyu-skills/.env` (user-level)\n\n**Setup**:\n\n```bash\n# Create user-level config directory\nmkdir -p ~/.baoyu-skills\n\n# Create .env file\ncat > ~/.baoyu-skills/.env << 'EOF'\n# OpenAI\nOPENAI_API_KEY=sk-xxx\nOPENAI_IMAGE_MODEL=gpt-image-1.5\n# OPENAI_BASE_URL=https://api.openai.com/v1\n\n# OpenRouter\nOPENROUTER_API_KEY=sk-or-xxx\nOPENROUTER_IMAGE_MODEL=google/gemini-3.1-flash-image-preview\n# OPENROUTER_BASE_URL=https://openrouter.ai/api/v1\n\n# Google\nGOOGLE_API_KEY=xxx\nGOOGLE_IMAGE_MODEL=gemini-3-pro-image-preview\n# GOOGLE_BASE_URL=https://generativelanguage.googleapis.com/v1beta\n\n# DashScope (Aliyun Tongyi Wanxiang)\nDASHSCOPE_API_KEY=sk-xxx\nDASHSCOPE_IMAGE_MODEL=qwen-image-2.0-pro\n# DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/api/v1\n\n# Replicate\nREPLICATE_API_TOKEN=r8_xxx\nREPLICATE_IMAGE_MODEL=google/nano-banana-pro\n# REPLICATE_BASE_URL=https://api.replicate.com\n\n# Jimeng (即梦)\nJIMENG_ACCESS_KEY_ID=xxx\nJIMENG_SECRET_ACCESS_KEY=xxx\nJIMENG_IMAGE_MODEL=jimeng_t2i_v40\n# JIMENG_BASE_URL=https://visual.volcengineapi.com\n# JIMENG_REGION=cn-north-1\n\n# Seedream (豆包)\nARK_API_KEY=xxx\nSEEDREAM_IMAGE_MODEL=doubao-seedream-5-0-260128\n# SEEDREAM_BASE_URL=https://ark.cn-beijing.volces.com/api/v3\nEOF\n```\n\n**Project-level config** (for team sharing):\n\n```bash\nmkdir -p .baoyu-skills\n# Add .baoyu-skills/.env to .gitignore to avoid committing secrets\necho \".baoyu-skills/.env\" >> .gitignore\n```\n\n## Customization\n\nAll skills support customization via `EXTEND.md` files. Create an extension file to override default styles, add custom configurations, or define your own presets.\n\n**Extension paths** (checked in priority order):\n1. `.baoyu-skills/<skill-name>/EXTEND.md` - Project-level (for team/project-specific settings)\n2. `~/.baoyu-skills/<skill-name>/EXTEND.md` - User-level (for personal preferences)\n\n**Example**: To customize `baoyu-cover-image` with your brand colors:\n\n```bash\nmkdir -p .baoyu-skills/baoyu-cover-image\n```\n\nThen create `.baoyu-skills/baoyu-cover-image/EXTEND.md`:\n\n```markdown\n## Custom Palettes\n\n### corporate-tech\n- Primary colors: #1a73e8, #4A90D9\n- Background: #F5F7FA\n- Accent colors: #00B4D8, #48CAE4\n- Decorative hints: Clean lines, subtle gradients\n- Best for: SaaS, enterprise, technical\n```\n\nThe extension content will be loaded before skill execution and override defaults.\n\n## Disclaimer\n\n### baoyu-danger-gemini-web\n\nThis skill uses the Gemini Web API (reverse-engineered).\n\n**Warning:** This project uses unofficial API access via browser cookies. Use at your own risk.\n\n- First run opens a browser to authenticate with Google\n- Cookies are cached for subsequent runs\n- No guarantees on API stability or availability\n\n**Supported browsers** (auto-detected): Google Chrome, Chrome Canary/Beta, Chromium, Microsoft Edge\n\n**Proxy configuration**: If you need a proxy to access Google services (e.g., in China), set environment variables inline:\n\n```bash\nHTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 /baoyu-danger-gemini-web \"Hello\"\n```\n\n### baoyu-danger-x-to-markdown\n\nThis skill uses a reverse-engineered X (Twitter) API.\n\n**Warning:** This is NOT an official API. Use at your own risk.\n\n- May break without notice if X changes their API\n- Account restrictions possible if API usage detected\n- First use requires consent acknowledgment\n- Authentication via environment variables or Chrome login\n\n## Credits\n\nThis project was inspired by and builds upon the following open source projects:\n\n- [x-article-publisher-skill](https://github.com/wshuyi/x-article-publisher-skill) by [@wshuyi](https://github.com/wshuyi) — Inspiration for the X article publishing skill\n- [doocs/md](https://github.com/doocs/md) by [@doocs](https://github.com/doocs) — Core implementation logic for Markdown to HTML conversion\n- [High-density Infographic Prompt](https://waytoagi.feishu.cn/wiki/YG0zwalijihRREkgmPzcWRInnUg) by AJ@WaytoAGI — Inspiration for the infographic skill\n- [qiaomu-mondo-poster-design](https://github.com/joeseesun/qiaomu-mondo-poster-design) by [@joeseesun](https://github.com/joeseesun)（乔木） — Inspiration for the Mondo style\n\n## License\n\nMIT\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=JimLiu/baoyu-skills&type=Date)](https://www.star-history.com/#JimLiu/baoyu-skills&Date)\n\nFile v1.0.0:skills/baoyu-article-illustrator/references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-article-illustrator preferences\n---\n\n# First-Time Setup\n\n## Overview\n\nWhen no EXTEND.md is found, guide user through preference setup.\n\n**⛔ BLOCKING OPERATION**: This setup MUST complete before ANY other workflow steps. Do NOT:\n- Ask about reference images\n- Ask about content/article\n- Ask about type or style preferences\n- Proceed to content analysis\n\nONLY ask the questions in this setup flow, save EXTEND.md, then continue.\n\n## Setup Flow\n\n```\nNo EXTEND.md found\n        │\n        ▼\n┌─────────────────────┐\n│ AskUserQuestion     │\n│ (all questions)     │\n└─────────────────────┘\n        │\n        ▼\n┌─────────────────────┐\n│ Create EXTEND.md    │\n└─────────────────────┘\n        │\n        ▼\n    Continue to Step 1\n```\n\n## Questions\n\n**Language**: Use user's input language or preferred language for all questions. Do not always use English.\n\nUse single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated illustrations? Type y","readmeExcerpt":"Skill: Baoyu Skills Owner: conanwhf Summary: 宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-04-06T17:25:36.349Z | auto Initial release of baoyu-skills, a comprehensive collection of Claude Code utilities for content generation, conversion, publishing, and ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npx skills add jimliu/baoyu-skills"},{"language":"bash","snippet":"bun skills/<skill-name>/scripts/main.ts [options]"},{"language":"text","snippet":"- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize"},{"language":"bash","snippet":"# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-article-illustrator/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-article-illustrator/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md\" && echo \"user\""},{"language":"powershell","snippet":"# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-article-illustrator/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-article-illustrator/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md\") { \"user\" }"},{"language":"yaml","snippet":"## Illustration 1\n**Position**: [section/paragraph]\n**Purpose**: [why]\n**Visual Content**: [what]\n**Filename**: 01-infographic-concept-name.png"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: baoyu-skills\ndescription: |\n  宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。\n  \n  子技能列表 (skills/baoyu-*):\n  - baoyu-article-illustrator: 文章插图生成\n  - baoyu-comic: 漫画生成\n  - baoyu-compress-image: 图片压缩\n  - baoyu-cover-image: 封面图生成\n  - baoyu-danger-gemini-web: Gemini网页抓取\n  - baoyu-danger-x-to-markdown: X帖子转Markdown\n  - baoyu-format-markdown: Markdown格式化\n  - baoyu-image-gen: AI图片生成\n  - baoyu-infographic: 信息图生成\n  - baoyu-markdown-to-html: Markdown转HTML\n  - baoyu-post-to-wechat: 发送微信文章\n  - baoyu-post-to-weibo: 发送微博\n  - baoyu-post-to-x: 发送X帖子\n  - baoyu-slide-deck: PPT/幻灯片生成\n  - baoyu-translate: 翻译\n  - baoyu-url-to-markdown: URL转Markdown\n  - baoyu-xhs-images: 小红书图片处理\n  \n  触发词示例：\n  - \"用baoyu生成一张图片\"\n  - \"把XX网页转成markdown\"\n  - \"生成XX的PPT\"\n  \nmetadata:\n  {\n    \"openclaw\": {\n      \"emoji\": \"🎨\",\n      \"requires\": { \"bins\": [\"bun\"] },\n      \"install\": [\n        {\n          \"id\": \"npm-global\",\n          \"kind\": \"npm\",\n          \"pkg\": \"@jimliu/baoyu-skills\",\n          \"global\": true,\n          \"label\": \"Install baoyu-skills via npx\"\n        }\n      ]\n    }\n  }\n---\n\n# baoyu-skills\n\n宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。\n\n## 前置要求\n\n- Node.js 环境\n- Bun runtime (`npx bun` 命令)\n\n## 安装\n\n```bash\nnpx skills add jimliu/baoyu-skills\n```\n\n## 使用方式\n\n通过 Bun 运行各子技能：\n```bash\nbun skills/<skill-name>/scripts/main.ts [options]\n```\n\n## 子技能详情\n\n### 内容生成\n| 技能 | 说明 |\n|------|------|\n| baoyu-image-gen | AI图片生成 |\n| baoyu-cover-image | 封面图生成 |\n| baoyu-article-illustrator | 文章插图 |\n| baoyu-comic | 漫画生成 |\n| baoyu-infographic | 信息图生成 |\n| baoyu-slide-deck | PPT/幻灯片生成 |\n\n### 内容转换\n| 技能 | 说明 |\n|------|------|\n| baoyu-url-to-markdown | URL转Markdown |\n| baoyu-x-to-markdown | X帖子转Markdown |\n| baoyu-markdown-to-html | Markdown转HTML |\n| baoyu-translate | 翻译 |\n\n### 内容发布\n| 技能 | 说明 |\n|------|------|\n| baoyu-post-to-x | 发布到X |\n| baoyu-post-to-weibo | 发布到微博 |\n| baoyu-post-to-wechat | 发布到微信 |\n\n### 图片处理\n| 技能 | 说明 |\n|------|------|\n| baoyu-compress-image | 图片压缩 |\n| baoyu-xhs-images | 小红书图片处理 |\n\n## 安全注意\n\n- 部分技能需要Chrome配置(CDP技能)\n- 图片生成可能需要API密钥配置\n- 遵守各平台使用条款"},{"path":"skills/baoyu-article-illustrator/SKILL.md","content":"---\nname: baoyu-article-illustrator\ndescription: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style two-dimension approach. Use when user asks to \"illustrate article\", \"add images\", \"generate images for article\", or \"为文章配图\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-article-illustrator\n---\n\n# Article Illustrator\n\nAnalyze articles, identify illustration positions, generate images with Type × Style consistency.\n\n## Two Dimensions\n\n| Dimension | Controls | Examples |\n|-----------|----------|----------|\n| **Type** | Information structure | infographic, scene, flowchart, comparison, framework, timeline |\n| **Style** | Visual aesthetics | notion, warm, minimal, blueprint, watercolor, elegant |\n\nCombine freely: `--type infographic --style blueprint`\n\nOr use presets: `--preset tech-explainer` → type + style in one flag. See [Style Presets](references/style-presets.md).\n\n## Types\n\n| Type | Best For |\n|------|----------|\n| `infographic` | Data, metrics, technical |\n| `scene` | Narratives, emotional |\n| `flowchart` | Processes, workflows |\n| `comparison` | Side-by-side, options |\n| `framework` | Models, architecture |\n| `timeline` | History, evolution |\n\n## Styles\n\nSee [references/styles.md](references/styles.md) for Core Styles, full gallery, and Type × Style compatibility.\n\n## Workflow\n\n```\n- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize\n```\n\n### Step 1: Pre-check\n\n**1.5 Load Preferences (EXTEND.md) ⛔ BLOCKING**\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-article-illustrator/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-article-illustrator/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-article-illustrator/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-article-illustrator/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md\") { \"user\" }\n```\n\n| Result | Action |\n|--------|--------|\n| Found | Read, parse, display summary |\n| Not found | ⛔ Run [first-time-setup](references/config/first-time-setup.md) |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-1-pre-check)\n\n### Step 2: Analyze\n\n| Analysis | Output |\n|----------|--------|\n| Content type | Technical / Tutorial / Methodology / Narrative |\n| Purpose | information / visualization / imagination |\n| Core arguments | 2-5 main points |\n| Positions | Where illustrations add value |\n\n**CRITICAL**: Metaphors → visualize underlying concept, NOT literal image.\n\nFull procedure"},{"path":"skills/baoyu-comic/SKILL.md","content":"---\nname: baoyu-comic\ndescription: Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts and sequential image generation. Use when user asks to create \"知识漫画\", \"教育漫画\", \"biography comic\", \"tutorial comic\", or \"Logicomix-style comic\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-comic\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Knowledge Comic Creator\n\nCreate original knowledge comics with flexible art style × tone combinations.\n\n## Usage\n\n```bash\n/baoyu-comic posts/turing-story/source.md\n/baoyu-comic article.md --art manga --tone warm\n/baoyu-comic  # then paste content\n```\n\n## Options\n\n### Visual Dimensions\n\n| Option | Values | Description |\n|--------|--------|-------------|\n| `--art` | ligne-claire (default), manga, realistic, ink-brush, chalk | Art style / rendering technique |\n| `--tone` | neutral (default), warm, dramatic, romantic, energetic, vintage, action | Mood / atmosphere |\n| `--layout` | standard (default), cinematic, dense, splash, mixed, webtoon | Panel arrangement |\n| `--aspect` | 3:4 (default, portrait), 4:3 (landscape), 16:9 (widescreen) | Page aspect ratio |\n| `--lang` | auto (default), zh, en, ja, etc. | Output language |\n\n### Partial Workflow Options\n\n| Option | Description |\n|--------|-------------|\n| `--storyboard-only` | Generate storyboard only, skip prompts and images |\n| `--prompts-only` | Generate storyboard + prompts, skip images |\n| `--images-only` | Generate images from existing prompts directory |\n| `--regenerate N` | Regenerate specific page(s) only (e.g., `3` or `2,5,8`) |\n\nDetails: [references/partial-workflows.md](references/partial-workflows.md)\n\n### Art Styles (画风)\n\n| Style | 中文 | Description |\n|-------|------|-------------|\n| `ligne-claire` | 清线 | Uniform lines, flat colors, European comic tradition (Tintin, Logicomix) |\n| `manga` | 日漫 | Large eyes, manga conventions, expressive emotions |\n| `realistic` | 写实 | Digital painting, realistic proportions, sophisticated |\n| `ink-brush` | 水墨 | Chinese brush strokes, ink wash effects |\n| `chalk` | 粉笔 | Chalkboard aesthetic, hand-drawn warmth |\n\n### Tones (基调)\n\n| Tone | 中文 | Description |\n|------|------|-------------|\n| `neutral` | 中性 | Balanced, rational, educational |\n| `warm` | 温馨 | Nostalgic, personal, comforting |\n| `dramatic` | 戏剧 | High contrast, intense, powerful |\n| `romantic` | 浪漫 | Soft, beautiful, decorative elements |\n| `energetic` | 活力 | Bright, dynamic, exciting |\n| `vintage` | 复古 | Historical, aged, period authenticity |\n| `action` | 动作 | Speed lines, impact effects, combat |\n\n### Preset Shortcuts\n\nPresets with special rules beyond art+tone:\n\n| Preset | Equivalent | Special Rules |\n|--------|-----------|---------------|\n| `--style ohmsha` | `--art manga --tone neutral` | Visual metaphors, NO talking heads, gadget reveals |\n| `--style wuxia` | `--art ink-brush --tone action` | Qi effects, combat visuals, atmos"},{"path":"skills/baoyu-compress-image/SKILL.md","content":"---\nname: baoyu-compress-image\ndescription: Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to \"compress image\", \"optimize image\", \"convert to webp\", or reduce image file size.\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-compress-image\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Image Compressor\n\nCompresses images using best available tool (sips → cwebp → ImageMagick → Sharp).\n\n## Script Directory\n\nScripts in `scripts/` subdirectory. `{baseDir}` = this SKILL.md's directory path. Resolve `${BUN_X}` runtime: if `bun` installed → `bun`; if `npx` available → `npx -y bun`; else suggest installing bun. Replace `{baseDir}` and `${BUN_X}` with actual values.\n\n| Script | Purpose |\n|--------|---------|\n| `scripts/main.ts` | Image compression CLI |\n\n## Preferences (EXTEND.md)\n\nCheck EXTEND.md existence (priority order):\n\n```bash\n# macOS, Linux, WSL, Git Bash\ntest -f .baoyu-skills/baoyu-compress-image/EXTEND.md && echo \"project\"\ntest -f \"${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-compress-image/EXTEND.md\" && echo \"xdg\"\ntest -f \"$HOME/.baoyu-skills/baoyu-compress-image/EXTEND.md\" && echo \"user\"\n```\n\n```powershell\n# PowerShell (Windows)\nif (Test-Path .baoyu-skills/baoyu-compress-image/EXTEND.md) { \"project\" }\n$xdg = if ($env:XDG_CONFIG_HOME) { $env:XDG_CONFIG_HOME } else { \"$HOME/.config\" }\nif (Test-Path \"$xdg/baoyu-skills/baoyu-compress-image/EXTEND.md\") { \"xdg\" }\nif (Test-Path \"$HOME/.baoyu-skills/baoyu-compress-image/EXTEND.md\") { \"user\" }\n```\n\n┌────────────────────────────────────────────────────────┬───────────────────┐\n│                          Path                          │     Location      │\n├────────────────────────────────────────────────────────┼───────────────────┤\n│ .baoyu-skills/baoyu-compress-image/EXTEND.md           │ Project directory │\n├────────────────────────────────────────────────────────┼───────────────────┤\n│ $HOME/.baoyu-skills/baoyu-compress-image/EXTEND.md     │ User home         │\n└────────────────────────────────────────────────────────┴───────────────────┘\n\n┌───────────┬───────────────────────────────────────────────────────────────────────────┐\n│  Result   │                                  Action                                   │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Found     │ Read, parse, apply settings                                               │\n├───────────┼───────────────────────────────────────────────────────────────────────────┤\n│ Not found │ Use defaults                                                              │\n└───────────┴───────────────────────────────────────────────────────────────────────────┘\n\n**EXTEND.md Supports**: Default format | Default quality | Keep original preference\n\n## Usage\n\n```bash\n${BUN_X} {baseDir}/scripts/main.ts <input> [options]\n```\n\n## Options\n\n| Option | Short | Description | Default |\n|--------|---"},{"path":"skills/baoyu-cover-image/SKILL.md","content":"---\nname: baoyu-cover-image\ndescription: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 10 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to \"generate cover image\", \"create article cover\", or \"make cover\".\nversion: 1.56.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-cover-image\n---\n\n# Cover Image Generator\n\nGenerate elegant cover images for articles with 5-dimensional customization.\n\n## Usage\n\n```bash\n# Auto-select dimensions based on content\n/baoyu-cover-image path/to/article.md\n\n# Quick mode: skip confirmation\n/baoyu-cover-image article.md --quick\n\n# Specify dimensions\n/baoyu-cover-image article.md --type conceptual --palette warm --rendering flat-vector\n\n# Style presets (shorthand for palette + rendering)\n/baoyu-cover-image article.md --style blueprint\n\n# With reference images\n/baoyu-cover-image article.md --ref style-ref.png\n\n# Direct content input\n/baoyu-cover-image --palette mono --aspect 1:1 --quick\n[paste content]\n```\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--type <name>` | hero, conceptual, typography, metaphor, scene, minimal |\n| `--palette <name>` | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone |\n| `--rendering <name>` | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print |\n| `--style <name>` | Preset shorthand (see [Style Presets](references/style-presets.md)) |\n| `--text <level>` | none, title-only, title-subtitle, text-rich |\n| `--mood <level>` | subtle, balanced, bold |\n| `--font <name>` | clean, handwritten, serif, display |\n| `--aspect <ratio>` | 16:9 (default), 2.35:1, 4:3, 3:2, 1:1, 3:4 |\n| `--lang <code>` | Title language (en, zh, ja, etc.) |\n| `--no-title` | Alias for `--text none` |\n| `--quick` | Skip confirmation, use auto-selection |\n| `--ref <files...>` | Reference images for style/composition guidance |\n\n## Five Dimensions\n\n| Dimension | Values | Default |\n|-----------|--------|---------|\n| **Type** | hero, conceptual, typography, metaphor, scene, minimal | auto |\n| **Palette** | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone | auto |\n| **Rendering** | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print | auto |\n| **Text** | none, title-only, title-subtitle, text-rich | title-only |\n| **Mood** | subtle, balanced, bold | balanced |\n| **Font** | clean, handwritten, serif, display | clean |\n\nAuto-selection rules: [references/auto-selection.md](references/auto-selection.md)\n\n## Galleries\n\n**Types**: hero, conceptual, typography, metaphor, scene, minimal\n→ Details: [references/types.md](references/types.md)\n\n**Palettes**: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone\n→ Details: [references/palettes/](references/palettes/)\n\n**Renderings**: flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print\n→ Details: [r"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co... Skill: Baoyu Skills Owner: conanwhf Summary: 宝玉分享的 Claude Code 技能集，包含多个内容生成和处理子技能。 子技能列表 (skills/baoyu-*): - baoyu-article-illustrator: 文章插图生成 - baoyu-comic: 漫画生成 - baoyu-compress-image: 图片压缩 - baoyu-co... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-04-06T17:25:36.349Z | auto Initial release of baoyu-skills, a comprehensive collection of Claude Code utilities for content generation, conversion, publishing, and","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1535,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T02:56:22.425Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T21:08:15.898Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}