一篇 Markdown,一键发到微信、知乎、小红书、Twitter
一篇 Markdown,一键发到微信、知乎、小红书、Twitter
开源地址:marsggbo/markdown2anything VS Code 商店搜 Markdown2Anything · CLI:
npm i -g md2any
1. 它解决什么
写技术博客我一直是 Markdown 一把梭。但写完之后,真正花时间的从来不是写作,而是分发:
复制到微信排版全乱、公式变乱码;发知乎图片要一张张重传;发小红书得先把文章截成图再手动拖进去、还得另写一份标题正文标签;发 Twitter 又要重写一遍拆成串推、图再传一次。
一篇文章写完,光”搬运”就得再花一个多小时,而且毫无创造性。
所以我写了个 VS Code 插件把这事儿干掉:一篇 .md,一个面板,四个平台。

左边是实时渲染预览,上面一排是各平台的一键操作,右边是发布面板。整个流程不用离开编辑器。
2. 渲染效果
先看它把 Markdown 渲染成什么样。下面就是我另一篇文章在预览区里的实际效果——标题层级、加粗、表格、代码高亮、LaTeX 公式、图片说明全部处理好了:

几个细节:
- LaTeX 公式:KaTeX 渲染,行内
$...$和公式块$$...$$都支持。导出微信时会自动转成 SVG(不然公众号编辑器会把它洗掉)。 - 代码高亮:macOS 风格的窗口装饰 + 语法高亮,复制到微信后高亮不丢。
- 图片:本地图片自动转 Base64 内嵌,不需要图床。图片的 alt 文字会自动渲染成居中的灰色说明。
- 10 套内置主题,还能在线改 CSS,所见即所得。
3. 四个渠道,各自怎么用
3.1 微信公众号 🐧
微信是最难伺候的:它的编辑器会洗掉外链 CSS,只认内联样式。所以插件做了两件事:
- 📋 复制微信:把渲染好的 HTML 用
juice把所有 CSS 内联进标签里,公式转 SVG,代码高亮转内联 style。直接Cmd+V粘进公众号编辑器,排版一模一样,不用再手动调。 - ☁️ 上传公众号:配好 AppID / AppSecret,直接推到草稿箱,连粘贴都省了。
这是我用得最多的功能——以前一篇长文粘完要手动修二十分钟排版,现在是零。
3.2 知乎 📝
- 🚀 发布知乎:扫码登录后,浏览器自动打开编辑器,标题、正文、代码块、公式全部自动填好。
- 代码块自带语言高亮,不用再手动去下拉框里选语言(这里有个坑:highlight.js 生成的 class 是
hljs python,很容易把语言错识别成hljs,知乎收到一个不认识的语言,既不高亮、也不当代码块处理,换行会全丢、折叠成一行)。 - 公式转成知乎原生的
eeimg格式,能正常渲染。
但有一个我没搞定的地方,得老实说:知乎的图片仍然要手动粘贴。
知乎编辑器不会自动抓取粘贴进来的图片——base64 不行,远程 URL 也不行。只有剪贴板里躺着一张真正的图片位图时,它才会上传到自己的图床。我试了各种自动化路线(走它的图片弹窗、起本地图床让它自己抓),全都失败了。
所以退而求其次,做了个「📋 复制图片」:预览区鼠标移到任意图片上,点一下,复制的是真正的 PNG 位图(不是 data URL),到知乎里 Cmd+V 就会被自动上传。虽然还是手动,但至少不用再去文件夹里翻文件、走上传对话框了。
能自动的自动了,不能自动的老实承认。
3.3 小红书 & Twitter:自动发布 🚀
这两个是这次的重头戏,放一起说——因为它们的问题是同一个:
它们要的不是”同一篇文章”,而是 “同一份内容的另一种表达”。
小红书要的是图 + 一段口语化的种草文案 + 标签;Twitter 要的是拆成好几条的串推。所以光搬运没用,得重写。这块插件接了 LLM,并且做到了全自动发布。
小红书流程:
-
文章自动截成多张长图(智能分片,会尽量在空白行处切,不会把一段话拦腰砍断)

- AI 自动写好标题、正文、标签(标题会实时校验小红书 20 字上限,超了标红)
- 登录一次(扫码,Cookie 自动存好,面板上有有效期倒计时)
- 点发布 → 浏览器自动打开、自动传图、自动填标题/正文/标签
- 你核对一眼,点页面上的「发布」——完成

Twitter 流程:

- AI 自动生成中文串推(thread),而且条数不是拍脑袋定的:
条数 = ⌈长图张数 ÷ 4⌉(X 单条最多带 4 张图)。每条推文讲的就是它配的那几张图里的内容,做到文图对得上。 - 字数按 X 的真实规则实时校验——X 的 280 字上限是加权的,一个中文字符算 2 个,链接固定算 23。面板上显示的就是这个真实字数,超了标红,发布前直接拦下(这个坑很多人不知道,超限时 X 会直接把「发帖」按钮禁用掉)。
- 发布时浏览器里自动把整串填好 + 按顺序配好图,你点「发帖」即可。
共同的设计:
- 配图会自动检查:没导出长图?发布时自动帮你导。数量对不对得上也会校验。
- 默认不替你点最后那下「发布」:内容和图都填好后停下,让你在发出去之前再核对一眼。这是我特意的选择——自动化到最后一厘米就停,把决定权留给你。
3.4 AI 文案:不配 Key 也能用
文案生成接的是任意 OpenAI 兼容接口(DeepSeek / OpenRouter / Groq / 本地 Ollama / OpenAI…),面板里下拉一键预设。
但你不配 API Key 也能用:内置了一套本地关键词提取算法(中英混合 n-gram + 停用词过滤 + 长词吸收短词),面板一打开就把标题、正文、标签自动填好了,零配置零成本。想要更好的文案,再点「✨ 生成文案」用模型覆盖。
另外两个实用的小设计:
- Prompt 可编辑:不满意就改了重新生成。
- 版本管理:LLM 生成很难一次满意,所以每次生成都存成一个新版本,旧版全保留。面板上
◀ ▶左右切换对比,看中哪版用哪版,🗑单独删掉不要的。全部落盘到文章同目录的_social.json,可以跟文章一起 git 备份。
3.5 关于安全
- API Key 存进系统钥匙串(VS Code SecretStorage),不落明文、不进 Settings Sync、不会被误提交进 git。
- Cookie 只存本地,唯一的网络去向就是平台自己,不经过任何第三方服务器。
- 发布走的是真实浏览器 + Cookie 注入(模拟真人正常操作),而不是伪造签名的裸 HTTP 请求。
4. 不只是插件:CLI + Agent Skill
写着写着我发现,把它锁死在”编辑器里的一个按钮”太可惜了。所以又做了个命令行版,已经发到 npm:
npm i -g md2any # 或者直接 npx md2any
md2any login xhs
md2any images ./post.md # 渲染长图
md2any gen ./post.md --to twitter # 生成串推
md2any publish ./post.md --to xhs,twitter
核心逻辑(渲染、切图、LLM 文案、Playwright 发布)完全复用插件那一套,没有重写——插件和 CLI 是同一个引擎的两个壳,连文案的版本历史都共用同一个 _social.json。
而且它是为 Agent 设计的:
- stdout 只出结果,stderr 出日志 → 可以安全 pipe 和解析
--json给结构化输出
md2any gen ./post.md --to twitter --json 2>/dev/null | jq '.twitter.tweets'
仓库里有一份 SKILL.md,把 cli/ 挂进 Claude Code 之类的 Agent,它就能听懂“把这篇文章发到小红书和推特”——从”我的工具”变成任何大模型都能调用的一种能力。
顺带一提,我在那份 skill 定义里特意写死了一条:
⚠️ 不要向用户承诺知乎图片能自动上传。
因为 Agent 最容易犯的错,就是把限制说成能力。这是我们真金白银试出来的教训,得钉进契约里,不能让下一个 Agent 再去踩、再去骗用户。
5. 怎么装
插件:VS Code 扩展市场搜 Markdown2Anything。
CLI:npm i -g md2any
打开任意 .md,Cmd/Ctrl + Shift + W 打开面板即可。首次用到截图/发布功能会自动下载 Chromium(约 150MB),之后无需等待。
项目地址:github.com/marsggbo/markdown2anything(MIT)
欢迎 star、提 issue、拍砖,更欢迎 PR。
最后打个软广宣传一下我们团队最近出版的《动手学 AutoML:从 NAS 到大语言模型优化实战》,书里有专门讲大语言模型优化与工程实践的章节,对于想学习大模型技术细节的同学和工程师朋友很有帮助。
