SuperAPI AI 工具集

baoyu-markdown-to-html

写作与研究

查看项目

更新于 10-16 04:38

技能介绍

用途

baoyu-markdown-to-html 用于把 Markdown 文件转换为样式化 HTML,输出带内联 CSS 的页面,针对微信公众号及其他平台做了优化。转换入口为脚本 scripts/main.ts。

主要能力

  • 内联 CSS 的 HTML 输出,微信公众号等平台优化。
  • 内置主题:default(经典布局,居中标题带下边框,H2 为彩底白字)、grace(优雅,文字阴影、圆角卡片、精修引用,作者 @brzhang)、simple(极简,非对称圆角、留白,作者 @okooo5km)、modern(大圆角、胶囊标题、宽松行高,可配 --color red 实现传统红金风格)。
  • 可调项:主色(预设名或十六进制)、字体(sans、serif、serif-cjk、mono 或 CSS 值)、字号(14/15/16/17/18px)、标题覆盖、保留首个标题等。
  • 颜色预设:blue #0F4C81、green #009874、vermilion #FA5151、yellow #FECE00、purple #92617E、sky #55C9EA、rose #B76E79、olive #556B2F、black #333333、gray #A9A9A9、pink #FFB7C5、red #A93226、orange #D97757(modern 默认)。
  • Markdown 支持:标题(H1–H6)、粗体/斜体、带语法高亮的代码块、行内代码、GitHub 风格表格、图片、链接、引用、无序/有序列表、Alerts(> [!NOTE] 等)、脚注、Ruby 注音、Mermaid、PlantUML。
  • Mermaid:```mermaid 代码块通过无头 Chrome(CDP)渲染为 PNG,缓存在 imgs/.mermaid-cache/mermaid-<hash>.png;缓存键包含代码、主题、缩放、目标宽度、背景和 Mermaid 版本。Mermaid 相关选项:--mermaid-theme、--mermaid-scale(≤4)、--mermaid-width(默认 860)、--mermaid-bg(white/transparent/#hex)、--no-mermaid。
  • 引用模式:默认关闭;仅在用户明确要求或传 --cite 时启用,将普通外链渲染为编号上标并汇总到文末「引用連結」;https://mp.weixin.qq.com/... 链接保持直链;链接文本等于 URL 的裸链接保持内联。
  • Frontmatter:支持 YAML frontmatter(title、author、description);无标题时从首个 H1/H2 提取或使用文件名。

使用方式

运行命令:

${BUN_X} {baseDir}/scripts/main.ts <markdown_file> [options]

BUN 运行时解析:若已安装 bun 用 bun;否则若有 npx 用 npx -y bun;都不存在时建议安装 bun。{baseDir} 为该 SKILL.md 所在目录。

常用示例:

  • 基础转换:${BUN_X} {baseDir}/scripts/main.ts article.md
  • 指定主题:${BUN_X} {baseDir}/scripts/main.ts article.md --theme grace
  • 主题加自定义色:${BUN_X} {baseDir}/scripts/main.ts article.md --theme modern --color red
  • 启用文末引用:${BUN_X} {baseDir}/scripts/main.ts article.md --cite
  • 保留首个标题:${BUN_X} {baseDir}/scripts/main.ts article.md --keep-title
  • 覆盖标题:${BUN_X} {baseDir}/scripts/main.ts article.md --title "My Article"

交互提问规则

当需要向用户提问时,按优先级:优先使用当前 agent 运行时内置的用户输入工具(如 AskUserQuestion、request_user_input、clarify、ask_user 等);若无则退化为编号纯文本消息,请用户回复对应编号/答案。若工具支持单次多问,合并为一次调用;仅支持单问时按优先级逐个提问。文中 AskUserQuestion 为示例,其他运行时请替换为本地等价工具。

偏好配置 EXTEND.md

按优先级查找,首个命中生效:

  1. .baoyu-skills/baoyu-markdown-to-html/EXTEND.md(项目)
  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(用户主目录)

均未找到则用默认值。EXTEND.md 支持:默认主题、自定义 CSS 变量、代码块样式、Mermaid 默认项(mermaid_theme、mermaid_scale、mermaid_background)。

工作流程

Step 0 预检查(中文内容):仅当输入文件包含中文文本时执行。读取输入 Markdown,检测是否含 CJK 字符(中/日/韩);若无 CJK 跳过到 Step 1。若检测到 CJK 且 baoyu-format-markdown skill 可用,用 AskUserQuestion 询问是否先格式化(可修复标点内嵌粗体标记导致的 ** 解析失败、CJK/英文间距问题);同意则调用该 skill 格式化后再作为输入,拒绝则继续用原文件。

Step 1 决定主题,顺序为:用户显式指定(CLI --theme 或对话)→ 本 skill 的 EXTEND.md default_theme → baoyu-post-to-wechat 的 EXTEND.md default_theme(跨 skill 回退)。若来自 EXTEND.md 则直接使用不再询问;均无则用 AskUserQuestion 确认。跨 skill 检查仅在自身 EXTEND.md 无 default_theme 时,读取 $HOME/.baoyu-skills/baoyu-post-to-wechat/EXTEND.md 查找 default_theme。

Step 1.5 决定引用模式:默认关闭,不主动询问;仅当用户明确要求「微信外鏈轉底部引用」「底部引用」「文末引用」或传 --cite 时启用。

Step 2 转换:${BUN_X} {baseDir}/scripts/main.ts <markdown_file> --theme <theme> [--cite]

Step 3 报告结果:显示 JSON 结果中的输出路径;若创建了备份则一并提示。

输出

文件位置:与输入 Markdown 同目录。输入 /path/to/article.md,输出 /path/to/article.html。若 HTML 已存在会先备份为 /path/to/article.html.bak-YYYYMMDDHHMMSS。stdout 输出 JSON,包含 title、author、summary、htmlPath、backupPath,以及 contentImages、mermaidImages 等字段。

适用场景

  • 将 Markdown 文章转为可直接粘贴/发布到微信公众号的样式化 HTML。
  • 需要代码高亮、表格、引用、脚注、Mermaid/PlantUML 图表等丰富排版的文档发布。
  • 需要通过 EXTEND.md 统一团队默认主题、配色与 Mermaid 参数的场景。
  • 需要把外链统一收敛为文末编号引用的排版需求。

限制

  • Mermaid 渲染依赖系统安装 Chrome/Chromium/Edge;不可用或渲染失败时回退为 <pre class="mermaid">,转换仍可成功。
  • 运行依赖 bun 或 npx(npx -y bun);两者都无时需先安装 bun。
  • 引用模式默认关闭,不会主动启用。
  • Mermaid 渲染缩放需为正数且不超过 4。

暂未提供

关于收费、价格、平台覆盖的完整清单、具体渲染性能数据及官方支持渠道等信息,资料中暂未提供。