图床 | Chevereto
好的,我帮你把所有功能 整合成一个完整的 CLI 工具,你只需要:
./chevereto-tool <命令>即可使用!
下面是一个完整的、可直接运行的 Bash 工具:
🚀 **Chevereto 多功能命令行工具 chevereto-tool**#
功能列表(全部集成)#
| 功能命令 | 说明 |
|---|---|
replace-urls | 批量替换 Markdown 中旧图床 → 新图床 |
check-links | 扫描所有 Markdown 图片链接,检测 404 坏链 |
upload-local | 把 Obsidian 本地图片上传到 Chevereto,并自动替换 Markdown 链接 |
migrate-minio | 从 MinIO 批量迁移图片 → 上传到 Chevereto |
help | 查看帮助 |
📌 使用步骤#
- 新建脚本:
nano chevereto-tool- 将以下完整代码粘贴进去:
✅ **完整脚本:chevereto-tool**#
(已带完整注释,非常清晰)
#!/usr/bin/env bash
##############################################
# Chevereto 多功能图床工具
# 功能:
# 1. replace-urls 替换 Markdown 里的旧图床链接
# 2. check-links 检查图片链接是否 404
# 3. upload-local 上传本地图片并替换 Markdown 链接
# 4. migrate-minio 从 MinIO 批量迁移图片到 Chevereto
##############################################
### === 配置区(按需修改) === ###
# Chevereto 服务(你的域名)
CHEVERETO_URL="https://img.isrv.cn"
# 从 Chevereto 后台获取
CHEVERETO_API_KEY="替换成你的APIKey"
# Obsidian 仓库位置
VAULT_DIR="$HOME/Obsidian"
# 本地图片存放处(按实际目录调整)
LOCAL_IMG_DIR="$VAULT_DIR/img"
# 旧 → 新 URL 替换
OLD_URL="https://s3.isrv.cn/img/"
NEW_URL="https://img.isrv.cn/images/"
# MinIO 读取地址
MINIO_URL="https://s3.isrv.cn/img"
##############################################
# 工具函数:上传图片到 Chevereto
##############################################
upload_to_chevereto() {
local file="$1"
RESPONSE=$(curl -s -X POST \
-F "source=@$file" \
-F "key=$CHEVERETO_API_KEY" \
"$CHEVERETO_URL/api/1/upload")
echo "$RESPONSE"
}
##############################################
# 功能 1: 替换 Markdown 里的旧图床链接
##############################################
replace_urls() {
echo "开始替换 Markdown 链接:"
echo "$OLD_URL → $NEW_URL"
TOTAL=0
MODIFIED=0
while IFS= read -r -d '' FILE; do
((TOTAL++))
if grep -q "$OLD_URL" "$FILE"; then
((MODIFIED++))
cp "$FILE" "$FILE.bak"
sed -i "s#$OLD_URL#$NEW_URL#g" "$FILE"
echo "[修改] $FILE"
fi
done < <(find "$VAULT_DIR" -type f -name "*.md" -print0)
echo "处理文件总数:$TOTAL"
echo "替换文件数量:$MODIFIED"
}
##############################################
# 功能 2:检查 Markdown 图片链接是否 404
##############################################
check_links() {
LOG="./broken_links.log"
echo "" > "$LOG"
echo "开始扫描 Markdown 里的图片链接……"
grep -Roh --include="*.md" "$NEW_URL[^ )]*" "$VAULT_DIR" | while read -r url; do
HTTP=$(curl -s -o /dev/null -w "%{http_code}" "$url")
if [[ "$HTTP" != "200" ]]; then
echo "[坏链] $url (HTTP $HTTP)"
echo "$url" >> "$LOG"
fi
done
echo "坏链已记录:$LOG"
}
##############################################
# 功能 3:上传本地图片 → 替换 Markdown 链接
##############################################
upload_local() {
echo "开始上传本地图片:$LOCAL_IMG_DIR"
while IFS= read -r -d '' IMG; do
FILENAME=$(basename "$IMG")
echo "[上传] $FILENAME"
RESPONSE=$(upload_to_chevereto "$IMG")
NEW_URL=$(echo "$RESPONSE" | jq -r '.image.url')
if [[ "$NEW_URL" == "null" ]]; then
echo "上传失败:$FILENAME"
continue
fi
echo "→ 上传成功:$NEW_URL"
echo "→ 开始替换 Markdown 中的本地链接..."
grep -Rl "$FILENAME" "$VAULT_DIR" --include="*.md" | while read -r FILE; do
sed -i.bak "s#[^( ]*$FILENAME#$NEW_URL#g" "$FILE"
done
done < <(find "$LOCAL_IMG_DIR" -type f -print0)
echo "所有本地图片已上传并替换链接。"
}
##############################################
# 功能 4:迁移 MinIO → Chevereto
##############################################
migrate_minio() {
TMP_DIR="./minio_tmp"
mkdir -p "$TMP_DIR"
echo "开始读取 MinIO 列表:$MINIO_URL/"
# 获取 MinIO 目录列表
curl -s "$MINIO_URL/" | grep -oP '(?<=href=")[^"]+' | while read -r FILE; do
echo "[下载] $FILE"
curl -s -o "$TMP_DIR/$FILE" "$MINIO_URL/$FILE"
echo "[上传] $FILE → Chevereto"
RESPONSE=$(upload_to_chevereto "$TMP_DIR/$FILE")
NEW_URL=$(echo "$RESPONSE" | jq -r '.image.url')
echo "→ 上传结果:$NEW_URL"
done
echo "迁移完成。"
}
##############################################
# 帮助菜单
##############################################
show_help() {
cat <<EOF
Chevereto 多功能工具
用法:
./chevereto-tool <命令>
可用命令:
replace-urls 替换 Markdown 里的旧图床链接
check-links 检查 Markdown 图片是否 404
upload-local 上传本地图片并替换 Markdown 链接
migrate-minio 从 MinIO 批量迁移图片到 Chevereto
help 显示帮助信息
EOF
}
##############################################
# 主程序入口
##############################################
case "$1" in
replace-urls)
replace_urls
;;
check-links)
check_links
;;
upload-local)
upload_local
;;
migrate-minio)
migrate_minio
;;
help|*)
show_help
;;
esac✔ 保存后赋予执行权限:#
chmod +x chevereto-tool🚀 使用示例#
1) 替换旧图床 → 新图床#
./chevereto-tool replace-urls2) 检查 Markdown 图片是否 404#
./chevereto-tool check-links3) 上传本地图片并替换 Markdown 链接#
./chevereto-tool upload-local4) 从 MinIO 批量迁移图片#
./chevereto-tool migrate-minio5) 查看帮助#
./chevereto-tool help🎉 你现在拥有一个完整的图床自动化工具!#
如果你愿意,我还能帮你:
✅ 制作为 系统全局命令(cp 到 /usr/local/bin) ✅ 制作成 Docker 版 ✅ 输出运行日志、错误重试 ✅ 加上进度条、颜色输出 ✅ 加上多线程上传(xargs -P 8)
你想继续增强工具吗?
📚 Digital Library