本地 Markdown 转 X 长文:我开源了目前最顺手的方案
在 X 上写长文(Article),最恶心的不是写,是搬。
本地写好的 Markdown——图片、标题、加粗、分割线都齐了——一到发布,就得打开 x.com 编辑器从头来一遍:贴正文、一张张重传图片、调格式、单独设封面。写一小时,搬半小时。
我把这个搬运环节干掉了,做成一个开源工具:Kaitox——把本地 Markdown 一键发成 X 的 Article 草稿,图片、排版、封面一次到位。 MIT 协议,免费,欢迎一起共建。
1. 从现有方案到 Kaitox
我调研了几个方案:
- 官方 API:需付费(约 1 元/次),格式容易丢失
- 宝玉的 baoyu-post-to-x:AI 遥控浏览器(CDP 自动化),依赖复杂
- 王树义的 x-article-publisher:Playwright + 剪贴板逐段复制,容易卡
- XPoster:浏览器插件,图片内容仍需手动上传
看了这一圈,没有一个能让我完全满意的,所以我就自己做了一个。Kaitox 走了另一条路——本地 relay + Chrome 插件,绕过浏览器的逐步操作,直接推送。核心优势:
- 原生排版:标题、加粗、列表、分割线等原生落地,本地什么样、发出去就什么样。
- 零成本、完全本地:无 API 付费,无云端中转,relay 只监听 127.0.0.1。
- 三个入口:Skill / CLI / Obsidian 插件,任选其一。
- 稳定且快速:代码驱动转换,毫秒级生成,不依赖 AI 推理,零转换失败。
- 开源 MIT:可直接使用或改造,甚至接入其他平台。
格式转换参考见: Markdown → X 文章:格式支持一览
2. 它怎么跑起来
三步,一句话概括就是 本地推、浏览器发:
- 推送 —— Agent / Obsidian / CLI 对 Markdown 做风格检查,连图片打包投给本地 relay。
- 中转 —— relay 只监听 127.0.0.1,把草稿存在本地磁盘,数据不出机器。
- 上传 —— Chrome 插件取走草稿,用你已登录的会话在 X 编辑页把它建成 Article 草稿,图片、封面一起传好。
3. 安装
装两样:一个推送端(Skill / CLI / Obsidian 三选一)+ Chrome 插件(必装,负责写进 X)。环境:Node.js ≥ 18、一个保持登录的 X 账号、Chrome / Edge / Brave。
3.1. A. Skill(推荐)
克隆仓库,把 skill 复制到对应目录:
git clone https://github.com/kuangjiajia/kaitox-toolkit
cd kaitox-toolkit
# Claude Code
cp -r skills/kaitox-x-article ~/.claude/skills/
# Codex
cp skills/kaitox-x-article/SKILL.md ~/.codex/prompts/kaitox-x-article.md
# 直接给 Agent
# 参考 https://github.com/kuangjiajia/kaitox-toolkit/blob/main/docs/Features/x-article.zh-CN.md,给我安装一下这个 skill
CLI 缺失时 skill 会自动装 @kaitox/cli 并拉起 relay。
3.2. B. Obsidian 插件
已上架 Obsidian 社区插件商店,打开 Obsidian"设置 → 第三方插件 → 浏览",搜 Kaitox,点安装后启用即可(仅桌面端)。
Obsidian 插件不像 Skill 会自动拉起 relay,需要你先自行装好 CLI 并把 relay 跑起来(见下方 C):
npm i -g @kaitox/cli
kaitox relay --daemon
想用旧版或手动装插件?到 GitHub Releases 下 Kaitox Obsidian plugin,把 main.js、manifest.json 放进 vault 的
.obsidian/plugins/kaitox/,再在设置里启用。
3.3. C. CLI
npm i -g @kaitox/cli
kaitox relay --daemon
3.4. Chrome 插件(必装)
Chrome 应用商店一键安装。装好后打开 https://x.com/compose/articles,relay 在跑时页面角落出现 Kaitox 面板即成功:
4. 怎么用(两步:同步 → 上传)
4.1. 同步:让工具把 Markdown 推成草稿
Claude Code / Codex(推荐)——直接说人话:
把 ./post.md 同步成 X Article 草稿。
它会做风格检查、告诉你哪里在 X 上显示不好、让你选(改 / 降级纯文本 / 原样发),再投进 relay;CLI 没装、relay 没起都自己搞定。
也能顺带指定封面、改标题。
Obsidian——笔记旁开面板,实时预览、一键推送,不用离开写作界面就能看到 X 上的样子。
4.2. CLI
kaitox x push ./post.md --title "标题" --cover "封面图地址"
然后用 kaitox x list / kaitox x status 查看状态。
4.3. 上传:浏览器里点一下
打开 https://x.com/compose/articles,在 Kaitox 面板找到草稿,点上传草稿。
插件用你的登录态传图片、建 Article 草稿、跳进编辑器,图片排版一次到位。确认没问题后自己点发布——发不发、什么时候发,永远握在你手里。
还支持浏览器预览文章:
5. 这套 X 转换流程,你也能拿去用
如果你自己也有"本地 Markdown 发 X"的需求,不想用我的 Skill / CLI / Obsidian,而是想把这套流程接进你自己的工具里——完全可以,核心能力都拆成了 npm 包,直接复用就行:
- @kaitox/x-article —— X 引擎,把 Markdown 转成 X 文章的那套逻辑:图片枚举、标题推导、风格检查、预览渲染,都在这里。
- @kaitox/relay-protocol —— 线上契约 + HttpRelayClient,一行
postDraft把草稿投给本地 relay。 - @kaitox/relay —— 本地 relay 服务本身。
你的脚本、博客流水线、笔记应用,只要调这几个包,就能复用我这套转换 + 投递能力,最后同样由 Chrome 插件在 x.com 建成草稿。接入细节见仓库 docs/ 里的文档。有类似需求欢迎基于它做,或提 issue、发 PR 共建。
边界: 发布走的是 X 私有网页接口 + 你的登录态,属非官方用法,X 改内部实现时可能要跟着更新;只用于以人类节奏发自己的内容,别拿去批量自动化。
X Article 只是个开始。我会把自己日常的很多工作流慢慢迁到这套底座上来,这个项目和插件也会持续更新——欢迎大家 Star、关注,一起看着它长大。
试用中遇到任何问题、或者想提需求,欢迎加我微信,我会拉你进产品试用群,一起交流打磨。
我是 kaitox,Full-Stack Engineer / AI Builder / Growth Hacker,在持续 Build in Public,分享自己做的 AI 小工具和实战经验。觉得有用欢迎点赞转发、去 GitHub 点个 Star 一起共建: