对我来说写博客这件事文字从来不是最折腾的部分——图片才是。你用 Markdown 写完一篇技术笔记截图都放在assets/目录下。文章里很自然地写着![](assets/screenshot.png)这种本地引用一看预览「嗯真不错」。可等你准备发布时很显然这些本地路径在博客平台、微信公众号、知乎专栏里全都不能直接用。于是你开始重复一套体力活打开某个图床的控制台一张张拖拽图片进去等上传完成复制直链回到 Markdown 编辑器把原来的本地路径替换成图床 URL。一篇有 5 张截图的文章这套动作要重复 5 次。更烦的是迁移旧文档。你翻出一两年前的技术笔记发现里面的插图用的是 imgur、sinaimg 的链接。这些图床要么已经失效要么在国内访问不了。你想统一搬到自己的图床但每张都要手动下载、上传、替换链接——又是一轮体力活。后来你开始用 AI 辅助写作让 Agent 帮你起草文章。结尾想顺手把图传一下但每次都要叮嘱一遍「把这篇文章里的图片上传到图床替换链接图床的 API 文档是……」。这不是沉淀下来的能力而是每次都要重复的临时活儿且效果不稳定每次读一遍文档还很耗 token。市面上已经有一些本地图片上云的 skill 了但它们大多是针对 PicGo 的。PicGo 确实不错但对大部分小博主来说咱们就是想写点博客不想为了传几张图折腾一套复杂的图床工具。因此我做了这个叫image-upload的 Agent Skill。它支持四个国内直连、稳定性不错的图床既可用于本地图片上云又能一键把其他平台的图片转存到自己的图床上一键替换文档内直链。它能给你什么四张截图讲清楚这个skill瞄准的需求切口很小它就做这样几件事打开一篇 Markdown 文档,自动扫描里面的图片引用判断哪些能传、哪些跳过、为什么跳过一键上传到图床,原地替换本地路径为直链可选直链转存图床后台能看到上传结果,确认图片真的在云上网络出问题时,主动诊断、推荐可用的图床、引导你填配置下面四张截图,按扫描→引导→替换→验证的完整流程,展示它实际交付的效果。1. 扫描文档并评估可上传性打开文档后,它会先扫一遍,告诉你哪些能传、哪些跳、为什么跳这张截图里,一篇文档有 6 张图5 张可以上传绿色 ✓,1 张 SVG 不支持红色 ✗。工具会主动跳过 SVG,并说明原因「图床不支持该格式」。同时,它检测到两条 badge/锚点链接被误识别为图片引用,自动忽略,避免误上传。底部提示缺 API Key,引导你填图床凭证。2. 链接替换成功5/6加上替换参数后,工具在原地把本地路径替换为云端直链左栏原文中的assets/0.gif、assets/0/chart-loop.png等本地路径被替换为i.ibb.co/...直链。banner.svg 因图床不支持而保留原样——默认是安全的,未替换的图片不会丢。3. 图床端落地核验替换后去图床后台看一眼,确认 5 张图真的在云上ImgBB 用户相册里,hero.gif、chart-ratchet、chart-phases、chart-rubric、chart-loop 这 5 张图全部到位。每张都有缩略图和直链,可以直接访问。4. 错误恢复网络诊断 智能推荐图床大陆网络封了 catbox.moe,工具不会傻傻一直重试。它会主动诊断,推荐可用的图床,一步步引导你拿到 Key工具跑了一个fetch测连通性,发现 catbox.moe 拒连,api.imgbb.com 和 freeimage.host 正常。然后推荐 ImgBB,并附上 3 步获取 Key 的说明。SVG 不被支持这件事也再次提醒。它怎么用一条指令三种场景这个 Skill 瞄准的需求切口很小它就做这样几件事打开一篇 Markdown 文档自动扫描里面的图片引用判断哪些能传、哪些跳过、为什么跳过一键上传到图床原地替换本地路径为直链可选直链转存图床后台能看到上传结果确认图片真的在云上网络出问题时主动诊断、推荐可用的图床、引导你填配置下面四张截图按「扫描→引导→替换→验证」的完整流程展示它实际交付的效果。场景一单张上传你有一张截图要上传在 Claude 里说一句上传/tmp/screenshot.png到 imgbbAgent 会调用 Skill 的上传接口几秒后返回直链。你拿到 URL直接贴到文档里。场景二整篇文档图片上云你写完一篇 Markdown 博客里面有 5 张本地截图。在 Claude 里说一句把这篇 Markdown 的图片本地链接替换为图床链接/path/to/README.mdAgent 会先扫描文档用脚本提取图片引用判断哪些能传然后批量上传、原地替换。你不需要一张张拖拽、不需要手动改链接。场景三全量转存统一自己的图床你有一篇旧文档里面的插图用的是别人的图床链接imgur、sinaimg。你想统一搬到自己的图床在 Claude 里说一句把这篇文档里所有图片含网络图片统一转存到我自己的图床并替换链接/path/to/article.mdAgent 会下载这些远程图片上传到你的图床去重后替换原链接。本地路径和网络 URL 一并处理整篇文档的图片都变成你的图床直链。四家图床横向对比这个 Skill 支持四家图床各有侧重图床服务商最大单文件SVG 支持适用场景ImgLink50MB是默认图床唯一支持 SVG中国访问速度快ImgBB32MB否稳定可靠API 完善上传最快~2.8sFreeimage.host64MB否大文件上传直链访问最快~1.8sUploadMe200MB否超大文件Chevereto单文件上限最高实测数据基于 1 张 GIF 4 张 PNG 1 张 SVG中国大陆网络ImgLink上传 ~4.8s访问 ~1.9s会对 PNG 重新编码ImgBB上传 ~2.8s访问 ~3.7s保留原字节Freeimage访问 ~1.8s保留原字节UploadMe上传 ~5.4s访问 ~3.1s保留原字节关键发现仅 ImgLink 支持 SVG其余三家会快速拒绝 SVG转存时该图被跳过并保留原链接ImgLink 会对 PNG 重新编码转存后下载回来的字节与原图不一致若对像素级一致性有要求需留意上传快 ≠ 访问快ImgBB 上传最快但直链访问偏慢Freeimage / ImgLink 的直链访问最快智能去重 错误恢复各家图床对「重复上传相同内容」的处理不一样图床重复相同内容时的表现副作用Freeimage / UploadMeCheveretoHTTP 400 code:101 Duplicated upload错误体不含已存在直链上传失败拿不到直链ImgBB每次生成新 URL 与新副本占空间链接漂移ImgLink每次生成新副本占空间这个 Skill 内置两层防护内容指纹缓存上传前对图片内容取 SHA-256以「图床 指纹」为键缓存到.image-upload-cache.json。再次遇到相同内容哪怕文件名不同、另一次运行会先命中缓存对直链发 HEAD 校验仍存活就直接复用跳过上传。mirror 幂等转存远程图片时如果 host 已经是目标图床自身的直链域名会跳过再次转存避免把「自己已托管的图」反复搬运。图片缺失、类型不支持、图床拒收、网络超时等情况工具会跳过该图继续处理其余而不是中断整批任务。你在终端能看到具体原因不会因为一张图的问题导致整篇文章的图片都传不上。安全边界与适用场景安全边界这个 Skill 在执行时以「脚本」为核心遵循以下约束不会删除本地文件替换参数仅修改文档内的图片链接文本不会删除任何本地图片不会上传 API KeyAPI 密钥仅用于向图床发起鉴权请求不会出现在上传内容、日志输出或远程 URL 中不会发起无关网络请求仅向用户指定的图床 API 端点、文档内已有的远程图片 URL 发起请求缓存校验使用 HEAD 请求原地替换无自动备份替换参数直接写回原文件不创建备份如需保留原件建议先用版本控制或先复制一份不会执行任意 shell 命令所有操作通过 Node.js 内置 API 完成不调用child_process跳过而非中断图片缺失、类型不支持、图床拒收等情况会跳过该图继续处理其余适用与不适用适合不适合写博客、写技术文档时把本地截图上云高频大批量商业用途图床有速率限制把旧文档里别人家的图床链接统一到自己的图床私有/敏感内容图床是公开托管配合 Agent 工作流结尾顺手把图传了不想配置任何 API Key 的场景小结如果你不想为了写博客专门配置云服务器、折腾 PicGo 这种自部署图床工具但又想把 Markdown 文档里的本地截图快速上云这个 Skill 是一个轻量的选择。零依赖开箱即用。你只需要填一个图床的 API Key在 Claude 里说一句话就能把整篇文档的图片传到图床原地替换链接。