md2wechat by geekjourneyx/md2wechat-skill
npx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat将 Markdown 文章转换为微信公众号格式的 HTML(内联 CSS),并可选择上传至草稿箱。支持两种模式:
# 预览 HTML(API 模式,快速)
md2wechat convert article.md --preview
# 生成 AI 请求/提示(AI 模式,主题化)
md2wechat convert article.md --mode ai --theme autumn-warm --preview
# 上传到微信公众号草稿箱
md2wechat convert article.md --draft --cover cover.jpg
在要求用户编辑配置之前,按顺序检查以下位置:
~/.config/md2wechat/config.yaml(默认且推荐)MD2WECHAT_BASE_URLmd2wechat.yaml / md2wechat.yml / md2wechat.json广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
如果用户询问如何切换 API 域名,请更改:
api.md2wechat_base_url,或MD2WECHAT_BASE_URL默认 API 域名:
https://www.md2wechat.cn
备用域名:
https://md2wechat.app
默认转换模式:
--mode,convert 应视为 api 模式--mode ai 或明确请求 AI 主题化转换时,才使用 AI 模式内置资源:
MD2WECHAT_THEMES_DIR / MD2WECHAT_WRITERS_DIR 进行显式覆盖themes/ / writers/ 目录~/.config/md2wechat/themes/ / ~/.config/md2wechat/writers/提示词目录:
capabilities --json 作为第一步发现providers list --json、themes list --json 和 prompts list --jsonMD2WECHAT_PROMPTS_DIR → 项目本地 prompts/ → ~/.config/md2wechat/prompts/ → 打包的提示词推荐的发现流程:
md2wechat capabilities --json
md2wechat providers list --json
md2wechat themes list --json
md2wechat prompts list --json
md2wechat prompts list --kind image --archetype cover --json
对于图片预设,不要假设 archetype 是唯一标准。一些信息图预设也可用作封面。在选择预设之前,请从 prompts show --json 中检查 primary_use_case、compatible_use_cases、recommended_aspect_ratios 和 default_aspect_ratio。
当任务依赖于特定模板时,先检查它:
md2wechat prompts show cover-default --kind image --json
md2wechat prompts show cover-hero --kind image --archetype cover --tag hero --json
md2wechat prompts show infographic-dark-ticket-cn --kind image --archetype infographic --tag ticket --json
md2wechat prompts show infographic-handdrawn-sketchnote --kind image --archetype infographic --tag sketchnote --json
md2wechat prompts show infographic-apple-keynote-premium --kind image --archetype infographic --tag apple --json
md2wechat prompts show infographic-victorian-engraving-banner --kind image --archetype infographic --tag victorian --json
md2wechat prompts render cover-default --kind image --var article_title='Example' --json
md2wechat generate_cover --article article.md
md2wechat generate_infographic --article article.md --preset infographic-comparison
md2wechat generate_infographic --article article.md --preset infographic-dark-ticket-cn --aspect 21:9
md2wechat generate_infographic --article article.md --preset infographic-handdrawn-sketchnote
md2wechat generate_infographic --article article.md --preset infographic-apple-keynote-premium
md2wechat generate_infographic --article article.md --preset infographic-victorian-engraving-banner --aspect 21:9
md2wechat generate_image --preset cover-hero --article article.md --model gemini-3-pro-image-preview
你也可以要求我使用自然语言生成图片:
"帮我在 article.md 的开头生成一张产品概念图"
"在第二段后面添加一张展示产品功能的图片"
"为 article.md 中的对比部分创建一张图表"
我将:
"生成一张可爱猫咪坐在窗台上的图片"
"创建一张产品概念图:现代智能家居设备,白色设计"
"制作一张展示用户流程的图表"
我将:
你也可以要求我使用创作者风格帮助撰写文章:
"用 Dan Koe 风格写一篇关于自律的文章"
"帮我写一篇关于生产力的文章,语气要犀利、接地气"
"创作一篇关于我旅行经历的叙事风格文章"
我将:
"用更吸引人的风格重写这篇文章"
"用 Dan Koe 的写作风格润色我的 article.md"
"让这个内容更深刻、更犀利"
我将:
"为我的关于自律的文章生成一张封面图片"
"为我的哲学文章创建一张维多利亚木刻风格的封面"
"移除这篇文章中的 AI 痕迹:article.md"
"人性化处理这段文本,使其听起来更自然"
"以温和强度移除 AI 写作痕迹"
"重写这段文字,使其听起来不那么像 AI 生成的"
我将:
人性化处理可以与写作风格结合使用:
"用 Dan Koe 风格写作并移除 AI 痕迹"
"使用 dan-koe 风格,然后对结果进行人性化处理"
"显示所有可用的写作风格"
"我可以使用哪些写作风格?"
可用的写作风格:
用户可以在 writers/ 目录中添加自定义风格。详情请参阅 writers/README.md。
作为 Agent 工作时:
capabilities --jsonproviders list --jsonthemes list --jsonprompts list --json复制此清单以跟踪进度:
进度:
- [ ] 步骤 1:分析 Markdown 结构和图片
- [ ] 步骤 2:确认转换模式(API/AI)和主题
- [ ] 步骤 3:生成带内联 CSS 的 HTML
- [ ] 步骤 4:处理图片(上传到微信公众号)
- [ ] 步骤 5:替换 HTML 中的图片 URL
- [ ] 步骤 6:预览或上传到草稿箱
读取 Markdown 文件并提取:
| 元素 | 如何提取 |
|---|---|
| 标题 | 第一个 # 标题 或文件名 |
| 作者 | 在 frontmatter 中查找 Author: 或 作者: |
| 摘要 | 第一段或从内容生成(最多 120 字符) |
| 图片 | 收集所有  引用 |
| 结构 | 标题、列表、代码块、引用、表格 |
图片引用类型:
| 类型 | 语法 | 处理方式 |
|---|---|---|
| 本地 |  | 上传到微信公众号 |
| 在线 |  | 下载然后上传 |
| AI 生成 |  | 通过 AI 生成然后上传 |
| 模式 | 速度 | 风格 | 最适合 |
|---|---|---|---|
| API | 快速(秒级) | 简洁、标准 | 快速发布、技术内容 |
| AI | 较慢(10-30 秒) | 美观、主题化 | 重要文章、品牌内容 |
在选择主题之前,检查实时 CLI 结果:
md2wechat themes list --json
这些是常见的内置示例,并非事实来源:
| 主题 | 描述 | 最适合 |
|---|---|---|
| autumn-warm | 温暖的橙色色调,情感丰富,文学性 | 故事、生活方式、散文 |
| spring-fresh | 清新的绿色色调,自然、充满活力 | 旅行、自然、户外 |
| ocean-calm | 平静的蓝色色调,专业、理性 | 技术文章、商业分析 |
| custom | 使用自定义提示词 | 品牌定制 |
这些是代表性示例。权威列表是 themes list --json。
| 主题 | 描述 | 最适合 |
|---|---|---|
| default | 默认主题,简洁专业 | 通用内容 |
| bytedance | 字节跳动风格 | 科技新闻 |
| apple | 苹果极简风格 | 产品评测 |
| sports | 活跃的运动风格 | 体育内容 |
| chinese | 中国传统文化风格 | 文化文章 |
| cyber | 赛博朋克风格 | 前沿科技 |
询问用户:"您希望使用哪种模式和主题?" - 仅当用户在其请求中未指定时才询问。
默认:如果用户未指定,则使用 API 模式。
请阅读 references/themes.md 仅用于视觉意图和提示词示例。不要将其视为权威的主题清单。
调用 md2wechat CLI:
md2wechat convert article.md --mode api
从 references/themes.md 中读取选定的样式提示词,并生成一个 AI 请求/提示词,供外部模型继续处理,最终生成符合微信公众号安全要求的 HTML,并带有内联 CSS。
重要规则:
style 属性中)<!-- IMG:0 -->、<!-- IMG:1 --> 等安全的 HTML 标签:
<p>、<br>、<strong>、<em>、<u>、<a><h1> 到 <h6><ul>、<ol>、<li><blockquote>、<pre>、<code><table>、<thead>、<tbody>、<tr>、<th>、<td><section>、<span>(带有内联样式)避免使用:
<script>、<iframe>、<form>微信公众号关键点:
<body> 之后立即创建一个主要的 <div> 容器来容纳所有全局样式<p> 标签明确指定 color(否则微信公众号会重置为黑色)<span> 标签:一个带有颜色+文字阴影,一个带有纯色生成 AI 图片有三种方式:
只需用简单的语言描述你想要什么:
用户:"在 article.md 的开头生成一张产品概念图"
用户:"在第三段后面添加一张对比图表"
用户:"在 article.md 中创建一张展示工作流程图的图片"
我如何处理自然语言请求:
注意:直接进行生成。仅当提示词复杂或模糊时才请求确认。
示例对话:
用户:"在我的文章开头添加一张产品图片"
Claude:"我将在 article.md 的开头添加一张产品概念图。
根据您关于'智能家居中心'的文章,我将使用这个提示词:
'一个现代智能家居中心设备,流线型白色设计,带有 LED 指示灯,
简约产品摄影,背景为干净的白色'
我将继续生成图片。"
生成不用于任何文章的图片:
用户:"生成一张可爱猫咪坐在窗台上的图片"
用户:"创建一张产品概念图:现代智能家居设备"
用户:"制作一张展示用户注册流程的图表"
我将:
md2wechat generate_image "prompt"使用时机:你只需要一张图片,不用于任何文章。
直接在 Markdown 中编写图片生成语法:

语法格式:
按顺序处理每个图片引用:
md2wechat upload_image "/path/to/image.png"
响应:
{"success": true, "wechat_url": "https://mmbiz.qpic.cn/...", "media_id": "xxx"}
md2wechat download_and_upload "https://example.com/image.png"
# 使用默认尺寸生成(2048x2048 正方形)
md2wechat generate_image "A cute cat sitting on a windowsill"
# 从打包的提示词预设生成封面图片
md2wechat generate_cover --article article.md
# 从打包的提示词预设生成信息图
md2wechat generate_infographic --article article.md --preset infographic-process
# 为微信公众号封面生成 16:9 比例的图片(推荐)
md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440
微信公众号封面图片:对于文章封面,使用 16:9 横屏比例(推荐 2560x1440),因为它在微信公众号的 feed 流和文章列表中显示效果更好。正方形图片(2048x2048)在预览中会被裁剪。
注意:AI 图片生成需要 IMAGE_API_KEY 环境变量。
图片处理流程:
wechat_url 和 media_id替换 HTML 中的占位符:
<!-- 之前 -->
<!-- IMG:0 -->
<!-- IMG:1 -->
<!-- 之后 -->
<img src="https://mmbiz.qpic.cn/..." />
<img src="https://mmbiz.qpic.cn/..." />
使用图片处理返回的微信公众号 URL。
询问用户:
在 Markdown 代码块中显示 HTML 供用户复制。
创建草稿并运行:
md2wechat convert article.md --draft --cover cover.jpg
草稿上传所需条件:
WECHAT_APPID 环境变量WECHAT_SECRET 环境变量--cover 或内容中的第一张图片)响应:
{"success": true, "media_id": "draft_media_id", "draft_url": "https://mp.weixin.qq.com/..."}
| 变量 | 描述 | 必需 |
|---|---|---|
WECHAT_APPID | 微信公众号 AppID | 是,用于草稿上传 |
WECHAT_SECRET | 微信公众号 API Secret | 是,用于草稿上传 |
| 变量 | 描述 | 必需 |
|---|---|---|
IMAGE_API_KEY | 图片生成 API 密钥 | 用于 AI 图片 |
IMAGE_API_BASE | 图片 API 基础 URL | 用于 AI 图片 |
COMPRESS_IMAGES | 压缩宽度 > 1920px 的图片(true/false) | 否,默认 true |
MAX_IMAGE_WIDTH | 最大宽度(像素) | 否,默认 1920 |
警告:AppSecret 非常重要,请妥善保管!
~/.config/md2wechat/config.yaml # 全局配置
./md2wechat.yaml # 项目配置(优先级更高)
| 错误 | 操作 |
|---|---|
| 缺少配置 | 要求用户设置环境变量或运行 md2wechat config init |
| 图片上传失败 | 记录错误,继续使用占位符 |
| 微信公众号 API 失败 | 显示错误消息,返回 HTML 供手动上传 |
| Markdown 解析错误 | 要求用户检查文件格式 |
| IP 不在白名单中 | 引导用户将 IP 添加到微信公众号白名单(见故障排除) |
输入:simple.md
# My First Article
This is a simple article with no images.
处理流程:
输入:with-images.md
# Travel Diary
Day 1 in Paris:

处理流程:
<!-- IMG:0 --> 占位符的 HTMLupload_image "./photos/eiffel.jpg"输入:story.md
# The Old Library
A story about memories...
处理流程:
用户请求:
"帮我在 article.md 的开头添加一张产品概念图"
处理流程:
结果:图片已生成并上传到微信公众号
输入:mixed.md
# Tech Review



处理流程:
问:出现"AppID 未配置"错误 答:设置 WECHAT_APPID 和 WECHAT_SECRET 环境变量,或运行:
md2wechat config init
问:配置文件不生效 答:检查配置文件位置。支持的位置:
./md2wechat.yaml(当前目录,优先级最高)~/.md2wechat.yaml~/.config/md2wechat/config.yaml问:图片上传失败,提示"invalid filetype" 答:微信公众号支持 JPG、PNG、GIF。确保图片格式正确:
# 使用 ImageMagick 转换
convert input.tiff output.jpg
问:草稿中图片不显示 答:图片必须使用微信公众号托管的 URL(mmbiz.qpic.cn),不能使用外部 URL。
问:AI 图片生成失败 答:检查 IMAGE_API_KEY 是否已设置且 API 基础 URL 正确。
问:出现"IP not in whitelist"错误 答:将你的服务器 IP 添加到微信公众号白名单:
curl ifconfig.me
# 或
curl ip.sb
2. 将 IP 添加到微信公众号: * 访问 微信开发者平台 * 进入设置与开发 → 基本配置 * 找到IP 白名单部分 * 点击"设置"并添加你的 IP * 等待几分钟让更改生效
问:出现"access_token expired"错误 答:程序会自动刷新令牌。如果持续出现:
# 检查配置
md2wechat config show
# 如果需要,重新初始化
md2wechat config init
问:出现"create draft failed"错误 答:可能的原因:
问:出现"content size out of limit"错误 (errcode=45002) 答:微信公众号草稿 API 有内容限制:
如果遇到此错误:
API 模式生成的内联 CSS 更多,这会增加内容大小。对于非常长的文章,请考虑手动编辑或拆分。
问:API 调用频率超限 答:微信公众号有 API 限制。等待并重试:
# 等待 60 秒
sleep 60
# 重试
md2wechat convert article.md --draft
问:在微信公众号编辑器中样式不生效 答:检查:
style 属性(不是 <style> 标签)问:在微信公众号中背景色丢失 答:微信公众号会剥离 <body> 样式。使用主容器:
<div style="background-color: #faf9f5; padding: 40px 10px;">
<!-- 所有内容放在这里 -->
</div>
问:文本颜色不符合预期 答:微信公众号会将 <p> 颜色重置为黑色。始终指定:
<p style="color: #4a413d;">你的文本在这里</p>
问:出现"command not found: md2wechat" 答:Coding-agent skill 默认要求 md2wechat 已安装到 PATH 中,不再自带 runtime wrapper 或执行时下载逻辑。
先安装 CLI,然后重新运行 skill:
curl -fsSL https://github.com/geekjourneyx/md2wechat-skill/releases/download/v2.0.3/install.sh | bash
npx skills add https://github.com/geekjourneyx/md2wechat-skill --skill md2wechat
如果安装程序已完成但当前 shell 仍然找不到 md2wechat,请运行:
export PATH="$HOME/.local/bin:$PATH"
md2wechat version --json
问:AI 模式非常慢 答:AI 模式需要调用 Claude API,耗时 10-30 秒。如需更快结果,请使用 API 模式。
此 skill 假设 md2wechat CLI 已安装并可在 PATH 中找到:
# 显示帮助
md2wechat --help
# 转换并预览
md2wechat convert article.md --preview
# 使用 AI 主题转换
md2wechat convert article.md --mode ai --theme autumn-warm --preview
# 转换并上传到草稿箱
md2wechat convert article.md --draft --cover cover.jpg
# 上传单张图片
md2wechat upload_image photo.jpg
# 下载并上传在线图片
md2wechat download_and_upload https://example.com/image.jpg
# 生成 AI 图片(需要 IMAGE_API_KEY)
md2wechat generate_image "A cute cat sitting on a windowsill"
# 从打包的预设生成封面图片
md2wechat generate_cover --article article.md
# 从打包的预设生成信息图
md2wechat generate_infographic --article article.md --preset infographic-comparison
# 通过预设生成 16:9 比例的微信公众号封面(推荐)
md2wechat generate_image --preset cover-hero --article article.md --size 2560x1440
# 初始化配置
md2wechat config init
# 显示配置
md2wechat config show
# 列出可用的写作风格
md2wechat write --list
# 使用创作者风格写作(交互式)
md2wechat write
# 使用特定风格写作(通过 stdin/管道)
echo "你的想法或内容" | md2wechat write --style dan-koe
# 使用标题和 heredoc 写作
md2wechat write --style dan-koe --title "文章标题" <<EOF
你的内容
EOF
# 使用特定风格写作
md2wechat write --style dan-koe
# 仅生成封面提示词
md2wechat write --style dan-koe --cover-only
# 移除 AI 写作痕迹(人性化处理)
md2wechat humanize article.md
# 人性化处理(指定强度)
md2wechat humanize article.md --intensity aggressive
# 写作并进行人性化处理
md2wechat write --style dan-koe --humanize
# 创建图片消息(小绿书/newspic)
md2wechat create_image_post -t "Title" --images photo1.jpg,photo2.jpg
# 从 Markdown 中提取图片
md2wechat create_image_post -t "Title" -m article.md
# 带有描述和评论
md2wechat create_image_post -t "Title" -c "Description" --images photo.jpg --open-comment
# 预览模式(试运行)
md2wechat create_image_post -t "Test" --images a.jpg,b.jpg --dry-run
创建微信公众号纯图片消息(小绿书/图片消息),最多可包含 20 张图片。
"创建一个标题为'周末旅行'的图片消息,使用 ./photos/ 目录中的照片"
"用 travel.md 中的图片制作一个小绿书消息"
"将这些图片作为图片消息上传:a.jpg, b.jpg, c.jpg"
| 标志 | 短标志 | 描述 |
|---|---|---|
--title | -t | 消息标题(必需) |
--content | -c | 描述文本 |
--images | 逗号分隔的图片路径 | |
--from-markdown | -m | 从 Markdown 文件中提取图片 |
--open-comment | 开启评论 | |
--fans-only | 仅粉丝可评论 | |
--dry-run | 预览而不上传 | |
--output | -o | 将结果保存到 JSON 文件 |
# 基本图片消息
md2wechat create_image_post \
-t "Weekend Trip" \
--images photo1.jpg,photo2.jpg,photo3.jpg
# 从文章中提取图片
md2wechat create_image_post \
-t "Travel Diary" \
-m article.md
# 带有描述并开启评论
md2wechat create_image_post \
-t "Food Blog" \
-c "Today's lunch" \
--images food.jpg \
--open-comment
# 从 stdin 读取描述
echo "Daily check-in" | md2wechat create_image_post \
-t "Daily" \
--images pic.jpg
# 预览模式
md2wechat create_image_post \
-t "Test" \
--images a.jpg,b.jpg \
--dry-run
WECHAT_APPID 和 WECHAT_SECRET周安装量
211
仓库
GitHub Stars
714
首次出现
2026年2月5日
安全审计
Gen Agent Trust HubFail[SocketWarn](/geekjourneyx/md2wechat-skill/md2
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
31,600 周安装