先说结论:你写一篇长文花 3 小时,发布它可能要花 15 分钟。而这个插件,把后面那 15 分钟变成了 5 秒
*PS:全文将近 1600 字,建议你先收藏再慢慢阅读 **😘*
如果你在 X 上发过长文,你一定经历过那种"终于写完了,但是发布又要好久😂"的感觉。今天这个东西,就是来把那座山铲平的
本文大纲:
📝 写完文章之后的那 15 分钟,才是真正的噩梦
🔧 我做了一个东西:一个 Chrome 扩展 + 一个本地脚本
📥 三步安装,以后一劳永逸
⚡ 怎么用?发布会变成一种快感
🔍 原理就一句话
🔗 GitHub 开源,拿走直接用
GitHub 地址:https://github.com/punk2898/x-article-publisher
废话不多说,正文开始🙏
🧵🧵🧵
一、写完文章之后的那 15 分钟,才是真正的噩梦 😩
"写完"之后真正的体力活才刚刚开始
你写完了一篇 Markdown 文章,几千字,有封面图,正文里还插了几张截图。然后呢——
- 第一步,把 Markdown 调成预览模式
- 第二步,全选,复制
- 第三步,打开推特文章界面,点"新建文章"
- 第四步,粘贴
- 第五步,格式全乱了。标题没识别、粗体没了、链接变成纯文本。你只能一个一个手动调
- 第六步,回到本地文件夹,找到封面图,另存为
- 第七步,回到推特,上传封面
- 第八步,正文里的插图一张一张复制过来,还得盯着排版顺序别错位
- 第九步,最后再检查一遍
整个过程 10~15 分钟。不复杂,但每发一次就要重复一次,极其消耗心智
这就是我过去几个月的日常
然后我做了一件事
二、我做了一个东西:一个 Chrome 扩展 + 一个本地脚本 🔧
加起来不到 1000 行代码,零依赖
它做的事非常简单:
你写完 Markdown 文章,在终端里敲一行命令,Chrome 自动打开推特文章页面。你点一下右上角的 📥 导入文章 按钮——标题、封面、正文、插图、格式,全部自动就位。你只需要最后点一下 Publish
说白了,就是一键导入
它怎么做到的?它直接操 X 网页内部的 React 状态,把文章内容写进 Draft.js 编辑器里。不模拟键盘输入,不截图 OCR,是直接走 X 自己的数据管道——所以格式 100% 完美,图片走 X 原生上传器,标题和封面通过 X 的内部接口设置
整个过程 5 秒。然后你就可以去喝口水,回来检查一遍,点 Publish
三、三步安装,以后一劳永逸 📥
ps:如果你有本地的写作系统、OpenClaw、Hermes,直接告诉他安装https://github.com/punk2898/x-article-publisher 这个 Skill,后面你跟着他走就可以了
其他方式如下⬇️
一次安装,终身使用,三步加起来不到 2 分钟
第一步:克隆代码
没有 npm install,没有 Python 虚拟环境。项目只用 Node.js 内置模块,零依赖
第二步:装 Chrome 扩展
打开 chrome://extensions → 右上角打开"开发者模式" → 点"加载已解压的扩展程序" → 选择项目里的 extension/ 文件夹
装完之后 X 页面右上角会出现一个蓝色的 📥 按钮
第三步:需要的时候用
就这么简单。装一次,以后再也不用碰
四、怎么用?发布会变成一种快感 ⚡
来看一个完整流程,你会发现"发布"这件事可以爽到上瘾
你在本地写了一篇文章:054-xchat-深度报告.md。里面有封面图,正文插了 3 张截图。格式是标准的 Markdown——标题用 #,粗体用 \*\*,图片用 !\[\]()
然后你打开终端:
bash publish-to-x.sh ~/Desktop/punk2898/reference/054-xchat-深度报告.mdChrome 自动打开 [x.com/compose/articles/new](//x.com/compose/articles/new)
你点 "New Article" 进编辑器,右上角出现那个蓝色按钮:📥 导入文章
你点它。一个预览窗口弹出来——标题是什么、封面图是哪张、正文有几段、图片有几张,一目了然。看一眼没问题,点 ✅ 导入到编辑器
5 秒后:标题就位、封面就位、正文就位、三张插图就位、格式全部正确
你滚动浏览一遍,觉得没问题,点 Publish。完事
不复杂——是真的爽。因为终于不用把生命浪费在复制粘贴上了
ps:我不太一样,我是把这个功能整合到我的 PunkStudio 中了,点击发布就可以了😁
五、原理就一句话 🔍
爬 React Fiber 树 → 找到 Draft.js 编辑器 → 直接往里写数据
跟 xPoster 用的是同一套技术路线(MIT 开源)。不用 X 的 API——因为 X 根本没有文章发布的 API。也不用 Puppeteer 模拟操作——因为 X 的反爬机制会把那个方案直接干死
Chrome 扩展跑在你的真实浏览器环境里,X 不会拦你,因为你本来就是你自己
这也是为什么它能做到 100% 格式还原——它不是在"模拟粘贴",它是直接写进编辑器的内存。粗体就是 Draft.js 的 BOLD,链接就是 Draft.js 的 LINK,图片走的是 X 原生的 onFilesAdded 上传回调
顺便说一句,为什么普通粘贴会乱?因为 X 文章编辑器有一堆怪脾气——它把换行当分段,它不认 Markdown 语法,连破折号都能给你渲染出问题。手动粘贴就是在跟这些坑死磕,而直接写内存,等于绕开了所有坑
六、它是我写作系统的一环,但它可以单独用 🔗
说实话,这个东西只是我整个内容工作流里的一个小环节
我的写作链路是:语音素材 → Claude 生成文章 → Hermes 自动化 → 最后一步用这个插件发到 X
但这个插件本身不依赖 Hermes,不依赖任何其他工具。你只要有一个 Markdown 文件和一个 Chrome 浏览器,就能用。所以我把 extension/ 和 xarticle-server.js 单独拎出来,做成了一个独立项目
如果你也在写 X 长文——不管你用什么工具写,不管你用什么工作流——这个插件都能帮你省掉每次发布那 15 分钟的体力活
GitHub 地址:https://github.com/punk2898/x-article-publisher
MIT 开源,拿走直接用。有问题提 Issue,有想法提 PR
——
又更新了一个大版本,可以完全自动化,稍后发文章,加个小铃铛吧🔔