本地 Markdown 转 X 长文:我开源了目前最顺手的方案

图像

在 X 上写长文(Article),最恶心的不是写,是搬。

本地写好的 Markdown——图片、标题、加粗、分割线都齐了——一到发布,就得打开 x.com 编辑器从头来一遍:贴正文、一张张重传图片、调格式、单独设封面。写一小时,搬半小时。

我把这个搬运环节干掉了,做成一个开源工具:Kaitox——把本地 Markdown 一键发成 X 的 Article 草稿,图片、排版、封面一次到位。 MIT 协议,免费,欢迎一起共建。

1. 从现有方案到 Kaitox

图像

我调研了几个方案:

看了这一圈,没有一个能让我完全满意的,所以我就自己做了一个。Kaitox 走了另一条路——本地 relay + Chrome 插件,绕过浏览器的逐步操作,直接推送。核心优势:

  • 原生排版:标题、加粗、列表、分割线等原生落地,本地什么样、发出去就什么样。
  • 零成本、完全本地:无 API 付费,无云端中转,relay 只监听 127.0.0.1。
  • 三个入口:Skill / CLI / Obsidian 插件,任选其一。
  • 稳定且快速:代码驱动转换,毫秒级生成,不依赖 AI 推理,零转换失败。
  • 开源 MIT:可直接使用或改造,甚至接入其他平台。

格式转换参考见: Markdown → X 文章:格式支持一览

2. 它怎么跑起来

三步,一句话概括就是 本地推、浏览器发:

图像

  1. 推送 —— Agent / Obsidian / CLI 对 Markdown 做风格检查,连图片打包投给本地 relay。
  2. 中转 —— relay 只监听 127.0.0.1,把草稿存在本地磁盘,数据不出机器。
  3. 上传 —— 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 一起共建: