chenxuan3 downloadsUpload pasted or dropped images to Qiniu object storage and insert the CDN link instead of a local attachment.
在 Obsidian 里粘贴或拖入图片时,自动上传到七牛云对象存储,并在笔记里插入 CDN 链接,而不是把图片存进本地附件目录。
Paste or drop an image in Obsidian and it is uploaded to Qiniu object storage, with the CDN link inserted into the note instead of a local attachment.
 链接到 release 页面 下载 main.js、manifest.json、styles.css
在库目录下新建文件夹 .obsidian/plugins/qiniu-image/,把三个文件放进去
重启 Obsidian,在 设置 → 第三方插件 里启用 Qiniu Image
git clone https://github.com/chenxuan520/obsidian-qiniuimage
cd obsidian-qiniuimage
npm install
npm run build
编译产物 main.js 和 manifest.json、styles.css 一起复制到 .obsidian/plugins/qiniu-image/ 即可。
打开 设置 → Qiniu Image,填入下面的参数,最后点 Run test 验证。
| 参数 | 说明 |
|---|---|
| Upload mode | Direct to Qiniu 直连七牛;Relay through qiniuserver 转发给自建服务 |
| Access key / Secret key | 七牛云密钥,在这里获取 |
| Bucket | 存储空间名字,在这里获取 |
| Region | 存储区域,选 Auto detect 会自动向七牛查询 |
| Custom upload host | 可选,私有云或代理时覆盖上面的区域 |
| CDN domain | 绑定的加速域名,例如 http://cdn.example.com |
| Upload path | 空间内的路径前缀,例如 test,留空表示根目录 |
| File name template | 文件名模板,见下 |
| URL suffix | 追加到链接后面,例如 ?imageslim 走七牛的图片处理 |
| Server URL / Server password | 只在转发模式下使用,对应 qiniuserver 的地址和 host.password |
和 qiniuserver 的 file_name 保持一致:
| 占位符 | 含义 |
|---|---|
%d |
时间戳,格式 YYYYMMDDHHmmss |
%f |
原文件名(空格会替换成下划线) |
%r |
6 位随机字符串 |
%e |
扩展名,例如 .png |
默认 %d%f,即 20260830170509image.png。留空表示保持原文件名。
| 选项 | 默认 | 说明 |
|---|---|---|
| Upload on paste | 开 | 粘贴时上传 |
| Upload on drop | 开 | 拖入时上传 |
| Upload non-image files too | 关 | 打开后 PDF、压缩包等附件也上传 |
| Maximum file size (MB) | 20 | 超过大小的文件留在本地库,0 表示不限制 |
| Save to the vault when upload fails | 开 | 上传失败时退回本地保存,避免丢图 |
scope 只包含 bucket,因此是「只允许新增」,不会覆盖空间里已有的文件;万一文件名撞车(返回 614),会自动加一个随机后缀重试一次requestUrl,不受浏览器 CORS 限制.obsidian/plugins/qiniu-image/data.json 里。如果你的库会同步或提交到公开仓库,请确认 .obsidian 已被忽略,或者改用转发模式,把密钥留在自建服务端npm install
npm run dev # 监听编译
npm test # 单元测试 + mock 服务器 + 构建产物冒烟测试
npm run typecheck
真机联调(会向真实空间上传一个 1x1 的图片并在结束时删除):
QINIU_E2E=1 \
QINIU_ACCESS_KEY=xxx QINIU_SECRET_KEY=xxx QINIU_BUCKET=xxx \
QINIU_DOMAIN=http://cdn.example.com QINIU_UPLOAD_PATH=test QINIU_ZONE=z2 \
node --test test/e2e-qiniu.test.ts
也可以直接复用 qiniuserver 的配置文件:
QINIU_E2E=1 QINIU_CONFIG_PATH=/path/to/qiniuserver/config/config.json node --test test/e2e-qiniu.test.ts