# 本地 Markdown 转 X 长文:我开源了目前最顺手的方案
**作者**: kaitox
**日期**: 2026-07-09T11:54:46.000Z
**来源**: [https://x.com/kaitoxhacker/status/2075186898188841140](https://x.com/kaitoxhacker/status/2075186898188841140)
---

在 X 上写长文(Article),最恶心的不是写,是搬。
本地写好的 Markdown——图片、标题、加粗、分割线都齐了——一到发布,就得打开 x.com 编辑器从头来一遍:贴正文、一张张重传图片、调格式、单独设封面。写一小时,搬半小时。
我把这个搬运环节干掉了,做成一个开源工具:Kaitox——把本地 Markdown 一键发成 X 的 Article 草稿,图片、排版、封面一次到位。 MIT 协议,免费,欢迎一起共建。
# 一、从现有方案到 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 文章:格式支持一览
# 二、它怎么跑起来
三步,一句话概括就是 本地推、浏览器发:

1. 推送 —— Agent / Obsidian / CLI 对 Markdown 做风格检查,连图片打包投给本地 relay。
2. 中转 —— relay 只监听 127.0.0.1,把草稿存在本地磁盘,数据不出机器。
3. 上传 —— Chrome 插件取走草稿,用你已登录的会话在 X 编辑页把它建成 Article 草稿,图片、封面一起传好。
# 三、安装
装两样:一个推送端(Skill / CLI / Obsidian 三选一)+ Chrome 插件(必装,负责写进 X)。环境:Node.js ≥ 18、一个保持登录的 X 账号、Chrome / Edge / Brave。
## 推送端(三选一)
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。
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/,再在设置里启用。
C. CLI
```
npm i -g @kaitox/cli
kaitox relay --daemon
```
## Chrome 插件(必装)
Chrome 应用商店一键安装。装好后打开 https://x.com/compose/articles,relay 在跑时页面角落出现 Kaitox 面板即成功:

# 四、怎么用(两步:同步 → 上传)
## 同步:让工具把 Markdown 推成草稿
Claude Code / Codex(推荐)**——直接说人话:
> 把 ./post.md 同步成 X Article 草稿。
它会做风格检查、告诉你哪里在 X 上显示不好、让你选(改 / 降级纯文本 / 原样发),再投进 relay;CLI 没装、relay 没起都自己搞定。也能顺带指定封面、改标题。

Obsidian——笔记旁开面板,实时预览、一键推送,不用离开写作界面就能看到 X 上的样子。

CLI
```
kaitox x push ./post.md --title "标题" --cover "封面图地址"
kaitox x list` / `status` 看状态。
```
## 上传:浏览器里点一下
打开 https://x.com/compose/articles,在 Kaitox 面板找到草稿,点上传草稿。插件用你的登录态传图片、建 Article 草稿、跳进编辑器,图片排版一次到位。确认没问题后自己点发布——发不发、什么时候发,永远握在你手里。

还支持 浏览器预览文章

# 五、这套 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 一起共建:
- 仓库 / Releases:https://github.com/kuangjiajia/kaitox-toolkit
- Chrome 插件:https://chromewebstore.google.com/detail/kaitox/ljefnciiojdefgpnphihcijfdmbdomll
- Obsidian 插件:https://community.obsidian.md/plugins/kaitox
## 相关链接
- [kaitox](https://x.com/kaitoxhacker)
- [@kaitoxhacker](https://x.com/kaitoxhacker)
- [10K](https://x.com/kaitoxhacker/status/2075186898188841140/analytics)
- [x.com](https://x.com/)
- [官方 API](https://docs.x.com/x-api/overview)
- [宝玉的 baoyu-post-to-x](https://github.com/JimLiu/baoyu-skills)
- [王树义的 x-article-publisher](https://github.com/wshuyi/x-article-publisher-skill)
- [XPoster](https://chromewebstore.google.com/detail/xposter/iimkimodgdjnnmdopeolboakhjmhfbbj?hl=zh-CN)
- [Markdown → X 文章:格式支持一览](https://github.com/kuangjiajia/kaitox-toolkit/blob/main/docs/Features/x-article-markdown-mapping.zh-CN.md)
- [@kaitox/cli](https://x.com/@kaitox/cli)
- [Obsidian 社区插件商店](https://community.obsidian.md/plugins/kaitox)
- [GitHub Releases](https://github.com/kuangjiajia/kaitox-toolkit/releases)
- [Chrome 应用商店](https://chromewebstore.google.com/detail/kaitox/ljefnciiojdefgpnphihcijfdmbdomll)
- [https://x.com/compose/articles](https://x.com/compose/articles)
- [https://x.com/compose/articles](https://x.com/compose/articles)
- [@kaitox/x-article](https://x.com/@kaitox/x-article)
- [@kaitox/relay-protocol](https://x.com/@kaitox/relay-protocol)
- [@kaitox/relay](https://x.com/@kaitox/relay)
- [x.com](https://x.com/)
- [https://github.com/kuangjiajia/kaitox-toolkit](https://github.com/kuangjiajia/kaitox-toolkit)
- [https://chromewebstore.google.com/detail/kaitox/ljefnciiojdefgpnphihcijfdmbdomll](https://chromewebstore.google.com/detail/kaitox/ljefnciiojdefgpnphihcijfdmbdomll)
- [https://community.obsidian.md/plugins/kaitox](https://community.obsidian.md/plugins/kaitox)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [7:54 PM · Jul 9, 2026](https://x.com/kaitoxhacker/status/2075186898188841140)
- [10.1K Views](https://x.com/kaitoxhacker/status/2075186898188841140/analytics)
- [View quotes](https://x.com/kaitoxhacker/status/2075186898188841140/quotes)
---
*导出时间: 2026/7/10 12:08:21*