mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-07-22 18:19:48 +08:00
2c800c670a
* docs: add runtime-neutral User Input Tools convention across skills Introduce docs/user-input-tools.md as the author-side canonical source and inline the tool-selection rule into every SKILL.md that prompts the user. Also add Skill Self-Containment and User Input Tools sections to CLAUDE.md and the copy-verbatim template to docs/creating-skills.md, so skills stay portable across Claude Code, Codex, Hermes, and other runtimes. * feat: runtime-neutral image generation convention across skills - Introduce inline `## Image Generation Tools` rule in every rendering SKILL.md so skills delegate backend choice instead of hard-coding one; author-side canonical copy lives in docs/image-generation-tools.md. - Add `## Reference Images` support (`--ref`, frontmatter `references:` with direct/style/palette usage) to all seven image-rendering skills. - Move build-batch.ts (with ref propagation into batch JSON) from baoyu-article-illustrator to baoyu-imagine so non-backend skills don't own backend-specific scripts; update baoyu-image-gen stub in sync and relax the CLAUDE.md deprecation note accordingly. * refactor: slim heavy SKILL.md files and move detail to references/ Trim the four largest active skills and move presets, option tables, and confirmation scripts into per-skill references/ so SKILL.md stays focused on the decision flow. - baoyu-slide-deck: 761→258, + styles-gallery.md, confirmation.md - baoyu-image-cards: 657→280, + gallery.md, confirmation.md - baoyu-post-to-wechat: 518→267, + multi-account.md, api-setup.md - baoyu-imagine: 500→230, + providers/, usage-examples.md Also un-deprecate baoyu-image-gen (drop stub warning) so it stays functional alongside baoyu-imagine, and update CLAUDE.md to reflect that both superseded skills are kept in sync rather than stubbed. * refactor: slim four medium SKILL.md files into references/ Continue the P2 pattern on the next tier of skills — move option catalogs, per-provider/adapter detail, and repeated EXTEND.md path boilerplate into their own references so SKILL.md stays focused on the decision flow. - baoyu-comic: 380→297 (art/tone/preset tables → auto-selection.md; Step 7 expanded detail → workflow.md) - baoyu-infographic: 312→207 (layouts/styles/combinations/keywords → gallery.md; ASCII box tables → markdown tables) - baoyu-format-markdown: 376→296 (title + summary generation → title-summary.md; ASCII box tables → markdown tables) - baoyu-url-to-markdown: 334→169 (quality gate + recovery → quality-gate.md; adapters + media download → adapters.md) * chore: sync deprecated skills with their replacements Per project policy, baoyu-xhs-images and baoyu-image-gen are kept functional alongside the active skills they were superseded by. Sync their SKILL.md bodies and references/ to the slimmed baoyu-image-cards and baoyu-imagine versions respectively, so cross-cutting fixes stay consistent. Only the frontmatter (name, description, version, homepage) differs — content is identical. - baoyu-xhs-images: 657→281 (synced with baoyu-image-cards + new confirmation.md, gallery.md) - baoyu-image-gen: 408→231 (synced with baoyu-imagine + new providers/, usage-examples.md) * refactor: collapse EXTEND.md boilerplate into priority tables Replace the dual bash/powershell existence-check blocks and ASCII box art with a single markdown priority table across nine SKILL.md files. The runtime-neutral phrasing removes shell-specific snippets without losing the priority semantics. * fix: address refactor-skills branch review findings - image-gen: restore EXTEND.md paths to baoyu-image-gen (were pointing at baoyu-imagine) and mark descriptions of both deprecated skills as [Deprecated]. - xhs-images: sync neon/warm palettes with image-cards to add the "do not render color names/hex as visible text" safety sentence. - infographic: restore Layout Gallery (21), Style Gallery (21), Recommended Combinations, and Keyword Shortcuts inline (previous refactor split them out but SKILL.md still depended on them), and add the missing references/config/first-time-setup.md + preferences-schema.md. - image-cards / xhs-images / slide-deck / format-markdown: restore the sections that got over-slimmed into references/ (galleries, presets, dimensions, auto-selection, style x layout matrix, title/summary flow) and drop the now-empty shell files. - docs/image-generation-tools.md: note that backend skills themselves (baoyu-imagine, baoyu-image-gen, baoyu-danger-gemini-web) are exempt from the ## Image Generation Tools section requirement. * feat(image-gen): sync Z.AI GLM-Image provider from baoyu-imagine Add Z.AI as a full provider in the deprecated baoyu-image-gen skill so it stays in sync with baoyu-imagine's provider list. - new scripts/providers/zai.ts + zai.test.ts (verbatim port; test factory trimmed to match image-gen's CliArgs shape). - types.ts: "zai" added to Provider union and default_model. - main.ts: rate-limit defaults, provider help text, env var help, --provider validation, loadProviderModule, detectProvider auto-detect chain, getModelForProvider, YAML parser allow-lists. - references/config: Q2e Z.AI model question + zai slot in the preferences schema and batch.provider_limits. Scope is intentionally limited to the Z.AI chain; unrelated drift between image-gen and imagine (OpenAI image-API dialect, aspectRatioSource, imageSizeSource) is left alone. * docs: align inline-convention wording and note backend-skill exemption - docs/user-input-tools.md: fix stale "links here" wording so it matches the inline convention already enforced everywhere else. - CLAUDE.md §Image Generation Tools: inline the backend-skill exemption so readers don't need to cross-reference docs/image-generation-tools.md.
242 lines
8.4 KiB
Markdown
242 lines
8.4 KiB
Markdown
---
|
|
name: baoyu-markdown-to-html
|
|
description: Converts Markdown to styled HTML with WeChat-compatible themes. Supports code highlighting, math, PlantUML, footnotes, alerts, infographics, and optional bottom citations for external links. Use when user asks for "markdown to html", "convert md to html", "md 转 html", "微信外链转底部引用", or needs styled HTML output from markdown.
|
|
version: 1.56.1
|
|
metadata:
|
|
openclaw:
|
|
homepage: https://github.com/JimLiu/baoyu-skills#baoyu-markdown-to-html
|
|
requires:
|
|
anyBins:
|
|
- bun
|
|
- npx
|
|
---
|
|
|
|
# Markdown to HTML Converter
|
|
|
|
Converts Markdown files to beautifully styled HTML with inline CSS, optimized for WeChat Official Account and other platforms.
|
|
|
|
## User Input Tools
|
|
|
|
When this skill prompts the user, follow this tool-selection rule (priority order):
|
|
|
|
1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.
|
|
2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.
|
|
3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.
|
|
|
|
Concrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.
|
|
|
|
## Script Directory
|
|
|
|
**Agent Execution**: Determine this SKILL.md directory as `{baseDir}`. 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.
|
|
|
|
| Script | Purpose |
|
|
|--------|---------|
|
|
| `scripts/main.ts` | Main entry point |
|
|
|
|
## Preferences (EXTEND.md)
|
|
|
|
Check EXTEND.md in priority order — the first one found wins:
|
|
|
|
| Priority | Path | Scope |
|
|
|----------|------|-------|
|
|
| 1 | `.baoyu-skills/baoyu-markdown-to-html/EXTEND.md` | Project |
|
|
| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-markdown-to-html/EXTEND.md` | XDG |
|
|
| 3 | `$HOME/.baoyu-skills/baoyu-markdown-to-html/EXTEND.md` | User home |
|
|
|
|
If none found, use defaults.
|
|
|
|
**EXTEND.md supports**: default theme, custom CSS variables, code block style.
|
|
|
|
## Workflow
|
|
|
|
### Step 0: Pre-check (Chinese Content)
|
|
|
|
**Condition**: Only execute if input file contains Chinese text.
|
|
|
|
**Detection**:
|
|
1. Read input markdown file
|
|
2. Check if content contains CJK characters (Chinese/Japanese/Korean)
|
|
3. If no CJK content → skip to Step 1
|
|
|
|
**Format Suggestion**:
|
|
|
|
If CJK content detected AND `baoyu-format-markdown` skill is available:
|
|
|
|
Use `AskUserQuestion` to ask whether to format first. Formatting can fix:
|
|
- Bold markers with punctuation inside causing `**` parse failures
|
|
- CJK/English spacing issues
|
|
|
|
**If user agrees**: Invoke `baoyu-format-markdown` skill to format the file, then use formatted file as input.
|
|
|
|
**If user declines**: Continue with original file.
|
|
|
|
### Step 1: Determine Theme
|
|
|
|
**Theme resolution order** (first match wins):
|
|
1. User explicitly specified theme (CLI `--theme` or conversation)
|
|
2. EXTEND.md `default_theme` (this skill's own EXTEND.md, checked in Step 0)
|
|
3. `baoyu-post-to-wechat` EXTEND.md `default_theme` (cross-skill fallback)
|
|
4. If none found → use AskUserQuestion to confirm
|
|
|
|
**Cross-skill EXTEND.md check** (only if this skill's EXTEND.md has no `default_theme`):
|
|
|
|
Read `$HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md` if it exists and look for a `default_theme:` line. Use the value if present; otherwise fall through.
|
|
|
|
**If theme is resolved from EXTEND.md**: Use it directly, do NOT ask the user.
|
|
|
|
**If no default found**: use `AskUserQuestion` to confirm a theme from the [Themes](#themes) table below.
|
|
|
|
### Step 1.5: Determine Citation Mode
|
|
|
|
**Default**: Off. Do not ask by default.
|
|
|
|
**Enable only if the user explicitly asks** for "微信外链转底部引用", "底部引用", "文末引用", or passes `--cite`.
|
|
|
|
**Behavior when enabled**:
|
|
- Ordinary external links are rendered with numbered superscripts and collected under a final `引用链接` section.
|
|
- `https://mp.weixin.qq.com/...` links stay as direct links and are not moved to the bottom.
|
|
- Bare links where link text equals URL stay inline.
|
|
|
|
### Step 2: Convert
|
|
|
|
```bash
|
|
${BUN_X} {baseDir}/scripts/main.ts <markdown_file> --theme <theme> [--cite]
|
|
```
|
|
|
|
### Step 3: Report Result
|
|
|
|
Display the output path from JSON result. If backup was created, mention it.
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
${BUN_X} {baseDir}/scripts/main.ts <markdown_file> [options]
|
|
```
|
|
|
|
**Options:**
|
|
|
|
| Option | Description | Default |
|
|
|--------|-------------|---------|
|
|
| `--theme <name>` | Theme name (default, grace, simple, modern) | default |
|
|
| `--color <name\|hex>` | Primary color: preset name or hex value | theme default |
|
|
| `--font-family <name>` | Font: sans, serif, serif-cjk, mono, or CSS value | theme default |
|
|
| `--font-size <N>` | Font size: 14px, 15px, 16px, 17px, 18px | 16px |
|
|
| `--title <title>` | Override title from frontmatter | |
|
|
| `--cite` | Convert external links to bottom citations, append `引用链接` section | false (off) |
|
|
| `--keep-title` | Keep the first heading in content | false (removed) |
|
|
| `--help` | Show help | |
|
|
|
|
**Color Presets:**
|
|
|
|
| Name | Hex | Label |
|
|
|------|-----|-------|
|
|
| blue | #0F4C81 | Classic Blue |
|
|
| green | #009874 | Emerald Green |
|
|
| vermilion | #FA5151 | Vibrant Vermilion |
|
|
| yellow | #FECE00 | Lemon Yellow |
|
|
| purple | #92617E | Lavender Purple |
|
|
| sky | #55C9EA | Sky Blue |
|
|
| rose | #B76E79 | Rose Gold |
|
|
| olive | #556B2F | Olive Green |
|
|
| black | #333333 | Graphite Black |
|
|
| gray | #A9A9A9 | Smoke Gray |
|
|
| pink | #FFB7C5 | Sakura Pink |
|
|
| red | #A93226 | China Red |
|
|
| orange | #D97757 | Warm Orange (modern default) |
|
|
|
|
**Examples:**
|
|
|
|
```bash
|
|
# Basic conversion (uses default theme, removes first heading)
|
|
${BUN_X} {baseDir}/scripts/main.ts article.md
|
|
|
|
# With specific theme
|
|
${BUN_X} {baseDir}/scripts/main.ts article.md --theme grace
|
|
|
|
# Theme with custom color
|
|
${BUN_X} {baseDir}/scripts/main.ts article.md --theme modern --color red
|
|
|
|
# Enable bottom citations for ordinary external links
|
|
${BUN_X} {baseDir}/scripts/main.ts article.md --cite
|
|
|
|
# Keep the first heading in content
|
|
${BUN_X} {baseDir}/scripts/main.ts article.md --keep-title
|
|
|
|
# Override title
|
|
${BUN_X} {baseDir}/scripts/main.ts article.md --title "My Article"
|
|
```
|
|
|
|
## Output
|
|
|
|
**File location**: Same directory as input markdown file.
|
|
- Input: `/path/to/article.md`
|
|
- Output: `/path/to/article.html`
|
|
|
|
**Conflict handling**: If HTML file already exists, it will be backed up first:
|
|
- Backup: `/path/to/article.html.bak-YYYYMMDDHHMMSS`
|
|
|
|
**JSON output to stdout:**
|
|
|
|
```json
|
|
{
|
|
"title": "Article Title",
|
|
"author": "Author Name",
|
|
"summary": "Article summary...",
|
|
"htmlPath": "/path/to/article.html",
|
|
"backupPath": "/path/to/article.html.bak-20260128180000",
|
|
"contentImages": [
|
|
{
|
|
"placeholder": "MDTOHTMLIMGPH_1",
|
|
"localPath": "/path/to/img.png",
|
|
"originalPath": "imgs/image.png"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Themes
|
|
|
|
| Theme | Description |
|
|
|-------|-------------|
|
|
| `default` | Classic - traditional layout, centered title with bottom border, H2 with white text on colored background |
|
|
| `grace` | Elegant - text shadow, rounded cards, refined blockquotes (by @brzhang) |
|
|
| `simple` | Minimal - modern minimalist, asymmetric rounded corners, clean whitespace (by @okooo5km) |
|
|
| `modern` | Modern - large radius, pill-shaped titles, relaxed line height (pair with `--color red` for traditional red-gold style) |
|
|
|
|
## Supported Markdown Features
|
|
|
|
| Feature | Syntax |
|
|
|---------|--------|
|
|
| Headings | `# H1` to `###### H6` |
|
|
| Bold/Italic | `**bold**`, `*italic*` |
|
|
| Code blocks | ` ```lang ` with syntax highlighting |
|
|
| Inline code | `` `code` `` |
|
|
| Tables | GitHub-flavored markdown tables |
|
|
| Images | `` |
|
|
| Links | `[text](url)`; add `--cite` to move ordinary external links into bottom references |
|
|
| Blockquotes | `> quote` |
|
|
| Lists | `-` unordered, `1.` ordered |
|
|
| Alerts | `> [!NOTE]`, `> [!WARNING]`, etc. |
|
|
| Footnotes | `[^1]` references |
|
|
| Ruby text | `{base|annotation}` |
|
|
| Mermaid | ` ```mermaid ` diagrams |
|
|
| PlantUML | ` ```plantuml ` diagrams |
|
|
|
|
## Frontmatter
|
|
|
|
Supports YAML frontmatter for metadata:
|
|
|
|
```yaml
|
|
---
|
|
title: Article Title
|
|
author: Author Name
|
|
description: Article summary
|
|
---
|
|
```
|
|
|
|
If no title is found, extracts from first H1/H2 heading or uses filename.
|
|
|
|
## Extension Support
|
|
|
|
Custom configurations via EXTEND.md. See **Preferences** section for paths and supported options.
|