
我写技术文章基本是固定流程:VS Code 里用 Markdown 写正文,截图/流程图都丢到本地目录下,本地预览一切正常。
当你把 Markdown 内容粘到微信公众号后台,排版对齐,却发现图片是裂的,由于是本地连接还得弄一个图片URL才行,有的时候文章还需要发布到小红书上,如果只是把图片上传到公众号上,小红书等其他平台又没法用,就又得重新弄一遍。我就想着索性把图片上传到云服务器cloudflare R2上,然后把生成的URL替换到 Markdown 里,毕竟有免费的额度不蹭白不蹭。
很自然地,我构建了以下工作流程:
最难受的点不是慢,而是不确定。你明明只想把文章发出去,但脑子一直在跑风险评估:
我有一次就是这样翻车的:文章发出后,有读者留言说“这里怎么跳了一步?流程图呢?”我回去一看,那一张引用还停在 ,本地看没问题,公众号当然不认。那种尴尬很具体——你写了一堆解释,结果关键图没了,读者只会觉得你没讲清楚,真让人郁闷。
所以我后来才更确信:
图片处理,是 Markdown写作 → 发布之间最大的搬运成本之一。
我后来不再纠结“有没有更好用的图床插件”,而是换了一个角度看这件事:
这不是工具问题,而是流程问题。
如果你把整个过程拆开看,其实非常清晰:
这件事的特点是:
非常适合做成一个“可复用技能(Agent Skill)”。
附上我的技能图,可以在codex里直接让这个技能释放出来,帮我替换图片

只需要你在写完文章和配图之后,让大模型帮你替换一下就可以了,由于执行的是脚本替换,所以也不会浪费你宝贵的token。
这套方案不是为了“炫技”,而是长期用得住。
这套组合有个很现实的优点: 你不用改写作习惯。
Markdown 还是 Markdown,图片还是本地图片。你只需要用截图工具截图黏贴到vs code,然后告诉大模型使用对应skills就可以完成你想做的事情,不局限于替换图片URL, 你还可以按照某个平台风格使用特定技能进行排版,甚至直接调用平台API把文章发布到平台上,比如我就准备添加一个agent skill把文章直接排版发送到微信公众号草稿箱,这样我只要上去加一些封面图和文章信息就可以发布了,是不是又省下了排版和填写模版信息的时间,想想都有点小兴奋!
接下来我来介绍如何实现这个技能!
PicList 能上传,但它不会帮你做这件事:
“把文章里所有本地图片,一次性、可靠地替换成 URL。”
于是你只能在:
但我越来越不想忍。因为这是一个每天都可能发生的重复劳动。
我给这件事下了一个明确目标:
一句话,完成整篇 Markdown 的图片替换。
比如在 Codex 里直接说:
把 article.md 里的本地图片全部上传到 R2 并替换
背后发生的事情是:
你不关心过程,只关心结果。
我写这个 Skill 时,有几个工程上的硬约束。
它只做一件事:
http/httpsdata:支持的形式包括:
<img src="">这是我非常坚持的一点,大家也不希望大模型意外对你的文章胡乱操作吧(毕竟大模型幻觉这个问题一直存在的):
.bak 备份--dry-run 只看报告不改文件replace-report.json因为这是写作资产,不是临时文件。
那大家会问整个环境搭建成本高么?
我实际搭建下来觉得稍微懂点技术的人应该都能轻松搞定。
你需要在本地一直保持PicList Desktop 运行,因为这是最核心的 API, vs code调用大模型,大模型调用skills,而skills的脚本则是调用这个API来实现图片上传Cloudflare R2,这就是大概得内部流程。
把skills文件包建议放到系统根目录下,比如我用的codex, 那就是放在~/.codesx/skills/,这样你系统任何目录下激活codex都可以调用这个技能。
vs code当然要安装piclist插件,并且确保插件配置的http端口号和piclist的http端口一致。
这些其实问AI都很容易弄清楚,我就简单提了以上几个关键点。
很克制,只做核心闭环:
效果是这样的:
Before:

After:

同时生成:
article.md.bakarticle.md.replace-report.json我算过一笔很实在的账:
但更重要的不是时间,而是:
你会更愿意写,也更敢写长文。
我现在越来越确信一件事:
内容创作,迟早会走向工程化。
图片替换只是第一个 Skill。
后面可以自然延伸到:
当这些都变成 Skills, 你面对的就不再是“发一篇文章”,而是一条稳定的发布流水线。这也是最近硅谷圈很火的一个概念——AI复利!
把写作当工程,把搬运当技能。
如果你已经在用 Markdown 写作,我非常建议你: