Claude Code 图床上传工作流:用 TaoToken 统一 Key 打通 MCP 与 slash command 1. 写文档最烦的不是写字是图片全挂用 Claude Code 写 Markdown 文档的人大概率都经历过这个瞬间本地预览一切正常截图、流程图、报错贴图全都在一发布到平台满屏碎图图标。原因不复杂——云平台读不到你电脑D:\docs\images\里的文件它只认公网可访问的 URL。传统解法无非两条路。一条是编辑器插件比如 PicGo在 VS Code 里选中图片上传、自动替换链接确实方便但它被锁在编辑器内部Claude Code 在终端里跑插件根本够不着。另一条是自己写脚本upload.sh里塞一堆参数能跑但每换一个图床就要改一遍维护成本高而且没法让 AI 帮你判断这段文档里哪些图需要传、传完怎么替换。我想要的其实是一个能跟 Claude Code 对话就能完成的工作流我说把这篇文档里的本地图片都传上去它自己找图、自己上传、自己替换引用。这件事拆开看是三个能力——统一可用的 API 通道、能操作外部存储的 MCP 服务、一条固化下来的 slash command。下面按这个顺序落地全程配置可复制。2. 用 TaoToken 统一 Key把通道先打通Claude Code 本身要调模型图床 MCP 服务在触发上传时往往也要调模型做判断比如识别哪些是图片引用、生成替换逻辑。如果每个环节各配一套 Key、各记一个地址配置会散得到处都是换环境时最容易漏。TaoToken 在这里的角色是统一入口一个 Key、一个 API 地址Claude Code 的模型调用和后续 MCP 链路都走它。这样settings.json里只需要维护一份凭证迁移机器时复制过去就能用。先去控制台拿 Key。打开 TaoToken 控制台在 API Keys 页面新建一个复制出来形如sk-xxxxxxxx的字符串。这个 Key 只显示一次先存到密码管理器里。注意Key 不要直接写进会提交到 Git 的配置文件。下面示例里我用环境变量占位你本地替换成真实值即可。API 基础地址统一用https://taotoken.net/api这个地址不加任何查询参数直接填进配置的base_url字段。模型名按你实际订阅的填比如claude-sonnet-4-5这类具体以控制台展示的可用模型为准。如果你还没决定用哪个模型跑这条链路可以先去 模型对话 页面发一条测试消息确认 Key 和地址能通再往下配 Claude Code能省掉后面排查到底是 Key 错还是 MCP 错的时间。3. 可复制的 settings.json 与 MCP 配置骨架Claude Code 的配置分两层一层是模型通道settings.json一层是 MCP 服务注册mcp配置。先看模型通道。在项目根目录或用户目录下创建.claude/settings.json内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-5 }, permissions: { allow: [ Bash(curl:*), Read, Write, Edit ] } }ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址ANTHROPIC_AUTH_TOKEN填刚才复制的 Key。permissions.allow里放开Bash(curl:*)是为了让后续上传动作能通过命令行发起请求Read/Write/Edit是替换文档引用必需的。接着注册 MCP 服务。图床 MCP 的配置骨架长这样放在.claude/mcp.json或你项目约定的 MCP 配置文件位置{ mcpServers: { image-host: { command: npx, args: [-y, your-scope/image-host-mcp], env: { IMAGE_HOST_ENDPOINT: https://your-image-host.example.com/upload, IMAGE_HOST_TOKEN: 你的图床访问令牌, IMAGE_HOST_BUCKET: your-bucket-name, IMAGE_HOST_DOMAIN: https://cdn.example.com } } } }这里几个占位参数说明一下你按自己图床服务商的实际值替换参数作用示例IMAGE_HOST_ENDPOINT上传接口地址https://your-image-host.example.com/uploadIMAGE_HOST_TOKEN图床鉴权令牌服务商后台生成IMAGE_HOST_BUCKET存储空间名my-docs-bucketIMAGE_HOST_DOMAIN回显的 CDN 域名https://cdn.example.comcommand和args里的包名换成你实际使用的图床 MCP 包。如果你用的是对象存储官方提供的 MCP包名和参数名以官方文档为准但结构不变——都是command args env三件套。配置写完后重启 Claude Code输入/mcp查看服务是否加载成功。能看到image-host处于 connected 状态说明 MCP 注册这一步过了。4. 写一条 slash command把上传动作固化MCP 能连上只是有了手还得有指令告诉它什么时候动手。Claude Code 的 slash command 就是干这个的——把一段重复的提示词固化成/命令名。在.claude/commands/目录下新建upload-images.md内容如下--- description: 扫描当前 Markdown 文档中的本地图片引用上传到图床并替换为公网链接 --- 请执行以下步骤处理文档$ARGUMENTS 1. 读取目标 Markdown 文件找出所有形如 ![alt](本地路径) 的图片引用 本地路径包括相对路径如 ./images/a.png和绝对路径如 D:\docs\a.png。 2. 对每一个本地图片调用 image-host MCP 的上传能力把文件传到图床。 3. 上传成功后拿到公网 URL把原文中的本地路径替换为该 URL保持 alt 文本不变。 4. 全部替换完成后输出一份变更清单原路径 - 新 URL。 5. 如果某张图片上传失败保留原引用并在清单中标注失败原因不要静默跳过。$ARGUMENTS是 Claude Code 的占位符调用时传入文件路径。重启终端后输入/能看到upload-images出现在命令列表里。现在整条链路是/upload-images 文档路径→ Claude Code 读文档 → 调 MCP 上传 → 替换引用 → 返回清单。你不需要记任何上传命令也不需要手动复制链接。5. 跑一次验证从本地路径到公网 URL准备一个测试文档test.md里面放一张本地图片# 测试文档 这是一张本地截图 ![报错截图](./images/error.png) 下面是正文内容。确认./images/error.png真实存在。然后在 Claude Code 里执行/upload-images test.md正常的话你会看到 Claude Code 依次输出找到 1 个本地引用 → 调用 image-host 上传 → 返回 URL → 替换完成。打开test.md原来的./images/error.png已经变成https://cdn.example.com/xxxx/error.png这样的公网地址。再验证一步把替换后的链接贴到浏览器打开能正常显示图片说明上传和回显域名都配对了。这一步别省很多人卡在上传成功但链接打不开问题往往出在IMAGE_HOST_DOMAIN填的是存储内网地址而不是 CDN 域名。如果一次要处理多张图命令会自动循环最后给你一份清单变更清单 ./images/error.png - https://cdn.example.com/a1b2/error.png ./images/flow.png - https://cdn.example.com/c3d4/flow.png 失败./images/big.png超出单文件大小限制失败项会明确标出来你针对性处理就行不会出现以为传完了其实漏了一张的情况。6. 常见报错排查MCP 显示 disconnected先看npx能不能拉到那个包手动跑一次npx -y your-scope/image-host-mcp看报什么错。常见是包名写错或网络拉取失败。确认包没问题后检查env里的令牌有没有多余空格。上传返回 401/403图床令牌失效或权限不足。去图床服务商后台重新生成令牌注意有些服务商的令牌区分上传和管理权限这里需要上传权限。替换后链接 404IMAGE_HOST_DOMAIN配错了。上传接口返回的可能是存储内部路径你需要把它拼成对外可访问的 CDN 域名。对照图床文档确认回显域名格式。Claude Code 报模型调用失败回到settings.json检查ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN。可以先用 API Keys 页面确认 Key 状态正常再对照 接入文档 核对字段名注意是ANTHROPIC_AUTH_TOKEN不是ANTHROPIC_API_KEY这两个写混了会直接 401。slash command 不出现命令文件必须放在.claude/commands/下且是.md后缀。改完要重启终端Claude Code 只在启动时扫描命令目录。图片路径含中文或空格MCP 上传时可能解析失败。建议文档里的图片路径用英文命名或者在命令提示词里加一句路径含空格时先做 URL 编码。7. 把这条链路用顺之后这套工作流跑通后你手里其实有了一个可复用的模式TaoToken 统一 Key 管通道MCP 管外部系统操作slash command 管触发。图床上传只是第一个场景同样的结构可以套到文档发布、资源同步、批量文件处理上——换的只是 MCP 服务命令骨架基本不动。如果你打算长期在 Claude Code 里跑这类编码和自动化任务可以看下 Coding Plan它针对长时间编码和 Agent 场景做了额度安排比按次调用更适合这种一条命令触发一串动作的用法。配置层面没有额外改动还是那份settings.json换一下订阅类型即可。最后留一个我踩过的坑MCP 的env里如果令牌带了换行符连接会显示成功但上传必失败肉眼很难看出来。复制令牌后建议用echo -n 你的令牌 | wc -c数一下字符数跟后台显示的长度对一遍能提前排掉这个隐蔽问题。