executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
piclist-upload通过 PicList HTTP Server 将 Markdown 文件中的本地图片上传到图床,并替换为云端链接。本技能应在用户需要上传 Markdown 中的图片、处理包含本地图片引用的 Markdown、批量处理多个 Markdown 文件或目录、或替换本地路径为云端链接以实现跨设备访问时使用。
Independent GitHub snapshot · Automated classification · Original documentation governs
将 Markdown 文件中的本地图片上传到配置的图床,并将本地路径替换为云端链接。
jqcurl系统兼容性: 脚本兼容 bash 3.2+(macOS 自带 /bin/bash 直接可用,无需安装新版 bash)、Linux 各发行版、Git Bash(Windows)。lsof 缺失时自动回退 /dev/tcp 端口探测,无需 bc。
首次配置: 请参阅 references/setup.md 安装和配置指南。
禁止手动 curl 上传。所有操作必须通过 scripts/process.sh 脚本执行。 脚本已内置上传、URL 替换和本地文件删除的完整逻辑,手动操作容易遗漏步骤。
默认行为是上传成功后删除本地图片。 只有当用户明确要求保留时,才可添加 --keep-local。不得擅自保留本地图片。
bash scripts/process.sh --in-place <file.md|directory...>
bash scripts/process.sh --in-place --keep-local <file.md|directory...>
bash scripts/process.sh --dry-run <file.md|directory...>
| 选项 | 说明 |
|---|---|
--in-place | 直接修改原文件(必须指定,否则仅输出到终端) |
--keep-local | 保留本地图片文件。仅在用户明确要求时使用 |
--dry-run | 预览模式,不上传、不修改文件 |
解析上传返回的 JSON:
{"success":true,"result":["https://example.com/image.png"]}
处理完成后显示:
📊 Summary:
Total uploaded: 5
Total skipped: 3
Total failed: 0
--in-place 模式下每张图片上传成功后、删除本地文件之前,脚本都会立即把已替换的 md 内容原子写回磁盘。因此中途被打断(超时、崩溃、Ctrl-C)不会丢失已上传的 URL:已完成的部分在 md 中已是云端链接,未完成的部分保持本地引用,直接重跑同一命令即可续传(幂等)。
open -a PicList.app(仅 macOS)并等待最多 15 秒(PICLIST_START_WAIT);仍无响应才退出。MAX_RETRIES=1,间隔 RETRY_DELAY=2s),仍失败则保留原始路径,标记 ❌,继续PicList Server 默认地址为 http://127.0.0.1:36677/upload。可通过环境变量覆盖:
export PICLIST_SERVER=http://127.0.0.1:PORT
# 以下为可选调优(一般无需改动)
export PICLIST_START_WAIT=15 # 启动 PicList 后等待端口就绪的秒数
export MAX_RETRIES=1 # 单图上传失败时的额外重试次数
export RETRY_DELAY=2 # 重试间隔秒数
png, jpg, jpeg, gif, webp, svg, bmp
| 写法 | 示例 | 处理 |
|---|---|---|
| 普通路径 | 、 | 原样解析(v1.0.0 起) |
| 尖括号路径 | .png>) | 剥离尖括号后解析 |
| Obsidian file:// |  | 剥离尖括号与 file://,file://<host>/ 形式去掉主机名;URL 内百分号编码(%20 等)解码为真实路径(v1.5.0 起) |
普通路径中的字面 %(如 50%.png)不会被解码,保持原样。