This is a full pipeline for creating and publishing WeChat Official Account articles. It handles two paths: either AI generates content from keywords or URLs (with built-in templates for openings, closings, and structure), or you skip generation and publish existing Markdown or HTML files directly. The generation side is opinionated, it forces a conversational tone with specific phrases like "你有没有遇到过这种情况" and requires analogies throughout. The publishing side is practical, it downloads images, strips metadata, inlines CSS, and pushes to WeChat via API or browser automation. Includes theme support for Markdown conversion and automatic dependency installation via Bun. If you write for Chinese audiences on WeChat and want structure enforced or need to batch process existing articles, this does both.
npx -y skills add alpha-hecoding/awesome-skills --skill wechat-article-maker --agent claude-codeInstalls into .claude/skills of the current project.
匹配用户语言:使用用户所用的语言进行回应。用户用中文则用中文回应,用英文则用英文回应。
wechat-article-maker/
├── scripts/ # TypeScript 源文件
│ ├── wechat-api.ts # API 发布逻辑
│ ├── wechat-article.ts # 浏览器发布逻辑
│ ├── wechat-browser.ts # 图文发布逻辑
│ ├── image-utils.ts # 图片处理工具(sharp 集成)
│ ├── base64-utils.ts # Base64 图片提取工具
│ ├── generate-cover.ts # 封面生成逻辑
│ ├── md-to-wechat.ts # Markdown 转换逻辑
│ ├── summary-utils.ts # 文章摘要工具
│ ├── ensure-deps.ts # 依赖自动安装
│ └── md/ # Markdown 渲染引擎
│ ├── render.ts
│ ├── themes/ # 主题样式
│ └── extensions/ # 扩展插件
├── templates/ # 🆕 文章创作模板库
│ ├── opening_patterns.md # 开篇模式库
│ ├── closing_patterns.md # 结尾模式库
│ ├── language_rules.md # 语言风格规则
│ └── structure_guide.md # 结构模板
├── styles/ # 🆕 文章样式
│ └── base_style.css # 基础样式
├── examples/ # 🆕 示例文章
│ ├── beginner_article.html
│ ├── intermediate_article.html
│ └── advanced_article.html
├── references/ # 参考文档
├── SKILL.md # 技能文档
├── package.json # 依赖锁定
└── README.md # 项目说明
Agent 执行:确定此 SKILL.md 目录为 SKILL_DIR,所有命令通过 npx -y bun 运行:
# 设置技能目录
SKILL_DIR="${SKILL_DIR}"
# 所有脚本通过 npx -y bun 运行(跨平台统一)
npx -y bun "${SKILL_DIR}/scripts/wechat-api.ts" article.md --inline-css
npx -y bun "${SKILL_DIR}/scripts/md-to-wechat.ts" article.md --theme grace
npx -y bun "${SKILL_DIR}/scripts/generate-cover.ts" --title "标题" --output cover.jpg
依赖自动安装:脚本首次运行时会自动检测并安装所需依赖,无需手动操作。
自动安装:所有依赖会在脚本首次运行时自动安装,无需手动操作。
运行时要求:
npx -y bun 使用)核心依赖(自动安装):
front-matter - Frontmatter 解析highlight.js - 代码高亮marked - Markdown 渲染引擎reading-time - 阅读时间计算juice - CSS 内联转换可选依赖(封面图生成):
@napi-rs/canvas - 高性能图片生成sharp - 图片处理库依赖说明:
sharp 会在首次运行时通过 scripts/ensure-deps.ts 自动安装generate-cover 会自动生成 SVG 格式的封面图(微信也支持)本技能提供双重能力的微信公众号文章工作流:
关键词/URL → AI生成 → HTML → 图片清洗 → 发布
HTML/MD文件/链接 → 清洗 → 发布(跳过生成)
使用 Bash 检查 EXTEND.md 存在性(优先级顺序):
# 检查项目级别
test -f .awesome-skills/wechat-article-maker/EXTEND.md && echo "project"
# 检查用户级别(跨平台:$HOME 在 macOS/Linux/WSL 上都可用)
test -f "$HOME/.awesome-skills/wechat-article-maker/EXTEND.md" && echo "user"
┌────────────────────────────────────────────────────────────┬───────────────────┐ │ 路径 │ 位置 │ ├────────────────────────────────────────────────────────────┼───────────────────┤ │ .awesome-skills/wechat-article-maker/EXTEND.md │ 项目目录 │ ├────────────────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.awesome-skills/wechat-article-maker/EXTEND.md │ 用户主目录 │ └────────────────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐ │ 结果 │ 操作 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 找到 │ 读取、解析、应用设置 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 未找到 │ 使用默认值 │ └───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md 支持:默认主题 | 默认发布方法(api/browser)| 默认作者 | Chrome 配置文件路径
根据用户输入自动识别并选择工作流程:
| 输入类型 | 识别方式 | 工作流程 | 是否生成 |
|---|---|---|---|
| 文本内容 | 不包含链接,也不是文件路径 | 流程1:内容创作 | ✅ 需要生成 |
| 文本 + 参考链接 | 包含链接,但主体是文本描述 | 流程1:内容创作(含链接分析) | ✅ 需要生成 |
| 关键词 | 明确说"写一篇关于X的文章" | 流程1:内容创作 | ✅ 需要生成 |
| 单个文章链接 | 仅包含 URL,或说"发布这篇文章" | 流程2:链接发布 | ❌ 跳过生成 |
| Markdown 文件 | 以 .md 结尾的文件路径 | 流程3:Markdown发布 | ❌ 跳过生成 |
| HTML 文件 | 以 .html 结尾的文件路径 | 流程4:HTML发布 | ❌ 跳过生成 |
用户输入 → 自动识别
─────────────────────────────────────────────────────────────
"写一篇关于 Docker 的文章" → 流程1(创作)
"帮我生成一篇介绍 MCP 的技术文章" → 流程1(创作)
"https://blog.example.com/docker-tutorial" → 流程2(链接发布)
"发布这个链接到公众号:https://..." → 流程2(链接发布)
"./articles/my-article.md" → 流程3(MD发布)
"发布 ./posts/tutorial.html" → 流程4(HTML发布)
如果自动识别不确定,使用 AskUserQuestion 确认:
header: "操作类型"
选项:
- 创作新文章 - 基于输入内容生成文章
- 直接发布 - 跳过生成,直接处理并发布
当用户输入文本内容、关键词或带参考链接的内容时使用此流程。
复制此清单并在完成时勾选:
内容创作进度:
- [ ] 步骤 0: 加载偏好设置
- [ ] 步骤 1: 识别输入类型
- [ ] 步骤 2: 信息收集(关键词/URL)
- [ ] 步骤 3: 询问创作参数
- [ ] 步骤 4: 选择结构模板
- [ ] 步骤 5: 撰写开篇
- [ ] 步骤 6: 撰写主体内容
- [ ] 步骤 7: 撰写结尾
- [ ] 步骤 8: 生成 HTML
- [ ] 步骤 9: 质量检查
- [ ] 步骤 10: 用户确认
- [ ] 步骤 11: 图片处理与发布
- [ ] 步骤 12: 完成报告
检查并加载 EXTEND.md 设置(见上方偏好设置部分)。
根据输入内容判断:
使用 AskUserQuestion 询问:
文章创作配置
问题1:文章风格
header: "风格"
选项:
- guide(指南型)- 全面系统,多角度讲解(推荐)
- tutorial(教程型)- 步骤清晰,循序渐进
- analysis(分析型)- 深入透彻,对比分析
- story(故事型)- 情境代入,经验分享
问题2:文章长度
header: "长度"
选项:
- short(2000-3000字)- 快速阅读
- medium(3000-5000字)- 平衡深度与可读性(推荐)
- long(5000-8000字)- 深度长文
问题3:技术深度
header: "深度"
选项:
- beginner(入门)- 多用比喻,减少术语
- intermediate(中级)- 平衡理论与实践(推荐)
- advanced(高级)- 深入细节,专业术语
问题4:是否包含代码示例
header: "代码"
选项:
- true - 包含可运行的代码示例
- false - 仅文字描述
问题5:是否进行网络调研
header: "调研"
选项:
- true - 使用 WebSearch 调研关键词(推荐)
- false - 仅基于已有知识生成
根据 style 参数选择模板(详见 templates/structure_guide.md):
guide(指南型)- 最常用:
# [标题]
[开篇引入 - 痛点场景]
---
## 什么是[X]?
[概念介绍 + 比喻说明]
---
## [X]有什么厉害之处?
### [特性1]
[说明 + 实例]
### [特性2]
[说明 + 实例]
### [特性3]
[说明 + 实例]
---
## 怎么使用[X]?
### [方式1]
[详细说明 + 代码示例]
### [方式2]
[详细说明 + 代码示例]
---
## 实战案例
### 案例一:[场景]
[背景 + 问题 + 解决方案 + 效果]
### 案例二:[场景]
[背景 + 问题 + 解决方案 + 效果]
---
## [X]适合谁用?
### 如果你是[角色1]
[适用说明]
### 如果你是[角色2]
[适用说明]
---
## 写在最后
[总结 + 金句 + 互动]
tutorial(教程型):
# [标题]
[开篇引入 - 痛点场景]
---
## 准备工作
[环境要求]
[前置知识]
[工具安装]
---
## 步骤一:[步骤名称]
[详细说明]
[代码示例]
[注意事项]
---
## 步骤二:[步骤名称]
[详细说明]
[代码示例]
[注意事项]
---
## 常见问题
### 问题1:[问题描述]
[解决方案]
---
## 写在最后
[总结 + 行动号召 + 互动]
analysis(分析型)、story(故事型) 模板详见 templates/structure_guide.md
必须遵循模板(详见 templates/opening_patterns.md):
标准开篇模式:
你有没有遇到过这种情况?
[痛点1: 具体场景描述,用口语化表达]
[痛点2: 具体场景描述,用口语化表达]
[痛点3: 具体场景描述,用口语化表达]
说实话,我之前也是这样。
直到我发现了一个[解决方案]——**[主题]**。
[一句话核心价值说明]。
开篇要求:
语言风格要求(详见 templates/language_rules.md):
口语化表达(必须):
比喻和类比(至少 3 个):
反问句和疑问句(适当使用)
表情符号(每段不超过 2 个):
段落撰写规范:
标题生成规范:
文章标题必须包含以下 5 个特点中的至少 3 个:
| 特点 | 说明 | 示例 |
|---|---|---|
| 痛点明确 | 直击目标读者的具体困扰 | 《还在手动改代码?这个工具让你开发效率提升 300%》 |
| 数字吸引 | 用具体数字增加可信度 | 《我花了 3 个月,整理了 1000 个 Python 技巧》 |
| 结果导向 | 承诺可量化的收益或改变 | 《学会这招,你的代码审查通过率提升 90%》 |
| 情绪调动 | 激发好奇心、紧迫感或共鸣 | 《千万别再这样写代码了!后果很严重》 |
| 悬念设置 | 制造悬念引发点击欲望 | 《99% 的程序员都不知道的调试技巧》 |
必须遵循模板(详见 templates/closing_patterns.md):
标准结尾模式:
## 写在最后
[总结要点,2-3句]
[价值提炼,1-2句]
> [金句,一句话朗朗上口]
---
💬 **[互动问题]?**
评论区聊聊~
如果这篇文章对你有帮助,点个**在看**让更多人看到吧 👇
结尾要求:
输出完整的 HTML 文档,包含内联 CSS 样式(参考 styles/base_style.css):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>[文章标题]</title>
<style>
body {
font-family: Optima, "Microsoft YaHei", PingFangSC-regular, serif;
font-size: 16px;
line-height: 1.8;
color: rgb(89, 89, 89);
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
h1 {
font-size: 24px;
color: rgba(53, 179, 120, 1);
font-weight: bold;
margin: 30px 0 15px;
}
h2 {
font-size: 18px;
color: rgb(255, 255, 255);
background: rgb(0, 0, 0);
padding: 2px 10px;
font-weight: bold;
margin: 30px 0 15px;
}
h3 {
font-size: 20px;
color: rgb(53, 179, 120);
font-weight: bold;
margin: 30px 0 15px;
}
strong {
color: rgb(53, 179, 120);
font-weight: bold;
}
blockquote {
margin: 20px 0;
padding: 10px 10px 10px 20px;
border-left: 3px solid rgb(53, 179, 120);
background: rgb(251, 249, 253);
}
code {
font-family: Consolas, Monaco, Menlo, monospace;
font-size: 14px;
background: rgba(27, 31, 35, 0.05);
padding: 2px 4px;
border-radius: 4px;
color: rgba(30, 107, 184, 1);
}
pre {
background: #282c34;
padding: 15px;
border-radius: 5px;
overflow-x: auto;
margin: 10px 0;
}
pre code {
background: none;
padding: 0;
color: #abb2bf;
}
</style>
</head>
<body>
[文章内容,转为HTML标签]
</body>
</html>
⚠️ 重要:代码块格式规范
代码块必须使用标准的 <pre><code> 标签,禁止使用 <section> 或其他标签模拟代码块:
✅ 正确格式:
<pre><code class="language-json">{
"name": "example"
}</code></pre>
❌ 错误格式(不支持):
<!-- 禁止使用 section 模拟代码块 -->
<section style="background: #f6f8fa; padding: 15px; ...">
{<br>
"name": "example"<br>
}
</section>
语言标识:
<code> 标签上添加 class="language-xxx" 属性json, jsonc, javascript, typescript, python, bash, go, rust, java, c, cpp, sql 等<code class="language-python">, <code class="language-bash">自动化处理:
<pre><code> 格式(无需手动干预)wechat-api.ts 会尝试自动识别并转换 background: #f6f8fa 的 <section> 标签内容检查:
风格检查:
格式检查:
可读性检查:
# 生成 slug(文件名)
title="文章标题"
slug=$(echo "$title" | \
iconv -t ascii//TRANSLIT 2>/dev/null | \
tr '[:upper:]' '[:lower:]' | \
tr ' ' '-' | \
tr -cd '[:alnum:]-' | \
cut -c1-50)
# 创建目录并保存
output_dir="wechat-articles/$(date +%Y-%m-%d)"
mkdir -p "$output_dir"
echo "$html_content" > "$output_dir/$slug.html"
使用 AskUserQuestion:
header: "下一步"
选项:
- 直接发布 - 转换为微信格式并发布(推荐)
- 修改内容 - 说明需要调整的部分
- 仅保存文件 - 不发布,稍后手动处理
如果用户选择直接发布:
处理图片:
CSS 内联转换(如需要):
npx -y bun "${SKILL_DIR}/scripts/wechat-api.ts" \
"$output_dir/$slug.html" \
--inline-css
准备封面图(强制规则):
发布到微信:
✓ 微信公众号文章创作与发布完成!
创作信息:
• 输入类型:关键词/URL
• 文章风格:guide
• 文章长度:3500字
• 技术深度:intermediate
发布信息:
• 标题:[标题]
• 封面:自动生成
• 图片:3张(已清洗)
结果:
✓ 草稿已保存到微信公众号
• media_id: [ID]
下一步:
→ 管理草稿:https://mp.weixin.qq.com
生成的文件:
• $output_dir/$slug.html(HTML 文件)
当用户提供单个文章链接时,跳过生成阶段,直接下载、清洗、发布。
链接发布进度:
- [ ] 步骤 0: 加载偏好设置
- [ ] 步骤 1: 链接验证
- [ ] 步骤 2: 文章下载与解析
- [ ] 步骤 3: 图片下载与清洗
- [ ] 步骤 4: 样式转换(CSS 内联)
- [ ] 步骤 5: 用户确认
- [ ] 步骤 6: 准备封面图
- [ ] 步骤 7: 执行发布
- [ ] 步骤 8: 完成报告
无生成步骤:直接处理原始内容并发布。
参考原 SKILL.md 流程2(保持不变,从第588行开始)。
当用户提供 .md 文件时,跳过生成阶段,直接渲染、处理、发布。
# 一键转换并发布
npx -y bun "${SKILL_DIR}/scripts/md-to-wechat.ts" \
"$markdown_file" \
--theme grace \
--output ./output
# 然后使用 API 发布
npx -y bun "${SKILL_DIR}/scripts/wechat-api.ts" \
"$html_output" \
--inline-css \
--cover "$cover_image"
无生成步骤:直接渲染并发布。
当用户提供 .html 文件时,跳过所有处理阶段,直接发布。
# 直接发布(自动内联 CSS)
npx -y bun "${SKILL_DIR}/scripts/wechat-api.ts" \
"$html_file" \
--title "文章标题" \
--summary "摘要" \
--cover "$cover_image" \
--inline-css
注意:必须使用 --inline-css 参数,否则样式会丢失。
无生成步骤:直接发布。
用于发布短内容 + 多张图片(最多 9 张)。
# 从 Markdown 文件发布
npx -y bun "${SKILL_DIR}/scripts/wechat-browser.ts" \
--markdown article.md \
--images ./images/
# 直接指定内容和图片
npx -y bun "${SKILL_DIR}/scripts/wechat-browser.ts" \
--title "标题" \
--content "内容" \
--image img1.png \
--image img2.png \
--submit
详见:references/image-text-posting.md
本技能内置完整的文章创作模板库,位于 templates/ 目录。
文件:templates/opening_patterns.md
包含 4 种开篇模式:
文件:templates/closing_patterns.md
包含 4 种结尾模式:
文件:templates/language_rules.md
核心原则:
文件:templates/structure_guide.md
包含 4 种文章结构的详细模板:
文件:styles/base_style.css
定义文章的统一样式:
位于 examples/ 目录:
beginner_article.html - 入门深度示例intermediate_article.html - 中级深度示例advanced_article.html - 高级深度示例内置三种主题(位于 scripts/md/themes/):
scripts/md/themes/ 创建新的 CSS 文件base.css 扩展样式--theme <name> 参数应用从以下位置加载配置(优先级从高到低):
<cwd>/.awesome-skills/.env~/.awesome-skills/.env必需的环境变量(API 发布方式):
WECHAT_APP_ID=your_app_id
WECHAT_APP_SECRET=your_app_secret
可选的环境变量:
WECHAT_BROWSER_CHROME_PATH=/path/to/chrome # 自定义 Chrome 路径
# wechat-article-maker 配置
## 默认设置
- 主题:grace
- 发布方式:api
- 作者:AI爱好者
- Chrome 配置文件:~/.chrome-wechat
## 自动操作
- 自动生成封面:true
- 自动清洗图片:true
- 自动内联样式:true
使用 markdown-it 及扩展(位于 scripts/md/):
render.tsalert.ts - GitHub 风格提示块footnotes.ts - 脚注支持katex.ts - 数学公式toc.ts - 目录生成infographic.ts - 信息图ruby.ts - 注音slider.ts - 滑块plantuml.ts - UML 图表Base64 图片提取(scripts/base64-utils.ts):
自动检测并处理 HTML 中嵌入的 base64 图片:
<img src="data:image/...;base64,..."> 格式的图片extracted-images/base64-*.jpg)处理示例:
<!-- 原始 HTML -->
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD..." alt="示例图片">
<!-- 处理后 -->
<img src="extracted-images/base64-0-a1b2c3d4.jpg" alt="示例图片">
元数据清洗(scripts/image-utils.ts):
内置 sharp 库提供可靠的图片处理能力:
双引擎清理策略:
| 方法 | 优先级 | 说明 |
|---|---|---|
| Sharp 重新编码 | 首选 | 完全重新编码图片,100% 移除元数据 |
| 手动解析 | 后备 | 解析 JPEG 段结构,跳过非标准标记 |
自动重试逻辑:
try {
await uploadImage(imageBuffer);
} catch (error) {
if (error.code === 40113) {
// 强制使用 sharp 深度清理后重试
const cleanedBuffer = await cleanImage(imageBuffer, true);
await uploadImage(cleanedBuffer);
}
}
使用 juice 库将 CSS 规则转换为内联样式:
之前:
<style>
h1 { color: blue; font-size: 24px; }
</style>
<h1>标题</h1>
之后:
<h1 style="color: blue; font-size: 24px;">标题</h1>
为什么需要:微信公众号编辑器不支持 <style> 标签,只接受内联样式。
方式 1: 多模态大模型生成(推荐)
如果 Agent 具备文生图能力,优先根据文章内容生成定制化封面图。
方式 2: 纯 Node.js(无系统依赖)
脚本:scripts/generate-cover.ts
npx -y bun "${SKILL_DIR}/scripts/generate-cover.ts" \
--title "文章标题" \
--output cover.jpg \
--gradient-start "#667eea" \
--gradient-end "#764ba2"
特性:
| 功能 | 流程1: 内容创作 | 流程2: 链接发布 | 流程3: MD发布 | 流程4: HTML发布 | 图文发布 |
|---|---|---|---|---|---|
| 输入类型 | 文本/关键词/URL | 单个链接 | .md 文件 | .html 文件 | 短文+图片 |
| 是否生成 | ✅ 是 | ❌ 否 | ❌ 否 | ❌ 否 | ❌ 否 |
| AI创作 | ✅ | ❌ | ❌ | ❌ | ❌ |
| 内容理解 | ✅ | ✅ | ❌ | ❌ | ❌ |
| Markdown转换 | ✅ | ❌ | ✅ | ❌ | ✅ |
| 主题样式 | ✅ generator样式 | 保留原样 | ✅ 3种主题 | 保留原样 | ❌ |
| 图片清洗 | ✅ | ✅ | ✅ | ✅ | ❌ |
| CSS内联 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 封面生成 | ✅ | ✅ | ✅ | ✅ | ❌ |
| API发布 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 浏览器发布 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 适用场景 | 原创内容 | 转载/分享 | 本地文章 | 现成HTML | 图片展示 |
| 问题 | 解决方案 |
|---|---|
| 依赖未安装 | 依赖会在首次运行时自动安装 |
| Cannot find module | 尝试重新运行命令,会自动安装缺失依赖 |
| 封面图生成 SVG 而非 PNG/JPEG | 可选依赖未安装,运行 cd ${SKILL_DIR}/scripts && npm install @napi-rs/canvas 或接受 SVG 格式 |
| 链接无法访问 | 检查网络连接,尝试使用代理或 VPN |
| 图片上传失败 (40113) | sharp 自动深度清理元数据后重试,无需手动处理 |
| 样式丢失 | 确保使用了 --inline-css 参数 |
| API 错误 40001 | access_token 无效或过期,检查 API 凭证 |
| API 错误 40164 (invalid ip) | 在微信公众号后台添加服务器 IP 到白名单: mp.weixin.qq.com → 开发 → 基本配置 → IP白名单 |
| Chrome 未找到 | 设置环境变量 WECHAT_BROWSER_CHROME_PATH |
| 标题/摘要缺失 | 手动指定 --title 和 --summary 参数 |
| 粘贴失败(浏览器方式) | 检查系统剪贴板权限 |
| Markdown 转换错误 | 检查 Markdown 语法,确保 frontmatter 格式正确 |
default 主题grace 主题(推荐)simple 主题用户:创作一篇关于 Docker 容器化的文章
Agent:
✓ 识别为内容创作模式
✓ WebSearch 调研关键词
✓ 询问参数
✓ 生成 3500 字文章(guide风格,中级深度)
✓ 转换为 HTML
✓ 清洗图片
✓ 发布到微信
结果:草稿已保存(media_id: abc123...)
用户:发布这篇文章到公众号:https://blog.example.com/docker
Agent:
✓ 识别为链接发布模式
✓ 下载文章 HTML 和 3 张图片
✓ 清洗图片元数据
✓ CSS 内联转换
✓ 展示处理结果
✓ 用户确认
✓ 发布到微信
结果:草稿已保存(无生成步骤)
用户:发布 ./articles/docker-tutorial.md
Agent:
✓ 识别为 Markdown 发布模式
✓ 解析 frontmatter
✓ 渲染 HTML(grace 主题)
✓ 下载 2 张远程图片
✓ 自动生成封面
✓ 发布到微信
结果:草稿已保存(无生成步骤)
脚本会在首次运行时通过 scripts/ensure-deps.ts 自动安装以下依赖:
必需包:
front-matter - Frontmatter 解析highlight.js - 代码高亮marked - Markdown 渲染引擎reading-time - 阅读时间计算juice - CSS 内联转换库可选包(封面图生成):
@napi-rs/canvas - 高性能图片生成sharp - 图片处理库本技能整合了以下功能和技术:
重大更新:整合 wechat-article-generator 与 wechat-article-maker
md-to-wechat.ts 脚本支持 --output 参数技能版本:2.0.0 最后更新:2026-03-24 作者:整合自 wechat-article-generator、wechat-article-writer 和 baoyu-post-to-wechat
juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills