Update from Sync Service
This commit is contained in:
331
wiki/Resources/Obsidian/Rclone管理WebDAV笔记
Executable file
331
wiki/Resources/Obsidian/Rclone管理WebDAV笔记
Executable file
@@ -0,0 +1,331 @@
|
||||
# Rclone 管理 WebDAV 笔记
|
||||
|
||||
> 使用 rclone 命令行工具管理 Obsidian WebDAV 服务器
|
||||
|
||||
---
|
||||
|
||||
## ✅ 实测成功!
|
||||
|
||||
**rclone 可以连接你的 WebDAV 服务器!**
|
||||
|
||||
---
|
||||
|
||||
## 安装 rclone
|
||||
|
||||
### Linux/macOS/Windows
|
||||
|
||||
```bash
|
||||
# 下载最新版本
|
||||
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
|
||||
unzip rclone-current-linux-amd64.zip
|
||||
sudo mv rclone-*-linux-amd64/rclone /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/rclone
|
||||
rm -rf rclone-*-linux-amd64*
|
||||
|
||||
# 验证安装
|
||||
rclone --version
|
||||
```
|
||||
|
||||
### Docker 环境(无需安装)
|
||||
|
||||
```bash
|
||||
# 直接下载二进制文件
|
||||
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
|
||||
unzip rclone-current-linux-amd64.zip
|
||||
./rclone-v*-linux-amd64/rclone --version
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置 WebDAV 远程
|
||||
|
||||
### 1. 交互式配置
|
||||
|
||||
```bash
|
||||
rclone config
|
||||
|
||||
# 步骤:
|
||||
# n) 新建远程
|
||||
# name: obsidian-webdav
|
||||
# Storage: webdav
|
||||
# URL: http://8.134.220.229:13803/实践积累
|
||||
# vendor: other
|
||||
# user: admin
|
||||
# password: blackhill
|
||||
```
|
||||
|
||||
### 2. 手动创建配置文件
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.config/rclone
|
||||
|
||||
cat > ~/.config/rclone/rclone.conf << 'EOF'
|
||||
[obsidian-webdav]
|
||||
type = webdav
|
||||
url = http://8.134.220.229:13803/实践积累
|
||||
vendor = other
|
||||
user = admin
|
||||
pass = blackhill
|
||||
EOF
|
||||
```
|
||||
|
||||
⚠️ **注意**:某些 WebDAV 服务器不支持 Digest 认证,需要用 Basic 认证。
|
||||
|
||||
### 3. 测试连接
|
||||
|
||||
```bash
|
||||
# 列出所有文件
|
||||
rclone ls obsidian-webdav: --max-depth 5
|
||||
|
||||
# 列出所有文件夹
|
||||
rclone lsd obsidian-webdav:
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常用命令
|
||||
|
||||
### 查看文件
|
||||
|
||||
```bash
|
||||
# 列出根目录
|
||||
rclone ls obsidian-webdav:
|
||||
|
||||
# 列出指定目录
|
||||
rclone ls obsidian-webdav:AI工程
|
||||
|
||||
# 递归列出所有文件
|
||||
rclone ls obsidian-webdav: --max-depth 10
|
||||
|
||||
# 按大小排序显示
|
||||
rclone ls obsidian-webdav: --max-depth 1 | sort -k1 -n
|
||||
```
|
||||
|
||||
### 上传文件
|
||||
|
||||
```bash
|
||||
# 上传单个文件
|
||||
rclone copy /path/to/file.md obsidian-webdav:目标文件夹/
|
||||
|
||||
# 上传整个目录
|
||||
rclone copy /path/to/folder obsidian-webdav:目标文件夹/
|
||||
|
||||
# 示例:上传到 AI工程 文件夹
|
||||
rclone copy ~/笔记/AI工程.md obsidian-webdav:AI工程/
|
||||
```
|
||||
|
||||
### 下载文件
|
||||
|
||||
```bash
|
||||
# 下载单个文件
|
||||
rclone copy obsidian-webdav:AI工程/code-reviewer技能.md /tmp/
|
||||
|
||||
# 下载整个文件夹
|
||||
rclone copy obsidian-webdav:AI工程 /tmp/ai-folder/
|
||||
```
|
||||
|
||||
### 同步本地与远程
|
||||
|
||||
```bash
|
||||
# 同步本地文件夹到 WebDAV(单向)
|
||||
rclone sync /path/to/local obsidian-webdav:remote --progress
|
||||
|
||||
# 双向同步(需要小心使用)
|
||||
rclone bisync /path/to/local obsidian-webdav:remote --progress
|
||||
```
|
||||
|
||||
### 删除文件
|
||||
|
||||
```bash
|
||||
# 删除远程文件
|
||||
rclone delete obsidian-webdav:文件夹/文件名.md
|
||||
|
||||
# 删除空文件夹
|
||||
rclone rmdir obsidian-webdav:空文件夹/
|
||||
```
|
||||
|
||||
### 搜索文件
|
||||
|
||||
```bash
|
||||
# 搜索文件名包含关键字的文件
|
||||
rclone ls obsidian-webdav: | grep "关键字"
|
||||
|
||||
# 搜索多个关键词
|
||||
rclone ls obsidian-webdav: | grep -E "关键词1|关键词2"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 挂载为本地目录(可选)
|
||||
|
||||
将 WebDAV 挂载为本地文件夹,像操作本地文件一样使用。
|
||||
|
||||
### 需要 FUSE 支持
|
||||
|
||||
```bash
|
||||
# Debian/Ubuntu 安装 fuse
|
||||
sudo apt-get install fuse
|
||||
|
||||
# 检查 FUSE 可用
|
||||
cat /proc/filesystems | grep fuse
|
||||
```
|
||||
|
||||
### 挂载命令
|
||||
|
||||
```bash
|
||||
# 创建挂载点
|
||||
mkdir -p ~/obsidian-webdav
|
||||
|
||||
# 前台运行(测试用)
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav --vv
|
||||
|
||||
# 后台运行
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav \
|
||||
--daemon \
|
||||
--vfs-cache-mode writes \
|
||||
--allow-other
|
||||
|
||||
# 查看挂载状态
|
||||
df -h | grep obsidian
|
||||
|
||||
# 卸载
|
||||
fusermount -uz ~/obsidian-webdav
|
||||
```
|
||||
|
||||
### 开机自启(systemd)
|
||||
|
||||
```bash
|
||||
cat > ~/.config/systemd/user/rclone-obsidian.service << 'EOF'
|
||||
[Unit]
|
||||
Description=rclone mount for Obsidian WebDAV
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/rclone mount obsidian-webdav: %h/obsidian-webdav \
|
||||
--vfs-cache-mode writes \
|
||||
--allow-other
|
||||
ExecStop=/bin/fusermount -uz %h/obsidian-webdav
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
# 启用服务
|
||||
systemctl --user enable rclone-obsidian.service
|
||||
systemctl --user start rclone-obsidian.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 与 Obsidian Headless 配合使用
|
||||
|
||||
安装 rclone 后,可以配合 obsidian-headless 使用:
|
||||
|
||||
```bash
|
||||
# 1. 挂载 WebDAV 为本地目录
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav --daemon --vfs-cache-mode writes
|
||||
|
||||
# 2. 配置 obsidian-headless 使用该目录
|
||||
echo "~/obsidian-webdav" > ~/.config/obsidian-headless/vault-path
|
||||
|
||||
# 3. 使用自然语言管理笔记
|
||||
obs创建笔记 新想法
|
||||
obs搜索笔记 关键字
|
||||
obs列出所有
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 你的服务器配置
|
||||
|
||||
```
|
||||
服务器: http://8.134.220.229:13803
|
||||
路径: /实践积累
|
||||
用户名: admin
|
||||
密码: blackhill
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 连接返回 401 Unauthorized
|
||||
|
||||
**原因**:某些 WebDAV 服务器不支持 Digest 认证
|
||||
|
||||
**解决**:在配置文件中使用明文密码(rclone 会自动处理)
|
||||
|
||||
```
|
||||
pass = blackhill # 不要加密
|
||||
```
|
||||
|
||||
### Q: 文件名中文乱码
|
||||
|
||||
**解决**:确保终端编码为 UTF-8
|
||||
|
||||
```bash
|
||||
export LANG=zh_CN.UTF-8
|
||||
export LC_ALL=zh_CN.UTF-8
|
||||
```
|
||||
|
||||
### Q: 挂载后访问很慢
|
||||
|
||||
**解决**:使用 VFS 缓存模式
|
||||
|
||||
```bash
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav \
|
||||
--vfs-cache-mode writes \
|
||||
--vfs-cache-max-age 168h \
|
||||
--vfs-write-back 5s
|
||||
```
|
||||
|
||||
### Q: 挂载占用大量内存
|
||||
|
||||
**解决**:限制缓存大小
|
||||
|
||||
```bash
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav \
|
||||
--vfs-cache-mode writes \
|
||||
--buffer-size 256M
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 完整工作流示例
|
||||
|
||||
```bash
|
||||
# 1. 配置远程
|
||||
rclone config << 'EOF'
|
||||
n
|
||||
obsidian-webdav
|
||||
webdav
|
||||
http://8.134.220.229:13803/实践积累
|
||||
other
|
||||
admin
|
||||
blackhill
|
||||
y
|
||||
EOF
|
||||
|
||||
# 2. 查看文件结构
|
||||
rclone lsd obsidian-webdav:
|
||||
|
||||
# 3. 挂载为本地目录
|
||||
mkdir -p ~/obsidian-webdav
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav --daemon --vfs-cache-mode writes
|
||||
|
||||
# 4. 在 Obsidian 中直接使用
|
||||
# 文件会自动同步到 WebDAV
|
||||
|
||||
# 5. 卸载
|
||||
fusermount -uz ~/obsidian-webdav
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 参考链接
|
||||
|
||||
- [rclone 官网](https://rclone.org)
|
||||
- [rclone WebDAV 配置](https://rclone.org/webdav/)
|
||||
- [obsidian-headless GitHub](https://github.com/imakid/obsidian-headless)
|
||||
226
wiki/Resources/Obsidian/WebDAV挂载指南
Executable file
226
wiki/Resources/Obsidian/WebDAV挂载指南
Executable file
@@ -0,0 +1,226 @@
|
||||
# WebDAV 挂载到 Linux 本地目录
|
||||
|
||||
将远程 WebDAV 服务器(如 Obsidian/Synology NAS)挂载为本地文件夹,像操作本地文件一样管理。
|
||||
|
||||
---
|
||||
|
||||
## 方法一:davfs2(推荐,最稳定)
|
||||
|
||||
### 1. 安装 davfs2
|
||||
|
||||
```bash
|
||||
# Debian/Ubuntu
|
||||
sudo apt-get install davfs2
|
||||
|
||||
# CentOS/RHEL
|
||||
sudo yum install davfs2
|
||||
|
||||
# macOS
|
||||
brew install davfs2
|
||||
```
|
||||
|
||||
### 2. 挂载 WebDAV
|
||||
|
||||
```bash
|
||||
# 创建挂载点
|
||||
sudo mkdir -p /mnt/webdav
|
||||
|
||||
# 挂载(需要输入用户名密码)
|
||||
sudo mount -t davfs http://your-server:port/path /mnt/webdav
|
||||
|
||||
# 或者指定用户名
|
||||
sudo mount -t davfs -o username=admin http://your-server:port/path /mnt/webdav
|
||||
```
|
||||
|
||||
### 3. 开机自动挂载
|
||||
|
||||
```bash
|
||||
# 添加到 /etc/fstab
|
||||
echo "http://your-server:port/path /mnt/webdav davfs defaults,username=admin,password=yourpass 0 0" | sudo tee -a /etc/fstab
|
||||
|
||||
# 或者保存密码到文件(更安全)
|
||||
echo "yourpass" | sudo tee /etc/davfs2/secrets
|
||||
chmod 600 /etc/davfs2/secrets
|
||||
echo "/mnt/webdav username password" | sudo tee -a /etc/davfs2/secrets
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 方法二:rclone(支持云存储,适合 Docker 环境)
|
||||
|
||||
### 1. 安装 rclone
|
||||
|
||||
```bash
|
||||
# 下载最新版本
|
||||
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
|
||||
unzip rclone-current-linux-amd64.zip
|
||||
sudo mv rclone-*-linux-amd64/rclone /usr/local/bin/
|
||||
sudo chown root:root /usr/local/bin/rclone
|
||||
sudo chmod 755 /usr/local/bin/rclone
|
||||
rm -rf rclone-*-linux-amd64 rclone-current-linux-amd64.zip
|
||||
```
|
||||
|
||||
### 2. 配置 rclone
|
||||
|
||||
```bash
|
||||
# 交互式配置
|
||||
rclone config
|
||||
|
||||
# 选择 n 新建配置
|
||||
# 输入名称,如:obsidian-webdav
|
||||
# 类型选择:webdav
|
||||
# URL:https://your-server:port/path
|
||||
# vendor:other
|
||||
# 输入用户名密码
|
||||
```
|
||||
|
||||
### 3. 挂载为本地目录
|
||||
|
||||
```bash
|
||||
# 创建挂载点
|
||||
mkdir -p ~/obsidian-webdav
|
||||
|
||||
# 前台测试(确认能连接)
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav --vv
|
||||
|
||||
# 后台运行
|
||||
rclone mount obsidian-webdav: ~/obsidian-webdav \
|
||||
--daemon \
|
||||
--vfs-cache-mode writes \
|
||||
--allow-other
|
||||
|
||||
# 开机自启(systemd)
|
||||
cat > ~/.config/systemd/user/rclone-obsidian.service << 'EOF'
|
||||
[Unit]
|
||||
Description=rclone mount for Obsidian
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/rclone mount obsidian-webdav: %h/obsidian-webdav --vfs-cache-mode writes
|
||||
ExecStop=/bin/fusermount -uz %h/obsidian-webdav
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
systemctl --user enable rclone-obsidian.service
|
||||
systemctl --user start rclone-obsidian.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 方法三:fUSE + davfs2(用户空间挂载,无需 root)
|
||||
|
||||
### 1. 安装 fuse 和 davfs2
|
||||
|
||||
```bash
|
||||
sudo apt-get install fuse davfs2
|
||||
```
|
||||
|
||||
### 2. 配置非 root 用户使用 FUSE
|
||||
|
||||
```bash
|
||||
sudo usermod -a -G fuse $USER
|
||||
# 重新登录生效
|
||||
```
|
||||
|
||||
### 3. 挂载
|
||||
|
||||
```bash
|
||||
mkdir -p ~/webdav
|
||||
fusedav https://your-server:port/path -u username -p password ~/webdav
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 方法四:curlftps(FTP over HTTPS,需要 FUSE)
|
||||
|
||||
```bash
|
||||
# 安装
|
||||
sudo apt-get install curlftpfs
|
||||
|
||||
# 挂载
|
||||
sudo curlftpfs -o allow_other,user=username:password https://your-server/path /mnt/webdav
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 方法五:直接在代码中使用 WebDAV
|
||||
|
||||
### Python 示例
|
||||
|
||||
```python
|
||||
import webdav3.client as wc
|
||||
|
||||
options = {
|
||||
'webdav_hostname': "https://your-server:port/path",
|
||||
'webdav_login': "username",
|
||||
'webdav_password': "password"
|
||||
}
|
||||
|
||||
client = wc.Client(options)
|
||||
|
||||
# 列出文件
|
||||
print(client.list())
|
||||
|
||||
# 下载文件
|
||||
client.download_sync(remote_path="file.md", local_path="file.md")
|
||||
|
||||
# 上传文件
|
||||
client.upload_sync(local_path="new.md", remote_path="new.md")
|
||||
```
|
||||
|
||||
### 安装 webdav3
|
||||
```bash
|
||||
pip install webdav3
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 你的服务器信息
|
||||
|
||||
```
|
||||
服务器: http://8.134.220.229:13803
|
||||
用户名: admin
|
||||
密码: blackhill
|
||||
路径: /实践积累
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 快速测试命令
|
||||
|
||||
```bash
|
||||
# 测试连接(curl)
|
||||
curl -s --digest --user admin:blackhill \
|
||||
"http://8.134.220.229:13803/实践积累/" | head -20
|
||||
|
||||
# 列出文件
|
||||
curl -s --digest --user admin:blackhill \
|
||||
-X PROPFIND "http://8.134.220.229:13803/实践积累/" -H "Depth: 1" | \
|
||||
grep -oE '<d:href>[^<]+</d:href>' | head -10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 挂载后文件看不到?
|
||||
- 检查网络连接
|
||||
- 确认用户名密码正确
|
||||
- 查看日志:`dmesg | tail`
|
||||
|
||||
### Q: 写入慢或失败?
|
||||
- davfs2 有缓存,可能有延迟
|
||||
- 尝试增加缓存大小
|
||||
- 检查服务器端是否有写入权限限制
|
||||
|
||||
### Q: Docker 容器内无法挂载?
|
||||
- Docker 需要 `--privileged` 模式
|
||||
- 或者使用 rclone 的 `--allow-non-empty`
|
||||
|
||||
### Q: 开机自启失败?
|
||||
- 检查 systemd 服务配置
|
||||
- 确保网络在挂载前已就绪(添加 `After=network.target`)
|
||||
344
wiki/Resources/Obsidian/obsidian-headless-SKILL
Executable file
344
wiki/Resources/Obsidian/obsidian-headless-SKILL
Executable file
@@ -0,0 +1,344 @@
|
||||
---
|
||||
name: obsidian-headless
|
||||
description: 在无显示器/无 GUI 环境下通过自然语言指令管理 Obsidian 笔记仓库。支持创建笔记、删除笔记(带确认)、搜索标题、搜索内容、模糊搜索、创建日记等功能。当用户需要在无头服务器、SSH 环境、或没有安装 Obsidian 桌面应用的情况下管理 Obsidian 笔记时使用此技能。触发词包括"obsidian", "笔记", "搜索笔记", "创建笔记", "删除笔记", "今天日记", "无头 obsidian", "命令行 obsidian"。
|
||||
slash_commands:
|
||||
- name: obsidian-headless
|
||||
description: 主命令 - 无头 Obsidian 笔记管理
|
||||
usage: /obsidian-headless [子命令] [参数]
|
||||
subcommands:
|
||||
- create: 创建新笔记 (/obsidian-headless create 文件名 内容)
|
||||
- delete: 删除笔记 (/obsidian-headless delete 文件名)
|
||||
- search: 搜索笔记 (/obsidian-headless search 关键词)
|
||||
- daily: 今天日记 (/obsidian-headless daily 内容)
|
||||
- list: 列出所有笔记 (/obsidian-headless list)
|
||||
- save: 保存内容 (/obsidian-headless save 文件名 内容)
|
||||
- name: obs-create
|
||||
description: 创建新笔记
|
||||
usage: /obs-create [文件名] [内容]
|
||||
- name: obs-delete
|
||||
description: 删除笔记
|
||||
usage: /obs-delete [文件名]
|
||||
- name: obs-search
|
||||
description: 搜索笔记内容
|
||||
usage: /obs-search [关键词]
|
||||
- name: obs-daily
|
||||
description: 创建/查看今天日记
|
||||
usage: /obs-daily [可选内容]
|
||||
- name: obs-list
|
||||
description: 列出所有笔记
|
||||
usage: /obs-list
|
||||
- name: obs-save
|
||||
description: 保存对话内容到笔记
|
||||
usage: /obs-save [文件名] [内容]
|
||||
---
|
||||
|
||||
# Obsidian Headless - 无头 Obsidian 管理工具
|
||||
|
||||
在无显示器/无 GUI 环境下通过自然语言指令管理 Obsidian 笔记仓库。
|
||||
|
||||
## 适用场景
|
||||
|
||||
- 在 SSH 远程服务器上管理 Obsidian 笔记
|
||||
- 无显示器环境(如 VPS、Docker 容器)
|
||||
- 不想启动 Obsidian GUI 桌面应用时
|
||||
- 需要通过脚本自动化管理笔记时
|
||||
|
||||
## 文档
|
||||
|
||||
- **USAGE.md** - 完整使用手册(包含快速参考、详细说明、示例、故障排除)
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
obsidian-headless/
|
||||
├── obs # 便捷入口脚本
|
||||
├── install.sh # 安装脚本
|
||||
├── SKILL.md # 本文件(技能说明)
|
||||
├── USAGE.md # 完整使用手册
|
||||
├── bin/
|
||||
│ └── obsidian-headless.sh # 主程序
|
||||
├── examples/
|
||||
│ └── examples.sh # 使用示例脚本
|
||||
└── tests/
|
||||
└── test.sh # 测试脚本
|
||||
```
|
||||
|
||||
## 配置文件
|
||||
|
||||
首次使用时会提示输入仓库路径,配置保存在:
|
||||
```
|
||||
~/.config/obsidian-headless/vault-path
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 安装
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/skills/obsidian-headless
|
||||
./install.sh
|
||||
```
|
||||
|
||||
或手动使用:
|
||||
```bash
|
||||
~/.openclaw/skills/obsidian-headless/obs "obs指令"
|
||||
```
|
||||
|
||||
### 指令格式
|
||||
|
||||
所有指令都支持 `obs` 前缀(**大小写不敏感**),`obs` 和指令之间可以有**空格、-、_、: 等连接符**:
|
||||
|
||||
| 格式 | 示例 |
|
||||
|------|------|
|
||||
| `obs指令` | `obs创建笔记 新笔记` |
|
||||
| `obs 指令` | `obs 创建笔记 新笔记` |
|
||||
| `obs-指令` | `obs-创建笔记 新笔记` |
|
||||
| `OBS指令` | `OBS创建笔记 新笔记` |
|
||||
|
||||
**推荐使用 `obs指令` 格式**,避免误触。
|
||||
|
||||
### 2. 配置仓库路径
|
||||
|
||||
**首次使用:**
|
||||
运行任意命令时会提示输入仓库路径,路径会保存到配置文件中供后续使用。
|
||||
|
||||
```
|
||||
首次使用 Obsidian Headless
|
||||
==========================
|
||||
|
||||
请输入 Obsidian 仓库路径: /home/user/my-vault
|
||||
✓ 已保存配置
|
||||
```
|
||||
|
||||
**手动配置(可选):**
|
||||
|
||||
方式 1 - 环境变量(优先级最高):
|
||||
```bash
|
||||
export OBSIDIAN_VAULT=/path/to/your/vault
|
||||
```
|
||||
|
||||
方式 2 - 删除配置文件重新输入:
|
||||
```bash
|
||||
rm ~/.config/obsidian-headless/vault-path
|
||||
# 下次运行时会重新提示输入
|
||||
```
|
||||
|
||||
### 3. 使用
|
||||
|
||||
```bash
|
||||
# 使用安装后的快捷命令
|
||||
obs "创建笔记 新想法"
|
||||
|
||||
# 或直接调用
|
||||
~/.openclaw/skills/obsidian-headless/obs "搜索内容 home assistant"
|
||||
```
|
||||
|
||||
## 支持的指令
|
||||
|
||||
### 创建笔记
|
||||
```
|
||||
obs创建笔记 [文件名] [可选内容]
|
||||
```
|
||||
|
||||
**说明:**
|
||||
- `文件名` 支持路径,如 `文件夹/笔记名` 或 `笔记名`
|
||||
- 如果**只输入文件名**(无内容),创建**空笔记文件**
|
||||
- 如果**输入了内容**,内容**直接写入文件**,不会自动添加标题
|
||||
- 笔记的标题需要用户在 `内容` 中自行定义(如 `# 我的标题`)
|
||||
- **文件名和内容之间可以用空格或换行符分隔**
|
||||
|
||||
**示例:**
|
||||
- `obs创建笔记 待办清单` → 创建空文件 `待办清单.md`
|
||||
- `obs创建笔记 项目想法 这个项目的核心目标是...` → 文件内容为 "这个项目的核心目标是..."
|
||||
- `obs创建笔记 AI/总结 # AI 总结\n\n今天学习了...` → 文件内容包含自定义标题
|
||||
|
||||
**多行内容示例:**
|
||||
```
|
||||
obs创建笔记 笔记名
|
||||
# 标题
|
||||
内容第一行
|
||||
内容第二行
|
||||
```
|
||||
|
||||
### 删除笔记(带确认)
|
||||
```
|
||||
obs删除笔记 [文件名]
|
||||
```
|
||||
|
||||
**删除确认流程:**
|
||||
|
||||
**单个匹配时:**
|
||||
```
|
||||
即将删除笔记:
|
||||
标题: xxx
|
||||
路径: /path/to/xxx.md
|
||||
|
||||
内容预览 (共 15 行):
|
||||
# xxx
|
||||
...
|
||||
|
||||
请回复确认:
|
||||
[Y] 确认删除
|
||||
[N] 取消
|
||||
```
|
||||
|
||||
**多个匹配时:**
|
||||
```
|
||||
找到多个匹配的笔记:
|
||||
|
||||
[1] 笔记A
|
||||
位置: folder1/
|
||||
大小: 20 行
|
||||
|
||||
[2] 笔记B
|
||||
位置: folder2/
|
||||
大小: 35 行
|
||||
|
||||
请回复要删除的笔记编号 (或 0 取消)
|
||||
```
|
||||
|
||||
### 查看笔记内容
|
||||
```
|
||||
obs查看笔记 [文件名]
|
||||
```
|
||||
|
||||
### 搜索笔记标题
|
||||
```
|
||||
obs搜索标题 [关键词]
|
||||
```
|
||||
|
||||
### 搜索笔记内容
|
||||
```
|
||||
obs搜索内容 [关键词]
|
||||
```
|
||||
|
||||
### 模糊搜索(标题+内容)
|
||||
```
|
||||
obs模糊搜索 [关键词]
|
||||
```
|
||||
|
||||
### 创建/打开今天日记
|
||||
```
|
||||
obs今天日记 [可选内容]
|
||||
```
|
||||
|
||||
自动在 `日记/` 文件夹下创建 `YYYY-MM-DD.md`
|
||||
|
||||
### 修改库路径
|
||||
```
|
||||
obs修改库路径
|
||||
obs修改库目录
|
||||
obs更改路径
|
||||
obs切换仓库
|
||||
```
|
||||
|
||||
交互式修改仓库路径,保存到配置文件。
|
||||
|
||||
**示例:**
|
||||
- `obs修改库路径` → 提示输入新路径
|
||||
- `obs-修改库目录` → 同上
|
||||
|
||||
### 列出所有笔记
|
||||
```
|
||||
obs列出所有
|
||||
```
|
||||
|
||||
### 列出所有文件夹
|
||||
```
|
||||
obs列出文件夹
|
||||
```
|
||||
|
||||
### 显示最近修改的笔记
|
||||
```
|
||||
obs最近笔记
|
||||
```
|
||||
|
||||
## 前置要求
|
||||
|
||||
1. **Obsidian 仓库:** 首次使用时会提示输入仓库路径
|
||||
|
||||
2. **依赖:**
|
||||
- `bash` (必须)
|
||||
- `find` (必须)
|
||||
- `grep` (必须)
|
||||
- `ripgrep (rg)` (推荐,搜索更快)
|
||||
|
||||
3. **安装 ripgrep:**
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt install ripgrep
|
||||
|
||||
# macOS
|
||||
brew install ripgrep
|
||||
```
|
||||
|
||||
## 测试
|
||||
|
||||
运行测试脚本验证功能:
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/skills/obsidian-headless
|
||||
./tests/test.sh
|
||||
```
|
||||
|
||||
## 查看示例
|
||||
|
||||
运行示例脚本查看各种用法:
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/skills/obsidian-headless
|
||||
./examples/examples.sh
|
||||
```
|
||||
|
||||
## 与 obsidian-cli 的对比
|
||||
|
||||
| 功能 | obsidian-cli | obsidian-headless |
|
||||
|------|-------------|-------------------|
|
||||
| 依赖 Obsidian GUI | 是(需要索引) | 否 |
|
||||
| search-content | 依赖索引,常失败 | 使用 ripgrep,可靠 |
|
||||
| 删除确认 | 无 | 有(显示预览) |
|
||||
| 多匹配处理 | 无 | 列出序号选择 |
|
||||
| 自然语言支持 | 有限 | 完整支持 |
|
||||
| 无头环境 | 不支持 | 专门设计 |
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 提示"未找到 Obsidian 仓库路径"
|
||||
1. 首次使用时会自动提示输入路径
|
||||
2. 或手动设置环境变量:
|
||||
```bash
|
||||
export OBSIDIAN_VAULT=/path/to/your/vault
|
||||
```
|
||||
3. 或删除配置重新输入:
|
||||
```bash
|
||||
rm ~/.config/obsidian-headless/vault-path
|
||||
```
|
||||
|
||||
### 修改已保存的仓库路径
|
||||
```bash
|
||||
# 方法1: 使用环境变量覆盖
|
||||
export OBSIDIAN_VAULT=/new/path
|
||||
|
||||
# 方法2: 删除配置,下次重新输入
|
||||
rm ~/.config/obsidian-headless/vault-path
|
||||
```
|
||||
|
||||
### 搜索速度慢
|
||||
安装 ripgrep:
|
||||
```bash
|
||||
sudo apt install ripgrep # Ubuntu/Debian
|
||||
brew install ripgrep # macOS
|
||||
```
|
||||
|
||||
### 删除时找不到笔记
|
||||
使用更精确的标题,或使用"模糊搜索"先找到准确标题。
|
||||
|
||||
## 脚本说明
|
||||
|
||||
| 脚本 | 用途 |
|
||||
|------|------|
|
||||
| `obs` | 便捷入口,推荐日常使用 |
|
||||
| `bin/obsidian-headless.sh` | 主程序 |
|
||||
| `install.sh` | 安装脚本,设置别名和快捷方式 |
|
||||
| `tests/test.sh` | 功能测试 |
|
||||
| `examples/examples.sh` | 使用示例 |
|
||||
Reference in New Issue
Block a user