hexo图片不支持[[]]的写法 obsidian默认为上述语法,可以在设置里更改为指定目录

但是默认粘贴格式是z-img/xxxx hexo里渲染完后放入静态目录下,只有/z-img/xxxx才能被顺利访问

所以简单写个脚本,进行hexo的同步,在脚本里把图片更改一下

脚本内容

#!/usr/bin/env bash

bash ~/.local/bin/blog_img_invert

SOURCE_DIR="~/blog/source/"           # 博客内容的源目录
IMAGES_DIR="~blog/z-img/"%20%20%20%20%20%20%20%20%20%20%20%20#%20博客图片的源目录
DEST_POSTS="~/moonlit/source/_posts/" # hexo文章位置
DEST_IMG="~/moonlit/source/z-img/"%20%20%20%20#%20hexo图片位置
HEXO_DIR="~/moonlit/"

echo "开始复制 $SOURCE_DIR -> $DEST_POSTS ..."
cp -r "$SOURCE_DIR"/* "$DEST_POSTS"
if [ $? -ne 0 ]; then
  echo "[错误] 文件复制失败,请检查路径或权限。"
  exit 1
fi
echo "博客内容复制完成。"

echo "开始复制 $IMAGES_DIR -> $DEST_IMG ..."
cp -r "$IMAGES_DIR"* "$DEST_IMG"
if [ $? -ne 0 ]; then
  echo "[错误] 图片复制失败,请检查路径或权限。"
  exit 1
fi
echo "图片复制完成。"

cd "$HEXO_DIR" || {
  echo "[错误] 无法进入 Hexo 目录: $HEXO_DIR"
  exit 1
}

echo "执行: hexo clean ..."
hexo clean
if [ $? -ne 0 ]; then
  echo "[错误] hexo clean 失败。"
  exit 1
fi

echo "执行: hexo generate ..."
hexo generate
if [ $? -ne 0 ]; then
  echo "[错误] hexo generate 失败。"
  exit 1
fi

echo "执行: hexo algolia ..."
hexo algolia
if [ $? -ne 0 ]; then
  echo "[错误] hexo algolia 失败。"
  exit 1
fi

echo "执行: hexo deploy ..."
hexo deploy
if [ $? -ne 0 ]; then
  echo "[错误] hexo deploy 失败。"
  exit 1
fi

echo "脚本执行成功!"
exit 0

图片格式转换

#!/usr/bin/env bash

TARGET_DIR="~/blog/source"

find "$TARGET_DIR" -type f -name "*.md" | while read -r FILE; do
  echo "处理文件: $FILE"

  sed -i '' -E 's@(!\[.*\]\()z-img/@\1/z-img/@g'%20"$FILE"
  sed -i '' -E 's@!\[\[([^]]+)\]\]@![](/z-img/\1)@g' "$FILE"
  sed -i '' -E -e ':a' -e 's@(/z-img/[^)]*) ([^)]*)@\1%20\2@g' -e 'ta' "$FILE"

done

echo "替换完成。"

然后在obsidian里可以用插件绑定操作,每次写完自动来次image_invert就好了